diff --git a/CHANGELOG.md b/CHANGELOG.md index 05b036ea..1189c0bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. - Some classes of errors would be swallowed by an unhelpful 'Invalid remote: origin' message - Repositories created within APS would contain invalid `.gpg-id` files with no ability to fix them from the app - Button labels were invisible in Autofill phishing warning screen +- Unsupported authentication modes would appear briefly in the server config screen ### Added diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitServerConfigActivity.kt b/app/src/main/java/com/zeapo/pwdstore/git/GitServerConfigActivity.kt index 364dcc1a..7f1bb6b3 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/GitServerConfigActivity.kt +++ b/app/src/main/java/com/zeapo/pwdstore/git/GitServerConfigActivity.kt @@ -71,24 +71,15 @@ class GitServerConfigActivity : BaseGitActivity() { } } - binding.serverUrl.setText(GitSettings.url) + binding.serverUrl.setText(GitSettings.url.also { + if (it.isNullOrEmpty()) return@also + setAuthModes(it.startsWith("http://") || it.startsWith("https://")) + }) binding.serverBranch.setText(GitSettings.branch) binding.serverUrl.doOnTextChanged { text, _, _, _ -> if (text.isNullOrEmpty()) return@doOnTextChanged - if (text.startsWith("http://") || text.startsWith("https://")) { - binding.authModeSshKey.isVisible = false - binding.authModeOpenKeychain.isVisible = false - binding.authModePassword.isVisible = true - if (binding.authModeGroup.checkedButtonId != binding.authModePassword.id) - binding.authModeGroup.check(View.NO_ID) - } else { - binding.authModeSshKey.isVisible = true - binding.authModeOpenKeychain.isVisible = true - binding.authModePassword.isVisible = true - if (binding.authModeGroup.checkedButtonId == View.NO_ID) - binding.authModeGroup.check(binding.authModeSshKey.id) - } + setAuthModes(text.startsWith("http://") || text.startsWith("https://")) } binding.saveButton.setOnClickListener { @@ -168,6 +159,22 @@ class GitServerConfigActivity : BaseGitActivity() { } } + private fun setAuthModes(isHttps: Boolean) = with(binding) { + if (isHttps) { + authModeSshKey.isVisible = false + authModeOpenKeychain.isVisible = false + authModePassword.isVisible = true + if (authModeGroup.checkedButtonId != authModePassword.id) + authModeGroup.check(View.NO_ID) + } else { + authModeSshKey.isVisible = true + authModeOpenKeychain.isVisible = true + authModePassword.isVisible = true + if (authModeGroup.checkedButtonId == View.NO_ID) + authModeGroup.check(authModeSshKey.id) + } + } + /** * Clones the repository, the directory exists, deletes it */ @@ -234,6 +241,7 @@ class GitServerConfigActivity : BaseGitActivity() { } companion object { + fun createCloneIntent(context: Context): Intent { return Intent(context, GitServerConfigActivity::class.java).apply { putExtra("cloning", true)