From 6c7a066ea6974e9e81f5889036e42c58d0785392 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Tue, 25 Jan 2022 13:12:23 +0530 Subject: Add the ability to run garbage collection on the internal Git repository (#1683) --- .../main/java/dev/msfjarvis/aps/ui/git/base/BaseGitActivity.kt | 10 +++++++++- .../java/dev/msfjarvis/aps/ui/git/config/GitConfigActivity.kt | 9 +++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'app/src/main/java/dev/msfjarvis/aps/ui') diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/git/base/BaseGitActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/git/base/BaseGitActivity.kt index a008f6c7..e44e3e3c 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/git/base/BaseGitActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/git/base/BaseGitActivity.kt @@ -19,6 +19,7 @@ import dev.msfjarvis.aps.util.extensions.sharedPrefs import dev.msfjarvis.aps.util.git.ErrorMessages import dev.msfjarvis.aps.util.git.operation.BreakOutOfDetached import dev.msfjarvis.aps.util.git.operation.CloneOperation +import dev.msfjarvis.aps.util.git.operation.GcOperation import dev.msfjarvis.aps.util.git.operation.PullOperation import dev.msfjarvis.aps.util.git.operation.PushOperation import dev.msfjarvis.aps.util.git.operation.ResetToRemoteOperation @@ -51,6 +52,7 @@ abstract class BaseGitActivity : ContinuationContainerActivity() { PUSH, RESET, SYNC, + GC, } @Inject lateinit var gitSettings: GitSettings @@ -77,8 +79,14 @@ abstract class BaseGitActivity : ContinuationContainerActivity() { GitOp.SYNC -> SyncOperation(this, gitSettings.rebaseOnPull) GitOp.BREAK_OUT_OF_DETACHED -> BreakOutOfDetached(this) GitOp.RESET -> ResetToRemoteOperation(this) + GitOp.GC -> GcOperation(this) } - return op.executeAfterAuthentication(gitSettings.authMode).mapError(::transformGitError) + return (if (op.requiresAuth) { + op.executeAfterAuthentication(gitSettings.authMode) + } else { + op.execute() + }) + .mapError(::transformGitError) } fun finishOnSuccessHandler(@Suppress("UNUSED_PARAMETER") nothing: Unit) { diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitConfigActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitConfigActivity.kt index 04014e17..4fed7b99 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitConfigActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitConfigActivity.kt @@ -124,6 +124,15 @@ class GitConfigActivity : BaseGitActivity() { ) } } + binding.gitGc.setOnClickListener { + lifecycleScope.launch { + launchGitOperation(GitOp.GC) + .fold( + success = ::finishOnSuccessHandler, + failure = { err -> promptOnErrorHandler(err) { finish() } }, + ) + } + } } /** -- cgit v1.2.3