diff options
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java')
| -rw-r--r-- | app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java b/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java index e945c973..eb9b48ab 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java @@ -14,6 +14,7 @@ import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; +import android.widget.Button; import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; @@ -48,13 +49,13 @@ public class GitActivity extends AppCompatActivity { public static final int REQUEST_SYNC = 106; public static final int REQUEST_CREATE = 107; public static final int EDIT_GIT_CONFIG = 108; + public static final int BREAK_OUT_OF_DETACHED = 109; private static final String TAG = "GitAct"; private static final String emailPattern = "^[^@]+@[^@]+$"; private Activity activity; private Context context; private String protocol; private String connectionMode; - private File localDir; private String hostname; private SharedPreferences settings; private SshApiSessionFactory.IdentityBuilder identityBuilder; @@ -479,6 +480,7 @@ public class GitActivity extends AppCompatActivity { // init the server information final EditText git_user_name = findViewById(R.id.git_user_name); final EditText git_user_email = findViewById(R.id.git_user_email); + final Button abort = findViewById(R.id.git_abort_rebase); git_user_name.setText(settings.getString("git_config_user_name", "")); git_user_email.setText(settings.getString("git_config_user_email", "")); @@ -492,6 +494,9 @@ public class GitActivity extends AppCompatActivity { Ref ref = repo.getRef("refs/heads/master"); String head = ref.getObjectId().equals(objectId) ? ref.getName() : "DETACHED"; git_commit_hash.setText(String.format("%s (%s)", objectId.abbreviate(8).name(), head)); + + // enable the abort button only if we're rebasing + abort.setEnabled(repo.getRepositoryState().isRebasing()); } catch (Exception e) { // ignore } @@ -532,23 +537,7 @@ public class GitActivity extends AppCompatActivity { } public void abortRebase(View view) { - final Repository repo = PasswordRepository.getRepository(PasswordRepository.getRepositoryDirectory(getApplicationContext())); - if (repo != null) { - new GitOperation(PasswordRepository.getRepositoryDirectory(activity), activity) { - @Override - public void execute() { - Log.d(TAG, "Resetting the repository"); - assert repository != null; - GitAsyncTask tasks = new GitAsyncTask(activity, false, true, this); - tasks.execute(new Git(repo).rebase().setOperation(RebaseCommand.Operation.ABORT)); - } - - @Override - public void onSuccess() { - showGitConfig(); - } - }.execute(); - } + launchGitOperation(BREAK_OUT_OF_DETACHED); } /** @@ -558,7 +547,7 @@ public class GitActivity extends AppCompatActivity { if (PasswordRepository.getRepository(null) == null) { PasswordRepository.initialize(this); } - localDir = PasswordRepository.getRepositoryDirectory(context); + File localDir = PasswordRepository.getRepositoryDirectory(context); if (!saveConfiguration()) return; @@ -649,6 +638,7 @@ public class GitActivity extends AppCompatActivity { */ protected void launchGitOperation(int operation) { GitOperation op; + File localDir = PasswordRepository.getRepositoryDirectory(context); try { @@ -685,6 +675,10 @@ public class GitActivity extends AppCompatActivity { op = new SyncOperation(localDir, activity).setCommands(); break; + case BREAK_OUT_OF_DETACHED: + op = new BreakOutOfDetached(localDir, activity).setCommands(); + break; + case GitOperation.GET_SSH_KEY_FROM_CLONE: op = new CloneOperation(localDir, activity).setCommand(hostname); break; |
