I have setup Hilt as
@Module
@InstallIn(ActivityRetainedComponent::class)
object CredentialModule {
@Provides
@ActivityRetainedScoped
fun provideActivityContext(
@ActivityContext context: Context
) = context
@Provides
@ActivityRetainedScoped
fun provideFirebaseAuth(): FirebaseAuth = FirebaseAuth.getInstance()
@Provides
@ActivityRetainedScoped
fun provideCredentialManager(
context: Context
): CredentialManager = CredentialManager.create(context)
@Provides
@ActivityRetainedScoped
fun provideGetGoogleIdOption(
context: Context
): GetGoogleIdOption = GetGoogleIdOption.Builder()
.setFilterByAuthorizedAccounts(false)
.setServerClientId(context.getString(R.string.web_client_id))
.setAutoSelectEnabled(false)
.build()
@Provides
@ActivityRetainedScoped
fun provideGetCredentialRequest(
getGoogleIdOption: GetGoogleIdOption
) = GetCredentialRequest.Builder()
.addCredentialOption(getGoogleIdOption)
.build()
@Provides
@ActivityRetainedScoped
fun provideAuthDataSource(
context: Context,
auth: FirebaseAuth,
credentialManager: CredentialManager,
getCredentialRequest: GetCredentialRequest
) = AuthDataSource(context, auth, credentialManager, getCredentialRequest)
}
This always throws error saying
error: [Dagger/MissingBinding] @dagger.hilt.android.qualifiers.ActivityContext android.content.Context cannot be provided without an @Provides-annotated method.
public abstract static class SingletonC implements ProfileApp_GeneratedInjector,
^
@dagger.hilt.android.qualifiers.ActivityContext android.content.Context is injected at
[com.being.coder.app.profile.ProfileApp_HiltComponents.ActivityRetainedC] com.being.coder.app.profile.di.CredentialModule.provideActivityContext(context)
android.content.Context is injected at
[com.being.coder.app.profile.ProfileApp_HiltComponents.ActivityRetainedC] com.being.coder.app.profile.di.CredentialModule.provideAuthDataSource(context, �)
com.being.coder.app.profile.data.datasource.AuthDataSource is injected at
[com.being.coder.app.profile.ProfileApp_HiltComponents.ActivityRetainedC] com.being.coder.app.profile.di.CredentialModule.provideAuthRepository(authDataSource)
com.being.coder.app.profile.presentation.signin.repository.AuthRepository is injected at
[com.being.coder.app.profile.ProfileApp_HiltComponents.ActivityRetainedC] com.being.coder.app.profile.di.CredentialModule.provideAuthUseCases(authRepository)
com.being.coder.app.profile.domain.usecase.auth.AuthUseCases is injected at
[com.being.coder.app.profile.ProfileApp_HiltComponents.ViewModelC] com.being.coder.app.profile.ui.screens.auth.AuthViewModel(authUseCases)
com.being.coder.app.profile.ui.screens.auth.AuthViewModel is injected at
[com.being.coder.app.profile.ProfileApp_HiltComponents.ViewModelC] com.being.coder.app.profile.ui.screens.auth.AuthViewModel_HiltModules.BindsModule.binds(arg0)
@dagger.hilt.android.internal.lifecycle.HiltViewModelMap java.util.Map<java.lang.Class<?>,javax.inject.Provider<androidx.lifecycle.ViewModel>> is requested at
[com.being.coder.app.profile.ProfileApp_HiltComponents.ViewModelC] dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.ViewModelFactoriesEntryPoint.getHiltViewModelMap() [com.being.coder.app.profile.ProfileApp_HiltComponents.SingletonC ? com.being.coder.app.profile.ProfileApp_HiltComponents.ActivityRetainedC ? com.being.coder.app.profile.ProfileApp_HiltComponents.ViewModelC]
Note: @dagger.hilt.android.qualifiers.ActivityContext android.content.Context is provided in the following other components:
[com.being.coder.app.profile.ProfileApp_HiltComponents.ActivityC] dagger.hilt.android.internal.modules.ActivityModule.provideContext(�)
I have tried to fix this issue using @ApplicationContext
, but CredentialManager.create(context)
needs Activity Context, How can I get Activity Context in above case, so that I can get rid of:
error: [Dagger/MissingBinding] @dagger.hilt.android.qualifiers.ActivityContext android.content.Context cannot be provided without an @Provides-annotated method.