althaf
07/17/2021, 1:26 PMval diCoroutineModule = module {
single { <http://Dispatchers.IO|Dispatchers.IO> }
single { Dispatchers.Main }
single { Dispatchers.Default }
}
Something similar ins HILT
@InstallIn(SingletonComponent::class)
@Module
object CoroutinesModule {
@DefaultDispatcher
@Provides
fun providesDefaultDispatcher(): CoroutineDispatcher = Dispatchers.Default
@IoDispatcher
@Provides
fun providesIoDispatcher(): CoroutineDispatcher = <http://Dispatchers.IO|Dispatchers.IO>
@MainDispatcher
@Provides
fun providesMainDispatcher(): CoroutineDispatcher = Dispatchers.Main
@MainImmediateDispatcher
@Provides
fun providesMainImmediateDispatcher(): CoroutineDispatcher = Dispatchers.Main.immediate
}
althaf
07/17/2021, 1:30 PMval diUseCaseModule = module {
factory { LoginUseCase(get(), dispatcher = <http://Dispatchers.IO|Dispatchers.IO>) }
}
else i will have to be explicit about the dispatcher in the UseCaseModulebrandonmcansh
07/17/2021, 3:25 PMbrandonmcansh
07/17/2021, 3:25 PMdata class AppCoroutineDispatchers(
val io: CoroutineDispatcher,
val computation: CoroutineDispatcher,
val main: CoroutineDispatcher
)
brandonmcansh
07/17/2021, 3:25 PM@Singleton
@Provides
fun provideCoroutineDispatchers() = AppCoroutineDispatchers(
io = <http://Dispatchers.IO|Dispatchers.IO>,
computation = Dispatchers.Default,
main = Dispatchers.Main
)
althaf
07/17/2021, 3:27 PMbrandonmcansh
07/17/2021, 3:28 PMbrandonmcansh
07/17/2021, 3:28 PMalthaf
07/17/2021, 3:30 PMalthaf
07/17/2021, 3:31 PMval diUseCaseModule = module {
factory { LoginUseCase(get(), dispatcher = get()) }
}
dependency get auto resolved just be this codebrandonmcansh
07/17/2021, 3:31 PMalthaf
07/17/2021, 3:32 PMval diCoroutineModule = module {
single { <http://Dispatchers.IO|Dispatchers.IO> }
single { Dispatchers.Main }
single { Dispatchers.Default }
}
it grammar is ambiguous as get() can resolve to IO and Default that is what i'm confused aboutalthaf
07/17/2021, 3:33 PMclass LoginUseCase(private val authRepository: AuthRepository, private val dispatcher: CoroutineDispatcher)
brandonmcansh
07/17/2021, 3:35 PMinterface IODispatcher: CoroutineDispatcher
brandonmcansh
07/17/2021, 3:35 PMbrandonmcansh
07/17/2021, 3:35 PMalthaf
07/17/2021, 3:39 PMval diUseCaseModule = module {
factory { LoginUseCase(get(), dispatcher = <http://Dispatchers.IO|Dispatchers.IO>) }
}
brandonmcansh
07/17/2021, 3:40 PMbrandonmcansh
07/17/2021, 3:41 PMwithContext(<http://dispatchers.io|dispatchers.io>) { }
althaf
07/17/2021, 3:41 PMkevindmoore
07/17/2021, 5:39 PMval coroutines = module {
single(named("Background")) { Dispatchers.Default}
single(named("IO")) { <http://Dispatchers.IO|Dispatchers.IO>}
single<CoroutineDispatcher> (named("Main")) { Dispatchers.Main}
}
kevindmoore
07/17/2021, 5:40 PMval mainDispatcher: CoroutineDispatcher by inject(named("Main"))
val defaultDispatcher: CoroutineDispatcher by inject(named("Background"))
brandonmcansh
07/17/2021, 8:33 PM