mirror of
https://github.com/android-password-store/Android-Password-Store
synced 2025-09-01 14:55:19 +00:00
Fix behavior on failing Git operations (#1084)
This commit is contained in:
@@ -110,7 +110,11 @@ class PasswordFragment : Fragment(R.layout.password_recycler_view) {
|
|||||||
binding.swipeRefresher.isRefreshing = false
|
binding.swipeRefresher.isRefreshing = false
|
||||||
refreshPasswordList()
|
refreshPasswordList()
|
||||||
},
|
},
|
||||||
failure = ::finishAfterPromptOnErrorHandler,
|
failure = { err ->
|
||||||
|
promptOnErrorHandler(err) {
|
||||||
|
binding.swipeRefresher.isRefreshing = false
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -315,7 +315,7 @@ class PasswordStore : BaseGitActivity() {
|
|||||||
private fun runGitOperation(operation: Int) = lifecycleScope.launch {
|
private fun runGitOperation(operation: Int) = lifecycleScope.launch {
|
||||||
launchGitOperation(operation).fold(
|
launchGitOperation(operation).fold(
|
||||||
success = { refreshPasswordList() },
|
success = { refreshPasswordList() },
|
||||||
failure = ::finishAfterPromptOnErrorHandler,
|
failure = ::promptOnErrorHandler
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -61,7 +61,7 @@ abstract class BaseGitActivity : AppCompatActivity() {
|
|||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun finishAfterPromptOnErrorHandler(err: Throwable) {
|
fun promptOnErrorHandler(err: Throwable, onPromptDone: () -> Unit = {}) {
|
||||||
val error = rootCauseException(err)
|
val error = rootCauseException(err)
|
||||||
if (!isExplicitlyUserInitiatedError(error)) {
|
if (!isExplicitlyUserInitiatedError(error)) {
|
||||||
getEncryptedPrefs("git_operation").edit {
|
getEncryptedPrefs("git_operation").edit {
|
||||||
@@ -69,12 +69,17 @@ abstract class BaseGitActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
sharedPrefs.edit { remove(PreferenceKeys.SSH_OPENKEYSTORE_KEYID) }
|
sharedPrefs.edit { remove(PreferenceKeys.SSH_OPENKEYSTORE_KEYID) }
|
||||||
d(error)
|
d(error)
|
||||||
MaterialAlertDialogBuilder(this)
|
MaterialAlertDialogBuilder(this).run {
|
||||||
.setTitle(resources.getString(R.string.jgit_error_dialog_title))
|
setTitle(resources.getString(R.string.jgit_error_dialog_title))
|
||||||
.setMessage(ErrorMessages[error])
|
setMessage(ErrorMessages[error])
|
||||||
.setPositiveButton(resources.getString(R.string.dialog_ok)) { _, _ ->
|
setPositiveButton(resources.getString(R.string.dialog_ok)) { _, _ -> }
|
||||||
finish()
|
setOnDismissListener {
|
||||||
}.show()
|
onPromptDone()
|
||||||
|
}
|
||||||
|
show()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
onPromptDone()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -81,28 +81,36 @@ class GitConfigActivity : BaseGitActivity() {
|
|||||||
binding.gitAbortRebase.setOnClickListener {
|
binding.gitAbortRebase.setOnClickListener {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
launchGitOperation(BREAK_OUT_OF_DETACHED).fold(
|
launchGitOperation(BREAK_OUT_OF_DETACHED).fold(
|
||||||
success = {
|
success = {
|
||||||
MaterialAlertDialogBuilder(this@GitConfigActivity)
|
MaterialAlertDialogBuilder(this@GitConfigActivity).run {
|
||||||
.setTitle(resources.getString(R.string.git_abort_and_push_title))
|
setTitle(resources.getString(R.string.git_abort_and_push_title))
|
||||||
.setMessage(resources.getString(
|
setMessage(resources.getString(
|
||||||
R.string.git_break_out_of_detached_success,
|
R.string.git_break_out_of_detached_success,
|
||||||
GitSettings.branch,
|
GitSettings.branch,
|
||||||
"conflicting-${GitSettings.branch}-...",
|
"conflicting-${GitSettings.branch}-...",
|
||||||
))
|
))
|
||||||
.setOnCancelListener { finish() }
|
setOnDismissListener() { finish() }
|
||||||
.setPositiveButton(resources.getString(R.string.dialog_ok)) { _, _ ->
|
setPositiveButton(resources.getString(R.string.dialog_ok)) { _, _ -> }
|
||||||
finish()
|
show()
|
||||||
}.show()
|
}
|
||||||
},
|
},
|
||||||
failure = ::finishAfterPromptOnErrorHandler,
|
failure = { err ->
|
||||||
|
promptOnErrorHandler(err) {
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
binding.gitResetToRemote.setOnClickListener {
|
binding.gitResetToRemote.setOnClickListener {
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
launchGitOperation(REQUEST_RESET).fold(
|
launchGitOperation(REQUEST_RESET).fold(
|
||||||
success = ::finishOnSuccessHandler,
|
success = ::finishOnSuccessHandler,
|
||||||
failure = ::finishAfterPromptOnErrorHandler,
|
failure = { err ->
|
||||||
|
promptOnErrorHandler(err) {
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -130,7 +130,11 @@ class GitServerConfigActivity : BaseGitActivity() {
|
|||||||
setResult(RESULT_OK)
|
setResult(RESULT_OK)
|
||||||
finish()
|
finish()
|
||||||
},
|
},
|
||||||
failure = ::finishAfterPromptOnErrorHandler,
|
failure = { err ->
|
||||||
|
promptOnErrorHandler(err) {
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}.onFailure { e ->
|
}.onFailure { e ->
|
||||||
@@ -160,7 +164,11 @@ class GitServerConfigActivity : BaseGitActivity() {
|
|||||||
setResult(RESULT_OK)
|
setResult(RESULT_OK)
|
||||||
finish()
|
finish()
|
||||||
},
|
},
|
||||||
failure = ::finishAfterPromptOnErrorHandler,
|
failure = { err ->
|
||||||
|
promptOnErrorHandler(err) {
|
||||||
|
finish()
|
||||||
|
}
|
||||||
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user