aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt25
1 files changed, 17 insertions, 8 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt b/app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt
index 7a818bcf..706592fe 100644
--- a/app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt
@@ -12,6 +12,7 @@ import androidx.annotation.CallSuper
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.edit
import androidx.core.text.isDigitsOnly
+import androidx.lifecycle.lifecycleScope
import androidx.preference.PreferenceManager
import com.github.ajalt.timberkt.Timber.tag
import com.github.ajalt.timberkt.e
@@ -20,11 +21,19 @@ import com.zeapo.pwdstore.R
import com.zeapo.pwdstore.git.config.ConnectionMode
import com.zeapo.pwdstore.git.config.Protocol
import com.zeapo.pwdstore.git.config.SshApiSessionFactory
+import com.zeapo.pwdstore.git.operation.BreakOutOfDetached
+import com.zeapo.pwdstore.git.operation.CloneOperation
+import com.zeapo.pwdstore.git.operation.GitOperation
+import com.zeapo.pwdstore.git.operation.PullOperation
+import com.zeapo.pwdstore.git.operation.PushOperation
+import com.zeapo.pwdstore.git.operation.ResetToRemoteOperation
+import com.zeapo.pwdstore.git.operation.SyncOperation
import com.zeapo.pwdstore.utils.PasswordRepository
import com.zeapo.pwdstore.utils.PreferenceKeys
import com.zeapo.pwdstore.utils.getEncryptedPrefs
import java.io.File
import java.net.URI
+import kotlinx.coroutines.launch
/**
* Abstract AppCompatActivity that holds some information that is commonly shared across git-related
@@ -166,7 +175,7 @@ abstract class BaseGitActivity : AppCompatActivity() {
*
* @param operation The type of git operation to launch
*/
- fun launchGitOperation(operation: Int) {
+ suspend fun launchGitOperation(operation: Int) {
if (url == null) {
setResult(RESULT_CANCELED)
finish()
@@ -190,12 +199,12 @@ abstract class BaseGitActivity : AppCompatActivity() {
val localDir = requireNotNull(PasswordRepository.getRepositoryDirectory(this))
val op = when (operation) {
- REQUEST_CLONE, GitOperation.GET_SSH_KEY_FROM_CLONE -> CloneOperation(localDir, this).setCommand(url!!)
- REQUEST_PULL -> PullOperation(localDir, this).setCommand()
- REQUEST_PUSH -> PushOperation(localDir, this).setCommand()
- REQUEST_SYNC -> SyncOperation(localDir, this).setCommands()
- BREAK_OUT_OF_DETACHED -> BreakOutOfDetached(localDir, this).setCommands()
- REQUEST_RESET -> ResetToRemoteOperation(localDir, this).setCommands()
+ REQUEST_CLONE, GitOperation.GET_SSH_KEY_FROM_CLONE -> CloneOperation(localDir, url!!, this)
+ REQUEST_PULL -> PullOperation(localDir, this)
+ REQUEST_PUSH -> PushOperation(localDir, this)
+ REQUEST_SYNC -> SyncOperation(localDir, this)
+ BREAK_OUT_OF_DETACHED -> BreakOutOfDetached(localDir, this)
+ REQUEST_RESET -> ResetToRemoteOperation(localDir, this)
SshApiSessionFactory.POST_SIGNATURE -> return
else -> {
tag(TAG).e { "Operation not recognized : $operation" }
@@ -239,7 +248,7 @@ abstract class BaseGitActivity : AppCompatActivity() {
if (identityBuilder != null) {
identityBuilder!!.consume(data)
}
- launchGitOperation(requestCode)
+ lifecycleScope.launch { launchGitOperation(requestCode) }
}
super.onActivityResult(requestCode, resultCode, data)
}