|
|
|
|
@ -16,25 +16,41 @@
|
|
|
|
|
|
|
|
|
|
package com.google.samples.apps.nowinandroid.core.data.di
|
|
|
|
|
|
|
|
|
|
import android.app.Application
|
|
|
|
|
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 com.google.samples.apps.nowinandroid.core.di.AndroidApplicationComponent
|
|
|
|
|
import com.google.samples.apps.nowinandroid.core.di.ApplicationScope
|
|
|
|
|
import com.google.samples.apps.nowinandroid.core.di.CoroutineScopeComponent
|
|
|
|
|
import com.google.samples.apps.nowinandroid.core.di.DispatchersComponent
|
|
|
|
|
import com.google.samples.apps.nowinandroid.core.di.IoDispatcher
|
|
|
|
|
import kotlinx.coroutines.CoroutineDispatcher
|
|
|
|
|
import kotlinx.coroutines.CoroutineScope
|
|
|
|
|
import me.tatarka.inject.annotations.Component
|
|
|
|
|
import me.tatarka.inject.annotations.Provides
|
|
|
|
|
|
|
|
|
|
@Component
|
|
|
|
|
abstract class AndroidPlatformDependentDataModule(
|
|
|
|
|
@Component val applicationComponent: AndroidApplicationComponent,
|
|
|
|
|
): PlatformDependentDataModule() {
|
|
|
|
|
@Component val dispatchersComponent: DispatchersComponent,
|
|
|
|
|
@Component val coroutineScopeComponent: CoroutineScopeComponent,
|
|
|
|
|
) : PlatformDependentDataModule() {
|
|
|
|
|
abstract val application: Application
|
|
|
|
|
@IoDispatcher abstract val ioDispatcher: CoroutineDispatcher
|
|
|
|
|
abstract val coroutineScope: CoroutineScope
|
|
|
|
|
|
|
|
|
|
@Provides
|
|
|
|
|
override fun bindsNetworkMonitor(): NetworkMonitor {
|
|
|
|
|
return ConnectivityManagerNetworkMonitor(applicationComponent.application)
|
|
|
|
|
return ConnectivityManagerNetworkMonitor(
|
|
|
|
|
application,
|
|
|
|
|
ioDispatcher,
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Provides
|
|
|
|
|
override fun bindsTimeZoneMonitor(): TimeZoneMonitor {
|
|
|
|
|
return TimeZoneBroadcastMonitor()
|
|
|
|
|
return TimeZoneBroadcastMonitor(application, coroutineScope, ioDispatcher)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|