aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohamed Zenadi <mohamed@zenadi.com>2017-03-27 22:47:33 +0200
committerMohamed Zenadi <mohamed@zenadi.com>2017-03-27 22:47:33 +0200
commit824845bf41227c9ee0891f6d0299efe0f067ce00 (patch)
tree99570fbcde21a737b635ae54e64a8fedaa8d0f8e
parentd888e5e2f25ca1308a5a34a17b5c585edeb30881 (diff)
fix git rm and sync
fixes #276 fixes #283
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/PasswordStore.java20
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/git/GitAsyncTask.java22
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.java8
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/utils/EntryRecyclerAdapter.java2
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/utils/PasswordItem.java8
5 files changed, 38 insertions, 22 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java
index c0253b85..67600259 100644
--- a/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java
+++ b/app/src/main/java/com/zeapo/pwdstore/PasswordStore.java
@@ -403,9 +403,9 @@ public class PasswordStore extends AppCompatActivity {
// Adds shortcut
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
- ShortcutInfo shortcut = new ShortcutInfo.Builder(this, item.getFullPathName())
+ ShortcutInfo shortcut = new ShortcutInfo.Builder(this, item.getFullPathToParent())
.setShortLabel(item.toString())
- .setLongLabel(item.getFullPathName() + item.toString())
+ .setLongLabel(item.getFullPathToParent() + item.toString())
.setIcon(Icon.createWithResource(this, R.drawable.ic_launcher))
.setIntent(intent.setAction("DECRYPT_PASS")) // Needs action
.build();
@@ -476,7 +476,7 @@ public class PasswordStore extends AppCompatActivity {
it.remove();
adapter.updateSelectedItems(position, selectedItems);
- commit("[ANDROID PwdStore] Remove " + item + " from store.");
+ commitAdd("[ANDROID PwdStore] Remove " + item + " from store.");
deletePasswords(adapter, selectedItems);
}
})
@@ -532,7 +532,7 @@ public class PasswordStore extends AppCompatActivity {
return PasswordRepository.getRepositoryDirectory(getApplicationContext());
}
- private void commit(final String message) {
+ private void commitAdd(final String message) {
new GitOperation(PasswordRepository.getRepositoryDirectory(activity), activity) {
@Override
public void execute() {
@@ -540,7 +540,7 @@ public class PasswordStore extends AppCompatActivity {
Git git = new Git(this.repository);
GitAsyncTask tasks = new GitAsyncTask(activity, false, true, this);
tasks.execute(
- git.add().addFilepattern("."),
+ git.add().setUpdate(true).addFilepattern("."),
git.commit().setMessage(message)
);
}
@@ -556,18 +556,18 @@ public class PasswordStore extends AppCompatActivity {
settings.edit().putBoolean("repository_initialized", true).apply();
break;
case PgpHandler.REQUEST_CODE_DECRYPT_AND_VERIFY:
- // if went from decrypt->edit and user saved changes, we need to commit
+ // if went from decrypt->edit and user saved changes, we need to commitAdd
if (data.getBooleanExtra("needCommit", false)) {
- commit(this.getResources().getString(R.string.edit_commit_text) + data.getExtras().getString("NAME"));
+ commitAdd(this.getResources().getString(R.string.edit_commit_text) + data.getExtras().getString("NAME"));
refreshListAdapter();
}
break;
case PgpHandler.REQUEST_CODE_ENCRYPT:
- commit(this.getResources().getString(R.string.add_commit_text) + data.getExtras().getString("NAME") + this.getResources().getString(R.string.from_store));
+ commitAdd(this.getResources().getString(R.string.add_commit_text) + data.getExtras().getString("NAME") + this.getResources().getString(R.string.from_store));
refreshListAdapter();
break;
case PgpHandler.REQUEST_CODE_EDIT:
- commit(this.getResources().getString(R.string.edit_commit_text) + data.getExtras().getString("NAME"));
+ commitAdd(this.getResources().getString(R.string.edit_commit_text) + data.getExtras().getString("NAME"));
refreshListAdapter();
break;
case GitActivity.REQUEST_INIT:
@@ -622,7 +622,7 @@ public class PasswordStore extends AppCompatActivity {
// TODO this should show a warning to the user
Log.e("Moving", "Something went wrong while moving.");
} else {
- commit("[ANDROID PwdStore] Moved "
+ commitAdd("[ANDROID PwdStore] Moved "
+ string.replace(PasswordRepository.getRepositoryDirectory(getApplicationContext()) + "/", "")
+ " to "
+ target.getAbsolutePath().replace(PasswordRepository.getRepositoryDirectory(getApplicationContext()) + "/", "")
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 42984338..f2e689d9 100644
--- a/app/src/main/java/com/zeapo/pwdstore/git/GitAsyncTask.java
+++ b/app/src/main/java/com/zeapo/pwdstore/git/GitAsyncTask.java
@@ -7,7 +7,9 @@ import android.os.AsyncTask;
import com.zeapo.pwdstore.PasswordStore;
import com.zeapo.pwdstore.R;
+import org.eclipse.jgit.api.CommitCommand;
import org.eclipse.jgit.api.GitCommand;
+import org.eclipse.jgit.api.StatusCommand;
public class GitAsyncTask extends AsyncTask<GitCommand, Integer, String> {
@@ -33,10 +35,21 @@ public class GitAsyncTask extends AsyncTask<GitCommand, Integer, String> {
}
@Override
- protected String doInBackground(GitCommand... cmd) {
- for (GitCommand aCmd : cmd) {
+ protected String doInBackground(GitCommand... commands) {
+ Integer nbChanges = null;
+ for (GitCommand command : commands) {
try {
- aCmd.call();
+ if (command instanceof StatusCommand) {
+ // in case we have changes, we want to keep track of it
+ nbChanges = ((StatusCommand) command).call().getChanged().size();
+ } else if (command instanceof CommitCommand) {
+ // the previous status will eventually be used to avoid a commit
+ if (nbChanges == null || nbChanges > 0)
+ command.call();
+ } else {
+ command.call();
+ }
+
} catch (Exception e) {
e.printStackTrace();
return e.getMessage() + "\nCaused by:\n" + e.getCause();
@@ -49,8 +62,7 @@ public class GitAsyncTask extends AsyncTask<GitCommand, Integer, String> {
if (this.dialog != null)
try {
this.dialog.dismiss();
- } catch (Exception e)
- {
+ } catch (Exception e) {
// ignore
}
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 6c7e637d..b5c0e6d2 100644
--- a/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.java
+++ b/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.java
@@ -11,11 +11,13 @@ import org.eclipse.jgit.api.CommitCommand;
import org.eclipse.jgit.api.Git;
import org.eclipse.jgit.api.PullCommand;
import org.eclipse.jgit.api.PushCommand;
+import org.eclipse.jgit.api.StatusCommand;
import java.io.File;
public class SyncOperation extends GitOperation {
protected AddCommand addCommand;
+ protected StatusCommand statusCommand;
protected CommitCommand commitCommand;
protected PullCommand pullCommand;
protected PushCommand pushCommand;
@@ -32,11 +34,13 @@ public class SyncOperation extends GitOperation {
/**
* Sets the command
+ *
* @return the current object
*/
public SyncOperation setCommands() {
Git git = new Git(repository);
- this.addCommand = git.add().addFilepattern(".");
+ this.addCommand = git.add().setUpdate(true).addFilepattern(".");
+ this.statusCommand = git.status();
this.commitCommand = git.commit().setMessage("[Android Password Store] Sync");
this.pullCommand = git.pull().setRebase(true).setRemote("origin");
this.pushCommand = git.push().setPushAll().setRemote("origin");
@@ -49,7 +53,7 @@ public class SyncOperation extends GitOperation {
this.pullCommand.setCredentialsProvider(this.provider);
this.pushCommand.setCredentialsProvider(this.provider);
}
- new GitAsyncTask(callingActivity, true, false, this).execute(this.addCommand, 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/java/com/zeapo/pwdstore/utils/EntryRecyclerAdapter.java b/app/src/main/java/com/zeapo/pwdstore/utils/EntryRecyclerAdapter.java
index 78b81928..5247c6a3 100644
--- a/app/src/main/java/com/zeapo/pwdstore/utils/EntryRecyclerAdapter.java
+++ b/app/src/main/java/com/zeapo/pwdstore/utils/EntryRecyclerAdapter.java
@@ -105,7 +105,7 @@ public abstract class EntryRecyclerAdapter extends RecyclerView.Adapter<EntryRec
holder.name.setText(pass.toString());
}
- holder.type.setText(pass.getFullPathName());
+ holder.type.setText(pass.getFullPathToParent());
if (pass.getType() == PasswordItem.TYPE_CATEGORY) {
// holder.card.setCardBackgroundColor(activity.getResources().getColor(R.color.blue_grey_200));
} else {
diff --git a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordItem.java b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordItem.java
index 7fa88085..2d9086ea 100644
--- a/app/src/main/java/com/zeapo/pwdstore/utils/PasswordItem.java
+++ b/app/src/main/java/com/zeapo/pwdstore/utils/PasswordItem.java
@@ -11,7 +11,7 @@ public class PasswordItem implements Comparable{
private String name;
private PasswordItem parent;
private File file;
- private String fullPathName;
+ private String fullPathToParent;
public boolean selected = false;
/** Create a password item
@@ -26,7 +26,7 @@ public class PasswordItem implements Comparable{
this.parent = parent;
this.type = type;
this.file = file;
- this.fullPathName = file.getAbsolutePath().replace(rootDir.getAbsolutePath(), "").replace(file.getName(), "");
+ this.fullPathToParent = file.getAbsolutePath().replace(rootDir.getAbsolutePath(), "").replace(file.getName(), "");
}
/** Create a new Category item
@@ -83,8 +83,8 @@ public class PasswordItem implements Comparable{
return this.file;
}
- public String getFullPathName() {
- return this.fullPathName;
+ public String getFullPathToParent() {
+ return this.fullPathToParent;
}
@Override