aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/dev/msfjarvis/aps/injection/prefs/PreferenceModule.kt
diff options
context:
space:
mode:
authorAditya Wasan <adityawasan55@gmail.com>2021-05-22 17:24:49 +0530
committerAditya Wasan <adityawasan55@gmail.com>2021-05-22 17:24:49 +0530
commit47099c723b006cb305af4f2785e547a6525a903a (patch)
treef9ecf3ab824566a95eaac0730b20decdd73e5b50 /app/src/main/java/dev/msfjarvis/aps/injection/prefs/PreferenceModule.kt
parent9fcbde2f071a29e6a8c0ebeb5cfa76d4293b2552 (diff)
downloadHardenedPass-47099c723b006cb305af4f2785e547a6525a903a.tar.gz
HardenedPass-47099c723b006cb305af4f2785e547a6525a903a.zip
di: add context and preferences module
Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>
Diffstat (limited to 'app/src/main/java/dev/msfjarvis/aps/injection/prefs/PreferenceModule.kt')
-rw-r--r--app/src/main/java/dev/msfjarvis/aps/injection/prefs/PreferenceModule.kt52
1 files changed, 52 insertions, 0 deletions
diff --git a/app/src/main/java/dev/msfjarvis/aps/injection/prefs/PreferenceModule.kt b/app/src/main/java/dev/msfjarvis/aps/injection/prefs/PreferenceModule.kt
new file mode 100644
index 00000000..41d2a30b
--- /dev/null
+++ b/app/src/main/java/dev/msfjarvis/aps/injection/prefs/PreferenceModule.kt
@@ -0,0 +1,52 @@
+package dev.msfjarvis.aps.injection.prefs
+
+import android.content.Context
+import android.content.Context.MODE_PRIVATE
+import android.content.SharedPreferences
+import androidx.security.crypto.EncryptedSharedPreferences
+import androidx.security.crypto.MasterKey
+import dagger.Module
+import dagger.Provides
+import dagger.Reusable
+import dagger.hilt.InstallIn
+import dagger.hilt.android.qualifiers.ApplicationContext
+import dagger.hilt.components.SingletonComponent
+import dev.msfjarvis.aps.BuildConfig
+
+@Module
+@InstallIn(SingletonComponent::class)
+class PreferenceModule {
+
+ private fun provideBaseEncryptedPreferences(context: Context, fileName: String): SharedPreferences {
+ val masterKeyAlias =
+ MasterKey.Builder(context).setKeyScheme(MasterKey.KeyScheme.AES256_GCM).build()
+ return EncryptedSharedPreferences.create(
+ context,
+ fileName,
+ masterKeyAlias,
+ EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
+ EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
+ )
+ }
+
+ @Provides
+ @SettingsPreferences
+ @Reusable
+ fun provideSettingsPreferences(@ApplicationContext context: Context): SharedPreferences {
+ return context.getSharedPreferences("${BuildConfig.APPLICATION_ID}_preferences", MODE_PRIVATE)
+ }
+
+ @Provides
+ @GitPreferences
+ @Reusable
+ fun provideEncryptedPreferences(@ApplicationContext context: Context): SharedPreferences {
+ return provideBaseEncryptedPreferences(context, "git_operation")
+ }
+
+ @Provides
+ @ProxyPreferences
+ @Reusable
+ fun provideProxyPreferences(@ApplicationContext context: Context): SharedPreferences {
+ return provideBaseEncryptedPreferences(context, "http_proxy")
+ }
+} \ No newline at end of file