aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/git/BaseGitActivity.kt
AgeCommit message (Collapse)AuthorFilesLines
2020-12-05Refactor package structure (#1233)Harsh Shandilya1-144/+0
* idea: default test runner to Gradle * Kick off package structure revamp * Reparent all classes under dev.msfjarvis.aps Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-10-23Workaround AndroidX lifecycle requirements in OpenKeychain auth (#1168)Harsh Shandilya1-1/+2
* Workaround AndroidX lifecycle requirements in OpenKeychain auth Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * CHANGELOG: add OpenKeychain fix Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com>
2020-09-29Unwrap root cause for InvalidRemoteException (#1122)Harsh Shandilya1-1/+2
* BaseGitActivity: unwrap root cause for InvalidRemoteException as well JGit's InvalidRemoteException, like TransportException, swallows more useful errors as is clear from this (redacted) snippet. ``` D org.eclipse.jgit.api.errors.InvalidRemoteException: Invalid remote: origin D at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:26) D at org.eclipse.jgit.api.PullCommand.call(PullCommand.java:41) D at com.zeapo.pwdstore.git.GitCommandExecutor$execute$2$result$1.invokeSuspend(GitCommandExecutor.kt:2) D at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:3) D at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:15) D at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:1) D at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:13) D Caused by: org.eclipse.jgit.errors.NoRemoteRepositoryException: ssh://msfjarvis@[fe80::dead:beef]:22/pass-repo: fatal: '/pass-repo' does not appear to be a git repository D at org.eclipse.jgit.transport.TransportGitSsh.cleanNotFound(TransportGitSsh.java:14) D at org.eclipse.jgit.transport.TransportGitSsh$SshFetchConnection.<init>(TransportGitSsh.java:20) D at org.eclipse.jgit.transport.TransportGitSsh.openFetch(TransportGitSsh.java:1) D at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:1) D at org.eclipse.jgit.transport.Transport.fetch(Transport.java:20) D at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:18) ``` Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Add changelog entry Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-09-18Misc cleanups to build and extension functions (#1108)Harsh Shandilya1-2/+2
2020-09-14Add tentative workaround for dialog crashes and refactor Git-related code ↵Harsh Shandilya1-36/+33
(#1100) * Ensure we're creating dialogs on the main thread Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Remove unused operation type Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Refactor launchGitOperation to use an enum Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-09-11Disable SSH multiplexing if not supported (#1093)Fabian Henneke1-1/+16
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-09-07Fix behavior on failing Git operations (#1084)Fabian Henneke1-7/+12
2020-09-04Add migration to new SshKey backend (#1076)Fabian Henneke1-1/+1
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-09-04Remove BaseGitActivity's onOptionsItemSelected override (#1075)Harsh Shandilya1-11/+0
Each activity that inherits from it should handle its own navigation Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-09-03Refactor Git operations and auth (#1066)Fabian Henneke1-25/+79
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-08-26Rename ConnectionMode to AuthMode and remove clone_ prefix (#1053)Fabian Henneke1-1/+1
2020-08-18Add SSHJ backend for OpenKeychain authentication (#995)Fabian Henneke1-75/+2
* Update sshj to 0.30.0 and improve algorithm order Updates sshj to 0.30.0, which brings support for rsa-sha2-* key types and bugfixes related to RSA certificates and Android Keystore backed keys. Along the way, this improves the algorithm preferences to be consistent with the Mozilla Intermediate SSH configuration (as far as possible, given that most certificate types and some encryption algorithms are not yet supported). We also add "ext-info-c" to the kex algorithm proposal to work around certain kinds of "user agent sniffing" that limits the support of rsa-sha2-* key types. * Add SSHJ backend for OpenKeychain authentication * Address review comments Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-08-11Switch to URL-based Git config and refactor Git settings (#1008)Fabian Henneke1-117/+5
* Make Git config URL-based and refactor * Use Kotlin style null handling for string prefs * Also show an error if generated URL can't be parsed * Add some testcases for migration strategy Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-08-06Refactor uses of applicationContext and startActivityForResult (#997)Fabian Henneke1-3/+3
* Refactor uses of applicationContext and startActivityForResult This commit applies three types of refactoring: 1. Remove context argument from PasswordRepository companion functions by relying on Application.instance. 2. Introduce a sharedPrefs extension function on Context that returns the default SharedPreferences for the applicationContext. 3. Use OpenDocument() and OpenDocumentTree() contracts. * Drop toPasswordItem argument
2020-08-05Remove GitAsyncTask and replace with non-blocking coroutines (#865)Harsh Shandilya1-8/+17
Co-authored-by: Fabian Henneke <fabian@henneke.me>
2020-07-29Add ability to change default branch (#977)Harsh Shandilya1-4/+5
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-07-08global: set an import order rule and reformat with it (#924)Harsh Shandilya1-0/+1
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-07-03Migrate to ActivityResultContracts (#910)Harsh Shandilya1-2/+1
* 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>
2020-07-01Use PreferenceKeys file to manage SharedPreferences keys. (#891)Aditya Wasan1-9/+10
* Use PreferenceKeys file to manage SharedPreferences keys. Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * Use PreferenceKeys in all files Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * Divide PreferenceKeys into multiple regions Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * Fix build error Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * Use PreferenceKeys in more files Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * Reformat code Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * Fix build error Signed-off-by: Aditya Wasan <adityawasan55@gmail.com> * Fix merge issues Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>
2020-05-28Use SSHJ for SSH public key authentication (#801)Fabian Henneke1-5/+5
2020-05-24BaseGitActivity: always enforce absolute URLs (#788)Harsh Shandilya1-3/+1
2020-05-14Add specific error messages to GitServerConfigActivityFabian Henneke1-11/+23
2020-05-14Use absolute paths for custom ports, relative for default portFabian Henneke1-3/+8
2020-05-14Improve Git/HTTPS URL generationFabian Henneke1-16/+22
2020-05-10Treewide codestyle cleanup (#765)Harsh Shandilya1-1/+2
- Updated gitignore and checked in the IDE's codestyle config - Removed spotless as the underlying ktlint backend has failed to resolve the super frustrating import order bug[1] in nearly a year - Reformat the entire codebase based on the previously committed code style configuration. 1: https://github.com/pinterest/ktlint/issues/527
2020-04-21treewide: switch to logging via timberktHarsh Shandilya1-2/+3
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-21Remove unused importHarsh Shandilya1-1/+0
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-21BaseGitActivity: don't remove saved password unnecessarilyHarsh Shandilya1-1/+1
if previousUrl is empty it means that this the first time the method is being called, and url has not been built yet. We let things slide for the first pass so that the actual logic only kicks in when it needs to. Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-20Fix protocol validation (#726)Harsh Shandilya1-29/+30
* GitOperation: code cleanup * WIP: Fix validation * Fixup SSH validation * Spotless * Remove logging of MalformedURLException Co-authored-by: Fabian Henneke <fabian@henneke.me> Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-19Validate hostname protocol before saving (#723)Harsh Shandilya1-4/+25
* RFC: protocol validation * Use java.net.URL for saner parsing * Improve protocol correction; handle ssh:// Co-authored-by: Fabian Henneke <fabian@henneke.me> Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-17Refactor Git related activities (#685)Harsh Shandilya1-0/+212
* Refactor git logic into separate parts * Extract hardcoded strings * Add KDoc to updateHostname, remove unused field * Cleanups * Fix dialog message * Wire in repository clone flow * spotless * Remove unused method * Cleanup GitActivity - Rename to GitOperationActivity. - Ensure identityBuilder is always closed regardless of what fragment uses it. - Remove hardcoded "Operation" strings and replace with REQUEST_ARG_OP. - Apply a transparent theme to GitOperationActivity make the UI less jarring. * Tweak some stupidly worded dialog messages As pointed out in #629, these strings are shoddily worded and do not express any clear intent to the user, leaving them confused and angry. * GitOperationActivity: wrap Context to ensure right theme is used * spotless * undo build.gradle change * Use correct parent theme, remove now useless wrapping * GitServerConfigActivity: fix repository clone flow * temp: disable leakcanary framework leaks on Samsung are pissing me off * Make system bars transparent in git activity * Tweak HTTPS password layout * Unhardcode wrong passphrase string * Store SSH passphrase in EncryptedSharedPreferences Also revamp the dialog to look a bit better * Implement support for remembering HTTPS password Fixes #521 * Try to patch HTTPS remote creation logic * Update security-crypto * Clear saved passphrase/password on auth failure * Revert "Update security-crypto" Broken on R DP2.1 This reverts commit 4b20371dd42c512a3dd3b759859abb6c1ffd2961. * Revert "temp: disable leakcanary" This reverts commit 2db7d41bd67b79c6dc8c5b359a7b27100379f45f. * Update CHANGELOG * Remove spacer * Remove useless override * Wrap git server activity in a ScrollView * GitOperation: always finish calling activity when dialogs are dismissed * Wipe saved password/passphrase when hostname changes * Don't commit prefs updates * Don't call listFiles excessively * Finish activity after saving configuration * Make ConnectionMode and Protocol enum classes * Change SSH key passphrase key, don't wipe on host change * Reimplement BaseGitActivity.updateUrl (was updateHostname) * Use SharedPreferences.edit KTX extension * Disable inapplicable connection modes depending on scheme * BaseGitActivity: annotate onDestroy with CallSuper We'll leak the identityBuilder connection otherwise * Move input hack for AlertDialog into an extension function We re-use this in many places * Fix protocol/mode toggle issue and consistenly name options * Fix a crash when opening GitServerConfigActivity without a repo * Fix OpenKeychain callbacks by moving onActivityResult to BaseGitActivity * Run spotlessApply Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> Co-authored-by: Fabian Henneke <fabian@henneke.me>