diff options
Diffstat (limited to 'app/src/main/java/dev/msfjarvis/aps/ui/git')
3 files changed, 25 insertions, 21 deletions
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 b9bfd911..1d917a3a 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 @@ -12,6 +12,7 @@ import com.github.michaelbull.result.Result import com.github.michaelbull.result.andThen import com.github.michaelbull.result.mapError import com.google.android.material.dialog.MaterialAlertDialogBuilder +import dagger.hilt.android.AndroidEntryPoint import dev.msfjarvis.aps.R import dev.msfjarvis.aps.util.extensions.getEncryptedGitPrefs import dev.msfjarvis.aps.util.extensions.sharedPrefs @@ -25,6 +26,7 @@ import dev.msfjarvis.aps.util.git.operation.SyncOperation import dev.msfjarvis.aps.util.git.sshj.ContinuationContainerActivity import dev.msfjarvis.aps.util.settings.GitSettings import dev.msfjarvis.aps.util.settings.PreferenceKeys +import javax.inject.Inject import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import net.schmizz.sshj.common.DisconnectReason @@ -36,6 +38,7 @@ import net.schmizz.sshj.userauth.UserAuthException * Abstract [AppCompatActivity] that holds some information that is commonly shared across * git-related tasks and makes sense to be held here. */ +@AndroidEntryPoint abstract class BaseGitActivity : ContinuationContainerActivity() { /** Enum of possible Git operations than can be run through [launchGitOperation]. */ @@ -48,29 +51,31 @@ abstract class BaseGitActivity : ContinuationContainerActivity() { SYNC, } + @Inject lateinit var gitSettings: GitSettings + /** * Attempt to launch the requested Git operation. * @param operation The type of git operation to launch */ suspend fun launchGitOperation(operation: GitOp): Result<Unit, Throwable> { - if (GitSettings.url == null) { + if (gitSettings.url == null) { return Err(IllegalStateException("Git url is not set!")) } - if (operation == GitOp.SYNC && !GitSettings.useMultiplexing) { + if (operation == GitOp.SYNC && !gitSettings.useMultiplexing) { // If the server does not support multiple SSH channels per connection, we cannot run // a sync operation without reconnecting and thus break sync into its two parts. return launchGitOperation(GitOp.PULL).andThen { launchGitOperation(GitOp.PUSH) } } val op = when (operation) { - GitOp.CLONE -> CloneOperation(this, GitSettings.url!!) - GitOp.PULL -> PullOperation(this, GitSettings.rebaseOnPull) + GitOp.CLONE -> CloneOperation(this, gitSettings.url!!) + GitOp.PULL -> PullOperation(this, gitSettings.rebaseOnPull) GitOp.PUSH -> PushOperation(this) - GitOp.SYNC -> SyncOperation(this, GitSettings.rebaseOnPull) + GitOp.SYNC -> SyncOperation(this, gitSettings.rebaseOnPull) GitOp.BREAK_OUT_OF_DETACHED -> BreakOutOfDetached(this) GitOp.RESET -> ResetToRemoteOperation(this) } - return op.executeAfterAuthentication(GitSettings.authMode).mapError(::transformGitError) + return op.executeAfterAuthentication(gitSettings.authMode).mapError(::transformGitError) } fun finishOnSuccessHandler(@Suppress("UNUSED_PARAMETER") nothing: Unit) { @@ -105,7 +110,7 @@ abstract class BaseGitActivity : ContinuationContainerActivity() { val err = rootCauseException(throwable) return when { err.message?.contains("cannot open additional channels") == true -> { - GitSettings.useMultiplexing = false + gitSettings.useMultiplexing = false SSHException( DisconnectReason.TOO_MANY_CONNECTIONS, "The server does not support multiple Git operations per SSH session. Please try again, a slower fallback mode will be used." 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 faaf426f..8ca719eb 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 @@ -25,7 +25,6 @@ import dev.msfjarvis.aps.databinding.ActivityGitConfigBinding import dev.msfjarvis.aps.ui.git.base.BaseGitActivity import dev.msfjarvis.aps.ui.git.log.GitLogActivity import dev.msfjarvis.aps.util.extensions.viewBinding -import dev.msfjarvis.aps.util.settings.GitSettings import kotlinx.coroutines.launch import org.eclipse.jgit.lib.Constants import org.eclipse.jgit.lib.Repository @@ -40,9 +39,9 @@ class GitConfigActivity : BaseGitActivity() { setContentView(binding.root) supportActionBar?.setDisplayHomeAsUpEnabled(true) - if (GitSettings.authorName.isEmpty()) binding.gitUserName.requestFocus() - else binding.gitUserName.setText(GitSettings.authorName) - binding.gitUserEmail.setText(GitSettings.authorEmail) + if (gitSettings.authorName.isEmpty()) binding.gitUserName.requestFocus() + else binding.gitUserName.setText(gitSettings.authorName) + binding.gitUserEmail.setText(gitSettings.authorEmail) setupTools() binding.saveButton.setOnClickListener { val email = binding.gitUserEmail.text.toString().trim() @@ -53,8 +52,8 @@ class GitConfigActivity : BaseGitActivity() { .setPositiveButton(getString(R.string.dialog_ok), null) .show() } else { - GitSettings.authorEmail = email - GitSettings.authorName = name + gitSettings.authorEmail = email + gitSettings.authorName = name Snackbar.make( binding.root, getString(R.string.git_server_config_save_success), @@ -102,8 +101,8 @@ class GitConfigActivity : BaseGitActivity() { setMessage( resources.getString( R.string.git_break_out_of_detached_success, - GitSettings.branch, - "conflicting-${GitSettings.branch}-...", + gitSettings.branch, + "conflicting-${gitSettings.branch}-...", ) ) setOnDismissListener { finish() } diff --git a/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitServerConfigActivity.kt b/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitServerConfigActivity.kt index cab8d3ae..5265131b 100644 --- a/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitServerConfigActivity.kt +++ b/app/src/main/java/dev/msfjarvis/aps/ui/git/config/GitServerConfigActivity.kt @@ -54,7 +54,7 @@ class GitServerConfigActivity : BaseGitActivity() { setContentView(binding.root) supportActionBar?.setDisplayHomeAsUpEnabled(true) - newAuthMode = GitSettings.authMode + newAuthMode = gitSettings.authMode binding.authModeGroup.apply { when (newAuthMode) { @@ -74,21 +74,21 @@ class GitServerConfigActivity : BaseGitActivity() { } binding.serverUrl.setText( - GitSettings.url.also { + gitSettings.url.also { if (it.isNullOrEmpty()) return@also setAuthModes(it.startsWith("http://") || it.startsWith("https://")) } ) - binding.serverBranch.setText(GitSettings.branch) + binding.serverBranch.setText(gitSettings.branch) binding.serverUrl.doOnTextChanged { text, _, _, _ -> if (text.isNullOrEmpty()) return@doOnTextChanged setAuthModes(text.startsWith("http://") || text.startsWith("https://")) } - binding.clearHostKeyButton.isVisible = GitSettings.hasSavedHostKey() + binding.clearHostKeyButton.isVisible = gitSettings.hasSavedHostKey() binding.clearHostKeyButton.setOnClickListener { - GitSettings.clearSavedHostKey() + gitSettings.clearSavedHostKey() Snackbar.make( binding.root, getString(R.string.clear_saved_host_key_success), @@ -135,7 +135,7 @@ class GitServerConfigActivity : BaseGitActivity() { return@setOnClickListener } when (val updateResult = - GitSettings.updateConnectionSettingsIfValid( + gitSettings.updateConnectionSettingsIfValid( newAuthMode = newAuthMode, newUrl = binding.serverUrl.text.toString().trim(), newBranch = binding.serverBranch.text.toString().trim() |
