aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/dev/msfjarvis/aps/util/settings
diff options
context:
space:
mode:
authorAditya Wasan <adityawasan55@gmail.com>2021-05-22 17:25:43 +0530
committerHarsh Shandilya <me@msfjarvis.dev>2021-05-22 20:05:53 +0530
commitc3f8de99be1f81958a1d7a7546f948930b38a322 (patch)
treea46189c1c093d1cd1f23143d921fbd2e10f024c5 /app/src/main/java/dev/msfjarvis/aps/util/settings
parent47099c723b006cb305af4f2785e547a6525a903a (diff)
downloadHardenedPass-c3f8de99be1f81958a1d7a7546f948930b38a322.tar.gz
HardenedPass-c3f8de99be1f81958a1d7a7546f948930b38a322.zip
app: refactor GitSettings and ProxyUtils and inject them using hilt
Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>
Diffstat (limited to 'app/src/main/java/dev/msfjarvis/aps/util/settings')
-rw-r--r--app/src/main/java/dev/msfjarvis/aps/util/settings/GitSettings.kt51
-rw-r--r--app/src/main/java/dev/msfjarvis/aps/util/settings/Migrations.kt21
2 files changed, 29 insertions, 43 deletions
diff --git a/app/src/main/java/dev/msfjarvis/aps/util/settings/GitSettings.kt b/app/src/main/java/dev/msfjarvis/aps/util/settings/GitSettings.kt
index d3c85fa7..0d580142 100644
--- a/app/src/main/java/dev/msfjarvis/aps/util/settings/GitSettings.kt
+++ b/app/src/main/java/dev/msfjarvis/aps/util/settings/GitSettings.kt
@@ -4,16 +4,19 @@
*/
package dev.msfjarvis.aps.util.settings
+import android.content.SharedPreferences
import androidx.core.content.edit
import com.github.michaelbull.result.getOrElse
import com.github.michaelbull.result.runCatching
-import dev.msfjarvis.aps.Application
import dev.msfjarvis.aps.data.repo.PasswordRepository
-import dev.msfjarvis.aps.util.extensions.getEncryptedGitPrefs
-import dev.msfjarvis.aps.util.extensions.getEncryptedProxyPrefs
+import dev.msfjarvis.aps.injection.context.FilesDirPath
+import dev.msfjarvis.aps.injection.prefs.GitPreferences
+import dev.msfjarvis.aps.injection.prefs.ProxyPreferences
+import dev.msfjarvis.aps.injection.prefs.SettingsPreferences
import dev.msfjarvis.aps.util.extensions.getString
-import dev.msfjarvis.aps.util.extensions.sharedPrefs
import java.io.File
+import javax.inject.Inject
+import javax.inject.Singleton
import org.eclipse.jgit.transport.URIish
enum class Protocol(val pref: String) {
@@ -48,29 +51,22 @@ enum class AuthMode(val pref: String) {
}
}
-object GitSettings {
+@Singleton
+class GitSettings @Inject constructor(
+ @SettingsPreferences private val settings: SharedPreferences,
+ @GitPreferences private val encryptedSettings: SharedPreferences,
+ @ProxyPreferences private val proxySettings: SharedPreferences,
+ @FilesDirPath private val filesDirPath: String,
+) {
- private const val DEFAULT_BRANCH = "master"
-
- private val settings by lazy(LazyThreadSafetyMode.PUBLICATION) {
- Application.instance.sharedPrefs
- }
- private val encryptedSettings by lazy(LazyThreadSafetyMode.PUBLICATION) {
- Application.instance.getEncryptedGitPrefs()
- }
- private val proxySettings by lazy(LazyThreadSafetyMode.PUBLICATION) {
- Application.instance.getEncryptedProxyPrefs()
- }
private val hostKeyPath by lazy(LazyThreadSafetyMode.NONE) {
- "${Application.instance.filesDir}/.host_key"
+ "$filesDirPath/.host_key"
}
-
var authMode
get() = AuthMode.fromString(settings.getString(PreferenceKeys.GIT_REMOTE_AUTH))
private set(value) {
settings.edit { putString(PreferenceKeys.GIT_REMOTE_AUTH, value.pref) }
}
-
var url
get() = settings.getString(PreferenceKeys.GIT_REMOTE_URL)
private set(value) {
@@ -84,55 +80,46 @@ object GitSettings {
encryptedSettings.edit { remove(PreferenceKeys.HTTPS_PASSWORD) }
clearSavedHostKey()
}
-
var authorName
get() = settings.getString(PreferenceKeys.GIT_CONFIG_AUTHOR_NAME) ?: ""
set(value) {
settings.edit { putString(PreferenceKeys.GIT_CONFIG_AUTHOR_NAME, value) }
}
-
var authorEmail
get() = settings.getString(PreferenceKeys.GIT_CONFIG_AUTHOR_EMAIL) ?: ""
set(value) {
settings.edit { putString(PreferenceKeys.GIT_CONFIG_AUTHOR_EMAIL, value) }
}
-
var branch
get() = settings.getString(PreferenceKeys.GIT_BRANCH_NAME) ?: DEFAULT_BRANCH
private set(value) {
settings.edit { putString(PreferenceKeys.GIT_BRANCH_NAME, value) }
}
-
var useMultiplexing
get() = settings.getBoolean(PreferenceKeys.GIT_REMOTE_USE_MULTIPLEXING, true)
set(value) {
settings.edit { putBoolean(PreferenceKeys.GIT_REMOTE_USE_MULTIPLEXING, value) }
}
-
var proxyHost
get() = proxySettings.getString(PreferenceKeys.PROXY_HOST)
set(value) {
proxySettings.edit { putString(PreferenceKeys.PROXY_HOST, value) }
}
-
var proxyPort
get() = proxySettings.getInt(PreferenceKeys.PROXY_PORT, -1)
set(value) {
proxySettings.edit { putInt(PreferenceKeys.PROXY_PORT, value) }
}
-
var proxyUsername
get() = settings.getString(PreferenceKeys.PROXY_USERNAME)
set(value) {
proxySettings.edit { putString(PreferenceKeys.PROXY_USERNAME, value) }
}
-
var proxyPassword
get() = proxySettings.getString(PreferenceKeys.PROXY_PASSWORD)
set(value) {
proxySettings.edit { putString(PreferenceKeys.PROXY_PASSWORD, value) }
}
-
var rebaseOnPull
get() = settings.getBoolean(PreferenceKeys.REBASE_ON_PULL, true)
set(value) {
@@ -141,8 +128,7 @@ object GitSettings {
sealed class UpdateConnectionSettingsResult {
class MissingUsername(val newProtocol: Protocol) : UpdateConnectionSettingsResult()
- class AuthModeMismatch(val newProtocol: Protocol, val validModes: List<AuthMode>) :
- UpdateConnectionSettingsResult()
+ class AuthModeMismatch(val newProtocol: Protocol, val validModes: List<AuthMode>) : UpdateConnectionSettingsResult()
object Valid : UpdateConnectionSettingsResult()
object FailedToParseUrl : UpdateConnectionSettingsResult()
}
@@ -164,7 +150,6 @@ object GitSettings {
}
if (newAuthMode != AuthMode.None && parsedUrl.user.isNullOrBlank())
return UpdateConnectionSettingsResult.MissingUsername(newProtocol)
-
val validHttpsAuth = listOf(AuthMode.None, AuthMode.Password)
val validSshAuth = listOf(AuthMode.OpenKeychain, AuthMode.Password, AuthMode.SshKey)
when {
@@ -189,4 +174,8 @@ object GitSettings {
/** Returns true if a host key was previously saved */
fun hasSavedHostKey(): Boolean = File(hostKeyPath).exists()
+
+ companion object {
+ private const val DEFAULT_BRANCH = "master"
+ }
}
diff --git a/app/src/main/java/dev/msfjarvis/aps/util/settings/Migrations.kt b/app/src/main/java/dev/msfjarvis/aps/util/settings/Migrations.kt
index b9333617..b24914d0 100644
--- a/app/src/main/java/dev/msfjarvis/aps/util/settings/Migrations.kt
+++ b/app/src/main/java/dev/msfjarvis/aps/util/settings/Migrations.kt
@@ -6,7 +6,6 @@
package dev.msfjarvis.aps.util.settings
-import android.content.Context
import android.content.SharedPreferences
import androidx.core.content.edit
import com.github.ajalt.timberkt.e
@@ -14,20 +13,18 @@ import com.github.ajalt.timberkt.i
import com.github.michaelbull.result.get
import com.github.michaelbull.result.runCatching
import dev.msfjarvis.aps.util.extensions.getString
-import dev.msfjarvis.aps.util.extensions.sharedPrefs
import dev.msfjarvis.aps.util.git.sshj.SshKey
import java.io.File
import java.net.URI
-fun runMigrations(context: Context) {
- val sharedPrefs = context.sharedPrefs
- migrateToGitUrlBasedConfig(sharedPrefs)
+fun runMigrations(filesDirPath: String, sharedPrefs: SharedPreferences, gitSettings: GitSettings) {
+ migrateToGitUrlBasedConfig(sharedPrefs, gitSettings)
migrateToHideAll(sharedPrefs)
- migrateToSshKey(context, sharedPrefs)
+ migrateToSshKey(filesDirPath, sharedPrefs)
migrateToClipboardHistory(sharedPrefs)
}
-private fun migrateToGitUrlBasedConfig(sharedPrefs: SharedPreferences) {
+private fun migrateToGitUrlBasedConfig(sharedPrefs: SharedPreferences, gitSettings: GitSettings) {
val serverHostname = sharedPrefs.getString(PreferenceKeys.GIT_REMOTE_SERVER) ?: return
i { "Migrating to URL-based Git config" }
val serverPort = sharedPrefs.getString(PreferenceKeys.GIT_REMOTE_PORT) ?: ""
@@ -76,10 +73,10 @@ private fun migrateToGitUrlBasedConfig(sharedPrefs: SharedPreferences) {
remove(PreferenceKeys.GIT_REMOTE_PROTOCOL)
}
if (url == null ||
- GitSettings.updateConnectionSettingsIfValid(
- newAuthMode = GitSettings.authMode,
+ gitSettings.updateConnectionSettingsIfValid(
+ newAuthMode = gitSettings.authMode,
newUrl = url,
- newBranch = GitSettings.branch
+ newBranch = gitSettings.branch
) != GitSettings.UpdateConnectionSettingsResult.Valid
) {
e { "Failed to migrate to URL-based Git config, generated URL is invalid" }
@@ -95,8 +92,8 @@ private fun migrateToHideAll(sharedPrefs: SharedPreferences) {
}
}
-private fun migrateToSshKey(context: Context, sharedPrefs: SharedPreferences) {
- val privateKeyFile = File(context.filesDir, ".ssh_key")
+private fun migrateToSshKey(filesDirPath: String, sharedPrefs: SharedPreferences) {
+ val privateKeyFile = File(filesDirPath, ".ssh_key")
if (sharedPrefs.contains(PreferenceKeys.USE_GENERATED_KEY) &&
!SshKey.exists &&
privateKeyFile.exists()