aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt
AgeCommit message (Collapse)AuthorFilesLines
2020-12-05Refactor package structure (#1233)Harsh Shandilya1-342/+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-19PasswordRepository: split out PasswordSortOrderHarsh Shandilya1-1/+2
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-10-19PasswordStore: Remove unnecessary class-level variablesHarsh Shandilya1-0/+6
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-10-17Use BottomSheet in place of Snackbar for longer messages (#1157)ashoksinghal1-4/+6
2020-09-14Add tentative workaround for dialog crashes and refactor Git-related code ↵Harsh Shandilya1-6/+3
(#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-07Fix behavior on failing Git operations (#1084)Fabian Henneke1-1/+5
2020-09-05PasswordFragment: use runCatching to replace exception handlingHarsh Shandilya1-2/+4
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-09-03Refactor Git operations and auth (#1066)Fabian Henneke1-4/+14
Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-08-26Rename ConnectionMode to AuthMode and remove clone_ prefix (#1053)Fabian Henneke1-5/+5
2020-08-20Sort by recently used (#1031)Diogenes Molinares1-0/+12
* Sort passwords by recently used * reformat * modified CHANGELOG.md * restore format CHANGELOG.md * added new sharedPreferences file to manage recent password history * associate timestamp when rename category * associate timestamp when rename password * reformat * Update CHANGELOG.md Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com> * Update app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com> * Update app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com> * use kotlin edit extension * Add changelog entry correctly Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Save paths as Base64 hashes Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Missed it Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com> Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-08-11Switch to URL-based Git config and refactor Git settings (#1008)Fabian Henneke1-3/+2
* 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-7/+7
* 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-2/+0
Co-authored-by: Fabian Henneke <fabian@henneke.me>
2020-07-28PasswordFragment: bring back dividers (#980)Harsh Shandilya1-0/+2
2020-07-08global: set an import order rule and reformat with it (#924)Harsh Shandilya1-1/+4
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-07-03Migrate to ActivityResultContracts (#910)Harsh Shandilya1-28/+42
* 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-01Scroll to files and enter folders when created (#909)Fabian Henneke1-6/+20
2020-07-01Use PreferenceKeys file to manage SharedPreferences keys. (#891)Aditya Wasan1-1/+3
* 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-06-19PasswordStore: refresh password list on swipe down in non-git mode (#862)Harsh Shandilya1-20/+21
* PasswordStore: refresh password list on swipe down in non-git mode Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Address review comments Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com>
2020-06-18Add support for category renaming (#854)Diogenes Molinares1-0/+8
* rename category * changed CHANGELOG * IDE Refactor * Address review comments Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * change Stack to List and fix bug when empty category name * create intermediate folders * little fixes and KDoc added * Reuse existing move code * change button Cancel => Skip * use canonicalPath to confirm destination inside repository * change error message * update KDoc * show different error to user Co-authored-by: Harsh Shandilya <me@msfjarvis.dev> Co-authored-by: Harsh Shandilya <msfjarvis@gmail.com> Co-authored-by: Fabian Henneke <fabian@henneke.me> Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com>
2020-06-17Improve bulk deletion and password move flow (#855)Harsh Shandilya1-11/+7
Co-authored-by: Fabian Henneke <FabianHenneke@users.noreply.github.com>
2020-06-12Break down PGP Activity into focused sections (#776)Harsh Shandilya1-12/+1
2020-05-27treewide: update fragments to use LayoutRes constructor (#802)Harsh Shandilya1-1/+1
Third time's the charm Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-05-27Resolve ViewBinding regressions (#799)Harsh Shandilya1-8/+2
* PasswordStore: remove broken snippet Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Cleanup code and remove incorrect onCreateView uses Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Fixup imports Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-05-27Introduce and switch to FragmentViewBindingDelegate (#797)Harsh Shandilya1-8/+2
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-05-10Treewide codestyle cleanup (#765)Harsh Shandilya1-11/+11
- 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-05-08Introduce no-auth mode for connections (#768)Harsh Shandilya1-14/+29
Fixes #758 Fixes #526
2020-04-29Use official FastScroll fix and refactor PasswordFragment (#753)Fabian Henneke1-11/+6
2020-04-24Better detect uninitialized repositories and offer to clone (#738)Harsh Shandilya1-2/+8
* PasswordRepository: more comprehensive check for valid repository * PasswordFragment: Give 'repo uninitialized' Snackbar some purpose in life * GitOperationActivity: finish immediately when an unhandled request code is used * PasswordFragment: Make uninitialized repo Snackbar indefinite * spotless Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-19PasswordFragment: Replace fab options with descriptive bottom sheetHarsh Shandilya1-19/+9
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-19PasswordFragment: animate FAB in action modeHarsh Shandilya1-2/+27
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-19Work around incompatibility between AndroidFastScroll and ↵Fabian Henneke1-5/+2
recyclerview-selection (#721) * Work around incompatibility between AndroidFastScroll and recyclerview-selection * move hacked recyclerview into separate package Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Make RecyclerViewHelper private static Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-18Resolve lint warningsHarsh Shandilya1-1/+1
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-17Refactor Git related activities (#685)Harsh Shandilya1-4/+5
* 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>
2020-04-15Improve search logic and UI (#703)Fabian Henneke1-3/+11
* Don't list the current directory in search results * Scroll to top result when search term is changed * Match relative path in StrictDomain filter mode * Improve and document DirectoryStructure null handling Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-11Switch refactored entities to ViewBinding (#695)Harsh Shandilya1-12/+20
* build: Enable ViewBinding * autofill: oreo: Switch to ViewBinding * PasswordFragment: switch to ViewBinding * AutofillPublisherChangedActivity: use with(binding) { } syntax Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-10Modernize legacy RecyclerView adapters (#694)Fabian Henneke1-174/+157
* Modernize legacy RecyclerView adapters Introduces new adapters based on the SearchableRepositoryViewModel and using androidx.recyclerview.selection for multiselection support. The following positive effects in behavior are observable to end-users: - Search and navigation actions are executed on IO threads. - RecyclerViews are now animated during searches (but not navigations). - Exact scroll position is restored when navigating back. - The ActionBar title is updated with the current folder name. The following negative effects may warrant attention: - Support for the "always search from root" setting has been removed. - Due to a limitation of the fast scroll dependency, using the scroller may result in unwanted multiselections. If this is not fixed in the library, native fast scroller capabilities could be used, but these are more limited in appearance and to not offer popups. * Fix lint * Fix FastScroller/SelectionTracker incompatibility * Immediately react to settings changes * List directory entries when search term is blank * Use isEmpty() instead of == "" * Replace adapter inheritance with builders and fix selection drags * Remove dividers in password lists * Run spotlessApply * Use a more logical string in action mode * Commonize and constify path bundle key * Make lambda parameter name explicit Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-04-07Modernize file listing and search in AutofillFilterActivity (#683)Fabian Henneke1-2/+3
* WIP: Modernize file listing and search * Refactor * Implement fuzzy search * Improve ViewModel API and introduce Adapter * Integrate new search into AutofillFilterActivity and dedebounce * Improve no results layout * Reformat * Highlight origin in FileBased directory structure * Extract highlighting logic into DirectoryStructure * Trim whitespace before searching * Remove debug logging * Remove more debug logging * Organize imports * Remove imports * Update app/src/main/java/com/zeapo/pwdstore/SearchableRepositoryViewModel.kt Co-Authored-By: Harsh Shandilya <me@msfjarvis.dev> * Address review comments Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-03-27Fix: Restore store scroll position on back press (#670)Fabian Henneke1-2/+2
Restoring the scroll position in the main store fragment is currently broken since the stored state (recyclerView.verticalScrollbarPosition) is always 0 - it is just an enum that governs where the scrollbar is placed on the screen. The fix is to remember the list position of the last fully visible item and scroll to it when restoring the scroll position. Co-authored-by: Harsh Shandilya <msfjarvis@gmail.com>
2020-03-07Show snackbar when git repo is not initialized (#651)Aditya Wasan1-10/+8
Signed-off-by: Aditya Wasan <adityawasan55@gmail.com>
2020-03-01Swipe2refresh fix (#647)glowinthedark1-6/+1
2020-03-01swipe to refresh using androidx SwipeRefreshLayout (#645)glowinthedark1-0/+27
Signed-off-by: Harsh Shandilya <me@msfjarvis.dev>
2020-02-20Better UI flow (#630)Gigahawk1-3/+28
* Filter against entire pathname when searching * Add option to directly open search dialog on start * Replace basic search filter with fuzzy search * Update CHANGELOG Signed-off-by: Harsh Shandilya <me@msfjarvis.dev> * Open search in onResume, force search icon to always show * Add option to always search from root directory Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
2020-01-30Update license headers (#625)Harsh Shandilya1-1/+1
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2020-01-28Allow creating folders (#623)Harsh Shandilya1-2/+20
* Introduce EmitExpandableTransformationBehaviour * Implement expand transition * More folder work * Add icons and tweak layout clipping Rishi again with the icon rescue * Theming rework * Dont set tag * Update list and commit after creating folder * Fix theme issues * Add dialog title * Fix hint text color * Remove commit method * Cleanup * Update CHANGELOG Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com> Co-authored-by: Aditya Wasan <adityawasan55@gmail.com>
2020-01-26Add fastscroller with alphabetic hints (#616)Harsh Shandilya1-0/+3
* Setup basic fast scroll Work towards #558 * Implement PopupTextProvider Fixes #558 * Update changes * Hide system scrollbars * Port fastscroll to autofill preferences * Spotless Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-11-04Cleanup commentsHarsh Shandilya1-9/+2
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>
2019-11-04Rewrite PasswordFragment in KotlinHarsh Shandilya1-0/+206
Signed-off-by: Harsh Shandilya <msfjarvis@gmail.com>