From d06f64a75c78991da0b74319c83d794117a8126c Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Wed, 4 Nov 2026 20:06:54 +0100 Subject: feat(app): show a snackbar after a successful git operation Pull to sync and sync, pull and push from the list's menu showed nothing on success. They now show ": done", as hard reset and garbage collection do in the git settings. Co-Authored-By: Claude Opus 5.5 --- app/src/main/java/app/passwordstore/ui/list/ListDestination.kt | 8 +++++++- app/src/main/java/app/passwordstore/ui/list/ListScreen.kt | 2 +- app/src/main/java/app/passwordstore/ui/main/MainActivity.kt | 3 +-- 3 files changed, 9 insertions(+), 4 deletions(-) (limited to 'app/src/main/java') diff --git a/app/src/main/java/app/passwordstore/ui/list/ListDestination.kt b/app/src/main/java/app/passwordstore/ui/list/ListDestination.kt index a9228484..54a7e66c 100644 --- a/app/src/main/java/app/passwordstore/ui/list/ListDestination.kt +++ b/app/src/main/java/app/passwordstore/ui/list/ListDestination.kt @@ -38,9 +38,11 @@ import app.passwordstore.ui.git.base.BaseGitActivity.GitOp import app.passwordstore.ui.main.MainActivity import app.passwordstore.util.extensions.isInsideRepository import app.passwordstore.util.extensions.sharedPrefs +import app.passwordstore.util.extensions.snackbar import app.passwordstore.util.settings.AuthMode import app.passwordstore.util.settings.PreferenceKeys import app.passwordstore.util.viewmodel.SearchableRepositoryViewModel +import com.github.michaelbull.result.onSuccess import java.io.File import kotlinx.collections.immutable.toImmutableSet import kotlinx.coroutines.launch @@ -115,7 +117,11 @@ fun ListDestination( fun runGit(op: GitOp) { refreshing = true activity.lifecycleScope.launch { - activity.runGit(op) + activity.runGit(op).onSuccess { + activity.snackbar( + message = activity.getString(R.string.git_tool_done, activity.getString(op.label)) + ) + } refreshing = false refresh() } diff --git a/app/src/main/java/app/passwordstore/ui/list/ListScreen.kt b/app/src/main/java/app/passwordstore/ui/list/ListScreen.kt index 720cfc0a..1b359d5b 100644 --- a/app/src/main/java/app/passwordstore/ui/list/ListScreen.kt +++ b/app/src/main/java/app/passwordstore/ui/list/ListScreen.kt @@ -331,7 +331,7 @@ private fun ActionIcon(@DrawableRes icon: Int, @StringRes label: Int, onClick: ( } } -private val GitOp.label: Int +internal val GitOp.label: Int get() = when (this) { GitOp.SYNC -> R.string.git_sync diff --git a/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt b/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt index ce5fb1df..462bdb18 100644 --- a/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt +++ b/app/src/main/java/app/passwordstore/ui/main/MainActivity.kt @@ -228,9 +228,8 @@ class MainActivity : BaseGitActivity() { } /** Runs [op]; failures show the usual git error dialog. */ - suspend fun runGit(op: GitOp) { + suspend fun runGit(op: GitOp): Result = launchGitOperation(op).onFailure { promptOnErrorHandler(it) } - } /** Runs [op] (a hard reset against [branch]) and returns its outcome; the caller reports it. */ suspend fun gitOperation(op: GitOp, branch: String = ""): Result { -- cgit v1.2.3