Skip to content

Instantly share code, notes, and snippets.

@MrNtlu
Created December 28, 2022 13:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MrNtlu/ad7b97b3fc0dcf8a282371cb77226388 to your computer and use it in GitHub Desktop.
Save MrNtlu/ad7b97b3fc0dcf8a282371cb77226388 to your computer and use it in GitHub Desktop.
Token Auth SingletonModule
val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "data_store")
@Module
@InstallIn(SingletonComponent::class)
class SingletonModule {
@Singleton
@Provides
fun provideTokenManager(@ApplicationContext context: Context): TokenManager = TokenManager(context)
@Singleton
@Provides
fun provideOkHttpClient(
authInterceptor: AuthInterceptor,
authAuthenticator: AuthAuthenticator,
): OkHttpClient {
val loggingInterceptor = HttpLoggingInterceptor()
loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY
return OkHttpClient.Builder()
.addInterceptor(authInterceptor)
.addInterceptor(loggingInterceptor)
.authenticator(authAuthenticator)
.build()
}
@Singleton
@Provides
fun provideAuthInterceptor(tokenManager: TokenManager): AuthInterceptor =
AuthInterceptor(tokenManager)
@Singleton
@Provides
fun provideAuthAuthenticator(tokenManager: TokenManager): AuthAuthenticator =
AuthAuthenticator(tokenManager)
@Singleton
@Provides
fun provideRetrofitBuilder(): Retrofit.Builder =
Retrofit.Builder()
.baseUrl("https://jwt-test-api.onrender.com/api/")
.addConverterFactory(GsonConverterFactory.create())
@Singleton
@Provides
fun provideAuthAPIService(retrofit: Retrofit.Builder): AuthApiService =
retrofit
.build()
.create(AuthApiService::class.java)
@Singleton
@Provides
fun provideMainAPIService(okHttpClient: OkHttpClient, retrofit: Retrofit.Builder): MainApiService =
retrofit
.client(okHttpClient)
.build()
.create(MainApiService::class.java)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment