diff options
11 files changed, 34 insertions, 98 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java index 28fa3d4a..15f8a97b 100644 --- a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java +++ b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java @@ -23,19 +23,16 @@ import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.SearchView; import android.text.TextUtils; -import android.text.format.DateUtils; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; -import android.widget.Toast; import com.zeapo.pwdstore.crypto.PgpHandler; import com.zeapo.pwdstore.git.GitActivity; import com.zeapo.pwdstore.git.GitAsyncTask; import com.zeapo.pwdstore.git.GitOperation; -import com.zeapo.pwdstore.git.SyncOperation; import com.zeapo.pwdstore.pwgen.PRNGFixes; import com.zeapo.pwdstore.utils.PasswordItem; import com.zeapo.pwdstore.utils.PasswordRecyclerAdapter; @@ -46,13 +43,8 @@ import org.eclipse.jgit.api.Git; import org.eclipse.jgit.lib.Repository; import java.io.File; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Calendar; import java.util.Collections; -import java.util.Date; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -347,20 +339,6 @@ public class PasswordStore extends AppCompatActivity { startActivityForResult(intent, HOME); } else { checkLocalRepository(PasswordRepository.getRepositoryDirectory(getApplicationContext())); - File localDir = PasswordRepository.getRepositoryDirectory(getApplicationContext()); - checkLocalRepository(localDir); - - int lastSync = settings.getInt("last_sync", -1); - int currentTime = (int) Calendar.getInstance().getTimeInMillis() / 1000; - if (settings.getBoolean("git_auto_sync", false) && currentTime > lastSync + 3600) { - Toast.makeText(getApplicationContext(), "Running git auto sync", Toast.LENGTH_LONG).show(); - - Intent intent; - intent = new Intent(this, GitActivity.class); - intent.putExtra("Operation", GitActivity.REQUEST_SYNC); - startActivityForResult(intent, GitActivity.REQUEST_SYNC); - settings.edit().putInt("last_sync", currentTime).apply(); - } } } @@ -567,7 +545,7 @@ public class PasswordStore extends AppCompatActivity { private void commitChange(final String message) { new GitOperation(PasswordRepository.getRepositoryDirectory(activity), activity) { @Override - public void execute(boolean finishOnEnd) { + public void execute() { Log.d(TAG, "Commiting with message " + message); Git git = new Git(this.repository); GitAsyncTask tasks = new GitAsyncTask(activity, finishOnEnd, true, this); @@ -576,7 +554,7 @@ public class PasswordStore extends AppCompatActivity { git.commit().setAll(true).setMessage(message) ); } - }.execute(false); + }.execute(); } protected void onActivityResult(int requestCode, int resultCode, diff --git a/app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.java b/app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.java index 9d245e13..25dba1fc 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.java @@ -66,11 +66,11 @@ public class CloneOperation extends GitOperation { } @Override - public void execute(boolean finishOnEnd) { + public void execute() { if (this.provider != null) { ((CloneCommand) this.command).setCredentialsProvider(this.provider); } - new GitAsyncTask(callingActivity, finishOnEnd, false, this).execute(this.command); + new GitAsyncTask(callingActivity, true, false, this).execute(this.command); } @Override 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 45da34fb..66e308b9 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/GitActivity.java @@ -536,7 +536,7 @@ public class GitActivity extends AppCompatActivity { try { new CloneOperation(localDir, activity) .setCommand(hostname) - .executeAfterAuthentication(connectionMode, settings.getString("git_remote_username", "git"), new File(getFilesDir() + "/.ssh_key"), true); + .executeAfterAuthentication(connectionMode, settings.getString("git_remote_username", "git"), new File(getFilesDir() + "/.ssh_key")); } catch (Exception e) { //This is what happens when jgit fails :( //TODO Handle the diffent cases of exceptions @@ -574,7 +574,7 @@ public class GitActivity extends AppCompatActivity { } new CloneOperation(localDir, activity) .setCommand(hostname) - .executeAfterAuthentication(connectionMode, settings.getString("git_remote_username", "git"), new File(getFilesDir() + "/.ssh_key"), true); + .executeAfterAuthentication(connectionMode, settings.getString("git_remote_username", "git"), new File(getFilesDir() + "/.ssh_key")); } catch (Exception e) { //This is what happens when jgit fails :( //TODO Handle the diffent cases of exceptions @@ -632,9 +632,7 @@ public class GitActivity extends AppCompatActivity { } try { - op.executeAfterAuthentication(connectionMode, - settings.getString("git_remote_username", "git"), - new File(getFilesDir() + "/.ssh_key"), false); + op.executeAfterAuthentication(connectionMode, settings.getString("git_remote_username", "git"), new File(getFilesDir() + "/.ssh_key")); } catch (Exception e) { e.printStackTrace(); } @@ -676,7 +674,7 @@ public class GitActivity extends AppCompatActivity { } try { - op.executeAfterAuthentication(connectionMode, settings.getString("git_remote_username", "git"), new File(getFilesDir() + "/.ssh_key"), true); + op.executeAfterAuthentication(connectionMode, settings.getString("git_remote_username", "git"), new File(getFilesDir() + "/.ssh_key")); } catch (Exception e) { e.printStackTrace(); } diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitAsyncTask.java b/app/src/main/java/com/zeapo/pwdstore/git/GitAsyncTask.java index fa323bf4..26af4c89 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/GitAsyncTask.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/GitAsyncTask.java @@ -3,11 +3,7 @@ package com.zeapo.pwdstore.git; import android.app.Activity; import android.app.ProgressDialog; import android.os.AsyncTask; -import android.support.design.widget.Snackbar; -import android.text.Html; -import android.text.Spanned; import android.util.Log; -import android.widget.Toast; import com.zeapo.pwdstore.PasswordStore; import com.zeapo.pwdstore.R; @@ -17,43 +13,26 @@ import org.eclipse.jgit.api.GitCommand; import org.eclipse.jgit.api.StatusCommand; -public class GitAsyncTask extends AsyncTask<GitCommand, String, String> { +public class GitAsyncTask extends AsyncTask<GitCommand, Integer, String> { private Activity activity; - private boolean lockAndFinishActivity; + private boolean finishOnEnd; private boolean refreshListOnEnd; private ProgressDialog dialog; private GitOperation operation; - private Snackbar snack; - public GitAsyncTask(Activity activity, boolean lockAndFinishActivity, boolean refreshListOnEnd, GitOperation operation) { + public GitAsyncTask(Activity activity, boolean finishOnEnd, boolean refreshListOnEnd, GitOperation operation) { this.activity = activity; - this.lockAndFinishActivity = lockAndFinishActivity; + this.finishOnEnd = finishOnEnd; this.refreshListOnEnd = refreshListOnEnd; this.operation = operation; - this.dialog = new ProgressDialog(this.activity); + dialog = new ProgressDialog(this.activity); } protected void onPreExecute() { - if (lockAndFinishActivity) { - final Spanned message = Html.fromHtml(String.format("Running %s", operation.getClass().getSimpleName())); - this.dialog.setMessage(message); - this.dialog.setCancelable(false); - this.dialog.show(); - } else { - final Spanned message = Html.fromHtml(String.format("<font color=\"#ffffff\">Running %s</font>", operation.getClass().getSimpleName())); - Toast.makeText(activity.getApplicationContext(), message, Toast.LENGTH_LONG).show(); - } - } - - protected void onProgressUpdate(String... progress) { - if (lockAndFinishActivity) { - final Spanned message = Html.fromHtml(String.format("Running jgit command: <strong>%s</strong>", progress[0])); - this.dialog.setMessage(message); - } else { - final Spanned message = Html.fromHtml(String.format("<font color=\"#ffffff\">Running jgit command: <strong>%s</strong></font>", progress[0])); - Toast.makeText(activity.getApplicationContext(), message, Toast.LENGTH_LONG).show(); - } + this.dialog.setMessage(activity.getResources().getString(R.string.running_dialog_text)); + this.dialog.setCancelable(false); + this.dialog.show(); } @Override @@ -73,8 +52,7 @@ public class GitAsyncTask extends AsyncTask<GitCommand, String, String> { } else { command.call(); } - String opName = command.getClass().getSimpleName(); - publishProgress(opName); + } catch (Exception e) { e.printStackTrace(); return e.getMessage() + "\nCaused by:\n" + e.getCause(); @@ -97,7 +75,7 @@ public class GitAsyncTask extends AsyncTask<GitCommand, String, String> { if (!result.isEmpty()) { this.operation.onTaskEnded(result); } else { - if (lockAndFinishActivity) { + if (finishOnEnd) { this.activity.setResult(Activity.RESULT_OK); this.activity.finish(); } diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.java b/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.java index 4dc39293..f6b05f4c 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.java @@ -76,10 +76,8 @@ public abstract class GitOperation { /** * Executes the GitCommand in an async task - * - * @param finishOnEnd */ - public abstract void execute(boolean finishOnEnd); + public abstract void execute(); /** * Executes the GitCommand in an async task after creating the authentication @@ -87,10 +85,9 @@ public abstract class GitOperation { * @param connectionMode the server-connection mode * @param username the username * @param sshKey the ssh-key file - * @param finishOnEnd */ - public void executeAfterAuthentication(final String connectionMode, final String username, @Nullable final File sshKey, boolean finishOnEnd) { - executeAfterAuthentication(connectionMode, username, sshKey, false, finishOnEnd); + public void executeAfterAuthentication(final String connectionMode, final String username, @Nullable final File sshKey) { + executeAfterAuthentication(connectionMode, username, sshKey, false); } /** @@ -100,14 +97,8 @@ public abstract class GitOperation { * @param username the username * @param sshKey the ssh-key file * @param showError show the passphrase edit text in red - * @param finishOnEnd */ - private void executeAfterAuthentication( - final String connectionMode, - final String username, - @Nullable final File sshKey, - final boolean showError, - final boolean finishOnEnd) { + private void executeAfterAuthentication(final String connectionMode, final String username, @Nullable final File sshKey, final boolean showError) { if (connectionMode.equalsIgnoreCase("ssh-key")) { if (sshKey == null || !sshKey.exists()) { new AlertDialog.Builder(callingActivity) @@ -170,21 +161,19 @@ public abstract class GitOperation { public void onClick(DialogInterface dialog, int whichButton) { if (keyPair.decrypt(passphrase.getText().toString())) { // Authenticate using the ssh-key and then execute the command - setAuthentication(sshKey, username, passphrase.getText().toString()).execute(finishOnEnd); - callingActivity.finish(); + setAuthentication(sshKey, username, passphrase.getText().toString()).execute(); } else { // call back the method - executeAfterAuthentication(connectionMode, username, sshKey, true, finishOnEnd); + executeAfterAuthentication(connectionMode, username, sshKey, true); } } }).setNegativeButton(callingActivity.getResources().getString(R.string.dialog_cancel), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { - callingActivity.finish(); + // Do nothing. } }).show(); } else { - setAuthentication(sshKey, username, "").execute(finishOnEnd); - callingActivity.finish(); + setAuthentication(sshKey, username, "").execute(); } } catch (JSchException e) { new AlertDialog.Builder(callingActivity) @@ -211,7 +200,7 @@ public abstract class GitOperation { .setPositiveButton(callingActivity.getResources().getString(R.string.dialog_ok), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // authenticate using the user/pwd and then execute the command - setAuthentication(username, password.getText().toString()).execute(finishOnEnd); + setAuthentication(username, password.getText().toString()).execute(); } }).setNegativeButton(callingActivity.getResources().getString(R.string.dialog_cancel), new DialogInterface.OnClickListener() { diff --git a/app/src/main/java/com/zeapo/pwdstore/git/PullOperation.java b/app/src/main/java/com/zeapo/pwdstore/git/PullOperation.java index d6859e9f..6ca8bf49 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/PullOperation.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/PullOperation.java @@ -36,11 +36,11 @@ public class PullOperation extends GitOperation { } @Override - public void execute(boolean finishOnEnd) { + public void execute() { if (this.provider != null) { ((PullCommand) this.command).setCredentialsProvider(this.provider); } - new GitAsyncTask(callingActivity, finishOnEnd, false, this).execute(this.command); + new GitAsyncTask(callingActivity, true, false, this).execute(this.command); } @Override diff --git a/app/src/main/java/com/zeapo/pwdstore/git/PushOperation.java b/app/src/main/java/com/zeapo/pwdstore/git/PushOperation.java index d66eb359..2774af90 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/PushOperation.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/PushOperation.java @@ -36,11 +36,11 @@ public class PushOperation extends GitOperation { } @Override - public void execute(boolean finishOnEnd) { + public void execute() { if (this.provider != null) { ((PushCommand) this.command).setCredentialsProvider(this.provider); } - new GitAsyncTask(callingActivity, finishOnEnd, false, this).execute(this.command); + new GitAsyncTask(callingActivity, true, false, this).execute(this.command); } @Override diff --git a/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.java b/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.java index 21e59e61..0094b22c 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.java @@ -48,12 +48,12 @@ public class SyncOperation extends GitOperation { } @Override - public void execute(boolean finishOnEnd) { + public void execute() { if (this.provider != null) { this.pullCommand.setCredentialsProvider(this.provider); this.pushCommand.setCredentialsProvider(this.provider); } - new GitAsyncTask(callingActivity, finishOnEnd, false, this).execute(this.addCommand, this.statusCommand, this.commitCommand, this.pullCommand, this.pushCommand); + new GitAsyncTask(callingActivity, true, false, this).execute(this.addCommand, this.statusCommand, this.commitCommand, this.pullCommand, this.pushCommand); } @Override diff --git a/app/src/main/res/layout/activity_pwdstore.xml b/app/src/main/res/layout/activity_pwdstore.xml index 1b7ccac6..84c7af06 100644 --- a/app/src/main/res/layout/activity_pwdstore.xml +++ b/app/src/main/res/layout/activity_pwdstore.xml @@ -3,8 +3,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".pwdstore" - android:orientation="vertical" - android:id="@+id/main_activity"> + android:orientation="vertical"> <LinearLayout android:id="@+id/main_layout" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 175a20c6..5823c016 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -197,6 +197,4 @@ <string name="no_repo_selected2">No external repository selected</string> <string name="send_plaintext_password_to">Send password as plaintext using…</string> <string name="show_password">Show password</string> - <string name="git_auto_sync_title">Auto Sync on start</string> - <string name="git_auto_sync_summary">Synchronize the repository when starting the application or when resuming.</string> </resources> diff --git a/app/src/main/res/xml/preference.xml b/app/src/main/res/xml/preference.xml index f7833ee5..250370e7 100644 --- a/app/src/main/res/xml/preference.xml +++ b/app/src/main/res/xml/preference.xml @@ -16,10 +16,6 @@ <Preference android:key="ssh_see_key" android:title="@string/pref_ssh_see_key_title" /> - <CheckBoxPreference - android:key="git_auto_sync" - android:summary="@string/git_auto_sync_summary" - android:title="@string/git_auto_sync_title" /> <Preference android:key="git_delete_repo" android:summary="@string/pref_git_delete_repo_summary" |