diff options
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/utils')
| -rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt | 10 | ||||
| -rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.kt | 23 |
2 files changed, 16 insertions, 17 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt b/app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt index 6ce45fe5..b5cb4f8c 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt +++ b/app/src/main/java/com/zeapo/pwdstore/utils/Extensions.kt @@ -18,6 +18,7 @@ import androidx.annotation.RequiresApi import androidx.appcompat.app.AlertDialog import androidx.core.content.getSystemService import androidx.fragment.app.FragmentActivity +import androidx.preference.PreferenceManager import androidx.security.crypto.EncryptedSharedPreferences import androidx.security.crypto.MasterKey import com.github.ajalt.timberkt.d @@ -97,6 +98,9 @@ fun Context.getEncryptedPrefs(fileName: String): SharedPreferences { ) } +val Context.sharedPrefs: SharedPreferences + get() = PreferenceManager.getDefaultSharedPreferences(applicationContext) + suspend fun FragmentActivity.commitChange( message: String, finishWithResultOnEnd: Intent? = null, @@ -109,7 +113,7 @@ suspend fun FragmentActivity.commitChange( } return } - object : GitOperation(getRepositoryDirectory(this@commitChange), this@commitChange) { + object : GitOperation(getRepositoryDirectory(), this@commitChange) { override val commands = arrayOf( git.add().addFilepattern("."), git.status(), @@ -151,6 +155,6 @@ val Context.autofillManager: AutofillManager? @RequiresApi(Build.VERSION_CODES.O) get() = getSystemService() -fun FragmentActivity.isInsideRepository(file: File): Boolean { - return file.canonicalPath.contains(getRepositoryDirectory(this).canonicalPath) +fun File.isInsideRepository(): Boolean { + return canonicalPath.contains(getRepositoryDirectory().canonicalPath) } diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.kt b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.kt index cb30ca2c..e07f30f2 100644 --- a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.kt +++ b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordRepository.kt @@ -4,10 +4,9 @@ */ package com.zeapo.pwdstore.utils -import android.content.Context import android.content.SharedPreferences import androidx.core.content.edit -import androidx.preference.PreferenceManager +import com.zeapo.pwdstore.Application import java.io.File import java.io.FileFilter import java.util.Comparator @@ -49,7 +48,9 @@ open class PasswordRepository protected constructor() { companion object { private var repository: Repository? = null - private lateinit var settings: SharedPreferences + private val settings by lazy { Application.instance.sharedPrefs } + private val filesDir + get() = Application.instance.filesDir /** * Returns the git repository @@ -152,27 +153,21 @@ open class PasswordRepository protected constructor() { } @JvmStatic - fun getRepositoryDirectory(context: Context): File { - if (!::settings.isInitialized) { - settings = PreferenceManager.getDefaultSharedPreferences(context.applicationContext) - } + fun getRepositoryDirectory(): File { return if (settings.getBoolean(PreferenceKeys.GIT_EXTERNAL, false)) { val externalRepo = settings.getString(PreferenceKeys.GIT_EXTERNAL_REPO, null) if (externalRepo != null) File(externalRepo) else - File(context.filesDir.toString(), "/store") + File(filesDir.toString(), "/store") } else { - File(context.filesDir.toString(), "/store") + File(filesDir.toString(), "/store") } } @JvmStatic - fun initialize(context: Context): Repository? { - if (!::settings.isInitialized) { - settings = PreferenceManager.getDefaultSharedPreferences(context.applicationContext) - } - val dir = getRepositoryDirectory(context) + fun initialize(): Repository? { + val dir = getRepositoryDirectory() // uninitialize the repo if the dir does not exist or is absolutely empty settings.edit { if (!dir.exists() || !dir.isDirectory || dir.listFiles()!!.isEmpty()) { |
