diff options
| author | Harsh Shandilya <msfjarvis@gmail.com> | 2020-07-03 12:54:06 +0530 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-07-03 09:24:06 +0200 |
| commit | 25b426157417c97c61c3d2cc0d9fa556f337f22d (patch) | |
| tree | f53331d7ee2d5b780ebf20a6ccdded53bda42005 /app/src/main/java/com/zeapo/pwdstore/git | |
| parent | ff3d2fcce3f1d74bdb1e13e3634f1ea9a9f9f1e5 (diff) | |
| download | HardenedPass-25b426157417c97c61c3d2cc0d9fa556f337f22d.tar.gz HardenedPass-25b426157417c97c61c3d2cc0d9fa556f337f22d.zip | |
Migrate to ActivityResultContracts (#910)
* Move git directory selection to ActivityResultContracts
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* global: replace all android.app.Activity references
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* res: resolve ObsoleteSdkInt lint warning
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* layout: silence some overdraw warnings
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* PasswordFragment: address deprecation
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* PasswordStore: start addressing deprecation warnings
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* autofill: silence deprecation warnings for legacy implementation
I don't want to ever touch these files
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Reset scrollTarget after use
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Refresh password list after each swipe
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Convert if to when
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Migrate UserPreference to ActivityResultContracts
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Also validate result in git directory selection
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* AutofillSaveActivity: Switch to ActivityResultContracts
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* AutofillDecryptActivity: Switch to ActivityResultContracts
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* AutofillFilterActivity: Switch to ActivityResultContracts
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Improve deletion flow
- Silently delete empty directory
- Always refresh password list upon completion
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
* Uniform naming for activity result handlers
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com>
Diffstat (limited to 'app/src/main/java/com/zeapo/pwdstore/git')
10 files changed, 33 insertions, 30 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 ae2bbc07..341bd3fd 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt +++ b/app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt @@ -4,7 +4,6 @@ */ package com.zeapo.pwdstore.git -import android.app.Activity import android.content.Intent import android.content.SharedPreferences import android.os.Bundle @@ -167,7 +166,7 @@ abstract class BaseGitActivity : AppCompatActivity() { */ fun launchGitOperation(operation: Int) { if (url == null) { - setResult(Activity.RESULT_CANCELED) + setResult(RESULT_CANCELED) finish() return } diff --git a/app/src/main/java/com/zeapo/pwdstore/git/BreakOutOfDetached.kt b/app/src/main/java/com/zeapo/pwdstore/git/BreakOutOfDetached.kt index 8533187f..6a3fdfd5 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/BreakOutOfDetached.kt +++ b/app/src/main/java/com/zeapo/pwdstore/git/BreakOutOfDetached.kt @@ -4,7 +4,7 @@ */ package com.zeapo.pwdstore.git -import android.app.Activity +import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.zeapo.pwdstore.R import org.eclipse.jgit.api.Git @@ -13,7 +13,7 @@ import org.eclipse.jgit.api.PushCommand import org.eclipse.jgit.api.RebaseCommand import java.io.File -class BreakOutOfDetached(fileDir: File, callingActivity: Activity) : GitOperation(fileDir, callingActivity) { +class BreakOutOfDetached(fileDir: File, callingActivity: AppCompatActivity) : GitOperation(fileDir, callingActivity) { private lateinit var commands: List<GitCommand<out Any>> /** diff --git a/app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.kt b/app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.kt index 0e89af0f..2af86303 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.kt +++ b/app/src/main/java/com/zeapo/pwdstore/git/CloneOperation.kt @@ -4,8 +4,8 @@ */ package com.zeapo.pwdstore.git -import android.app.Activity import android.content.Intent +import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.zeapo.pwdstore.R import org.eclipse.jgit.api.CloneCommand @@ -18,7 +18,7 @@ import java.io.File * @param fileDir the git working tree directory * @param callingActivity the calling activity */ -class CloneOperation(fileDir: File, callingActivity: Activity) : GitOperation(fileDir, callingActivity) { +class CloneOperation(fileDir: File, callingActivity: AppCompatActivity) : GitOperation(fileDir, callingActivity) { /** * Sets the command using the repository uri diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitAsyncTask.kt b/app/src/main/java/com/zeapo/pwdstore/git/GitAsyncTask.kt index 84e08dfc..66d953e9 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/GitAsyncTask.kt +++ b/app/src/main/java/com/zeapo/pwdstore/git/GitAsyncTask.kt @@ -4,11 +4,11 @@ */ package com.zeapo.pwdstore.git -import android.app.Activity import android.app.ProgressDialog import android.content.Context import android.content.Intent import android.os.AsyncTask +import androidx.appcompat.app.AppCompatActivity import com.github.ajalt.timberkt.e import com.zeapo.pwdstore.R import com.zeapo.pwdstore.git.config.SshjSessionFactory @@ -28,14 +28,14 @@ import java.lang.ref.WeakReference class GitAsyncTask( - activity: Activity, + activity: AppCompatActivity, private val operation: GitOperation, private val finishWithResultOnEnd: Intent?, private val silentlyExecute: Boolean = false ) : AsyncTask<GitCommand<*>, Int, GitAsyncTask.Result>() { - private val activityWeakReference: WeakReference<Activity> = WeakReference(activity) - private val activity: Activity? + private val activityWeakReference: WeakReference<AppCompatActivity> = WeakReference(activity) + private val activity: AppCompatActivity? get() = activityWeakReference.get() private val context: Context = activity.applicationContext private val dialog = ProgressDialog(activity) @@ -86,7 +86,8 @@ class GitAsyncTask( RemoteRefUpdate.Status.REJECTED_NODELETE, RemoteRefUpdate.Status.REJECTED_REMOTE_CHANGED, RemoteRefUpdate.Status.NON_EXISTING, - RemoteRefUpdate.Status.NOT_ATTEMPTED -> + RemoteRefUpdate.Status.NOT_ATTEMPTED + -> (activity!!.getString(R.string.git_push_generic_error) + rru.status.name) RemoteRefUpdate.Status.REJECTED_OTHER_REASON -> { if @@ -149,21 +150,21 @@ class GitAsyncTask( // Currently, this is only executed when the user cancels a password prompt // during authentication. if (finishWithResultOnEnd != null) { - activity?.setResult(Activity.RESULT_CANCELED) + activity?.setResult(AppCompatActivity.RESULT_CANCELED) activity?.finish() } } else { e(result.err) operation.onError(rootCauseException(result.err)) if (finishWithResultOnEnd != null) { - activity?.setResult(Activity.RESULT_CANCELED) + activity?.setResult(AppCompatActivity.RESULT_CANCELED) } } } is Result.Ok -> { operation.onSuccess() if (finishWithResultOnEnd != null) { - activity?.setResult(Activity.RESULT_OK, finishWithResultOnEnd) + activity?.setResult(AppCompatActivity.RESULT_OK, finishWithResultOnEnd) activity?.finish() } } diff --git a/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.kt b/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.kt index 48c28920..c9037e0a 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.kt +++ b/app/src/main/java/com/zeapo/pwdstore/git/GitOperation.kt @@ -5,10 +5,10 @@ package com.zeapo.pwdstore.git import android.annotation.SuppressLint -import android.app.Activity import android.content.Intent import android.view.LayoutInflater import androidx.annotation.StringRes +import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat import androidx.core.content.edit import androidx.preference.PreferenceManager @@ -40,7 +40,10 @@ import kotlin.coroutines.resume import com.google.android.material.R as materialR -private class GitOperationCredentialFinder(val callingActivity: Activity, val connectionMode: ConnectionMode) : InteractivePasswordFinder() { +private class GitOperationCredentialFinder( + val callingActivity: AppCompatActivity, + val connectionMode: ConnectionMode +) : InteractivePasswordFinder() { override fun askForPassword(cont: Continuation<String?>, isRetry: Boolean) { val gitOperationPrefs = callingActivity.getEncryptedPrefs("git_operation") @@ -118,7 +121,7 @@ private class GitOperationCredentialFinder(val callingActivity: Activity, val co * @param gitDir the git working tree directory * @param callingActivity the calling activity */ -abstract class GitOperation(gitDir: File, internal val callingActivity: Activity) { +abstract class GitOperation(gitDir: File, internal val callingActivity: AppCompatActivity) { protected val repository: Repository? = PasswordRepository.getRepository(gitDir) internal var provider: CredentialsProvider? = null diff --git a/app/src/main/java/com/zeapo/pwdstore/git/PullOperation.kt b/app/src/main/java/com/zeapo/pwdstore/git/PullOperation.kt index c543f885..436c81bb 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/PullOperation.kt +++ b/app/src/main/java/com/zeapo/pwdstore/git/PullOperation.kt @@ -4,8 +4,8 @@ */ package com.zeapo.pwdstore.git -import android.app.Activity import android.content.Intent +import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.zeapo.pwdstore.R import org.eclipse.jgit.api.Git @@ -18,7 +18,7 @@ import java.io.File * @param fileDir the git working tree directory * @param callingActivity the calling activity */ -class PullOperation(fileDir: File, callingActivity: Activity) : GitOperation(fileDir, callingActivity) { +class PullOperation(fileDir: File, callingActivity: AppCompatActivity) : GitOperation(fileDir, callingActivity) { /** * Sets the command diff --git a/app/src/main/java/com/zeapo/pwdstore/git/PushOperation.kt b/app/src/main/java/com/zeapo/pwdstore/git/PushOperation.kt index fc58705f..7a936e73 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/PushOperation.kt +++ b/app/src/main/java/com/zeapo/pwdstore/git/PushOperation.kt @@ -4,8 +4,8 @@ */ package com.zeapo.pwdstore.git -import android.app.Activity import android.content.Intent +import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.zeapo.pwdstore.R import org.eclipse.jgit.api.Git @@ -18,7 +18,7 @@ import java.io.File * @param fileDir the git working tree directory * @param callingActivity the calling activity */ -class PushOperation(fileDir: File, callingActivity: Activity) : GitOperation(fileDir, callingActivity) { +class PushOperation(fileDir: File, callingActivity: AppCompatActivity) : GitOperation(fileDir, callingActivity) { /** * Sets the command diff --git a/app/src/main/java/com/zeapo/pwdstore/git/ResetToRemoteOperation.kt b/app/src/main/java/com/zeapo/pwdstore/git/ResetToRemoteOperation.kt index be9e929f..fbd747b3 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/ResetToRemoteOperation.kt +++ b/app/src/main/java/com/zeapo/pwdstore/git/ResetToRemoteOperation.kt @@ -4,8 +4,8 @@ */ package com.zeapo.pwdstore.git -import android.app.Activity import android.content.Intent +import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.zeapo.pwdstore.R import org.eclipse.jgit.api.AddCommand @@ -20,7 +20,7 @@ import java.io.File * @param fileDir the git working tree directory * @param callingActivity the calling activity */ -class ResetToRemoteOperation(fileDir: File, callingActivity: Activity) : GitOperation(fileDir, callingActivity) { +class ResetToRemoteOperation(fileDir: File, callingActivity: AppCompatActivity) : GitOperation(fileDir, callingActivity) { private var addCommand: AddCommand? = null private var fetchCommand: FetchCommand? = null diff --git a/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.kt b/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.kt index 3af6f08d..6d99828e 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.kt +++ b/app/src/main/java/com/zeapo/pwdstore/git/SyncOperation.kt @@ -4,8 +4,8 @@ */ package com.zeapo.pwdstore.git -import android.app.Activity import android.content.Intent +import androidx.appcompat.app.AppCompatActivity import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.zeapo.pwdstore.R import org.eclipse.jgit.api.AddCommand @@ -22,7 +22,7 @@ import java.io.File * @param fileDir the git working tree directory * @param callingActivity the calling activity */ -class SyncOperation(fileDir: File, callingActivity: Activity) : GitOperation(fileDir, callingActivity) { +class SyncOperation(fileDir: File, callingActivity: AppCompatActivity) : GitOperation(fileDir, callingActivity) { private var addCommand: AddCommand? = null private var statusCommand: StatusCommand? = null diff --git a/app/src/main/java/com/zeapo/pwdstore/git/config/SshApiSessionFactory.java b/app/src/main/java/com/zeapo/pwdstore/git/config/SshApiSessionFactory.java index 5a51d28a..aa62fdae 100644 --- a/app/src/main/java/com/zeapo/pwdstore/git/config/SshApiSessionFactory.java +++ b/app/src/main/java/com/zeapo/pwdstore/git/config/SshApiSessionFactory.java @@ -4,13 +4,13 @@ */ package com.zeapo.pwdstore.git.config; -import android.app.Activity; import android.app.PendingIntent; import android.content.Intent; import android.content.IntentSender; import android.content.SharedPreferences; import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; import androidx.preference.PreferenceManager; import com.google.android.material.dialog.MaterialAlertDialogBuilder; @@ -245,7 +245,7 @@ public class SshApiSessionFactory extends JschConfigSessionFactory { // back // though onActivityResult callingActivity.onActivityResult( - requestCode, Activity.RESULT_OK, null); + requestCode, AppCompatActivity.RESULT_OK, null); } @Override @@ -289,7 +289,7 @@ public class SshApiSessionFactory extends JschConfigSessionFactory { private final String description; private final String alg; private final byte[] publicKey; - private final Activity callingActivity; + private final AppCompatActivity callingActivity; private final SshAuthenticationApi api; private CountDownLatch latch; private byte[] signature; @@ -299,7 +299,7 @@ public class SshApiSessionFactory extends JschConfigSessionFactory { String description, byte[] publicKey, String alg, - Activity callingActivity, + AppCompatActivity callingActivity, SshAuthenticationApi api) { this.keyId = keyId; this.description = description; @@ -310,7 +310,7 @@ public class SshApiSessionFactory extends JschConfigSessionFactory { } @Override - public boolean setPassphrase(byte[] passphrase) throws JSchException { + public boolean setPassphrase(byte[] passphrase) { // We are not encrypted with a passphrase return true; } |
