|
| 1 | +package com.threegap.bitnagil.datastore.di |
| 2 | + |
| 3 | +import android.content.Context |
| 4 | +import androidx.datastore.core.DataStore |
| 5 | +import androidx.datastore.core.DataStoreFactory |
| 6 | +import androidx.datastore.core.handlers.ReplaceFileCorruptionHandler |
| 7 | +import androidx.datastore.dataStoreFile |
| 8 | +import com.threegap.bitnagil.datastore.model.AuthToken |
| 9 | +import com.threegap.bitnagil.datastore.serializer.AuthTokenSerializer |
| 10 | +import com.threegap.bitnagil.datastore.serializer.TokenSerializer |
| 11 | +import com.threegap.bitnagil.security.crypto.Crypto |
| 12 | +import dagger.Module |
| 13 | +import dagger.Provides |
| 14 | +import dagger.hilt.InstallIn |
| 15 | +import dagger.hilt.android.qualifiers.ApplicationContext |
| 16 | +import dagger.hilt.components.SingletonComponent |
| 17 | +import javax.inject.Singleton |
| 18 | + |
| 19 | +@Module |
| 20 | +@InstallIn(SingletonComponent::class) |
| 21 | +object DataStoreModule { |
| 22 | + @Provides |
| 23 | + @Singleton |
| 24 | + fun provideTokenSerializer(crypto: Crypto): TokenSerializer = AuthTokenSerializer(crypto) |
| 25 | + |
| 26 | + @Provides |
| 27 | + @Singleton |
| 28 | + fun provideAuthTokenDataStore( |
| 29 | + @ApplicationContext context: Context, |
| 30 | + tokenSerializer: TokenSerializer, |
| 31 | + ): DataStore<AuthToken> = |
| 32 | + DataStoreFactory.create( |
| 33 | + serializer = tokenSerializer, |
| 34 | + produceFile = { context.dataStoreFile("auth-token.enc") }, |
| 35 | + corruptionHandler = ReplaceFileCorruptionHandler { AuthToken() }, |
| 36 | + ) |
| 37 | +} |
0 commit comments