Use correct implementation in providing multiplatform components

pull/2064/head
lihenggui 2 years ago
parent 471713e50a
commit 36c537466c

@ -16,20 +16,22 @@
package com.google.samples.apps.nowinandroid.core.data.di
import com.google.samples.apps.nowinandroid.core.data.util.ConnectivityManagerNetworkMonitor
import com.google.samples.apps.nowinandroid.core.data.util.NetworkMonitor
import com.google.samples.apps.nowinandroid.core.data.util.TimeZoneBroadcastMonitor
import com.google.samples.apps.nowinandroid.core.data.util.TimeZoneMonitor
import me.tatarka.inject.annotations.Component
import me.tatarka.inject.annotations.Provides
@Component
internal actual abstract class PlatformDependentDataModule {
abstract class AndroidPlatformDependentDataModule: PlatformDependentDataModule() {
@Provides
internal actual fun bindsNetworkMonitor(): NetworkMonitor {
TODO()
override fun bindsNetworkMonitor(): NetworkMonitor {
return ConnectivityManagerNetworkMonitor()
}
@Provides
internal actual fun bindsTimeZoneMonitor(): TimeZoneMonitor {
TODO()
override fun bindsTimeZoneMonitor(): TimeZoneMonitor {
return TimeZoneBroadcastMonitor()
}
}

@ -43,7 +43,7 @@ abstract class DataModule {
): NewsRepository = newsRepository
@Provides
fun userDataRepository(
fun bindsUserDataRepository(
userDataRepository: OfflineFirstUserDataRepository,
): UserDataRepository = userDataRepository

@ -18,12 +18,17 @@ package com.google.samples.apps.nowinandroid.core.data.di
import com.google.samples.apps.nowinandroid.core.data.util.NetworkMonitor
import com.google.samples.apps.nowinandroid.core.data.util.TimeZoneMonitor
import com.google.samples.apps.nowinandroid.core.di.ApplicationScope
import me.tatarka.inject.annotations.Provides
internal expect abstract class PlatformDependentDataModule {
@ApplicationScope
abstract class PlatformDependentDataModule {
@ApplicationScope
@Provides
internal fun bindsNetworkMonitor(): NetworkMonitor
abstract fun bindsNetworkMonitor(): NetworkMonitor
@ApplicationScope
@Provides
internal fun bindsTimeZoneMonitor(): TimeZoneMonitor
abstract fun bindsTimeZoneMonitor(): TimeZoneMonitor
}

@ -22,7 +22,7 @@ import me.tatarka.inject.annotations.Component
import me.tatarka.inject.annotations.Provides
@Component
internal abstract class UserNewsResourceRepositoryModule {
abstract class UserNewsResourceRepositoryModule {
@Provides
fun bindsUserNewsResourceRepository(
userDataRepository: CompositeUserNewsResourceRepository,

@ -29,9 +29,9 @@ import me.tatarka.inject.annotations.Provides
* Leave empty for now
*/
@Component
internal actual abstract class PlatformDependentDataModule {
abstract class JvmPlatformDependentDataModule : PlatformDependentDataModule() {
@Provides
internal actual fun bindsNetworkMonitor(): NetworkMonitor {
override fun bindsNetworkMonitor(): NetworkMonitor {
return object : NetworkMonitor {
override val isOnline: Flow<Boolean>
get() = flowOf(true)
@ -39,7 +39,7 @@ internal actual abstract class PlatformDependentDataModule {
}
@Provides
internal actual fun bindsTimeZoneMonitor(): TimeZoneMonitor {
override fun bindsTimeZoneMonitor(): TimeZoneMonitor {
return object : TimeZoneMonitor {
override val currentTimeZone: Flow<TimeZone>
get() = flowOf(TimeZone.UTC)

@ -29,9 +29,9 @@ import me.tatarka.inject.annotations.Provides
* Leave empty for now
*/
@Component
internal actual abstract class PlatformDependentDataModule {
abstract class NativePlatformDependentDataModule : PlatformDependentDataModule() {
@Provides
internal actual fun bindsNetworkMonitor(): NetworkMonitor {
override fun bindsNetworkMonitor(): NetworkMonitor {
return object : NetworkMonitor {
override val isOnline: Flow<Boolean>
get() = flowOf(true)
@ -39,7 +39,7 @@ internal actual abstract class PlatformDependentDataModule {
}
@Provides
internal actual fun bindsTimeZoneMonitor(): TimeZoneMonitor {
override fun bindsTimeZoneMonitor(): TimeZoneMonitor {
return object : TimeZoneMonitor {
override val currentTimeZone: Flow<TimeZone>
get() = flowOf(TimeZone.UTC)
Loading…
Cancel
Save