Colton Idle
12/01/2021, 6:31 PMinterface CrashReporterService {
fun logFatal(e: Exception)
}
class FirebaseCrashReporterService : CrashReporterService {
override fun logFatal(e: Exception) {
// do something
}
}
Option 1️⃣ :(dont add the concrete to nav graph and just create it at the Provider)
@Module
object FirebaseCrashReporterModule {
@JvmStatic
@Provides
fun firebaseCrashReporter(dependencies..) : CrashReporter {
return FirebaseCrashReporter(...)
}
}
Option 2️⃣: (use a qualifier to make the type "harder" to accidentally use)
@Module
@InstallIn(SingletonComponent::class)
abstract class AppInterfaceModule {
@Singleton
@Binds
abstract fun bindsCrashReporterService(
@Named("placeholder_qualifier") service: FirebaseCrashReporterService
): CrashReporterService
}
@Module
@InstallIn(SingletonComponent::class)
class AppImplModule {
@Singleton
@Provides
@Named("placeholder_qualifier")
fun bindsCrashReporterService(): FirebaseCrashReporterService {
return FirebaseCrashReporterService()
}
}
ashdavies
12/01/2021, 6:42 PMinterface CrashReporterService {
fun logFatal(e: Exception)
}
internal class FirebaseCrashReporterService : CrashReporterService {
override fun logFatal(e: Exception) {
// do something
}
}
fun CrashReporterService(): CrashReporterService = FirebaseCrashReporterService()
Colton Idle
12/01/2021, 7:03 PMursus
12/01/2021, 11:47 PM