From de8996c1cc9617361ff0eb84c55efa359feb55d2 Mon Sep 17 00:00:00 2001 From: Fr4nz D13trich Date: Sun, 23 Nov 2025 08:52:50 +0100 Subject: [PATCH] Repo created --- .gitignore | 14 + LICENSE | 674 +++++++++++++ README.md | 69 +- app/.gitignore | 1 + app/build.gradle | 132 +++ app/proguard-rules.pro | 35 + .../1.json | 212 +++++ .../2.json | 332 +++++++ .../3.json | 296 ++++++ .../nextcloudpasswords/ApiControllerTest.kt | 33 + .../PasswordDatabaseTest.kt | 79 ++ .../hegocre/nextcloudpasswords/SodiumTest.kt | 77 ++ app/src/debug/ic_launcher-playstore.png | Bin 0 -> 36549 bytes .../res/drawable/ic_launcher_background.xml | 31 + .../res/drawable/ic_launcher_foreground.xml | 16 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../debug/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 3890 bytes .../debug/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 2646 bytes .../debug/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 5590 bytes .../debug/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 8124 bytes .../debug/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 10298 bytes app/src/debug/res/values/strings.xml | 4 + app/src/main/AndroidManifest.xml | 81 ++ app/src/main/ic_launcher-playstore.png | Bin 0 -> 41263 bytes .../nextcloudpasswords/api/ApiController.kt | 383 ++++++++ .../nextcloudpasswords/api/FoldersApi.kt | 260 +++++ .../nextcloudpasswords/api/PasswordsApi.kt | 260 +++++ .../hegocre/nextcloudpasswords/api/Server.kt | 16 + .../nextcloudpasswords/api/ServiceApi.kt | 129 +++ .../nextcloudpasswords/api/SessionApi.kt | 231 +++++ .../nextcloudpasswords/api/SettingsApi.kt | 89 ++ .../api/encryption/CSEv1Keychain.kt | 121 +++ .../api/encryption/PWDv1Challenge.kt | 123 +++ .../exceptions/ClientDeauthorizedException.kt | 3 + ...PWDv1ChallengeMasterKeyInvalidException.kt | 3 + .../PWDv1ChallengeMasterKeyNeededException.kt | 3 + .../PWDv1ChallengePasswordException.kt | 3 + .../exceptions/SodiumDecryptionException.kt | 3 + .../data/folder/DeletedFolder.kt | 15 + .../nextcloudpasswords/data/folder/Folder.kt | 73 ++ .../data/folder/FolderController.kt | 69 ++ .../data/folder/NewFolder.kt | 25 + .../data/folder/UpdatedFolder.kt | 29 + .../data/password/CustomField.kt | 26 + .../data/password/DeletedPassword.kt | 15 + .../data/password/GeneratedPassword.kt | 22 + .../data/password/NewPassword.kt | 38 + .../data/password/Password.kt | 133 +++ .../data/password/PasswordController.kt | 70 ++ .../data/password/RequestedPassword.kt | 18 + .../data/password/UpdatedPassword.kt | 42 + .../data/serversettings/ServerSettings.kt | 29 + .../data/user/UserController.kt | 90 ++ .../data/user/UserException.kt | 3 + .../databases/AppDatabase.kt | 52 + .../folderdatabase/FolderDatabaseDao.kt | 32 + .../passworddatabase/PasswordDatabaseDao.kt | 32 + .../autofill/AssistStructureParser.kt | 197 ++++ .../services/autofill/AutofillHelper.kt | 217 +++++ .../services/autofill/NCPAutofillService.kt | 143 +++ .../services/keepalive/KeepAliveWorker.kt | 76 ++ .../nextcloudpasswords/ui/NCPScreen.kt | 61 ++ .../ui/activities/AboutActivity.kt | 33 + .../ui/activities/LoginActivity.kt | 39 + .../ui/activities/MainActivity.kt | 156 +++ .../ui/activities/SettingsActivity.kt | 25 + .../ui/activities/WebLoginActivity.kt | 84 ++ .../ui/components/CommonComposables.kt | 137 +++ .../ui/components/Dialogs.kt | 890 ++++++++++++++++++ .../ui/components/FolderEditView.kt | 294 ++++++ .../ui/components/ItemList.kt | 407 ++++++++ .../ui/components/LoginView.kt | 384 ++++++++ .../ui/components/NCPAboutScreen.kt | 439 +++++++++ .../ui/components/NCPApp.kt | 314 ++++++ .../ui/components/NCPAppLock.kt | 509 ++++++++++ .../ui/components/NCPBottomNavigation.kt | 54 ++ .../ui/components/NCPNavHost.kt | 828 ++++++++++++++++ .../ui/components/NCPSettings.kt | 412 ++++++++ .../ui/components/NCPTopBar.kt | 480 ++++++++++ .../ui/components/PasswordEditView.kt | 683 ++++++++++++++ .../ui/components/PasswordItem.kt | 578 ++++++++++++ .../ui/components/PullToRefreshBody.kt | 25 + .../ui/components/Settings.kt | 181 ++++ .../components/markdown/MarkdownTextView.kt | 306 ++++++ .../nextcloudpasswords/ui/theme/Color.kt | 72 ++ .../ui/theme/ContentAlpha.kt | 7 + .../nextcloudpasswords/ui/theme/NCPTheme.kt | 213 +++++ .../nextcloudpasswords/ui/theme/Type.kt | 28 + .../ui/viewmodels/PasswordsViewModel.kt | 345 +++++++ .../nextcloudpasswords/utils/AppLockHelper.kt | 53 ++ .../nextcloudpasswords/utils/BiometricAuth.kt | 61 ++ .../utils/ClipboardUtils.kt | 19 + .../utils/EncryptionUtils.kt | 91 ++ .../hegocre/nextcloudpasswords/utils/Error.kt | 12 + .../utils/LazySodiumUtils.kt | 33 + .../nextcloudpasswords/utils/LogHelper.kt | 42 + .../nextcloudpasswords/utils/OkHttpRequest.kt | 201 ++++ .../utils/PreferencesManager.kt | 193 ++++ .../nextcloudpasswords/utils/Result.kt | 6 + .../nextcloudpasswords/utils/TextUtils.kt | 55 ++ app/src/main/res/drawable/app_icon.png | Bin 0 -> 36949 bytes .../main/res/drawable/ic_account_circle.xml | 13 + .../res/drawable/ic_launcher_background.xml | 31 + .../res/drawable/ic_launcher_foreground.xml | 16 + app/src/main/res/drawable/ic_lock.xml | 15 + app/src/main/res/font/dejavu_sans_mono.ttf | Bin 0 -> 340712 bytes .../main/res/layout/password_list_item.xml | 29 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 4340 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 2816 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 8638 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 11296 bytes app/src/main/res/resources.properties | 1 + app/src/main/res/values-af-rZA/strings.xml | 4 + app/src/main/res/values-ar-rSA/strings.xml | 4 + app/src/main/res/values-ca-rES/strings.xml | 129 +++ app/src/main/res/values-cs-rCZ/strings.xml | 121 +++ app/src/main/res/values-da-rDK/strings.xml | 4 + app/src/main/res/values-de-rDE/strings.xml | 127 +++ app/src/main/res/values-el-rGR/strings.xml | 4 + app/src/main/res/values-en-rUS/strings.xml | 129 +++ app/src/main/res/values-es-rES/strings.xml | 129 +++ app/src/main/res/values-et-rEE/strings.xml | 127 +++ app/src/main/res/values-fi-rFI/strings.xml | 4 + app/src/main/res/values-fr-rFR/strings.xml | 119 +++ app/src/main/res/values-hu-rHU/strings.xml | 4 + app/src/main/res/values-it-rIT/strings.xml | 4 + app/src/main/res/values-iw-rIL/strings.xml | 4 + app/src/main/res/values-ja-rJP/strings.xml | 4 + app/src/main/res/values-ko-rKR/strings.xml | 4 + app/src/main/res/values-night/themes.xml | 6 + app/src/main/res/values-nl-rNL/strings.xml | 4 + app/src/main/res/values-no-rNO/strings.xml | 4 + app/src/main/res/values-pl-rPL/strings.xml | 119 +++ app/src/main/res/values-pt-rBR/strings.xml | 4 + app/src/main/res/values-pt-rPT/strings.xml | 4 + app/src/main/res/values-ro-rRO/strings.xml | 4 + app/src/main/res/values-ru-rRU/strings.xml | 121 +++ app/src/main/res/values-sr-rSP/strings.xml | 4 + app/src/main/res/values-sv-rSE/strings.xml | 4 + app/src/main/res/values-tr-rTR/strings.xml | 4 + app/src/main/res/values-uk-rUA/strings.xml | 4 + app/src/main/res/values-vi-rVN/strings.xml | 4 + app/src/main/res/values-zh-rCN/strings.xml | 4 + app/src/main/res/values-zh-rTW/strings.xml | 125 +++ app/src/main/res/values/strings.xml | 128 +++ app/src/main/res/values/themes.xml | 6 + .../main/res/xml/data_extraction_rules.xml | 7 + app/src/main/res/xml/full_backup_content.xml | 3 + .../main/res/xml/network_security_config.xml | 13 + .../main/res/xml/service_configuration.xml | 275 ++++++ .../hegocre/nextcloudpasswords/OkHttpTest.kt | 35 + build.gradle | 23 + crowdin.yml | 8 + .../metadata/android/af-ZA/changelogs/10.txt | 4 + .../metadata/android/af-ZA/changelogs/17.txt | 3 + .../metadata/android/af-ZA/changelogs/18.txt | 2 + .../metadata/android/af-ZA/changelogs/25.txt | 8 + .../metadata/android/af-ZA/changelogs/26.txt | 4 + .../metadata/android/af-ZA/changelogs/29.txt | 2 + .../metadata/android/af-ZA/changelogs/30.txt | 5 + .../metadata/android/af-ZA/changelogs/32.txt | 5 + .../metadata/android/af-ZA/changelogs/5.txt | 4 + .../metadata/android/af-ZA/changelogs/6.txt | 1 + .../android/af-ZA/full_description.txt | 10 + .../android/af-ZA/short_description.txt | 1 + .../metadata/android/ar-SA/changelogs/10.txt | 4 + .../metadata/android/ar-SA/changelogs/17.txt | 3 + .../metadata/android/ar-SA/changelogs/18.txt | 2 + .../metadata/android/ar-SA/changelogs/25.txt | 8 + .../metadata/android/ar-SA/changelogs/26.txt | 4 + .../metadata/android/ar-SA/changelogs/29.txt | 2 + .../metadata/android/ar-SA/changelogs/30.txt | 5 + .../metadata/android/ar-SA/changelogs/32.txt | 5 + .../metadata/android/ar-SA/changelogs/5.txt | 4 + .../metadata/android/ar-SA/changelogs/6.txt | 1 + .../android/ar-SA/full_description.txt | 10 + .../android/ar-SA/short_description.txt | 1 + .../metadata/android/ca-ES/changelogs/10.txt | 4 + .../metadata/android/ca-ES/changelogs/17.txt | 3 + .../metadata/android/ca-ES/changelogs/18.txt | 2 + .../metadata/android/ca-ES/changelogs/25.txt | 8 + .../metadata/android/ca-ES/changelogs/26.txt | 4 + .../metadata/android/ca-ES/changelogs/29.txt | 2 + .../metadata/android/ca-ES/changelogs/30.txt | 5 + .../metadata/android/ca-ES/changelogs/32.txt | 5 + .../metadata/android/ca-ES/changelogs/5.txt | 4 + .../metadata/android/ca-ES/changelogs/6.txt | 1 + .../android/ca-ES/full_description.txt | 10 + .../android/ca-ES/short_description.txt | 1 + .../metadata/android/cs-CZ/changelogs/10.txt | 4 + .../metadata/android/cs-CZ/changelogs/17.txt | 3 + .../metadata/android/cs-CZ/changelogs/18.txt | 2 + .../metadata/android/cs-CZ/changelogs/25.txt | 8 + .../metadata/android/cs-CZ/changelogs/26.txt | 4 + .../metadata/android/cs-CZ/changelogs/29.txt | 2 + .../metadata/android/cs-CZ/changelogs/30.txt | 5 + .../metadata/android/cs-CZ/changelogs/32.txt | 5 + .../metadata/android/cs-CZ/changelogs/5.txt | 4 + .../metadata/android/cs-CZ/changelogs/6.txt | 1 + .../android/cs-CZ/full_description.txt | 10 + .../android/cs-CZ/short_description.txt | 1 + .../metadata/android/da-DK/changelogs/10.txt | 4 + .../metadata/android/da-DK/changelogs/17.txt | 3 + .../metadata/android/da-DK/changelogs/18.txt | 2 + .../metadata/android/da-DK/changelogs/25.txt | 8 + .../metadata/android/da-DK/changelogs/26.txt | 4 + .../metadata/android/da-DK/changelogs/29.txt | 2 + .../metadata/android/da-DK/changelogs/30.txt | 5 + .../metadata/android/da-DK/changelogs/32.txt | 5 + .../metadata/android/da-DK/changelogs/5.txt | 4 + .../metadata/android/da-DK/changelogs/6.txt | 1 + .../android/da-DK/full_description.txt | 10 + .../android/da-DK/short_description.txt | 1 + .../metadata/android/de-DE/changelogs/10.txt | 4 + .../metadata/android/de-DE/changelogs/17.txt | 3 + .../metadata/android/de-DE/changelogs/18.txt | 2 + .../metadata/android/de-DE/changelogs/25.txt | 8 + .../metadata/android/de-DE/changelogs/26.txt | 4 + .../metadata/android/de-DE/changelogs/29.txt | 2 + .../metadata/android/de-DE/changelogs/30.txt | 5 + .../metadata/android/de-DE/changelogs/32.txt | 5 + .../metadata/android/de-DE/changelogs/5.txt | 4 + .../metadata/android/de-DE/changelogs/6.txt | 1 + .../android/de-DE/full_description.txt | 10 + .../android/de-DE/short_description.txt | 1 + .../metadata/android/el-GR/changelogs/10.txt | 4 + .../metadata/android/el-GR/changelogs/17.txt | 3 + .../metadata/android/el-GR/changelogs/18.txt | 2 + .../metadata/android/el-GR/changelogs/25.txt | 8 + .../metadata/android/el-GR/changelogs/26.txt | 4 + .../metadata/android/el-GR/changelogs/29.txt | 2 + .../metadata/android/el-GR/changelogs/30.txt | 5 + .../metadata/android/el-GR/changelogs/32.txt | 5 + .../metadata/android/el-GR/changelogs/5.txt | 4 + .../metadata/android/el-GR/changelogs/6.txt | 1 + .../android/el-GR/full_description.txt | 10 + .../android/el-GR/short_description.txt | 1 + .../metadata/android/en-US/changelogs/10.txt | 4 + .../metadata/android/en-US/changelogs/17.txt | 3 + .../metadata/android/en-US/changelogs/18.txt | 2 + .../metadata/android/en-US/changelogs/25.txt | 8 + .../metadata/android/en-US/changelogs/26.txt | 4 + .../metadata/android/en-US/changelogs/29.txt | 2 + .../metadata/android/en-US/changelogs/30.txt | 5 + .../metadata/android/en-US/changelogs/32.txt | 5 + .../metadata/android/en-US/changelogs/36.txt | 4 + .../metadata/android/en-US/changelogs/5.txt | 4 + .../metadata/android/en-US/changelogs/6.txt | 1 + .../android/en-US/full_description.txt | 10 + .../metadata/android/en-US/images/icon.png | Bin 0 -> 7156 bytes .../en-US/images/phoneScreenshots/1.png | Bin 0 -> 67149 bytes .../en-US/images/phoneScreenshots/2.png | Bin 0 -> 159922 bytes .../en-US/images/phoneScreenshots/3.png | Bin 0 -> 148758 bytes .../en-US/images/phoneScreenshots/4.png | Bin 0 -> 137886 bytes .../en-US/images/phoneScreenshots/5.png | Bin 0 -> 70861 bytes .../en-US/images/phoneScreenshots/6.png | Bin 0 -> 159958 bytes .../en-US/images/phoneScreenshots/7.png | Bin 0 -> 147821 bytes .../en-US/images/phoneScreenshots/8.png | Bin 0 -> 137421 bytes .../android/en-US/short_description.txt | 1 + fastlane/metadata/android/en-US/title.txt | 1 + .../metadata/android/es-ES/changelogs/10.txt | 4 + .../metadata/android/es-ES/changelogs/17.txt | 3 + .../metadata/android/es-ES/changelogs/18.txt | 2 + .../metadata/android/es-ES/changelogs/25.txt | 8 + .../metadata/android/es-ES/changelogs/26.txt | 4 + .../metadata/android/es-ES/changelogs/29.txt | 2 + .../metadata/android/es-ES/changelogs/30.txt | 5 + .../metadata/android/es-ES/changelogs/32.txt | 5 + .../metadata/android/es-ES/changelogs/5.txt | 4 + .../metadata/android/es-ES/changelogs/6.txt | 1 + .../android/es-ES/full_description.txt | 10 + .../android/es-ES/short_description.txt | 1 + .../metadata/android/et-EE/changelogs/10.txt | 4 + .../metadata/android/et-EE/changelogs/17.txt | 3 + .../metadata/android/et-EE/changelogs/18.txt | 2 + .../metadata/android/et-EE/changelogs/25.txt | 8 + .../metadata/android/et-EE/changelogs/26.txt | 4 + .../metadata/android/et-EE/changelogs/29.txt | 2 + .../metadata/android/et-EE/changelogs/30.txt | 5 + .../metadata/android/et-EE/changelogs/32.txt | 5 + .../metadata/android/et-EE/changelogs/5.txt | 4 + .../metadata/android/et-EE/changelogs/6.txt | 1 + .../android/et-EE/full_description.txt | 10 + .../android/et-EE/short_description.txt | 1 + .../metadata/android/fi-FI/changelogs/10.txt | 4 + .../metadata/android/fi-FI/changelogs/17.txt | 3 + .../metadata/android/fi-FI/changelogs/18.txt | 2 + .../metadata/android/fi-FI/changelogs/25.txt | 8 + .../metadata/android/fi-FI/changelogs/26.txt | 4 + .../metadata/android/fi-FI/changelogs/29.txt | 2 + .../metadata/android/fi-FI/changelogs/30.txt | 5 + .../metadata/android/fi-FI/changelogs/32.txt | 5 + .../metadata/android/fi-FI/changelogs/5.txt | 4 + .../metadata/android/fi-FI/changelogs/6.txt | 1 + .../android/fi-FI/full_description.txt | 10 + .../android/fi-FI/short_description.txt | 1 + .../metadata/android/fr-FR/changelogs/10.txt | 4 + .../metadata/android/fr-FR/changelogs/17.txt | 3 + .../metadata/android/fr-FR/changelogs/18.txt | 2 + .../metadata/android/fr-FR/changelogs/25.txt | 8 + .../metadata/android/fr-FR/changelogs/26.txt | 4 + .../metadata/android/fr-FR/changelogs/29.txt | 2 + .../metadata/android/fr-FR/changelogs/30.txt | 5 + .../metadata/android/fr-FR/changelogs/32.txt | 5 + .../metadata/android/fr-FR/changelogs/5.txt | 4 + .../metadata/android/fr-FR/changelogs/6.txt | 1 + .../android/fr-FR/full_description.txt | 10 + .../android/fr-FR/short_description.txt | 1 + .../metadata/android/he-IL/changelogs/10.txt | 4 + .../metadata/android/he-IL/changelogs/17.txt | 3 + .../metadata/android/he-IL/changelogs/18.txt | 2 + .../metadata/android/he-IL/changelogs/25.txt | 8 + .../metadata/android/he-IL/changelogs/26.txt | 4 + .../metadata/android/he-IL/changelogs/29.txt | 2 + .../metadata/android/he-IL/changelogs/30.txt | 5 + .../metadata/android/he-IL/changelogs/32.txt | 5 + .../metadata/android/he-IL/changelogs/5.txt | 4 + .../metadata/android/he-IL/changelogs/6.txt | 1 + .../android/he-IL/full_description.txt | 10 + .../android/he-IL/short_description.txt | 1 + .../metadata/android/hu-HU/changelogs/10.txt | 4 + .../metadata/android/hu-HU/changelogs/17.txt | 3 + .../metadata/android/hu-HU/changelogs/18.txt | 2 + .../metadata/android/hu-HU/changelogs/25.txt | 8 + .../metadata/android/hu-HU/changelogs/26.txt | 4 + .../metadata/android/hu-HU/changelogs/29.txt | 2 + .../metadata/android/hu-HU/changelogs/30.txt | 5 + .../metadata/android/hu-HU/changelogs/32.txt | 5 + .../metadata/android/hu-HU/changelogs/5.txt | 4 + .../metadata/android/hu-HU/changelogs/6.txt | 1 + .../android/hu-HU/full_description.txt | 10 + .../android/hu-HU/short_description.txt | 1 + .../metadata/android/it-IT/changelogs/10.txt | 4 + .../metadata/android/it-IT/changelogs/17.txt | 3 + .../metadata/android/it-IT/changelogs/18.txt | 2 + .../metadata/android/it-IT/changelogs/25.txt | 8 + .../metadata/android/it-IT/changelogs/26.txt | 4 + .../metadata/android/it-IT/changelogs/29.txt | 2 + .../metadata/android/it-IT/changelogs/30.txt | 5 + .../metadata/android/it-IT/changelogs/32.txt | 5 + .../metadata/android/it-IT/changelogs/5.txt | 4 + .../metadata/android/it-IT/changelogs/6.txt | 1 + .../android/it-IT/full_description.txt | 10 + .../android/it-IT/short_description.txt | 1 + .../metadata/android/ja-JP/changelogs/10.txt | 4 + .../metadata/android/ja-JP/changelogs/17.txt | 3 + .../metadata/android/ja-JP/changelogs/18.txt | 2 + .../metadata/android/ja-JP/changelogs/25.txt | 8 + .../metadata/android/ja-JP/changelogs/26.txt | 4 + .../metadata/android/ja-JP/changelogs/29.txt | 2 + .../metadata/android/ja-JP/changelogs/30.txt | 5 + .../metadata/android/ja-JP/changelogs/32.txt | 5 + .../metadata/android/ja-JP/changelogs/5.txt | 4 + .../metadata/android/ja-JP/changelogs/6.txt | 1 + .../android/ja-JP/full_description.txt | 10 + .../android/ja-JP/short_description.txt | 1 + .../metadata/android/ko-KR/changelogs/10.txt | 4 + .../metadata/android/ko-KR/changelogs/17.txt | 3 + .../metadata/android/ko-KR/changelogs/18.txt | 2 + .../metadata/android/ko-KR/changelogs/25.txt | 8 + .../metadata/android/ko-KR/changelogs/26.txt | 4 + .../metadata/android/ko-KR/changelogs/29.txt | 2 + .../metadata/android/ko-KR/changelogs/30.txt | 5 + .../metadata/android/ko-KR/changelogs/32.txt | 5 + .../metadata/android/ko-KR/changelogs/5.txt | 4 + .../metadata/android/ko-KR/changelogs/6.txt | 1 + .../android/ko-KR/full_description.txt | 10 + .../android/ko-KR/short_description.txt | 1 + .../metadata/android/nl-NL/changelogs/10.txt | 4 + .../metadata/android/nl-NL/changelogs/17.txt | 3 + .../metadata/android/nl-NL/changelogs/18.txt | 2 + .../metadata/android/nl-NL/changelogs/25.txt | 8 + .../metadata/android/nl-NL/changelogs/26.txt | 4 + .../metadata/android/nl-NL/changelogs/29.txt | 2 + .../metadata/android/nl-NL/changelogs/30.txt | 5 + .../metadata/android/nl-NL/changelogs/32.txt | 5 + .../metadata/android/nl-NL/changelogs/5.txt | 4 + .../metadata/android/nl-NL/changelogs/6.txt | 1 + .../android/nl-NL/full_description.txt | 10 + .../android/nl-NL/short_description.txt | 1 + .../metadata/android/no-NO/changelogs/10.txt | 4 + .../metadata/android/no-NO/changelogs/17.txt | 3 + .../metadata/android/no-NO/changelogs/18.txt | 2 + .../metadata/android/no-NO/changelogs/25.txt | 8 + .../metadata/android/no-NO/changelogs/26.txt | 4 + .../metadata/android/no-NO/changelogs/29.txt | 2 + .../metadata/android/no-NO/changelogs/30.txt | 5 + .../metadata/android/no-NO/changelogs/32.txt | 5 + .../metadata/android/no-NO/changelogs/5.txt | 4 + .../metadata/android/no-NO/changelogs/6.txt | 1 + .../android/no-NO/full_description.txt | 10 + .../android/no-NO/short_description.txt | 1 + .../metadata/android/pl-PL/changelogs/10.txt | 4 + .../metadata/android/pl-PL/changelogs/17.txt | 3 + .../metadata/android/pl-PL/changelogs/18.txt | 2 + .../metadata/android/pl-PL/changelogs/25.txt | 8 + .../metadata/android/pl-PL/changelogs/26.txt | 4 + .../metadata/android/pl-PL/changelogs/29.txt | 2 + .../metadata/android/pl-PL/changelogs/30.txt | 5 + .../metadata/android/pl-PL/changelogs/32.txt | 5 + .../metadata/android/pl-PL/changelogs/5.txt | 4 + .../metadata/android/pl-PL/changelogs/6.txt | 1 + .../android/pl-PL/full_description.txt | 10 + .../android/pl-PL/short_description.txt | 1 + .../metadata/android/pt-BR/changelogs/10.txt | 4 + .../metadata/android/pt-BR/changelogs/17.txt | 3 + .../metadata/android/pt-BR/changelogs/18.txt | 2 + .../metadata/android/pt-BR/changelogs/25.txt | 8 + .../metadata/android/pt-BR/changelogs/26.txt | 4 + .../metadata/android/pt-BR/changelogs/29.txt | 2 + .../metadata/android/pt-BR/changelogs/30.txt | 5 + .../metadata/android/pt-BR/changelogs/32.txt | 5 + .../metadata/android/pt-BR/changelogs/5.txt | 4 + .../metadata/android/pt-BR/changelogs/6.txt | 1 + .../android/pt-BR/full_description.txt | 10 + .../android/pt-BR/short_description.txt | 1 + .../metadata/android/pt-PT/changelogs/10.txt | 4 + .../metadata/android/pt-PT/changelogs/17.txt | 3 + .../metadata/android/pt-PT/changelogs/18.txt | 2 + .../metadata/android/pt-PT/changelogs/25.txt | 8 + .../metadata/android/pt-PT/changelogs/26.txt | 4 + .../metadata/android/pt-PT/changelogs/29.txt | 2 + .../metadata/android/pt-PT/changelogs/30.txt | 5 + .../metadata/android/pt-PT/changelogs/32.txt | 5 + .../metadata/android/pt-PT/changelogs/5.txt | 4 + .../metadata/android/pt-PT/changelogs/6.txt | 1 + .../android/pt-PT/full_description.txt | 10 + .../android/pt-PT/short_description.txt | 1 + .../metadata/android/ro-RO/changelogs/10.txt | 4 + .../metadata/android/ro-RO/changelogs/17.txt | 3 + .../metadata/android/ro-RO/changelogs/18.txt | 2 + .../metadata/android/ro-RO/changelogs/25.txt | 8 + .../metadata/android/ro-RO/changelogs/26.txt | 4 + .../metadata/android/ro-RO/changelogs/29.txt | 2 + .../metadata/android/ro-RO/changelogs/30.txt | 5 + .../metadata/android/ro-RO/changelogs/32.txt | 5 + .../metadata/android/ro-RO/changelogs/5.txt | 4 + .../metadata/android/ro-RO/changelogs/6.txt | 1 + .../android/ro-RO/full_description.txt | 10 + .../android/ro-RO/short_description.txt | 1 + .../metadata/android/ru-RU/changelogs/10.txt | 4 + .../metadata/android/ru-RU/changelogs/17.txt | 3 + .../metadata/android/ru-RU/changelogs/18.txt | 2 + .../metadata/android/ru-RU/changelogs/25.txt | 8 + .../metadata/android/ru-RU/changelogs/26.txt | 4 + .../metadata/android/ru-RU/changelogs/29.txt | 2 + .../metadata/android/ru-RU/changelogs/30.txt | 5 + .../metadata/android/ru-RU/changelogs/32.txt | 5 + .../metadata/android/ru-RU/changelogs/5.txt | 4 + .../metadata/android/ru-RU/changelogs/6.txt | 1 + .../android/ru-RU/full_description.txt | 10 + .../android/ru-RU/short_description.txt | 1 + .../android/sr-Cyrl/changelogs/10.txt | 4 + .../android/sr-Cyrl/changelogs/17.txt | 3 + .../android/sr-Cyrl/changelogs/18.txt | 2 + .../android/sr-Cyrl/changelogs/25.txt | 8 + .../android/sr-Cyrl/changelogs/26.txt | 4 + .../android/sr-Cyrl/changelogs/29.txt | 2 + .../android/sr-Cyrl/changelogs/30.txt | 5 + .../android/sr-Cyrl/changelogs/32.txt | 5 + .../metadata/android/sr-Cyrl/changelogs/5.txt | 4 + .../metadata/android/sr-Cyrl/changelogs/6.txt | 1 + .../android/sr-Cyrl/full_description.txt | 10 + .../android/sr-Cyrl/short_description.txt | 1 + .../metadata/android/sv-SE/changelogs/10.txt | 4 + .../metadata/android/sv-SE/changelogs/17.txt | 3 + .../metadata/android/sv-SE/changelogs/18.txt | 2 + .../metadata/android/sv-SE/changelogs/25.txt | 8 + .../metadata/android/sv-SE/changelogs/26.txt | 4 + .../metadata/android/sv-SE/changelogs/29.txt | 2 + .../metadata/android/sv-SE/changelogs/30.txt | 5 + .../metadata/android/sv-SE/changelogs/32.txt | 5 + .../metadata/android/sv-SE/changelogs/5.txt | 4 + .../metadata/android/sv-SE/changelogs/6.txt | 1 + .../android/sv-SE/full_description.txt | 10 + .../android/sv-SE/short_description.txt | 1 + .../metadata/android/tr-TR/changelogs/10.txt | 4 + .../metadata/android/tr-TR/changelogs/17.txt | 3 + .../metadata/android/tr-TR/changelogs/18.txt | 2 + .../metadata/android/tr-TR/changelogs/25.txt | 8 + .../metadata/android/tr-TR/changelogs/26.txt | 4 + .../metadata/android/tr-TR/changelogs/29.txt | 2 + .../metadata/android/tr-TR/changelogs/30.txt | 5 + .../metadata/android/tr-TR/changelogs/32.txt | 5 + .../metadata/android/tr-TR/changelogs/5.txt | 4 + .../metadata/android/tr-TR/changelogs/6.txt | 1 + .../android/tr-TR/full_description.txt | 10 + .../android/tr-TR/short_description.txt | 1 + .../metadata/android/uk-UA/changelogs/10.txt | 4 + .../metadata/android/uk-UA/changelogs/17.txt | 3 + .../metadata/android/uk-UA/changelogs/18.txt | 2 + .../metadata/android/uk-UA/changelogs/25.txt | 8 + .../metadata/android/uk-UA/changelogs/26.txt | 4 + .../metadata/android/uk-UA/changelogs/29.txt | 2 + .../metadata/android/uk-UA/changelogs/30.txt | 5 + .../metadata/android/uk-UA/changelogs/32.txt | 5 + .../metadata/android/uk-UA/changelogs/5.txt | 4 + .../metadata/android/uk-UA/changelogs/6.txt | 1 + .../android/uk-UA/full_description.txt | 10 + .../android/uk-UA/short_description.txt | 1 + .../metadata/android/vi-VN/changelogs/10.txt | 4 + .../metadata/android/vi-VN/changelogs/17.txt | 3 + .../metadata/android/vi-VN/changelogs/18.txt | 2 + .../metadata/android/vi-VN/changelogs/25.txt | 8 + .../metadata/android/vi-VN/changelogs/26.txt | 4 + .../metadata/android/vi-VN/changelogs/29.txt | 2 + .../metadata/android/vi-VN/changelogs/30.txt | 5 + .../metadata/android/vi-VN/changelogs/32.txt | 5 + .../metadata/android/vi-VN/changelogs/5.txt | 4 + .../metadata/android/vi-VN/changelogs/6.txt | 1 + .../android/vi-VN/full_description.txt | 10 + .../android/vi-VN/short_description.txt | 1 + .../metadata/android/zh-CN/changelogs/10.txt | 4 + .../metadata/android/zh-CN/changelogs/17.txt | 3 + .../metadata/android/zh-CN/changelogs/18.txt | 2 + .../metadata/android/zh-CN/changelogs/25.txt | 8 + .../metadata/android/zh-CN/changelogs/26.txt | 4 + .../metadata/android/zh-CN/changelogs/29.txt | 2 + .../metadata/android/zh-CN/changelogs/30.txt | 5 + .../metadata/android/zh-CN/changelogs/32.txt | 5 + .../metadata/android/zh-CN/changelogs/5.txt | 4 + .../metadata/android/zh-CN/changelogs/6.txt | 1 + .../android/zh-CN/full_description.txt | 10 + .../android/zh-CN/short_description.txt | 1 + .../metadata/android/zh-TW/changelogs/10.txt | 4 + .../metadata/android/zh-TW/changelogs/17.txt | 3 + .../metadata/android/zh-TW/changelogs/18.txt | 2 + .../metadata/android/zh-TW/changelogs/25.txt | 8 + .../metadata/android/zh-TW/changelogs/26.txt | 4 + .../metadata/android/zh-TW/changelogs/29.txt | 2 + .../metadata/android/zh-TW/changelogs/30.txt | 5 + .../metadata/android/zh-TW/changelogs/32.txt | 5 + .../metadata/android/zh-TW/changelogs/5.txt | 4 + .../metadata/android/zh-TW/changelogs/6.txt | 1 + .../android/zh-TW/full_description.txt | 10 + .../android/zh-TW/short_description.txt | 1 + gradle.properties | 24 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 63375 bytes gradle/wrapper/gradle-wrapper.properties | 8 + gradlew | 248 +++++ gradlew.bat | 92 ++ settings.gradle | 12 + 544 files changed, 17766 insertions(+), 2 deletions(-) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/schemas/com.hegocre.nextcloudpasswords.databases.AppDatabase/1.json create mode 100644 app/schemas/com.hegocre.nextcloudpasswords.databases.AppDatabase/2.json create mode 100644 app/schemas/com.hegocre.nextcloudpasswords.databases.AppDatabase/3.json create mode 100644 app/src/androidTest/java/com/hegocre/nextcloudpasswords/ApiControllerTest.kt create mode 100644 app/src/androidTest/java/com/hegocre/nextcloudpasswords/PasswordDatabaseTest.kt create mode 100644 app/src/androidTest/java/com/hegocre/nextcloudpasswords/SodiumTest.kt create mode 100644 app/src/debug/ic_launcher-playstore.png create mode 100644 app/src/debug/res/drawable/ic_launcher_background.xml create mode 100644 app/src/debug/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/debug/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/debug/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/debug/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/debug/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/debug/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/debug/res/values/strings.xml create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/ic_launcher-playstore.png create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/ApiController.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/FoldersApi.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/PasswordsApi.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/Server.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/ServiceApi.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/SessionApi.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/SettingsApi.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/encryption/CSEv1Keychain.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/encryption/PWDv1Challenge.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/ClientDeauthorizedException.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/PWDv1ChallengeMasterKeyInvalidException.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/PWDv1ChallengeMasterKeyNeededException.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/PWDv1ChallengePasswordException.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/SodiumDecryptionException.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/DeletedFolder.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/Folder.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/FolderController.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/NewFolder.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/UpdatedFolder.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/password/CustomField.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/password/DeletedPassword.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/password/GeneratedPassword.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/password/NewPassword.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/password/Password.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/password/PasswordController.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/password/RequestedPassword.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/password/UpdatedPassword.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/serversettings/ServerSettings.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/user/UserController.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/data/user/UserException.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/databases/AppDatabase.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/databases/folderdatabase/FolderDatabaseDao.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/databases/passworddatabase/PasswordDatabaseDao.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/services/autofill/AssistStructureParser.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/services/autofill/AutofillHelper.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/services/autofill/NCPAutofillService.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/services/keepalive/KeepAliveWorker.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/NCPScreen.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/AboutActivity.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/LoginActivity.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/MainActivity.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/SettingsActivity.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/WebLoginActivity.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/CommonComposables.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/Dialogs.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/FolderEditView.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/ItemList.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/LoginView.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPAboutScreen.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPApp.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPAppLock.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPBottomNavigation.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPNavHost.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPSettings.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPTopBar.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/PasswordEditView.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/PasswordItem.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/PullToRefreshBody.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/Settings.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/markdown/MarkdownTextView.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/Color.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/ContentAlpha.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/NCPTheme.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/Type.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/ui/viewmodels/PasswordsViewModel.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/utils/AppLockHelper.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/utils/BiometricAuth.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/utils/ClipboardUtils.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/utils/EncryptionUtils.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/utils/Error.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/utils/LazySodiumUtils.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/utils/LogHelper.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/utils/OkHttpRequest.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/utils/PreferencesManager.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/utils/Result.kt create mode 100644 app/src/main/java/com/hegocre/nextcloudpasswords/utils/TextUtils.kt create mode 100644 app/src/main/res/drawable/app_icon.png create mode 100644 app/src/main/res/drawable/ic_account_circle.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/ic_lock.xml create mode 100644 app/src/main/res/font/dejavu_sans_mono.ttf create mode 100644 app/src/main/res/layout/password_list_item.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/resources.properties create mode 100644 app/src/main/res/values-af-rZA/strings.xml create mode 100644 app/src/main/res/values-ar-rSA/strings.xml create mode 100644 app/src/main/res/values-ca-rES/strings.xml create mode 100644 app/src/main/res/values-cs-rCZ/strings.xml create mode 100644 app/src/main/res/values-da-rDK/strings.xml create mode 100644 app/src/main/res/values-de-rDE/strings.xml create mode 100644 app/src/main/res/values-el-rGR/strings.xml create mode 100644 app/src/main/res/values-en-rUS/strings.xml create mode 100644 app/src/main/res/values-es-rES/strings.xml create mode 100644 app/src/main/res/values-et-rEE/strings.xml create mode 100644 app/src/main/res/values-fi-rFI/strings.xml create mode 100644 app/src/main/res/values-fr-rFR/strings.xml create mode 100644 app/src/main/res/values-hu-rHU/strings.xml create mode 100644 app/src/main/res/values-it-rIT/strings.xml create mode 100644 app/src/main/res/values-iw-rIL/strings.xml create mode 100644 app/src/main/res/values-ja-rJP/strings.xml create mode 100644 app/src/main/res/values-ko-rKR/strings.xml create mode 100644 app/src/main/res/values-night/themes.xml create mode 100644 app/src/main/res/values-nl-rNL/strings.xml create mode 100644 app/src/main/res/values-no-rNO/strings.xml create mode 100644 app/src/main/res/values-pl-rPL/strings.xml create mode 100644 app/src/main/res/values-pt-rBR/strings.xml create mode 100644 app/src/main/res/values-pt-rPT/strings.xml create mode 100644 app/src/main/res/values-ro-rRO/strings.xml create mode 100644 app/src/main/res/values-ru-rRU/strings.xml create mode 100644 app/src/main/res/values-sr-rSP/strings.xml create mode 100644 app/src/main/res/values-sv-rSE/strings.xml create mode 100644 app/src/main/res/values-tr-rTR/strings.xml create mode 100644 app/src/main/res/values-uk-rUA/strings.xml create mode 100644 app/src/main/res/values-vi-rVN/strings.xml create mode 100644 app/src/main/res/values-zh-rCN/strings.xml create mode 100644 app/src/main/res/values-zh-rTW/strings.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/main/res/xml/data_extraction_rules.xml create mode 100644 app/src/main/res/xml/full_backup_content.xml create mode 100644 app/src/main/res/xml/network_security_config.xml create mode 100644 app/src/main/res/xml/service_configuration.xml create mode 100644 app/src/test/java/com/hegocre/nextcloudpasswords/OkHttpTest.kt create mode 100644 build.gradle create mode 100644 crowdin.yml create mode 100644 fastlane/metadata/android/af-ZA/changelogs/10.txt create mode 100644 fastlane/metadata/android/af-ZA/changelogs/17.txt create mode 100644 fastlane/metadata/android/af-ZA/changelogs/18.txt create mode 100644 fastlane/metadata/android/af-ZA/changelogs/25.txt create mode 100644 fastlane/metadata/android/af-ZA/changelogs/26.txt create mode 100644 fastlane/metadata/android/af-ZA/changelogs/29.txt create mode 100644 fastlane/metadata/android/af-ZA/changelogs/30.txt create mode 100644 fastlane/metadata/android/af-ZA/changelogs/32.txt create mode 100644 fastlane/metadata/android/af-ZA/changelogs/5.txt create mode 100644 fastlane/metadata/android/af-ZA/changelogs/6.txt create mode 100644 fastlane/metadata/android/af-ZA/full_description.txt create mode 100644 fastlane/metadata/android/af-ZA/short_description.txt create mode 100644 fastlane/metadata/android/ar-SA/changelogs/10.txt create mode 100644 fastlane/metadata/android/ar-SA/changelogs/17.txt create mode 100644 fastlane/metadata/android/ar-SA/changelogs/18.txt create mode 100644 fastlane/metadata/android/ar-SA/changelogs/25.txt create mode 100644 fastlane/metadata/android/ar-SA/changelogs/26.txt create mode 100644 fastlane/metadata/android/ar-SA/changelogs/29.txt create mode 100644 fastlane/metadata/android/ar-SA/changelogs/30.txt create mode 100644 fastlane/metadata/android/ar-SA/changelogs/32.txt create mode 100644 fastlane/metadata/android/ar-SA/changelogs/5.txt create mode 100644 fastlane/metadata/android/ar-SA/changelogs/6.txt create mode 100644 fastlane/metadata/android/ar-SA/full_description.txt create mode 100644 fastlane/metadata/android/ar-SA/short_description.txt create mode 100644 fastlane/metadata/android/ca-ES/changelogs/10.txt create mode 100644 fastlane/metadata/android/ca-ES/changelogs/17.txt create mode 100644 fastlane/metadata/android/ca-ES/changelogs/18.txt create mode 100644 fastlane/metadata/android/ca-ES/changelogs/25.txt create mode 100644 fastlane/metadata/android/ca-ES/changelogs/26.txt create mode 100644 fastlane/metadata/android/ca-ES/changelogs/29.txt create mode 100644 fastlane/metadata/android/ca-ES/changelogs/30.txt create mode 100644 fastlane/metadata/android/ca-ES/changelogs/32.txt create mode 100644 fastlane/metadata/android/ca-ES/changelogs/5.txt create mode 100644 fastlane/metadata/android/ca-ES/changelogs/6.txt create mode 100644 fastlane/metadata/android/ca-ES/full_description.txt create mode 100644 fastlane/metadata/android/ca-ES/short_description.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/10.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/17.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/18.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/25.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/26.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/29.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/30.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/32.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/5.txt create mode 100644 fastlane/metadata/android/cs-CZ/changelogs/6.txt create mode 100644 fastlane/metadata/android/cs-CZ/full_description.txt create mode 100644 fastlane/metadata/android/cs-CZ/short_description.txt create mode 100644 fastlane/metadata/android/da-DK/changelogs/10.txt create mode 100644 fastlane/metadata/android/da-DK/changelogs/17.txt create mode 100644 fastlane/metadata/android/da-DK/changelogs/18.txt create mode 100644 fastlane/metadata/android/da-DK/changelogs/25.txt create mode 100644 fastlane/metadata/android/da-DK/changelogs/26.txt create mode 100644 fastlane/metadata/android/da-DK/changelogs/29.txt create mode 100644 fastlane/metadata/android/da-DK/changelogs/30.txt create mode 100644 fastlane/metadata/android/da-DK/changelogs/32.txt create mode 100644 fastlane/metadata/android/da-DK/changelogs/5.txt create mode 100644 fastlane/metadata/android/da-DK/changelogs/6.txt create mode 100644 fastlane/metadata/android/da-DK/full_description.txt create mode 100644 fastlane/metadata/android/da-DK/short_description.txt create mode 100644 fastlane/metadata/android/de-DE/changelogs/10.txt create mode 100644 fastlane/metadata/android/de-DE/changelogs/17.txt create mode 100644 fastlane/metadata/android/de-DE/changelogs/18.txt create mode 100644 fastlane/metadata/android/de-DE/changelogs/25.txt create mode 100644 fastlane/metadata/android/de-DE/changelogs/26.txt create mode 100644 fastlane/metadata/android/de-DE/changelogs/29.txt create mode 100644 fastlane/metadata/android/de-DE/changelogs/30.txt create mode 100644 fastlane/metadata/android/de-DE/changelogs/32.txt create mode 100644 fastlane/metadata/android/de-DE/changelogs/5.txt create mode 100644 fastlane/metadata/android/de-DE/changelogs/6.txt create mode 100644 fastlane/metadata/android/de-DE/full_description.txt create mode 100644 fastlane/metadata/android/de-DE/short_description.txt create mode 100644 fastlane/metadata/android/el-GR/changelogs/10.txt create mode 100644 fastlane/metadata/android/el-GR/changelogs/17.txt create mode 100644 fastlane/metadata/android/el-GR/changelogs/18.txt create mode 100644 fastlane/metadata/android/el-GR/changelogs/25.txt create mode 100644 fastlane/metadata/android/el-GR/changelogs/26.txt create mode 100644 fastlane/metadata/android/el-GR/changelogs/29.txt create mode 100644 fastlane/metadata/android/el-GR/changelogs/30.txt create mode 100644 fastlane/metadata/android/el-GR/changelogs/32.txt create mode 100644 fastlane/metadata/android/el-GR/changelogs/5.txt create mode 100644 fastlane/metadata/android/el-GR/changelogs/6.txt create mode 100644 fastlane/metadata/android/el-GR/full_description.txt create mode 100644 fastlane/metadata/android/el-GR/short_description.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/10.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/17.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/18.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/25.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/26.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/29.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/30.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/32.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/36.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/5.txt create mode 100644 fastlane/metadata/android/en-US/changelogs/6.txt create mode 100644 fastlane/metadata/android/en-US/full_description.txt create mode 100644 fastlane/metadata/android/en-US/images/icon.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/1.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/2.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/3.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/4.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/5.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/6.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/7.png create mode 100644 fastlane/metadata/android/en-US/images/phoneScreenshots/8.png create mode 100644 fastlane/metadata/android/en-US/short_description.txt create mode 100644 fastlane/metadata/android/en-US/title.txt create mode 100644 fastlane/metadata/android/es-ES/changelogs/10.txt create mode 100644 fastlane/metadata/android/es-ES/changelogs/17.txt create mode 100644 fastlane/metadata/android/es-ES/changelogs/18.txt create mode 100644 fastlane/metadata/android/es-ES/changelogs/25.txt create mode 100644 fastlane/metadata/android/es-ES/changelogs/26.txt create mode 100644 fastlane/metadata/android/es-ES/changelogs/29.txt create mode 100644 fastlane/metadata/android/es-ES/changelogs/30.txt create mode 100644 fastlane/metadata/android/es-ES/changelogs/32.txt create mode 100644 fastlane/metadata/android/es-ES/changelogs/5.txt create mode 100644 fastlane/metadata/android/es-ES/changelogs/6.txt create mode 100644 fastlane/metadata/android/es-ES/full_description.txt create mode 100644 fastlane/metadata/android/es-ES/short_description.txt create mode 100644 fastlane/metadata/android/et-EE/changelogs/10.txt create mode 100644 fastlane/metadata/android/et-EE/changelogs/17.txt create mode 100644 fastlane/metadata/android/et-EE/changelogs/18.txt create mode 100644 fastlane/metadata/android/et-EE/changelogs/25.txt create mode 100644 fastlane/metadata/android/et-EE/changelogs/26.txt create mode 100644 fastlane/metadata/android/et-EE/changelogs/29.txt create mode 100644 fastlane/metadata/android/et-EE/changelogs/30.txt create mode 100644 fastlane/metadata/android/et-EE/changelogs/32.txt create mode 100644 fastlane/metadata/android/et-EE/changelogs/5.txt create mode 100644 fastlane/metadata/android/et-EE/changelogs/6.txt create mode 100644 fastlane/metadata/android/et-EE/full_description.txt create mode 100644 fastlane/metadata/android/et-EE/short_description.txt create mode 100644 fastlane/metadata/android/fi-FI/changelogs/10.txt create mode 100644 fastlane/metadata/android/fi-FI/changelogs/17.txt create mode 100644 fastlane/metadata/android/fi-FI/changelogs/18.txt create mode 100644 fastlane/metadata/android/fi-FI/changelogs/25.txt create mode 100644 fastlane/metadata/android/fi-FI/changelogs/26.txt create mode 100644 fastlane/metadata/android/fi-FI/changelogs/29.txt create mode 100644 fastlane/metadata/android/fi-FI/changelogs/30.txt create mode 100644 fastlane/metadata/android/fi-FI/changelogs/32.txt create mode 100644 fastlane/metadata/android/fi-FI/changelogs/5.txt create mode 100644 fastlane/metadata/android/fi-FI/changelogs/6.txt create mode 100644 fastlane/metadata/android/fi-FI/full_description.txt create mode 100644 fastlane/metadata/android/fi-FI/short_description.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/10.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/17.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/18.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/25.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/26.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/29.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/30.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/32.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/5.txt create mode 100644 fastlane/metadata/android/fr-FR/changelogs/6.txt create mode 100644 fastlane/metadata/android/fr-FR/full_description.txt create mode 100644 fastlane/metadata/android/fr-FR/short_description.txt create mode 100644 fastlane/metadata/android/he-IL/changelogs/10.txt create mode 100644 fastlane/metadata/android/he-IL/changelogs/17.txt create mode 100644 fastlane/metadata/android/he-IL/changelogs/18.txt create mode 100644 fastlane/metadata/android/he-IL/changelogs/25.txt create mode 100644 fastlane/metadata/android/he-IL/changelogs/26.txt create mode 100644 fastlane/metadata/android/he-IL/changelogs/29.txt create mode 100644 fastlane/metadata/android/he-IL/changelogs/30.txt create mode 100644 fastlane/metadata/android/he-IL/changelogs/32.txt create mode 100644 fastlane/metadata/android/he-IL/changelogs/5.txt create mode 100644 fastlane/metadata/android/he-IL/changelogs/6.txt create mode 100644 fastlane/metadata/android/he-IL/full_description.txt create mode 100644 fastlane/metadata/android/he-IL/short_description.txt create mode 100644 fastlane/metadata/android/hu-HU/changelogs/10.txt create mode 100644 fastlane/metadata/android/hu-HU/changelogs/17.txt create mode 100644 fastlane/metadata/android/hu-HU/changelogs/18.txt create mode 100644 fastlane/metadata/android/hu-HU/changelogs/25.txt create mode 100644 fastlane/metadata/android/hu-HU/changelogs/26.txt create mode 100644 fastlane/metadata/android/hu-HU/changelogs/29.txt create mode 100644 fastlane/metadata/android/hu-HU/changelogs/30.txt create mode 100644 fastlane/metadata/android/hu-HU/changelogs/32.txt create mode 100644 fastlane/metadata/android/hu-HU/changelogs/5.txt create mode 100644 fastlane/metadata/android/hu-HU/changelogs/6.txt create mode 100644 fastlane/metadata/android/hu-HU/full_description.txt create mode 100644 fastlane/metadata/android/hu-HU/short_description.txt create mode 100644 fastlane/metadata/android/it-IT/changelogs/10.txt create mode 100644 fastlane/metadata/android/it-IT/changelogs/17.txt create mode 100644 fastlane/metadata/android/it-IT/changelogs/18.txt create mode 100644 fastlane/metadata/android/it-IT/changelogs/25.txt create mode 100644 fastlane/metadata/android/it-IT/changelogs/26.txt create mode 100644 fastlane/metadata/android/it-IT/changelogs/29.txt create mode 100644 fastlane/metadata/android/it-IT/changelogs/30.txt create mode 100644 fastlane/metadata/android/it-IT/changelogs/32.txt create mode 100644 fastlane/metadata/android/it-IT/changelogs/5.txt create mode 100644 fastlane/metadata/android/it-IT/changelogs/6.txt create mode 100644 fastlane/metadata/android/it-IT/full_description.txt create mode 100644 fastlane/metadata/android/it-IT/short_description.txt create mode 100644 fastlane/metadata/android/ja-JP/changelogs/10.txt create mode 100644 fastlane/metadata/android/ja-JP/changelogs/17.txt create mode 100644 fastlane/metadata/android/ja-JP/changelogs/18.txt create mode 100644 fastlane/metadata/android/ja-JP/changelogs/25.txt create mode 100644 fastlane/metadata/android/ja-JP/changelogs/26.txt create mode 100644 fastlane/metadata/android/ja-JP/changelogs/29.txt create mode 100644 fastlane/metadata/android/ja-JP/changelogs/30.txt create mode 100644 fastlane/metadata/android/ja-JP/changelogs/32.txt create mode 100644 fastlane/metadata/android/ja-JP/changelogs/5.txt create mode 100644 fastlane/metadata/android/ja-JP/changelogs/6.txt create mode 100644 fastlane/metadata/android/ja-JP/full_description.txt create mode 100644 fastlane/metadata/android/ja-JP/short_description.txt create mode 100644 fastlane/metadata/android/ko-KR/changelogs/10.txt create mode 100644 fastlane/metadata/android/ko-KR/changelogs/17.txt create mode 100644 fastlane/metadata/android/ko-KR/changelogs/18.txt create mode 100644 fastlane/metadata/android/ko-KR/changelogs/25.txt create mode 100644 fastlane/metadata/android/ko-KR/changelogs/26.txt create mode 100644 fastlane/metadata/android/ko-KR/changelogs/29.txt create mode 100644 fastlane/metadata/android/ko-KR/changelogs/30.txt create mode 100644 fastlane/metadata/android/ko-KR/changelogs/32.txt create mode 100644 fastlane/metadata/android/ko-KR/changelogs/5.txt create mode 100644 fastlane/metadata/android/ko-KR/changelogs/6.txt create mode 100644 fastlane/metadata/android/ko-KR/full_description.txt create mode 100644 fastlane/metadata/android/ko-KR/short_description.txt create mode 100644 fastlane/metadata/android/nl-NL/changelogs/10.txt create mode 100644 fastlane/metadata/android/nl-NL/changelogs/17.txt create mode 100644 fastlane/metadata/android/nl-NL/changelogs/18.txt create mode 100644 fastlane/metadata/android/nl-NL/changelogs/25.txt create mode 100644 fastlane/metadata/android/nl-NL/changelogs/26.txt create mode 100644 fastlane/metadata/android/nl-NL/changelogs/29.txt create mode 100644 fastlane/metadata/android/nl-NL/changelogs/30.txt create mode 100644 fastlane/metadata/android/nl-NL/changelogs/32.txt create mode 100644 fastlane/metadata/android/nl-NL/changelogs/5.txt create mode 100644 fastlane/metadata/android/nl-NL/changelogs/6.txt create mode 100644 fastlane/metadata/android/nl-NL/full_description.txt create mode 100644 fastlane/metadata/android/nl-NL/short_description.txt create mode 100644 fastlane/metadata/android/no-NO/changelogs/10.txt create mode 100644 fastlane/metadata/android/no-NO/changelogs/17.txt create mode 100644 fastlane/metadata/android/no-NO/changelogs/18.txt create mode 100644 fastlane/metadata/android/no-NO/changelogs/25.txt create mode 100644 fastlane/metadata/android/no-NO/changelogs/26.txt create mode 100644 fastlane/metadata/android/no-NO/changelogs/29.txt create mode 100644 fastlane/metadata/android/no-NO/changelogs/30.txt create mode 100644 fastlane/metadata/android/no-NO/changelogs/32.txt create mode 100644 fastlane/metadata/android/no-NO/changelogs/5.txt create mode 100644 fastlane/metadata/android/no-NO/changelogs/6.txt create mode 100644 fastlane/metadata/android/no-NO/full_description.txt create mode 100644 fastlane/metadata/android/no-NO/short_description.txt create mode 100644 fastlane/metadata/android/pl-PL/changelogs/10.txt create mode 100644 fastlane/metadata/android/pl-PL/changelogs/17.txt create mode 100644 fastlane/metadata/android/pl-PL/changelogs/18.txt create mode 100644 fastlane/metadata/android/pl-PL/changelogs/25.txt create mode 100644 fastlane/metadata/android/pl-PL/changelogs/26.txt create mode 100644 fastlane/metadata/android/pl-PL/changelogs/29.txt create mode 100644 fastlane/metadata/android/pl-PL/changelogs/30.txt create mode 100644 fastlane/metadata/android/pl-PL/changelogs/32.txt create mode 100644 fastlane/metadata/android/pl-PL/changelogs/5.txt create mode 100644 fastlane/metadata/android/pl-PL/changelogs/6.txt create mode 100644 fastlane/metadata/android/pl-PL/full_description.txt create mode 100644 fastlane/metadata/android/pl-PL/short_description.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/10.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/17.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/18.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/25.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/26.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/29.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/30.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/32.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/5.txt create mode 100644 fastlane/metadata/android/pt-BR/changelogs/6.txt create mode 100644 fastlane/metadata/android/pt-BR/full_description.txt create mode 100644 fastlane/metadata/android/pt-BR/short_description.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/10.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/17.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/18.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/25.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/26.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/29.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/30.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/32.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/5.txt create mode 100644 fastlane/metadata/android/pt-PT/changelogs/6.txt create mode 100644 fastlane/metadata/android/pt-PT/full_description.txt create mode 100644 fastlane/metadata/android/pt-PT/short_description.txt create mode 100644 fastlane/metadata/android/ro-RO/changelogs/10.txt create mode 100644 fastlane/metadata/android/ro-RO/changelogs/17.txt create mode 100644 fastlane/metadata/android/ro-RO/changelogs/18.txt create mode 100644 fastlane/metadata/android/ro-RO/changelogs/25.txt create mode 100644 fastlane/metadata/android/ro-RO/changelogs/26.txt create mode 100644 fastlane/metadata/android/ro-RO/changelogs/29.txt create mode 100644 fastlane/metadata/android/ro-RO/changelogs/30.txt create mode 100644 fastlane/metadata/android/ro-RO/changelogs/32.txt create mode 100644 fastlane/metadata/android/ro-RO/changelogs/5.txt create mode 100644 fastlane/metadata/android/ro-RO/changelogs/6.txt create mode 100644 fastlane/metadata/android/ro-RO/full_description.txt create mode 100644 fastlane/metadata/android/ro-RO/short_description.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/10.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/17.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/18.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/25.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/26.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/29.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/30.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/32.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/5.txt create mode 100644 fastlane/metadata/android/ru-RU/changelogs/6.txt create mode 100644 fastlane/metadata/android/ru-RU/full_description.txt create mode 100644 fastlane/metadata/android/ru-RU/short_description.txt create mode 100644 fastlane/metadata/android/sr-Cyrl/changelogs/10.txt create mode 100644 fastlane/metadata/android/sr-Cyrl/changelogs/17.txt create mode 100644 fastlane/metadata/android/sr-Cyrl/changelogs/18.txt create mode 100644 fastlane/metadata/android/sr-Cyrl/changelogs/25.txt create mode 100644 fastlane/metadata/android/sr-Cyrl/changelogs/26.txt create mode 100644 fastlane/metadata/android/sr-Cyrl/changelogs/29.txt create mode 100644 fastlane/metadata/android/sr-Cyrl/changelogs/30.txt create mode 100644 fastlane/metadata/android/sr-Cyrl/changelogs/32.txt create mode 100644 fastlane/metadata/android/sr-Cyrl/changelogs/5.txt create mode 100644 fastlane/metadata/android/sr-Cyrl/changelogs/6.txt create mode 100644 fastlane/metadata/android/sr-Cyrl/full_description.txt create mode 100644 fastlane/metadata/android/sr-Cyrl/short_description.txt create mode 100644 fastlane/metadata/android/sv-SE/changelogs/10.txt create mode 100644 fastlane/metadata/android/sv-SE/changelogs/17.txt create mode 100644 fastlane/metadata/android/sv-SE/changelogs/18.txt create mode 100644 fastlane/metadata/android/sv-SE/changelogs/25.txt create mode 100644 fastlane/metadata/android/sv-SE/changelogs/26.txt create mode 100644 fastlane/metadata/android/sv-SE/changelogs/29.txt create mode 100644 fastlane/metadata/android/sv-SE/changelogs/30.txt create mode 100644 fastlane/metadata/android/sv-SE/changelogs/32.txt create mode 100644 fastlane/metadata/android/sv-SE/changelogs/5.txt create mode 100644 fastlane/metadata/android/sv-SE/changelogs/6.txt create mode 100644 fastlane/metadata/android/sv-SE/full_description.txt create mode 100644 fastlane/metadata/android/sv-SE/short_description.txt create mode 100644 fastlane/metadata/android/tr-TR/changelogs/10.txt create mode 100644 fastlane/metadata/android/tr-TR/changelogs/17.txt create mode 100644 fastlane/metadata/android/tr-TR/changelogs/18.txt create mode 100644 fastlane/metadata/android/tr-TR/changelogs/25.txt create mode 100644 fastlane/metadata/android/tr-TR/changelogs/26.txt create mode 100644 fastlane/metadata/android/tr-TR/changelogs/29.txt create mode 100644 fastlane/metadata/android/tr-TR/changelogs/30.txt create mode 100644 fastlane/metadata/android/tr-TR/changelogs/32.txt create mode 100644 fastlane/metadata/android/tr-TR/changelogs/5.txt create mode 100644 fastlane/metadata/android/tr-TR/changelogs/6.txt create mode 100644 fastlane/metadata/android/tr-TR/full_description.txt create mode 100644 fastlane/metadata/android/tr-TR/short_description.txt create mode 100644 fastlane/metadata/android/uk-UA/changelogs/10.txt create mode 100644 fastlane/metadata/android/uk-UA/changelogs/17.txt create mode 100644 fastlane/metadata/android/uk-UA/changelogs/18.txt create mode 100644 fastlane/metadata/android/uk-UA/changelogs/25.txt create mode 100644 fastlane/metadata/android/uk-UA/changelogs/26.txt create mode 100644 fastlane/metadata/android/uk-UA/changelogs/29.txt create mode 100644 fastlane/metadata/android/uk-UA/changelogs/30.txt create mode 100644 fastlane/metadata/android/uk-UA/changelogs/32.txt create mode 100644 fastlane/metadata/android/uk-UA/changelogs/5.txt create mode 100644 fastlane/metadata/android/uk-UA/changelogs/6.txt create mode 100644 fastlane/metadata/android/uk-UA/full_description.txt create mode 100644 fastlane/metadata/android/uk-UA/short_description.txt create mode 100644 fastlane/metadata/android/vi-VN/changelogs/10.txt create mode 100644 fastlane/metadata/android/vi-VN/changelogs/17.txt create mode 100644 fastlane/metadata/android/vi-VN/changelogs/18.txt create mode 100644 fastlane/metadata/android/vi-VN/changelogs/25.txt create mode 100644 fastlane/metadata/android/vi-VN/changelogs/26.txt create mode 100644 fastlane/metadata/android/vi-VN/changelogs/29.txt create mode 100644 fastlane/metadata/android/vi-VN/changelogs/30.txt create mode 100644 fastlane/metadata/android/vi-VN/changelogs/32.txt create mode 100644 fastlane/metadata/android/vi-VN/changelogs/5.txt create mode 100644 fastlane/metadata/android/vi-VN/changelogs/6.txt create mode 100644 fastlane/metadata/android/vi-VN/full_description.txt create mode 100644 fastlane/metadata/android/vi-VN/short_description.txt create mode 100644 fastlane/metadata/android/zh-CN/changelogs/10.txt create mode 100644 fastlane/metadata/android/zh-CN/changelogs/17.txt create mode 100644 fastlane/metadata/android/zh-CN/changelogs/18.txt create mode 100644 fastlane/metadata/android/zh-CN/changelogs/25.txt create mode 100644 fastlane/metadata/android/zh-CN/changelogs/26.txt create mode 100644 fastlane/metadata/android/zh-CN/changelogs/29.txt create mode 100644 fastlane/metadata/android/zh-CN/changelogs/30.txt create mode 100644 fastlane/metadata/android/zh-CN/changelogs/32.txt create mode 100644 fastlane/metadata/android/zh-CN/changelogs/5.txt create mode 100644 fastlane/metadata/android/zh-CN/changelogs/6.txt create mode 100644 fastlane/metadata/android/zh-CN/full_description.txt create mode 100644 fastlane/metadata/android/zh-CN/short_description.txt create mode 100644 fastlane/metadata/android/zh-TW/changelogs/10.txt create mode 100644 fastlane/metadata/android/zh-TW/changelogs/17.txt create mode 100644 fastlane/metadata/android/zh-TW/changelogs/18.txt create mode 100644 fastlane/metadata/android/zh-TW/changelogs/25.txt create mode 100644 fastlane/metadata/android/zh-TW/changelogs/26.txt create mode 100644 fastlane/metadata/android/zh-TW/changelogs/29.txt create mode 100644 fastlane/metadata/android/zh-TW/changelogs/30.txt create mode 100644 fastlane/metadata/android/zh-TW/changelogs/32.txt create mode 100644 fastlane/metadata/android/zh-TW/changelogs/5.txt create mode 100644 fastlane/metadata/android/zh-TW/changelogs/6.txt create mode 100644 fastlane/metadata/android/zh-TW/full_description.txt create mode 100644 fastlane/metadata/android/zh-TW/short_description.txt create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1b36fc7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +*.iml +.gradle +/local.properties +/.idea/ +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties +/app/build/ +/app/release/ +/app/libs/ +/.kotlin \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md index 9f97add..ff6dccf 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,68 @@ -# c2c-passwords +# Nextcloud Passwords -Nextcloud Passwords Android App \ No newline at end of file +[![Android CI](https://github.com/hegocre/NextcloudPasswords/actions/workflows/android.yml/badge.svg?branch=main)](https://github.com/hegocre/NextcloudPasswords/actions/workflows/android.yml) +[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://github.com/hegocre/NextcloudPasswords/blob/main/LICENSE) +[![Crowdin](https://badges.crowdin.net/e/da2d6d8cb4ace3704592ebcf73969dc9/localized.svg)](https://hegocre.crowdin.com/nextcloud-passwords) +[![F-Droid Download](https://img.shields.io/f-droid/v/com.hegocre.nextcloudpasswords.svg?logo=F-Droid)](https://f-droid.org/packages/com.hegocre.nextcloudpasswords/) +[![GitHub Release](https://img.shields.io/github/release/hegocre/NextcloudPasswords.svg?logo=github)](https://github.com/hegocre/NextcloudPasswords/releases/) +[![Google Play Download](https://PlayBadges.pavi2410.me/badge/downloads?id=com.hegocre.nextcloudpasswords&pretty)](https://play.google.com/store/apps/details?id=com.hegocre.nextcloudpasswords) + +This app connects to a Nextcloud server with Passwords App installed, and allows to view and edit its content on a user-friendly UI. It also acts as an AutoFill service, making logging in on Android devices easier. + +## Features + +- Display user passwords and folders on a Material Design UI +- Edit and create passwords, including custom fields +- Edit and create folders +- Show site icons, with cache to minimize data usage (optional) +- Supports self-signed certificates +- App lock screen with both passcode and biometric authentication +- Autofill service (Android 8.0 or higher) +- Uses the latest technologies like Kotlin and Jetpack Compose +- Privacy friendly: The only server this app connects is your own Nextcloud Server +- Free and Open Source + +## Screenshots + +| ![Light app lock view](/fastlane/metadata/android/en-US/images/phoneScreenshots/1.png) | ![Light password list view](/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png) | ![Light password detail view](/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png) | ![Light password edit view](/fastlane/metadata/android/en-US/images/phoneScreenshots/4.png) | +|----------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------| +| ![Dark app lock view](/fastlane/metadata/android/en-US/images/phoneScreenshots/5.png) | ![Dark password list view](/fastlane/metadata/android/en-US/images/phoneScreenshots/6.png) | ![Dark password detail view](/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png) | ![Dark password edit view](/fastlane/metadata/android/en-US/images/phoneScreenshots/8.png) | + +## Download + +You can download the app from multiple sources. Keep in mind that each repository version is signed with a different key, which means it is not possible to switch between providers without uninstalling the previous APK first. + +[Download it on F-Droid](https://f-droid.org/packages/com.hegocre.nextcloudpasswords/) +[Download APK from GitHub](https://github.com/hegocre/NextcloudPasswords/releases) +[Get it on Google Play](https://play.google.com/store/apps/details?id=com.hegocre.nextcloudpasswords) + +## Contribute + +There are many ways you can contribute, including: + +- Spread the word! Share the application to help the community grow. A review on Google Play is highly appreciated ⭐ +- Help [translate the app](https://translations.hegocre.com/nextcloud-passwords)!. Make the app multilingual. The more languages, the more people it reaches! 🌏 +- Contribute with the developement. Hop to the [Issues](https://github.com/hegocre/NextcloudPasswords/issues) page, and if you feel like working on something, be my guest! 🧑🏽‍💻 +- [Make a donation](https://paypal.me/hegocre). Your generosity is the only source of income, and any small tip will be invested in coffee in order to survive those long coding nights 😴 + +## Contact + +- Bugs and feature requests: [Issues](https://github.com/hegocre/NextcloudPasswords/issues) +- Email: nextcloudpasswords@hegocre.com + +## License + + Copyright (C) 2023 Hèctor Godoy + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..0ec94f1 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,132 @@ +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile + +plugins { + id 'com.android.application' + id 'kotlin-android' + id 'com.google.devtools.ksp' version "$kotlin_version-$ksp_version" + id 'org.jetbrains.kotlin.plugin.serialization' version "$kotlin_version" + id 'org.jetbrains.kotlin.plugin.compose' version "$kotlin_version" +} + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(17) + } +} + +android { + namespace 'com.hegocre.nextcloudpasswords' + compileSdk 35 + + defaultConfig { + applicationId "com.hegocre.nextcloudpasswords" + minSdk 24 + targetSdk 35 + versionCode 36 + versionName "1.0.11" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + vectorDrawables { + useSupportLibrary true + } + + applicationVariants.configureEach { variant -> + variant.resValue "string", "version_name", variant.versionName + variant.resValue "string", "version_code", variant.versionCode.toString() + } + } + + androidResources { + generateLocaleConfig = true + } + + ksp { + arg("room.schemaLocation", "$projectDir/schemas".toString()) + } + buildTypes { + release { + minifyEnabled true + shrinkResources true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + debug { + debuggable true + applicationIdSuffix ".debug" + versionNameSuffix "-DEBUG" + } + } + splits { + abi { + enable true + universalApk true + } + } + buildFeatures { + compose true + buildConfig true + } + packagingOptions { + resources { + excludes += '/META-INF/{AL2.0,LGPL2.1}' + } + jniLibs { + keepDebugSymbols += ['**/*.so'] + } + } +} + +dependencies { + implementation 'androidx.core:core-ktx:1.16.0' + implementation 'androidx.security:security-crypto:1.0.0' + implementation 'androidx.datastore:datastore-preferences:1.1.4' + + implementation 'com.squareup.okhttp3:okhttp:4.12.0' + + implementation 'com.goterl:lazysodium-android:5.1.0@aar' + implementation 'net.java.dev.jna:jna:5.17.0@aar' + + implementation 'org.commonmark:commonmark:0.24.0' + implementation 'io.coil-kt:coil-compose:2.7.0' + + //Compose dependencies + implementation platform('androidx.compose:compose-bom:2025.04.00') + implementation 'androidx.compose.ui:ui' + implementation 'androidx.compose.material3:material3' + implementation 'androidx.compose.ui:ui-tooling-preview' + implementation 'androidx.compose.material:material-icons-extended' + implementation 'androidx.compose.runtime:runtime-livedata' + implementation 'androidx.compose.foundation:foundation' + + implementation 'androidx.navigation:navigation-compose:2.8.9' + implementation 'androidx.activity:activity-compose:1.10.1' + implementation 'androidx.biometric:biometric:1.1.0' + implementation 'androidx.autofill:autofill:1.1.0' + implementation 'androidx.work:work-runtime-ktx:2.10.0' + + //Room dependencies + implementation "androidx.room:room-ktx:$room_version" + ksp "androidx.room:room-compiler:$room_version" + + implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1' + + implementation 'com.materialkolor:material-kolor:2.1.1' + + testImplementation 'junit:junit:4.13.2' + + androidTestImplementation 'androidx.arch.core:core-testing:2.2.0' + + androidTestImplementation platform('androidx.compose:compose-bom:2025.04.00') + androidTestImplementation 'androidx.test.ext:junit:1.2.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.6.1' + androidTestImplementation 'androidx.compose.ui:ui-test-junit4' + + debugImplementation 'androidx.compose.ui:ui-tooling' + debugImplementation 'androidx.compose.ui:ui-test-manifest' +} + +// Compiler flag to use experimental Compose APIs +tasks.withType(KotlinCompile).configureEach { + compilerOptions { + freeCompilerArgs.addAll("-opt-in=kotlin.RequiresOptIn", "-Xjvm-default=all-compatibility") + } +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..dfa2638 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,35 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile + +# Rules for JNA (sodium) +-dontwarn java.awt.* +-keep class com.sun.jna.* { *; } +-keepclassmembers class * extends com.sun.jna.* { public *; } + +# OkHttp platform used only on JVM and when Conscrypt and other security providers are available. +-dontwarn okhttp3.internal.platform.** +-dontwarn org.conscrypt.** +-dontwarn org.bouncycastle.** +-dontwarn org.openjsse.** + +# This is generated automatically by the Android Gradle plugin. +-dontwarn com.google.errorprone.annotations.Immutable \ No newline at end of file diff --git a/app/schemas/com.hegocre.nextcloudpasswords.databases.AppDatabase/1.json b/app/schemas/com.hegocre.nextcloudpasswords.databases.AppDatabase/1.json new file mode 100644 index 0000000..73d3821 --- /dev/null +++ b/app/schemas/com.hegocre.nextcloudpasswords.databases.AppDatabase/1.json @@ -0,0 +1,212 @@ +{ + "formatVersion": 1, + "database": { + "version": 1, + "identityHash": "807d8eef8f1631eb109d2349af8e318a", + "entities": [ + { + "tableName": "favicons", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`url` TEXT NOT NULL, `data` BLOB NOT NULL, PRIMARY KEY(`url`))", + "fields": [ + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "data", + "columnName": "data", + "affinity": "BLOB", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "url" + ] + }, + "indices": [ + { + "name": "index_favicons_url", + "unique": true, + "columnNames": [ + "url" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_favicons_url` ON `${TABLE_NAME}` (`url`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "folders", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `label` TEXT NOT NULL, `parent` TEXT NOT NULL, `revision` TEXT NOT NULL, `cseType` TEXT NOT NULL, `cseKey` TEXT NOT NULL, `sseType` TEXT NOT NULL, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "label", + "columnName": "label", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "parent", + "columnName": "parent", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "revision", + "columnName": "revision", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cseType", + "columnName": "cseType", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cseKey", + "columnName": "cseKey", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sseType", + "columnName": "sseType", + "affinity": "TEXT", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [ + { + "name": "index_folders_id", + "unique": true, + "columnNames": [ + "id" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_folders_id` ON `${TABLE_NAME}` (`id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "passwords", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `label` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `url` TEXT NOT NULL, `revision` TEXT NOT NULL, `cseType` TEXT NOT NULL, `cseKey` TEXT NOT NULL, `sseType` TEXT NOT NULL, `favorite` INTEGER NOT NULL, `folder` TEXT NOT NULL, `status` INTEGER NOT NULL, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "label", + "columnName": "label", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "revision", + "columnName": "revision", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cseType", + "columnName": "cseType", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cseKey", + "columnName": "cseKey", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sseType", + "columnName": "sseType", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "favorite", + "columnName": "favorite", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "folder", + "columnName": "folder", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "status", + "columnName": "status", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [ + { + "name": "index_passwords_id", + "unique": true, + "columnNames": [ + "id" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_passwords_id` ON `${TABLE_NAME}` (`id`)" + } + ], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '807d8eef8f1631eb109d2349af8e318a')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.hegocre.nextcloudpasswords.databases.AppDatabase/2.json b/app/schemas/com.hegocre.nextcloudpasswords.databases.AppDatabase/2.json new file mode 100644 index 0000000..33316d0 --- /dev/null +++ b/app/schemas/com.hegocre.nextcloudpasswords.databases.AppDatabase/2.json @@ -0,0 +1,332 @@ +{ + "formatVersion": 1, + "database": { + "version": 2, + "identityHash": "ceb1b4aae289d6612d8fc78484b48c1b", + "entities": [ + { + "tableName": "favicons", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`url` TEXT NOT NULL, `data` BLOB NOT NULL, PRIMARY KEY(`url`))", + "fields": [ + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "data", + "columnName": "data", + "affinity": "BLOB", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "url" + ] + }, + "indices": [ + { + "name": "index_favicons_url", + "unique": true, + "columnNames": [ + "url" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_favicons_url` ON `${TABLE_NAME}` (`url`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "folders", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `label` TEXT NOT NULL, `parent` TEXT NOT NULL, `revision` TEXT NOT NULL, `cseType` TEXT NOT NULL, `cseKey` TEXT NOT NULL, `sseType` TEXT NOT NULL, `client` TEXT NOT NULL, `hidden` INTEGER NOT NULL, `trashed` INTEGER NOT NULL, `favorite` INTEGER NOT NULL, `created` INTEGER NOT NULL, `updated` INTEGER NOT NULL, `edited` INTEGER NOT NULL, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "label", + "columnName": "label", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "parent", + "columnName": "parent", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "revision", + "columnName": "revision", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cseType", + "columnName": "cseType", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cseKey", + "columnName": "cseKey", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sseType", + "columnName": "sseType", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "client", + "columnName": "client", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "hidden", + "columnName": "hidden", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "trashed", + "columnName": "trashed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "favorite", + "columnName": "favorite", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "updated", + "columnName": "updated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "edited", + "columnName": "edited", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [ + { + "name": "index_folders_id", + "unique": true, + "columnNames": [ + "id" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_folders_id` ON `${TABLE_NAME}` (`id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "passwords", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `label` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `url` TEXT NOT NULL, `notes` TEXT NOT NULL, `customFields` TEXT NOT NULL, `status` INTEGER NOT NULL, `statusCode` TEXT NOT NULL, `hash` TEXT NOT NULL, `folder` TEXT NOT NULL, `revision` TEXT NOT NULL, `share` TEXT, `shared` INTEGER NOT NULL, `cseType` TEXT NOT NULL, `cseKey` TEXT NOT NULL, `sseType` TEXT NOT NULL, `client` TEXT NOT NULL, `hidden` INTEGER NOT NULL, `trashed` INTEGER NOT NULL, `favorite` INTEGER NOT NULL, `editable` INTEGER NOT NULL, `edited` INTEGER NOT NULL, `created` INTEGER NOT NULL, `updated` INTEGER NOT NULL, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "label", + "columnName": "label", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "notes", + "columnName": "notes", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "customFields", + "columnName": "customFields", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "status", + "columnName": "status", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "statusCode", + "columnName": "statusCode", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "hash", + "columnName": "hash", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "folder", + "columnName": "folder", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "revision", + "columnName": "revision", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "share", + "columnName": "share", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "shared", + "columnName": "shared", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "cseType", + "columnName": "cseType", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cseKey", + "columnName": "cseKey", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sseType", + "columnName": "sseType", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "client", + "columnName": "client", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "hidden", + "columnName": "hidden", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "trashed", + "columnName": "trashed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "favorite", + "columnName": "favorite", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "editable", + "columnName": "editable", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "edited", + "columnName": "edited", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "updated", + "columnName": "updated", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [ + { + "name": "index_passwords_id", + "unique": true, + "columnNames": [ + "id" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_passwords_id` ON `${TABLE_NAME}` (`id`)" + } + ], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'ceb1b4aae289d6612d8fc78484b48c1b')" + ] + } +} \ No newline at end of file diff --git a/app/schemas/com.hegocre.nextcloudpasswords.databases.AppDatabase/3.json b/app/schemas/com.hegocre.nextcloudpasswords.databases.AppDatabase/3.json new file mode 100644 index 0000000..a96071e --- /dev/null +++ b/app/schemas/com.hegocre.nextcloudpasswords.databases.AppDatabase/3.json @@ -0,0 +1,296 @@ +{ + "formatVersion": 1, + "database": { + "version": 3, + "identityHash": "93e9a73ac790c295e6009993d8ff5c56", + "entities": [ + { + "tableName": "folders", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `label` TEXT NOT NULL, `parent` TEXT NOT NULL, `revision` TEXT NOT NULL, `cseType` TEXT NOT NULL, `cseKey` TEXT NOT NULL, `sseType` TEXT NOT NULL, `client` TEXT NOT NULL, `hidden` INTEGER NOT NULL, `trashed` INTEGER NOT NULL, `favorite` INTEGER NOT NULL, `created` INTEGER NOT NULL, `updated` INTEGER NOT NULL, `edited` INTEGER NOT NULL, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "label", + "columnName": "label", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "parent", + "columnName": "parent", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "revision", + "columnName": "revision", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cseType", + "columnName": "cseType", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cseKey", + "columnName": "cseKey", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sseType", + "columnName": "sseType", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "client", + "columnName": "client", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "hidden", + "columnName": "hidden", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "trashed", + "columnName": "trashed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "favorite", + "columnName": "favorite", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "updated", + "columnName": "updated", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "edited", + "columnName": "edited", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [ + { + "name": "index_folders_id", + "unique": true, + "columnNames": [ + "id" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_folders_id` ON `${TABLE_NAME}` (`id`)" + } + ], + "foreignKeys": [] + }, + { + "tableName": "passwords", + "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` TEXT NOT NULL, `label` TEXT NOT NULL, `username` TEXT NOT NULL, `password` TEXT NOT NULL, `url` TEXT NOT NULL, `notes` TEXT NOT NULL, `customFields` TEXT NOT NULL, `status` INTEGER NOT NULL, `statusCode` TEXT NOT NULL, `hash` TEXT NOT NULL, `folder` TEXT NOT NULL, `revision` TEXT NOT NULL, `share` TEXT, `shared` INTEGER NOT NULL, `cseType` TEXT NOT NULL, `cseKey` TEXT NOT NULL, `sseType` TEXT NOT NULL, `client` TEXT NOT NULL, `hidden` INTEGER NOT NULL, `trashed` INTEGER NOT NULL, `favorite` INTEGER NOT NULL, `editable` INTEGER NOT NULL, `edited` INTEGER NOT NULL, `created` INTEGER NOT NULL, `updated` INTEGER NOT NULL, PRIMARY KEY(`id`))", + "fields": [ + { + "fieldPath": "id", + "columnName": "id", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "label", + "columnName": "label", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "username", + "columnName": "username", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "password", + "columnName": "password", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "url", + "columnName": "url", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "notes", + "columnName": "notes", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "customFields", + "columnName": "customFields", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "status", + "columnName": "status", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "statusCode", + "columnName": "statusCode", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "hash", + "columnName": "hash", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "folder", + "columnName": "folder", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "revision", + "columnName": "revision", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "share", + "columnName": "share", + "affinity": "TEXT", + "notNull": false + }, + { + "fieldPath": "shared", + "columnName": "shared", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "cseType", + "columnName": "cseType", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "cseKey", + "columnName": "cseKey", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "sseType", + "columnName": "sseType", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "client", + "columnName": "client", + "affinity": "TEXT", + "notNull": true + }, + { + "fieldPath": "hidden", + "columnName": "hidden", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "trashed", + "columnName": "trashed", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "favorite", + "columnName": "favorite", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "editable", + "columnName": "editable", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "edited", + "columnName": "edited", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "created", + "columnName": "created", + "affinity": "INTEGER", + "notNull": true + }, + { + "fieldPath": "updated", + "columnName": "updated", + "affinity": "INTEGER", + "notNull": true + } + ], + "primaryKey": { + "autoGenerate": false, + "columnNames": [ + "id" + ] + }, + "indices": [ + { + "name": "index_passwords_id", + "unique": true, + "columnNames": [ + "id" + ], + "orders": [], + "createSql": "CREATE UNIQUE INDEX IF NOT EXISTS `index_passwords_id` ON `${TABLE_NAME}` (`id`)" + } + ], + "foreignKeys": [] + } + ], + "views": [], + "setupQueries": [ + "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)", + "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, '93e9a73ac790c295e6009993d8ff5c56')" + ] + } +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/hegocre/nextcloudpasswords/ApiControllerTest.kt b/app/src/androidTest/java/com/hegocre/nextcloudpasswords/ApiControllerTest.kt new file mode 100644 index 0000000..310d524 --- /dev/null +++ b/app/src/androidTest/java/com/hegocre/nextcloudpasswords/ApiControllerTest.kt @@ -0,0 +1,33 @@ +package com.hegocre.nextcloudpasswords + +import android.content.Context +import androidx.test.platform.app.InstrumentationRegistry +import com.hegocre.nextcloudpasswords.api.ApiController +import com.hegocre.nextcloudpasswords.utils.OkHttpRequest +import com.hegocre.nextcloudpasswords.utils.PreferencesManager +import org.junit.Assert +import org.junit.Before +import org.junit.Test + +class ApiControllerTest { + + private lateinit var context: Context + + @Before + fun setup() { + context = InstrumentationRegistry.getInstrumentation().targetContext + with(PreferencesManager.getInstance(context)) { + setLoggedInServer("") + setLoggedInUser("") + setLoggedInPassword("") + } + } + + @Test + fun ignoreCertificateErrorsTest() { + PreferencesManager.getInstance(context).setSkipCertificateValidation(true) + ApiController.getInstance(context) + val okHttpRequest = OkHttpRequest.getInstance() + Assert.assertEquals(okHttpRequest.allowInsecureRequests, true) + } +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/hegocre/nextcloudpasswords/PasswordDatabaseTest.kt b/app/src/androidTest/java/com/hegocre/nextcloudpasswords/PasswordDatabaseTest.kt new file mode 100644 index 0000000..fe84364 --- /dev/null +++ b/app/src/androidTest/java/com/hegocre/nextcloudpasswords/PasswordDatabaseTest.kt @@ -0,0 +1,79 @@ +package com.hegocre.nextcloudpasswords + +import androidx.arch.core.executor.testing.InstantTaskExecutorRule +import androidx.room.Room +import androidx.test.platform.app.InstrumentationRegistry +import com.hegocre.nextcloudpasswords.data.password.Password +import com.hegocre.nextcloudpasswords.databases.AppDatabase +import com.hegocre.nextcloudpasswords.databases.passworddatabase.PasswordDatabaseDao +import kotlinx.coroutines.test.runTest +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.rules.TestRule +import java.io.IOException + +class PasswordDatabaseTest { + + @get:Rule + val instantExecutorRUle: TestRule = InstantTaskExecutorRule() + + private lateinit var passwordDatabaseDao: PasswordDatabaseDao + private lateinit var database: AppDatabase + + @Before + fun createDb() { + val context = InstrumentationRegistry.getInstrumentation().targetContext + + database = Room.inMemoryDatabaseBuilder(context, AppDatabase::class.java) + .allowMainThreadQueries() + .build() + passwordDatabaseDao = database.passwordDao + } + + @After + @Throws(IOException::class) + fun closeDb() { + database.close() + } + + @Test + @Throws(Exception::class) + fun insertAndGet() = runTest { + val password = Password( + id = "", + label = "Nextcloud", + username = "john_doe", + password = "secret_value", + url = "https://nextcloud.com/", + notes = "", + customFields = "", + status = 0, + statusCode = "GOOD", + hash = "", + folder = "", + revision = "", + share = null, + shared = false, + cseType = "", + cseKey = "", + sseType = "", + client = "", + hidden = false, + trashed = false, + favorite = true, + editable = true, + edited = 0, + created = 0, + updated = 0 + ) + + passwordDatabaseDao.insertPassword(password) + + passwordDatabaseDao.fetchAllPasswords().value?.let { + assertEquals(it, listOf(password)) + } + } +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/hegocre/nextcloudpasswords/SodiumTest.kt b/app/src/androidTest/java/com/hegocre/nextcloudpasswords/SodiumTest.kt new file mode 100644 index 0000000..8987e26 --- /dev/null +++ b/app/src/androidTest/java/com/hegocre/nextcloudpasswords/SodiumTest.kt @@ -0,0 +1,77 @@ +package com.hegocre.nextcloudpasswords + +import com.goterl.lazysodium.LazySodiumAndroid +import com.goterl.lazysodium.SodiumAndroid +import com.goterl.lazysodium.interfaces.AEAD +import com.goterl.lazysodium.interfaces.Box +import com.goterl.lazysodium.interfaces.GenericHash +import com.goterl.lazysodium.interfaces.PwHash +import com.hegocre.nextcloudpasswords.api.encryption.CSEv1Keychain +import com.hegocre.nextcloudpasswords.utils.LazySodiumUtils +import com.hegocre.nextcloudpasswords.utils.decryptValue +import com.hegocre.nextcloudpasswords.utils.encryptValue +import org.junit.Assert +import org.junit.Assert.assertTrue +import org.junit.Test +import java.util.Locale + +class SodiumTest { + + @Test + fun testSodiumSolve() { + val salts = Array(3) { "" } + salts[0] = "" + salts[1] = "" + salts[2] = "" + + val password = "" + + val sodium = LazySodiumAndroid(SodiumAndroid()) + + val passwordSalt = sodium.sodiumHex2Bin(salts[0]) + val genericHashKey = sodium.sodiumHex2Bin(salts[1]) + val passwordHashSalt = sodium.sodiumHex2Bin(salts[2]) + val input = sodium.bytes(password) + passwordSalt + + val genericHash = ByteArray(GenericHash.BYTES_MAX) + !sodium.cryptoGenericHash( + genericHash, + genericHash.size, + input, + input.size.toLong(), + genericHashKey, + genericHashKey.size + ) + + val passwordHash = ByteArray(Box.SEEDBYTES) + !sodium.cryptoPwHash( + passwordHash, + passwordHash.size, + genericHash, + genericHash.size, + passwordHashSalt, + PwHash.OPSLIMIT_INTERACTIVE, + PwHash.MEMLIMIT_INTERACTIVE, + PwHash.Alg.PWHASH_ALG_ARGON2ID13 + ) + + val secret = sodium.sodiumBin2Hex(passwordHash) + assertTrue(secret.lowercase(Locale.getDefault()) == "") + } + + @Test + fun decryption_isCorrect() { + val sodium = LazySodiumUtils.getSodium() + val key = sodium.keygen(AEAD.Method.AES256GCM) + val csEv1Keychain = CSEv1Keychain( + mapOf("test_key" to key.asHexString), + "test_key" + ) + + val testString = "abcdefg_12345678" + val encryptedString = testString.encryptValue("test_key", csEv1Keychain) + val decryptedString = encryptedString.decryptValue("test_key", csEv1Keychain) + + Assert.assertEquals(testString, decryptedString) + } +} \ No newline at end of file diff --git a/app/src/debug/ic_launcher-playstore.png b/app/src/debug/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..35a888ff3f675ac5d23d5a5dc33e6c04200e10a3 GIT binary patch literal 36549 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 t3gH#(vsmvjP>O$$5LqvG3zgn + + + + + + + + + + + diff --git a/app/src/debug/res/drawable/ic_launcher_foreground.xml b/app/src/debug/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..5b44293 --- /dev/null +++ b/app/src/debug/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/debug/res/mipmap-hdpi/ic_launcher.webp b/app/src/debug/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..11d9014826826d4c4ce6d52fbb2ca27a108f883c GIT binary patch literal 3890 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 AO#lD@ literal 0 HcmV?d00001 diff --git a/app/src/debug/res/mipmap-mdpi/ic_launcher.webp b/app/src/debug/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..4ff72e34d52244f597347a365326111a41a51a58 GIT binary patch literal 2646 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 literal 0 HcmV?d00001 diff --git a/app/src/debug/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/debug/res/mipmap-xxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..24e7655beb60e6013002470f0ea053cc4fdc6f28 GIT binary patch literal 8124 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 WqWdbhp-MS5TuQjr@Om9RRtEqfY2a`G literal 0 HcmV?d00001 diff --git a/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/debug/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..57bee07a073e2eedc0d536a4c64b039f6be367ec GIT binary patch literal 10298 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 M9%gvt)O)v^013(0M*si- literal 0 HcmV?d00001 diff --git a/app/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml new file mode 100644 index 0000000..025abaa --- /dev/null +++ b/app/src/debug/res/values/strings.xml @@ -0,0 +1,4 @@ + + + NextCloud Passwords Debug + \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..8a26159 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..7fcaa5747ca4dee5cb2916f09ed401ab0e636d24 GIT binary patch literal 41263 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 Tt6_f<{PXtM@ge(zG^_p(h^4S` literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/ApiController.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/ApiController.kt new file mode 100644 index 0000000..f2f33d6 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/ApiController.kt @@ -0,0 +1,383 @@ +package com.hegocre.nextcloudpasswords.api + +import android.content.Context +import android.util.Log +import androidx.lifecycle.MutableLiveData +import androidx.work.WorkManager +import com.hegocre.nextcloudpasswords.api.encryption.CSEv1Keychain +import com.hegocre.nextcloudpasswords.api.exceptions.PWDv1ChallengeMasterKeyInvalidException +import com.hegocre.nextcloudpasswords.api.exceptions.PWDv1ChallengeMasterKeyNeededException +import com.hegocre.nextcloudpasswords.data.folder.DeletedFolder +import com.hegocre.nextcloudpasswords.data.folder.Folder +import com.hegocre.nextcloudpasswords.data.folder.NewFolder +import com.hegocre.nextcloudpasswords.data.folder.UpdatedFolder +import com.hegocre.nextcloudpasswords.data.password.DeletedPassword +import com.hegocre.nextcloudpasswords.data.password.NewPassword +import com.hegocre.nextcloudpasswords.data.password.Password +import com.hegocre.nextcloudpasswords.data.password.UpdatedPassword +import com.hegocre.nextcloudpasswords.data.user.UserController +import com.hegocre.nextcloudpasswords.services.keepalive.KeepAliveWorker +import com.hegocre.nextcloudpasswords.utils.Error +import com.hegocre.nextcloudpasswords.utils.OkHttpRequest +import com.hegocre.nextcloudpasswords.utils.PreferencesManager +import com.hegocre.nextcloudpasswords.utils.Result +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +/** + * Class with methods used to interact with [the API](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api) + * classes. This is a Singleton class and will have only one instance. + * + * @param context Context of the application. + */ +class ApiController private constructor(context: Context) { + private val server = UserController.getInstance(context).getServer() + + private val preferencesManager = PreferencesManager.getInstance(context) + + private val passwordsApi = PasswordsApi.getInstance(server) + private val foldersApi = FoldersApi.getInstance(server) + private val sessionApi = SessionApi.getInstance(server) + private val serviceApi = ServiceApi.getInstance(server) + private val settingsApi = SettingsApi.getInstance(server) + + private var sessionCode: String? = null + + val csEv1Keychain = MutableLiveData(null) + + val serverSettings = MutableLiveData( + preferencesManager.getServerSettings() + ) + + private val _sessionOpen = MutableStateFlow(false) + val sessionOpen: StateFlow + get() = _sessionOpen.asStateFlow() + + private val workManager = WorkManager.getInstance(context) + + init { + decryptCSEv1Keychain( + preferencesManager.getCSEv1Keychain(), + preferencesManager.getMasterPassword() + )?.let { + csEv1Keychain.postValue(it) + } + + CoroutineScope(Dispatchers.IO).launch { + var result = settingsApi.get() + while (result !is Result.Success) { + Log.e("ServerSettings", "Error getting server settings") + delay(5000L) + result = settingsApi.get() + } + Log.i("ServerSettings", "Got server settings") + val settings = result.data + serverSettings.postValue(settings) + preferencesManager.setServerSettings(settings) + preferencesManager.setInstanceColor(settings.themeColorPrimary) + } + OkHttpRequest.getInstance().allowInsecureRequests = + preferencesManager.getSkipCertificateValidation() + } + + private fun decryptCSEv1Keychain( + encryptedData: String?, + masterPassword: String? + ): CSEv1Keychain? = try { + encryptedData?.let { encryptedCSEv1Keychain -> + masterPassword?.let { masterPassword -> + val decryptedCsEv1KeychainJson = CSEv1Keychain.decryptJson( + encryptedCSEv1Keychain, + masterPassword + ) + CSEv1Keychain.fromJson(decryptedCsEv1KeychainJson) + } + } + } catch (e: Exception) { + null + } + + /** + * Requests and opens a session via the [SessionApi] class. + * + * @param masterPassword Master password to request the session, if provided, and not needed + * if no CSE used. + * @return A boolean indicating if the session was successfully opened. + * @throws PWDv1ChallengeMasterKeyNeededException If there is no master key provided, but one is + * needed. + * @throws PWDv1ChallengeMasterKeyInvalidException If a master key was provided, but is not valid. + */ + @Throws( + PWDv1ChallengeMasterKeyNeededException::class, + PWDv1ChallengeMasterKeyInvalidException::class + ) + suspend fun openSession(masterPassword: String?): Boolean = withContext(Dispatchers.Default) { + decryptCSEv1Keychain( + preferencesManager.getCSEv1Keychain(), + masterPassword + )?.let { + csEv1Keychain.postValue(it) + } + + val requestResult = sessionApi.requestSession() + + val secretResult = if (requestResult is Result.Success) { + requestResult.data.solve(masterPassword) + } else { + // Error opening session + if (requestResult is Result.Error) { + // Could not open session, try to use cached keychain + preferencesManager.getCSEv1Keychain()?.let { cachedKeychain -> + if (masterPassword == null) { + throw PWDv1ChallengeMasterKeyNeededException() + } else { + decryptCSEv1Keychain(cachedKeychain, masterPassword)?.let { + csEv1Keychain.postValue(it) + } ?: throw PWDv1ChallengeMasterKeyInvalidException() // Could not decrypt + } + } + // If we get here, keychain was decrypted from cache, but session is still not open + when (requestResult.code) { + Error.API_TIMEOUT -> Log.e( + "API Controller", + "Timeout requesting session, user ${server.username}" + ) + + Error.API_BAD_RESPONSE -> Log.e( + "API Controller", + "Bad response on session request, user ${server.username}" + ) + } + } + return@withContext false + } + + val secret = if (secretResult is Result.Success) { + secretResult.data + } else { + return@withContext if (secretResult is Result.Error && secretResult.code == Error.API_NO_CSE) { + // No encryption, we need no session + // Clear old keychain, if CSE was disabled + preferencesManager.setCSEv1Keychain(null) + _sessionOpen.emit(true) + true + } else { + // Error opening session + false + } + } + + val openedSessionRequest = sessionApi.openSession(secret) + + val (newSessionCode, encryptedKeychainJson) = if (openedSessionRequest is Result.Success) { + openedSessionRequest.data + } else { + if (openedSessionRequest is Result.Error) { + when (openedSessionRequest.code) { + Error.API_TIMEOUT -> Log.e( + "API Controller", + "Timeout opening session, user ${server.username}" + ) + + Error.API_BAD_RESPONSE -> Log.e( + "API Controller", + "Bad response on session open, user ${server.username}" + ) + } + } + return@withContext false + } + + preferencesManager.setCSEv1Keychain(encryptedKeychainJson) + + encryptedKeychainJson.let { + masterPassword?.let { masterPassword -> + val keysJson = CSEv1Keychain.decryptJson(encryptedKeychainJson, masterPassword) + csEv1Keychain.postValue(CSEv1Keychain.fromJson(keysJson)) + } + } + sessionCode = newSessionCode + serverSettings.value?.let { settings -> + val keepAliveDelay = (settings.sessionLifetime * 3 / 4 * 1000).toLong() + workManager.cancelAllWorkByTag(KeepAliveWorker.TAG) + workManager.enqueue(KeepAliveWorker.getRequest(keepAliveDelay, newSessionCode)) + } + + _sessionOpen.emit(true) + return@withContext true + } + + /** + * Closes the current session and deletes the saved keychain from the app storage. + * + * @return A boolean indicating if the session was successfully closed. + */ + suspend fun closeSession(): Boolean { + return if (sessionCode == null || sessionCode?.let { code -> sessionApi.closeSession(code) } == true) { + _sessionOpen.emit(false) + preferencesManager.setCSEv1Keychain(null) + true + } else { + // Session was not closed, some error happened + false + } + } + + suspend fun clearSession() { + _sessionOpen.emit(false) + sessionCode = null + } + + /** + * Gets a list of the user passwords via the [PasswordsApi] class. This can only be called when a + * session is open, otherwise an error is thrown. + * + * @return A result with the list of passwords if success, or an error code otherwise. + */ + suspend fun listPasswords(): Result> { + if (!sessionOpen.value) return Result.Error(Error.API_NO_SESSION) + return passwordsApi.list(sessionCode) + } + + /** + * Gets a list of the user folders via the [FoldersApi] class. This can only be called when a session + * is open, otherwise an error is thrown. + * + * @return A result with the list of folders if success, or an error code otherwise. + */ + suspend fun listFolders(): Result> { + if (!sessionOpen.value) return Result.Error(Error.API_NO_SESSION) + return foldersApi.list(sessionCode) + } + + /** + * Creates a new password via the [PasswordsApi] class. This can only be called when a + * session is open, otherwise an error is thrown. + * + * @param newPassword [NewPassword] object to be created. + * @return A boolean stating whether the password was successfully created. + */ + suspend fun createPassword(newPassword: NewPassword): Boolean { + if (!sessionOpen.value) return false + val result = passwordsApi.create(newPassword, sessionCode) + return result is Result.Success + } + + /** + * Updates an existing password via the [PasswordsApi] class. This can only be called when a + * session is open, otherwise an error is thrown. + * + * @param updatedPassword [UpdatedPassword] object to be updated. + * @return A boolean stating whether the password was successfully updated. + */ + suspend fun updatePassword(updatedPassword: UpdatedPassword): Boolean { + if (!sessionOpen.value) return false + val result = passwordsApi.update(updatedPassword, sessionCode) + return result is Result.Success + } + + /** + * Deletes an existing password via the [PasswordsApi] class. This can only be called when a + * session is open, otherwise an error is thrown. + * + * @param deletedPassword [DeletedPassword] object to be deleted. + * @return A boolean stating whether the password was successfully deleted. + */ + suspend fun deletePassword(deletedPassword: DeletedPassword): Boolean { + if (!sessionOpen.value) return false + val result = passwordsApi.delete(deletedPassword, sessionCode) + return result is Result.Success + } + + /** + * Generates a random password using user's settings. This can only be called when a + * session is open, otherwise an error is thrown. + * + * @return A string with the generated password, or null if there was an error. + */ + suspend fun generatePassword( + strength: Int, + includeDigits: Boolean, + includeSymbols: Boolean + ): String? { + if (!sessionOpen.value) return null + val result = serviceApi.password(strength, includeDigits, includeSymbols, sessionCode) + return if (result is Result.Success) result.data else null + } + + /** + * Creates a new folder via the [FoldersApi] class. This can only be called when a + * session is open, otherwise an error is thrown. + * + * @param newFolder [NewFolder] object to be created. + * @return A boolean stating whether the folder was successfully created. + */ + suspend fun createFolder(newFolder: NewFolder): Boolean { + if (!sessionOpen.value) return false + val result = foldersApi.create(newFolder, sessionCode) + return result is Result.Success + } + + /** + * Updates an existing folder via the [FoldersApi] class. This can only be called when a + * session is open, otherwise an error is thrown. + * + * @param updatedFolder [UpdatedFolder] object to be updated. + * @return A boolean stating whether the folder was successfully updated. + */ + suspend fun updateFolder(updatedFolder: UpdatedFolder): Boolean { + if (!sessionOpen.value) return false + val result = foldersApi.update(updatedFolder, sessionCode) + return result is Result.Success + } + + /** + * Deletes an existing folder via the [FoldersApi] class. This can only be called when a + * session is open, otherwise an error is thrown. + * + * @param deletedFolder [DeletedFolder] object to be deleted. + * @return A boolean stating whether the folder was successfully deleted. + */ + suspend fun deleteFolder(deletedFolder: DeletedFolder): Boolean { + if (!sessionOpen.value) return false + val result = foldersApi.delete(deletedFolder, sessionCode) + return result is Result.Success + } + + fun getFaviconServiceRequest(url: String): Pair = + Pair(serviceApi.getFaviconUrl(url), server) + + fun getAvatarServiceRequest(): Pair = + Pair(serviceApi.getAvatarUrl(), server) + + companion object { + private var instance: ApiController? = null + + /** + * Get the instance of the [ApiController], and create it if null. + * + * @param context Context of the application. + * @return The instance of the controller. + */ + fun getInstance(context: Context): ApiController { + synchronized(this) { + var tempInstance = instance + + if (tempInstance == null) { + tempInstance = ApiController(context) + instance = tempInstance + } + + return tempInstance + } + } + } + +} + diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/FoldersApi.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/FoldersApi.kt new file mode 100644 index 0000000..64ead07 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/FoldersApi.kt @@ -0,0 +1,260 @@ +package com.hegocre.nextcloudpasswords.api + +import com.hegocre.nextcloudpasswords.BuildConfig +import com.hegocre.nextcloudpasswords.data.folder.DeletedFolder +import com.hegocre.nextcloudpasswords.data.folder.Folder +import com.hegocre.nextcloudpasswords.data.folder.NewFolder +import com.hegocre.nextcloudpasswords.data.folder.UpdatedFolder +import com.hegocre.nextcloudpasswords.utils.Error +import com.hegocre.nextcloudpasswords.utils.OkHttpRequest +import com.hegocre.nextcloudpasswords.utils.Result +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import java.net.SocketTimeoutException +import javax.net.ssl.SSLHandshakeException + +/** + * Class with methods used to interact with the + * [Folder API](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Folder-Api). + * This is a Singleton class and will have only one instance. + * + * @property server The [Server] where the requests will be made. + */ +class FoldersApi private constructor(private var server: Server) { + + /** + * Sends a request to the api to list all the user passwords. If the user uses CSE, a + * session code needs to be provided in order for the request to succeed. + * + * @param sessionCode Code of the current session, only needed if CSE enabled. + * @return A result with a list of folders if success, or with an error code otherwise + */ + suspend fun list( + sessionCode: String? = null + ): Result> { + return try { + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().get( + sUrl = server.url + LIST_URL, + sessionCode = sessionCode, + username = server.username, + password = server.password + ) + } + + + val code = apiResponse.code + val body = withContext(Dispatchers.IO) { apiResponse.body?.string() } + withContext(Dispatchers.IO) { + apiResponse.close() + } + + if (code != 200 || body == null) return Result.Error(Error.API_BAD_RESPONSE) + + withContext(Dispatchers.Default) { + Result.Success(Json.decodeFromString(body)) + } + } catch (e: SocketTimeoutException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.API_TIMEOUT) + } catch (e: SSLHandshakeException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.SSL_HANDSHAKE_EXCEPTION) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.UNKNOWN) + } + } + + /** + * Sends a request to the api to create a new folder. If the user uses CSE, the + * folder needs to be encrypted. + * + * @param newFolder The [NewFolder] object of the created folder. + * @param sessionCode Code of the current session, only needed if CSE enabled. + * @return A result if success, or an error code otherwise + */ + suspend fun create( + newFolder: NewFolder, + sessionCode: String? = null + ): Result { + return try { + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().post( + sUrl = server.url + CREATE_URL, + sessionCode = sessionCode, + body = Json.encodeToString(newFolder), + mediaType = OkHttpRequest.JSON, + username = server.username, + password = server.password + ) + } + + val code = apiResponse.code + withContext(Dispatchers.IO) { + apiResponse.close() + } + + if (code != 201) { + return Result.Error(Error.API_BAD_RESPONSE) + } + + Result.Success(Unit) + } catch (e: SocketTimeoutException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.API_TIMEOUT) + } catch (e: SSLHandshakeException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.SSL_HANDSHAKE_EXCEPTION) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.UNKNOWN) + } + } + + /** + * Sends a request to the api to update a folder. If the user uses CSE, the + * folder needs to be encrypted. + * + * @param updatedFolder The [UpdatedFolder] object of the edited folder. + * @param sessionCode Code of the current session, only needed if CSE enabled. + * @return A result if success, or an error code otherwise + */ + suspend fun update( + updatedFolder: UpdatedFolder, + sessionCode: String? = null + ): Result { + return try { + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().patch( + sUrl = server.url + UPDATE_URL, + sessionCode = sessionCode, + body = Json.encodeToString(updatedFolder), + mediaType = OkHttpRequest.JSON, + username = server.username, + password = server.password + ) + } + + val code = apiResponse.code + withContext(Dispatchers.IO) { + apiResponse.close() + } + + if (code != 200) { + return Result.Error(Error.API_BAD_RESPONSE) + } + + Result.Success(Unit) + } catch (e: SocketTimeoutException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.API_TIMEOUT) + } catch (e: SSLHandshakeException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.SSL_HANDSHAKE_EXCEPTION) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.UNKNOWN) + } + } + + /** + * Sends a request to the api to delete a folder. + * + * @param deletedFolder The [DeletedFolder] object of the folder to be deleted. + * @param sessionCode Code of the current session, only needed if CSE enabled. + * @return A result if success, or an error code otherwise + */ + suspend fun delete( + deletedFolder: DeletedFolder, + sessionCode: String? = null + ): Result { + return try { + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().delete( + sUrl = server.url + DELETE_URL, + sessionCode = sessionCode, + body = Json.encodeToString(deletedFolder), + mediaType = OkHttpRequest.JSON, + username = server.username, + password = server.password + ) + } + + val code = apiResponse.code + withContext(Dispatchers.IO) { + apiResponse.close() + } + + if (code != 200) { + return Result.Error(Error.API_BAD_RESPONSE) + } + + Result.Success(Unit) + } catch (e: SocketTimeoutException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.API_TIMEOUT) + } catch (e: SSLHandshakeException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.SSL_HANDSHAKE_EXCEPTION) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.UNKNOWN) + } + } + + companion object { + private const val LIST_URL = "/index.php/apps/passwords/api/1.0/folder/list" + private const val CREATE_URL = "/index.php/apps/passwords/api/1.0/folder/create" + private const val UPDATE_URL = "/index.php/apps/passwords/api/1.0/folder/update" + private const val DELETE_URL = "/index.php/apps/passwords/api/1.0/folder/delete" + const val DEFAULT_FOLDER_UUID = "00000000-0000-0000-0000-000000000000" + + private var instance: FoldersApi? = null + + /** + * Get the instance of the [FoldersApi], and create it if null. + * + * @param server The [Server] where the requests will be made. + * @return The instance of the api. + */ + fun getInstance(server: Server): FoldersApi { + synchronized(this) { + var tempInstance = instance + + if (tempInstance == null) { + tempInstance = FoldersApi(server) + instance = tempInstance + } + + return tempInstance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/PasswordsApi.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/PasswordsApi.kt new file mode 100644 index 0000000..96ce013 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/PasswordsApi.kt @@ -0,0 +1,260 @@ +package com.hegocre.nextcloudpasswords.api + +import com.hegocre.nextcloudpasswords.BuildConfig +import com.hegocre.nextcloudpasswords.data.password.DeletedPassword +import com.hegocre.nextcloudpasswords.data.password.NewPassword +import com.hegocre.nextcloudpasswords.data.password.Password +import com.hegocre.nextcloudpasswords.data.password.UpdatedPassword +import com.hegocre.nextcloudpasswords.utils.Error +import com.hegocre.nextcloudpasswords.utils.OkHttpRequest +import com.hegocre.nextcloudpasswords.utils.Result +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import java.net.SocketTimeoutException +import javax.net.ssl.SSLHandshakeException + +/** + * Class with methods used to interact with the + * [Password API](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Password-Api). + * This is a Singleton class and will have only one instance. + * + * @param server The [Server] where the requests will be made. + */ +class PasswordsApi private constructor(private var server: Server) { + + /** + * Sends a request to the api to list all the user passwords. If the user uses CSE, a + * session code needs to be provided in order for the request to succeed. + * + * @param sessionCode Code of the current session, only needed if CSE enabled. + * @return A result with a list of passwords if success, or with an error code otherwise + */ + suspend fun list( + sessionCode: String? = null, + ): Result> { + return try { + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().get( + sUrl = server.url + LIST_URL, + sessionCode = sessionCode, + username = server.username, + password = server.password + ) + } + + val code = apiResponse.code + val body = withContext(Dispatchers.IO) { apiResponse.body?.string() } + withContext(Dispatchers.IO) { + apiResponse.close() + } + + if (code != 200 || body == null) { + return Result.Error(Error.API_BAD_RESPONSE) + } + + withContext(Dispatchers.Default) { + Result.Success(Json.decodeFromString(body)) + } + } catch (e: SocketTimeoutException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.API_TIMEOUT) + } catch (e: SSLHandshakeException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.SSL_HANDSHAKE_EXCEPTION) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.UNKNOWN) + } + } + + /** + * Sends a request to the api to create a new password. If the user uses CSE, the + * password needs to be encrypted. + * + * @param newPassword The [NewPassword] object of the created password. + * @param sessionCode Code of the current session, only needed if CSE enabled. + * @return A result if success, or an error code otherwise + */ + suspend fun create( + newPassword: NewPassword, + sessionCode: String? = null + ): Result { + return try { + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().post( + sUrl = server.url + CREATE_URL, + sessionCode = sessionCode, + body = Json.encodeToString(newPassword), + mediaType = OkHttpRequest.JSON, + username = server.username, + password = server.password + ) + } + + val code = apiResponse.code + withContext(Dispatchers.IO) { + apiResponse.close() + } + + if (code != 201) { + return Result.Error(Error.API_BAD_RESPONSE) + } + + Result.Success(Unit) + } catch (e: SocketTimeoutException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.API_TIMEOUT) + } catch (e: SSLHandshakeException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.SSL_HANDSHAKE_EXCEPTION) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.UNKNOWN) + } + } + + /** + * Sends a request to the api to update a password. If the user uses CSE, the + * password needs to be encrypted. + * + * @param updatedPassword The [UpdatedPassword] object of the edited password. + * @param sessionCode Code of the current session, only needed if CSE enabled. + * @return A result if success, or an error code otherwise + */ + suspend fun update( + updatedPassword: UpdatedPassword, + sessionCode: String? = null + ): Result { + return try { + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().patch( + sUrl = server.url + UPDATE_URL, + sessionCode = sessionCode, + body = Json.encodeToString(updatedPassword), + mediaType = OkHttpRequest.JSON, + username = server.username, + password = server.password + ) + } + + val code = apiResponse.code + withContext(Dispatchers.IO) { + apiResponse.close() + } + + if (code != 200) { + return Result.Error(Error.API_BAD_RESPONSE) + } + + Result.Success(Unit) + } catch (e: SocketTimeoutException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.API_TIMEOUT) + } catch (e: SSLHandshakeException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.SSL_HANDSHAKE_EXCEPTION) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.UNKNOWN) + } + } + + /** + * Sends a request to the api to delete a password. + * + * @param deletedPassword The [DeletedPassword] object of the password to be deleted. + * @param sessionCode Code of the current session, only needed if CSE enabled. + * @return A result if success, or an error code otherwise + */ + suspend fun delete( + deletedPassword: DeletedPassword, + sessionCode: String? = null + ): Result { + return try { + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().delete( + sUrl = server.url + DELETE_URL, + sessionCode = sessionCode, + body = Json.encodeToString(deletedPassword), + mediaType = OkHttpRequest.JSON, + username = server.username, + password = server.password + ) + } + + val code = apiResponse.code + withContext(Dispatchers.IO) { + apiResponse.close() + } + + if (code != 200) { + return Result.Error(Error.API_BAD_RESPONSE) + } + + Result.Success(Unit) + } catch (e: SocketTimeoutException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.API_TIMEOUT) + } catch (e: SSLHandshakeException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.SSL_HANDSHAKE_EXCEPTION) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.UNKNOWN) + } + } + + companion object { + private const val LIST_URL = "/index.php/apps/passwords/api/1.0/password/list" + private const val CREATE_URL = "/index.php/apps/passwords/api/1.0/password/create" + private const val UPDATE_URL = "/index.php/apps/passwords/api/1.0/password/update" + private const val DELETE_URL = "/index.php/apps/passwords/api/1.0/password/delete" + + private var instance: PasswordsApi? = null + + /** + * Get the instance of the [PasswordsApi], and create it if null. + * + * @param server The [Server] where the requests will be made. + * @return The instance of the api. + */ + fun getInstance(server: Server): PasswordsApi { + synchronized(this) { + var tempInstance = instance + + if (tempInstance == null) { + tempInstance = PasswordsApi(server) + instance = tempInstance + } + + return tempInstance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/Server.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/Server.kt new file mode 100644 index 0000000..143ae42 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/Server.kt @@ -0,0 +1,16 @@ +package com.hegocre.nextcloudpasswords.api + +/** + * A data class representing an authenticated server where requests can be made. The credentials + * can be obtained using the + * [Nextcloud login flow](https://docs.nextcloud.com/server/latest/developer_manual/client_apis/LoginFlow/index.html). + * + * @property url The url of the server, without a trailing `/`. + * @property username The username used to authenticate on the server. + * @property password The password used to authenticate on the server. This is usually an app password. + */ +data class Server( + val url: String, + val username: String, + val password: String +) diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/ServiceApi.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/ServiceApi.kt new file mode 100644 index 0000000..ec89754 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/ServiceApi.kt @@ -0,0 +1,129 @@ +package com.hegocre.nextcloudpasswords.api + +import android.util.Log +import com.hegocre.nextcloudpasswords.BuildConfig +import com.hegocre.nextcloudpasswords.data.password.GeneratedPassword +import com.hegocre.nextcloudpasswords.data.password.RequestedPassword +import com.hegocre.nextcloudpasswords.utils.Error +import com.hegocre.nextcloudpasswords.utils.OkHttpRequest +import com.hegocre.nextcloudpasswords.utils.Result +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import java.net.SocketTimeoutException +import java.net.URLEncoder +import java.util.Locale +import javax.net.ssl.SSLHandshakeException + +/** + * Class with methods used to interact with the + * [Service API](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Service-Api). + * This is a Singleton class and will have only one instance. + * + * @param server The [Server] where the requests will be made. + */ +class ServiceApi private constructor(private val server: Server) { + + /** + * Sends a request to the api to obtain a generated password using user settings. + * + * @return A result with the password as aString if success, and an error code otherwise. + */ + suspend fun password( + strength: Int, + includeDigits: Boolean, + includeSymbols: Boolean, + sessionCode: String? + ): Result { + return try { + val requestBody = Json.encodeToString( + RequestedPassword(strength, includeDigits, includeSymbols) + ) + + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().post( + sUrl = server.url + PASSWORD_URL, + sessionCode = sessionCode, + username = server.username, + password = server.password, + body = requestBody, + mediaType = OkHttpRequest.JSON + ) + } + + val code = apiResponse.code + val body = withContext(Dispatchers.IO) { apiResponse.body?.string() } + withContext(Dispatchers.IO) { + apiResponse.close() + } + + if (code != 200 || body == null) { + Log.d("SERVICE API", "Code response $code") + return Result.Error(Error.API_BAD_RESPONSE) + } + + withContext(Dispatchers.Default) { + Result.Success(Json.decodeFromString(body).password) + } + } catch (e: SocketTimeoutException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.API_TIMEOUT) + } catch (e: SSLHandshakeException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.SSL_HANDSHAKE_EXCEPTION) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.UNKNOWN) + } + } + + fun getFaviconUrl(url: String): String = + server.url + String.format( + Locale.getDefault(), + FAVICON_URL, + URLEncoder.encode(url, "utf-8"), + 256 + ) + + fun getAvatarUrl(): String = + server.url + String.format( + Locale.getDefault(), + AVATAR_URL, + URLEncoder.encode(server.username, "utf-8"), + 256 + ) + + companion object { + private const val FAVICON_URL = "/index.php/apps/passwords/api/1.0/service/favicon/%s/%d" + private const val PASSWORD_URL = "/index.php/apps/passwords/api/1.0/service/password" + private const val AVATAR_URL = "/index.php/apps/passwords/api/1.0/service/avatar/%s/%d" + + private var instance: ServiceApi? = null + + /** + * Get the instance of the [ServiceApi], and create it if null. + * + * @param server The [Server] where the requests will be made. + * @return The instance of the api. + */ + fun getInstance(server: Server): ServiceApi { + synchronized(this) { + var tempInstance = instance + + if (tempInstance == null) { + tempInstance = ServiceApi(server) + instance = tempInstance + } + + return tempInstance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/SessionApi.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/SessionApi.kt new file mode 100644 index 0000000..85d319b --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/SessionApi.kt @@ -0,0 +1,231 @@ +package com.hegocre.nextcloudpasswords.api + +import com.hegocre.nextcloudpasswords.BuildConfig +import com.hegocre.nextcloudpasswords.api.encryption.PWDv1Challenge +import com.hegocre.nextcloudpasswords.api.exceptions.ClientDeauthorizedException +import com.hegocre.nextcloudpasswords.api.exceptions.PWDv1ChallengeMasterKeyInvalidException +import com.hegocre.nextcloudpasswords.utils.Error +import com.hegocre.nextcloudpasswords.utils.OkHttpRequest +import com.hegocre.nextcloudpasswords.utils.Result +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import org.json.JSONObject +import java.net.SocketTimeoutException +import javax.net.ssl.SSLHandshakeException + +/** + * Class with methods used to interact with the + * [Session API](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Session-Api). + * This is a Singleton class and will have only one instance. + * + * @param server The [Server] where the requests will be made. + */ +class SessionApi private constructor(private var server: Server) { + + /** + * Sends a request to the api to open a session. If the user uses client-side encryption, + * it returns a challenge with 3 salts. If no CSE used, the challenge is empty. + * + * @return Result with the [PWDv1Challenge] if success, or with an error code otherwise. + */ + suspend fun requestSession(): Result { + return try { + val apiResponse = try { + withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().get( + sUrl = server.url + REQUEST_URL, + username = server.username, + password = server.password + ) + } + } catch (e: SSLHandshakeException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + return Result.Error(Error.SSL_HANDSHAKE_EXCEPTION) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + return Result.Error(0) + } + + val code = apiResponse.code + val body = withContext(Dispatchers.IO) { apiResponse.body?.string() } + + withContext(Dispatchers.IO) { + apiResponse.close() + } + + if (code == 403 || code == 401) + throw ClientDeauthorizedException() + + if (code == 200) { + Result.Success(PWDv1Challenge.fromJson(body ?: "{}")) + } else Result.Error(Error.API_BAD_RESPONSE) + + } catch (e: SocketTimeoutException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.API_TIMEOUT) + } + } + + /** + * Sends a request to the Session API to open a session. This only needs to be called if the user + * uses CSE encryption. + * + * @param solvedChallenge The solved PWDv1Challenge via [libsodium](https://doc.libsodium.org/) + * using the master password. + * @return Result with a pair with the session code and the encrypted keychain JSON if success, + * or an error code otherwise. + * @throws PWDv1ChallengeMasterKeyInvalidException If a master key was provided, but is not valid. + * @throws ClientDeauthorizedException If too many incorrect attempts were made and + * the client has been deauthorized. + */ + suspend fun openSession(solvedChallenge: String): Result> { + val jsonChallenge = JSONObject() + .put("challenge", solvedChallenge) + .toString() + + return try { + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().post( + sUrl = server.url + OPEN_URL, + body = jsonChallenge, + mediaType = OkHttpRequest.JSON, + username = server.username, + password = server.password + ) + } + + val body = withContext(Dispatchers.IO) { apiResponse.body?.string() } + val code = apiResponse.code + + val xSessionCode = apiResponse.header("x-api-session", null) + + withContext(Dispatchers.IO) { + apiResponse.close() + } + + if (code == 401) + throw PWDv1ChallengeMasterKeyInvalidException() + + if (code == 403) + throw ClientDeauthorizedException() + + if (xSessionCode == null || body == null || code != 200) + return Result.Error(Error.API_BAD_RESPONSE) + + Result.Success(Pair(xSessionCode, body)) + } catch (e: SocketTimeoutException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.API_TIMEOUT) + } catch (e: SSLHandshakeException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.SSL_HANDSHAKE_EXCEPTION) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.UNKNOWN) + } + } + + /** + * Sends a request to the api to keep the session alive. For this to be called, a session + * needs to be open. + * + * @param sessionCode The session code of the current session. + * @return A boolean indicating if the request was successful. + */ + suspend fun keepAlive(sessionCode: String): Boolean { + return try { + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().get( + sUrl = server.url + KEEPALIVE_URL, + sessionCode = sessionCode, + username = server.username, + password = server.password + ) + } + + val code = apiResponse.code + withContext(Dispatchers.IO) { + apiResponse.close() + } + + code == 200 + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + false + } + } + + /** + * Sends a request to the api to close the current session. For this to be called, a session + * needs to be open. + * + * @param sessionCode The session code of the current session. + * @return A boolean indicating if the request was successful. + */ + suspend fun closeSession(sessionCode: String): Boolean { + return try { + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().get( + sUrl = server.url + CLOSE_URL, + sessionCode = sessionCode, + username = server.username, + password = server.password + ) + } + + val code = apiResponse.code + withContext(Dispatchers.IO) { + apiResponse.close() + } + + code == 200 + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + false + } + } + + companion object { + private const val REQUEST_URL = "/index.php/apps/passwords/api/1.0/session/request" + private const val OPEN_URL = "/index.php/apps/passwords/api/1.0/session/open" + private const val CLOSE_URL = "/index.php/apps/passwords/api/1.0/session/close" + private const val KEEPALIVE_URL = "/index.php/apps/passwords/api/1.0/session/keepalive" + + private var instance: SessionApi? = null + + /** + * Get the instance of the [SessionApi], and create it if null. + * + * @param server The [Server] where the requests will be made. + * @return The instance of the api. + */ + fun getInstance(server: Server): SessionApi { + synchronized(this) { + var tempInstance = instance + + if (tempInstance == null) { + tempInstance = SessionApi(server) + instance = tempInstance + } + + return tempInstance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/SettingsApi.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/SettingsApi.kt new file mode 100644 index 0000000..dc0e515 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/SettingsApi.kt @@ -0,0 +1,89 @@ +package com.hegocre.nextcloudpasswords.api + +import com.hegocre.nextcloudpasswords.BuildConfig +import com.hegocre.nextcloudpasswords.data.serversettings.ServerSettings +import com.hegocre.nextcloudpasswords.utils.Error +import com.hegocre.nextcloudpasswords.utils.OkHttpRequest +import com.hegocre.nextcloudpasswords.utils.Result +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import kotlinx.serialization.json.Json +import java.net.SocketTimeoutException +import javax.net.ssl.SSLHandshakeException + +class SettingsApi private constructor(private val server: Server) { + + /** + * Sends a request to the api to obtain required user settings. No session is required to send this request. + * + * @return A result with the [ServerSettings] object if success, and an error code otherwise. + */ + suspend fun get(): Result { + return try { + val apiResponse = withContext(Dispatchers.IO) { + OkHttpRequest.getInstance().post( + sUrl = server.url + GET_URL, + body = ServerSettings.getRequestBody(), + mediaType = OkHttpRequest.JSON, + username = server.username, + password = server.password, + ) + } + + val code = apiResponse.code + val body = withContext(Dispatchers.IO) { apiResponse.body?.string() } + + withContext(Dispatchers.IO) { + apiResponse.close() + } + + if (code == 200 && body != null) { + Result.Success(Json.decodeFromString(body)) + } else { + Result.Error(Error.API_BAD_RESPONSE) + } + + } catch (e: SocketTimeoutException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.API_TIMEOUT) + } catch (e: SSLHandshakeException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.SSL_HANDSHAKE_EXCEPTION) + } catch (e: Exception) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + Result.Error(Error.UNKNOWN) + } + + } + + companion object { + private const val GET_URL = "/index.php/apps/passwords/api/1.0/settings/get" + + private var instance: SettingsApi? = null + + /** + * Get the instance of the [ServiceApi], and create it if null. + * + * @param server The [Server] where the requests will be made. + * @return The instance of the api. + */ + fun getInstance(server: Server): SettingsApi { + synchronized(this) { + var tempInstance = instance + + if (tempInstance == null) { + tempInstance = SettingsApi(server) + instance = tempInstance + } + + return tempInstance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/encryption/CSEv1Keychain.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/encryption/CSEv1Keychain.kt new file mode 100644 index 0000000..636ae42 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/encryption/CSEv1Keychain.kt @@ -0,0 +1,121 @@ +package com.hegocre.nextcloudpasswords.api.encryption + +import com.goterl.lazysodium.interfaces.Box +import com.goterl.lazysodium.interfaces.PwHash +import com.goterl.lazysodium.interfaces.SecretBox +import com.hegocre.nextcloudpasswords.BuildConfig +import com.hegocre.nextcloudpasswords.api.exceptions.SodiumDecryptionException +import com.hegocre.nextcloudpasswords.utils.LazySodiumUtils +import okio.internal.commonToUtf8String +import org.json.JSONException +import org.json.JSONObject + +/** + * Object containing all the keys in the user keychain, used to decrypt data. See the + * [API reference](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Encryption/CSEv1Keychain). + * + * @property keys Encoded keys, each one identified by an id. + * @property current Id of the current key used to encrypt new data. + */ +data class CSEv1Keychain( + val keys: Map, + val current: String +) { + + companion object { + /** + * Return a JSON string from an encrypted API response. The string must be decrypted + * using the same password as the one used to open the session. + * + * @param data The encrypted data from the response. + * @param password Master password used to decrypt the response. + * @return A JSON object with the actual keychain. + */ + fun decryptJson(data: String, password: String): String { + val obj = JSONObject(data) + + val encryptedJson = try { + val keysObj = obj.getJSONObject("keys") + keysObj.getString("CSEv1r1") + } catch (e: JSONException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + return "" + } + + val sodium = LazySodiumUtils.getSodium() + + val p = sodium.bytes(password) + val key = sodium.sodiumHex2Bin(encryptedJson) + val keySalt = key.sliceArray(0 until PwHash.SALTBYTES) + val keyPayload = key.sliceArray(PwHash.SALTBYTES until key.size) + + val decryptionKey = ByteArray(Box.SEEDBYTES) + if (!sodium.cryptoPwHash( + decryptionKey, + decryptionKey.size, + p, + p.size, + keySalt, + PwHash.OPSLIMIT_INTERACTIVE, + PwHash.MEMLIMIT_INTERACTIVE, + PwHash.Alg.PWHASH_ALG_ARGON2ID13 + ) + ) throw SodiumDecryptionException("Could not create decryption key") + + val nonce = keyPayload.sliceArray(0 until Box.NONCEBYTES) + val cipher = keyPayload.sliceArray(Box.NONCEBYTES until keyPayload.size) + + val message = ByteArray(cipher.size - SecretBox.MACBYTES) + if (!sodium.cryptoSecretBoxOpenEasy( + message, + cipher, + cipher.size.toLong(), + nonce, + decryptionKey + ) + ) throw SodiumDecryptionException("Could not open box") + + return message.commonToUtf8String() + } + + /** + * Creates a [CSEv1Keychain] from a JSON object. + * + * @param data The keychain as a JSON object. + * @return The keychain created from the JSON. + */ + fun fromJson(data: String): CSEv1Keychain { + val obj = JSONObject(data) + + val keyObject = try { + obj.getJSONObject("keys") + } catch (e: JSONException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + JSONObject() + } + + val keys = HashMap() + val jsonKeys = keyObject.keys() + while (jsonKeys.hasNext()) { + val uuid = jsonKeys.next() + val value = keyObject.getString(uuid) + keys[uuid] = value + } + + val current = try { + obj.getString("current") + } catch (e: JSONException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + "" + } + + return CSEv1Keychain(keys, current) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/encryption/PWDv1Challenge.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/encryption/PWDv1Challenge.kt new file mode 100644 index 0000000..40923df --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/encryption/PWDv1Challenge.kt @@ -0,0 +1,123 @@ +package com.hegocre.nextcloudpasswords.api.encryption + +import com.goterl.lazysodium.interfaces.Box +import com.goterl.lazysodium.interfaces.GenericHash +import com.goterl.lazysodium.interfaces.PwHash +import com.hegocre.nextcloudpasswords.BuildConfig +import com.hegocre.nextcloudpasswords.api.exceptions.PWDv1ChallengeMasterKeyNeededException +import com.hegocre.nextcloudpasswords.api.exceptions.PWDv1ChallengePasswordException +import com.hegocre.nextcloudpasswords.api.exceptions.SodiumDecryptionException +import com.hegocre.nextcloudpasswords.utils.Error +import com.hegocre.nextcloudpasswords.utils.LazySodiumUtils +import com.hegocre.nextcloudpasswords.utils.Result +import org.json.JSONArray +import org.json.JSONException +import org.json.JSONObject + +/** + * A PWDv1Challenge object. See the + * [API reference](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Encryption/PWDv1Challenge). + * + * @property salts An array with the salts to compute the secret. + * @property secret An encoded string with the secret, only present when creating a challenge. + */ +data class PWDv1Challenge( + val salts: Array, + val secret: String? = null +) { + /** + * Solve the PWDv1 challenge according to the API reference. + * + * @param password The password used to solve the challenge. + * @return A result with the solved challenge if success, and an error code otherwise. + */ + fun solve(password: String?): Result { + // Challenge is empty + if (salts.size != 3) return Result.Error(Error.API_NO_CSE) + + // Master key needed but not provided + if (password == null) throw PWDv1ChallengeMasterKeyNeededException() + + // TODO: Warn the user + if (password.length < 12) throw PWDv1ChallengePasswordException("Password should have no less than 12 characters") + if (password.length > 128) throw PWDv1ChallengePasswordException("Password should have no more than 128 characters") + + val sodium = LazySodiumUtils.getSodium() + + val passwordSalt = sodium.sodiumHex2Bin(salts[0]) + val genericHashKey = sodium.sodiumHex2Bin(salts[1]) + val passwordHashSalt = sodium.sodiumHex2Bin(salts[2]) + val input = sodium.bytes(password) + passwordSalt + + val genericHash = ByteArray(GenericHash.BYTES_MAX) + if (!sodium.cryptoGenericHash( + genericHash, + genericHash.size, + input, + input.size.toLong(), + genericHashKey, + genericHashKey.size + ) + ) throw SodiumDecryptionException("Could not create generic hash") + + val passwordHash = ByteArray(Box.SEEDBYTES) + if (!sodium.cryptoPwHash( + passwordHash, + passwordHash.size, + genericHash, + genericHash.size, + passwordHashSalt, + PwHash.OPSLIMIT_INTERACTIVE, + PwHash.MEMLIMIT_INTERACTIVE, + PwHash.Alg.PWHASH_ALG_ARGON2ID13 + ) + ) throw SodiumDecryptionException("Could not create password hash") + + return Result.Success(sodium.sodiumBin2Hex(passwordHash).lowercase()) + } + + /* Generated by Android Studio */ + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as PWDv1Challenge + + return salts.contentEquals(other.salts) + } + + /* Generated by Android Studio */ + override fun hashCode(): Int { + return salts.contentHashCode() + } + + companion object { + /** + * Creates a [PWDv1Challenge] from a JSON object. + * + * @param data The data as a JSON object. + * @return The challenge created from the JSON. + */ + fun fromJson(data: String): PWDv1Challenge { + val obj = JSONObject(data) + + val saltsArray = try { + val challengeObj = obj.getJSONObject("challenge") + challengeObj.getJSONArray("salts") + } catch (e: JSONException) { + if (BuildConfig.DEBUG) { + e.printStackTrace() + } + JSONArray() + } + + val salts = Array(saltsArray.length()) { "" } + + for (i in 0 until saltsArray.length()) { + salts[i] = saltsArray.getString(i) + } + + return PWDv1Challenge(salts) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/ClientDeauthorizedException.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/ClientDeauthorizedException.kt new file mode 100644 index 0000000..7b908eb --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/ClientDeauthorizedException.kt @@ -0,0 +1,3 @@ +package com.hegocre.nextcloudpasswords.api.exceptions + +class ClientDeauthorizedException : Exception() \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/PWDv1ChallengeMasterKeyInvalidException.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/PWDv1ChallengeMasterKeyInvalidException.kt new file mode 100644 index 0000000..3fee1c5 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/PWDv1ChallengeMasterKeyInvalidException.kt @@ -0,0 +1,3 @@ +package com.hegocre.nextcloudpasswords.api.exceptions + +class PWDv1ChallengeMasterKeyInvalidException : Exception() \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/PWDv1ChallengeMasterKeyNeededException.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/PWDv1ChallengeMasterKeyNeededException.kt new file mode 100644 index 0000000..1303e48 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/PWDv1ChallengeMasterKeyNeededException.kt @@ -0,0 +1,3 @@ +package com.hegocre.nextcloudpasswords.api.exceptions + +class PWDv1ChallengeMasterKeyNeededException : Exception() \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/PWDv1ChallengePasswordException.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/PWDv1ChallengePasswordException.kt new file mode 100644 index 0000000..96aea2f --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/PWDv1ChallengePasswordException.kt @@ -0,0 +1,3 @@ +package com.hegocre.nextcloudpasswords.api.exceptions + +class PWDv1ChallengePasswordException(message: String) : Exception(message) \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/SodiumDecryptionException.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/SodiumDecryptionException.kt new file mode 100644 index 0000000..711ea8e --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/api/exceptions/SodiumDecryptionException.kt @@ -0,0 +1,3 @@ +package com.hegocre.nextcloudpasswords.api.exceptions + +class SodiumDecryptionException(message: String) : Exception(message) \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/DeletedFolder.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/DeletedFolder.kt new file mode 100644 index 0000000..4ec68ad --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/DeletedFolder.kt @@ -0,0 +1,15 @@ +package com.hegocre.nextcloudpasswords.data.folder + +import kotlinx.serialization.Serializable + +/** + * Data class representing a Deleted Folder and containing all its required information. + * + * @property id The UUID of the folder. + * @property revision UUID of the current revision. + */ +@Serializable +data class DeletedFolder( + val id: String, + val revision: String +) diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/Folder.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/Folder.kt new file mode 100644 index 0000000..e7c6874 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/Folder.kt @@ -0,0 +1,73 @@ +package com.hegocre.nextcloudpasswords.data.folder + +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey +import com.hegocre.nextcloudpasswords.api.FoldersApi +import com.hegocre.nextcloudpasswords.api.encryption.CSEv1Keychain +import com.hegocre.nextcloudpasswords.utils.decryptValue +import kotlinx.serialization.Serializable + +/** + * Data class representing a + * [Folder Object](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Folder-Api#the-folder-object) + * and containing all its information. + * + * @property id The UUID of the folder. + * @property label User defined label of the folder. + * @property parent UUID of the parent folder. + * @property revision UUID of the current revision. + * @property cseType Type of the used server side encryption. + * @property cseKey UUID of the key used for client side encryption. + * @property sseType Type of the used server side encryption. + * @property client Name of the client which created this revision. + * @property hidden Hides the folder in list / find actions. + * @property trashed True if the folder is in the trash. + * @property favorite True if the user has marked the folder as favorite. + * @property created Unix timestamp when the folder was created. + * @property updated Unix timestamp when the folder was updated. + * @property edited Unix timestamp when the user last changed the folder name. + */ +@Serializable +@Entity(tableName = "folders", indices = [Index(value = ["id"], unique = true)]) +data class Folder( + @PrimaryKey + val id: String, + val label: String, + val parent: String = FoldersApi.DEFAULT_FOLDER_UUID, + val revision: String, + val cseType: String, + val cseKey: String, + val sseType: String, + val client: String, + val hidden: Boolean, + val trashed: Boolean, + val favorite: Boolean, + val created: Int, + val updated: Int, + val edited: Int +) { + /** + * Returns a copy of this object with the encrypted fields decrypted using the keychain. + * + * @param csEv1Keychain The keychain used to decrypt the values. + * @return The object with the decrypted values. + */ + fun decrypt(csEv1Keychain: CSEv1Keychain? = null): Folder? { + //Not encrypted + if (cseType == "none") return this + + //Encrypted but no keychain provided + if (csEv1Keychain == null) return null + + //We don't have they key to decrypt + if (!csEv1Keychain.keys.containsKey(cseKey)) return null + + //We can decrypt + val label = label.decryptValue(cseKey, csEv1Keychain) + + return copy( + label = label + ) + } +} diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/FolderController.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/FolderController.kt new file mode 100644 index 0000000..aadd90f --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/FolderController.kt @@ -0,0 +1,69 @@ +package com.hegocre.nextcloudpasswords.data.folder + +import android.content.Context +import androidx.lifecycle.LiveData +import com.hegocre.nextcloudpasswords.api.ApiController +import com.hegocre.nextcloudpasswords.databases.AppDatabase +import com.hegocre.nextcloudpasswords.utils.Result +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +/** + * Class used to manage the folders cache and make requests to the [ApiController] folder methods. + * This is a Singleton class and will have only one instance. + * + * @param context Context of the application + */ +class FolderController private constructor(context: Context) { + private val folderDatabase = AppDatabase.getInstance(context) + private val apiController = ApiController.getInstance(context) + + /** + * Sync the folders obtained from the [ApiController] with the cached ones. + * + */ + suspend fun syncFolders() { + withContext(Dispatchers.IO) { + val result = apiController.listFolders() + if (result is Result.Success) { + val savedFoldersSet = folderDatabase.folderDao.fetchAllFoldersId().toHashSet() + for (folder in result.data) { + val oldRevision = folderDatabase.folderDao.getFolderRevision(folder.id) + if (oldRevision == null || oldRevision != folder.revision) { + folderDatabase.folderDao.insertFolder(folder) + } + savedFoldersSet.remove(folder.id) + } + for (id in savedFoldersSet) { + folderDatabase.folderDao.deleteFolder(id) + } + } + } + } + + fun getFolders(): LiveData> = + folderDatabase.folderDao.fetchAllFolders() + + companion object { + private var instance: FolderController? = null + + /** + * Get the instance of the [FolderController], and create it if null. + * + * @param context Context of the application. + * @return The instance of the controller. + */ + fun getInstance(context: Context): FolderController { + synchronized(this) { + var tempInstance = instance + + if (tempInstance == null) { + tempInstance = FolderController(context) + instance = tempInstance + } + + return tempInstance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/NewFolder.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/NewFolder.kt new file mode 100644 index 0000000..ebe1b5f --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/NewFolder.kt @@ -0,0 +1,25 @@ +package com.hegocre.nextcloudpasswords.data.folder + +import kotlinx.serialization.Serializable + +/** + * Data class representing a New Folder and containing all its required information. + * + * @property label User defined label of the folder. + * @property cseType Type of the used server side encryption. + * @property cseKey UUID of the key used for client side encryption. + * @property parent UUID of the current parent of the folder. + * @property edited Unix timestamp when the user last changed the folder. + * @property hidden Hides the folder in list / find actions. + * @property favorite True if the user has marked the folder as favorite. + */ +@Serializable +data class NewFolder( + val label: String, + val parent: String, + val cseType: String, + val cseKey: String, + val edited: Int, + val hidden: Boolean, + val favorite: Boolean, +) \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/UpdatedFolder.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/UpdatedFolder.kt new file mode 100644 index 0000000..ce2f602 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/folder/UpdatedFolder.kt @@ -0,0 +1,29 @@ +package com.hegocre.nextcloudpasswords.data.folder + +import kotlinx.serialization.Serializable + +/** + * Data class representing an Updated Folder and containing all its required information. + * + * @property id The UUID of the folder. + * @property revision UUID of the current revision. + * @property label User defined label of the folder. + * @property cseType Type of the used server side encryption. + * @property cseKey UUID of the key used for client side encryption. + * @property parent UUID of the current parent of the folder. + * @property edited Unix timestamp when the user last changed the folder. + * @property hidden Hides the folder in list / find actions. + * @property favorite True if the user has marked the folder as favorite. + */ +@Serializable +data class UpdatedFolder( + val id: String, + val revision: String, + val label: String, + val cseType: String, + val cseKey: String, + val parent: String, + val edited: Int, + val hidden: Boolean, + val favorite: Boolean, +) \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/CustomField.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/CustomField.kt new file mode 100644 index 0000000..e93950e --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/CustomField.kt @@ -0,0 +1,26 @@ +package com.hegocre.nextcloudpasswords.data.password + +import kotlinx.serialization.Serializable + +/** + * Data class representing a custom field of a [Password]. + * + * @property label The name of the field. + * @property type The [field type](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Password-Api#field-types). + * @property value The value for the field. + */ +@Serializable +data class CustomField( + val label: String, + val type: String, + val value: String +) { + companion object { + const val TYPE_TEXT = "text" + const val TYPE_SECRET = "secret" + const val TYPE_EMAIL = "email" + const val TYPE_URL = "url" + const val TYPE_FILE = "file" + const val TYPE_DATA = "data" + } +} diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/DeletedPassword.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/DeletedPassword.kt new file mode 100644 index 0000000..cef2ea5 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/DeletedPassword.kt @@ -0,0 +1,15 @@ +package com.hegocre.nextcloudpasswords.data.password + +import kotlinx.serialization.Serializable + +/** + * Data class representing a Deleted Password and containing all its required information. + * + * @property id The UUID of the password. + * @property revision UUID of the current revision. + */ +@Serializable +data class DeletedPassword( + val id: String, + val revision: String +) diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/GeneratedPassword.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/GeneratedPassword.kt new file mode 100644 index 0000000..b9a6f3b --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/GeneratedPassword.kt @@ -0,0 +1,22 @@ +package com.hegocre.nextcloudpasswords.data.password + +import kotlinx.serialization.Serializable + +/** + * Data class representing a random generated password by the + * [Service API](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Service-Api#the-password-endpoint). + * + * @property password The generated password. + * @property words The words used in the password. + * @property strength The strength setting used. + * @property numbers Whether or not numbers were used in the password. + * @property special Whether or not special characters were used in the password. + */ +@Serializable +data class GeneratedPassword( + val password: String, + val words: List, + val strength: Int, + val numbers: Boolean, + val special: Boolean +) diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/NewPassword.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/NewPassword.kt new file mode 100644 index 0000000..0f6eff5 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/NewPassword.kt @@ -0,0 +1,38 @@ +package com.hegocre.nextcloudpasswords.data.password + +import kotlinx.serialization.Serializable + +/** + * Data class representing a New Password and containing all its required information. + * + * @property password The actual password. + * @property label User defined label of the password. + * @property username Username associated with the password. + * @property url Url of the website. + * @property notes Notes for the password. Can be formatted with Markdown. + * @property customFields Custom fields created by the user. (See + * [custom fields](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Password-Api#custom-fields)). + * @property hash SHA1 hash of the password. + * @property cseType Type of the used server side encryption. + * @property cseKey UUID of the key used for client side encryption. + * @property folder UUID of the current folder of the password. + * @property edited Unix timestamp when the user last changed the password. + * @property hidden Hides the password in list / find actions. + * @property favorite True if the user has marked the password as favorite. + */ +@Serializable +data class NewPassword( + val password: String, + val label: String, + val username: String, + val url: String, + val notes: String, + val customFields: String, + val hash: String, + val cseType: String, + val cseKey: String, + val folder: String, + val edited: Int, + val hidden: Boolean, + val favorite: Boolean, +) \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/Password.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/Password.kt new file mode 100644 index 0000000..0218e14 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/Password.kt @@ -0,0 +1,133 @@ +package com.hegocre.nextcloudpasswords.data.password + +import android.net.Uri +import androidx.room.Entity +import androidx.room.Index +import androidx.room.PrimaryKey +import com.hegocre.nextcloudpasswords.api.encryption.CSEv1Keychain +import com.hegocre.nextcloudpasswords.utils.decryptValue +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import kotlinx.serialization.Serializable +import okhttp3.internal.publicsuffix.PublicSuffixDatabase + +/** + * Data class representing a + * [Password Object](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Password-Api#the-password-object) + * and containing all its information. + * + * @property id The UUID of the password. + * @property label User defined label of the password. + * @property username Username associated with the password. + * @property password The actual password. + * @property url Url of the website. + * @property notes Notes for the password. Can be formatted with Markdown. + * @property customFields Custom fields created by the user. (See + * [custom fields](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Password-Api#custom-fields)). + * @property status Security status level of the password. (See + * [Security Status](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Password-Api#security-status)). + * @property statusCode Specific code for the current security status. (See + * [Security Status](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Password-Api#security-status)). + * @property hash SHA1 hash of the password. + * @property folder UUID of the current folder of the password. + * @property revision UUID of the current revision. + * @property share UUID of the share if the password was shared by someone else with the user. + * @property shared True if the password is shared with other users. + * @property cseType Type of the used server side encryption. + * @property cseKey UUID of the key used for client side encryption. + * @property sseType Type of the used server side encryption. + * @property client Name of the client which created this revision. + * @property hidden Hides the password in list / find actions. + * @property trashed True if the password is in the trash. + * @property favorite True if the user has marked the password as favorite. + * @property editable Specifies if the encrypted properties can be changed. Might be false for shared passwords. + * @property edited Unix timestamp when the user last changed the password. + * @property created Unix timestamp when the password was created. + * @property updated Unix timestamp when the password was updated. + */ +@Serializable +@Entity(tableName = "passwords", indices = [Index(value = ["id"], unique = true)]) +data class Password( + @PrimaryKey + val id: String, + val label: String, + val username: String, + val password: String, + val url: String, + val notes: String, + val customFields: String, + val status: Int, + val statusCode: String, + val hash: String, + val folder: String, + val revision: String, + val share: String?, + val shared: Boolean, + val cseType: String, + val cseKey: String, + val sseType: String, + val client: String, + val hidden: Boolean, + val trashed: Boolean, + val favorite: Boolean, + val editable: Boolean, + val edited: Int, + val created: Int, + val updated: Int +) { + /** + * Returns a copy of this object with the encrypted fields decrypted using the keychain. + * + * @param csEv1Keychain The keychain used to decrypt the values. + * @return The object with the decrypted values. + */ + suspend fun decrypt(csEv1Keychain: CSEv1Keychain? = null): Password? { + //Not encrypted + if (cseType == "none") return this + + //Encrypted but no keychain provided + if (csEv1Keychain == null) return null + + //We don't have they key to decrypt + if (!csEv1Keychain.keys.containsKey(cseKey)) return null + + //We can decrypt + val decryptedPassword = withContext(Dispatchers.IO) { + val url = url.decryptValue(cseKey, csEv1Keychain) + val label = label.decryptValue(cseKey, csEv1Keychain) + val password = password.decryptValue(cseKey, csEv1Keychain) + val username = username.decryptValue(cseKey, csEv1Keychain) + val notes = notes.decryptValue(cseKey, csEv1Keychain) + val customFields = customFields.decryptValue(cseKey, csEv1Keychain) + + copy( + label = label, + password = password, + username = username, + url = url, + notes = notes, + customFields = customFields + ) + } + + return decryptedPassword + } + + fun matches(query: String, strictUrlMatching: Boolean = true): Boolean { + if (label.lowercase().contains(query.lowercase())) { + return true + } + + try { + val queryDomain = (Uri.parse(query).host ?: Uri.parse("https://$query").host)?.let { + if (strictUrlMatching) it else PublicSuffixDatabase.get().getEffectiveTldPlusOne(it) + } ?: return false + val passwordDomain = (Uri.parse(url).host ?: Uri.parse("https://$url").host)?.let { + if (strictUrlMatching) it else PublicSuffixDatabase.get().getEffectiveTldPlusOne(it) + } ?: return false + return queryDomain == passwordDomain + } catch (e: Exception) { + return false + } + } +} diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/PasswordController.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/PasswordController.kt new file mode 100644 index 0000000..552808e --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/PasswordController.kt @@ -0,0 +1,70 @@ +package com.hegocre.nextcloudpasswords.data.password + +import android.content.Context +import androidx.lifecycle.LiveData +import com.hegocre.nextcloudpasswords.api.ApiController +import com.hegocre.nextcloudpasswords.databases.AppDatabase +import com.hegocre.nextcloudpasswords.utils.Result +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +/** + * Class used to manage the passwords cache and make requests to the [ApiController] password methods. + * This is a Singleton class and will have only one instance. + * + * @param context Context of the application + */ +class PasswordController private constructor(context: Context) { + private val passwordDatabase = AppDatabase.getInstance(context) + private val apiController = ApiController.getInstance(context) + + /** + * Sync the passwords obtained from the [ApiController] with the cached ones. + * + */ + suspend fun syncPasswords() { + withContext(Dispatchers.IO) { + val result = apiController.listPasswords() + if (result is Result.Success) { + val savedPasswordsSet = + passwordDatabase.passwordDao.fetchAllPasswordsId().toHashSet() + for (password in result.data) { + val oldRevision = passwordDatabase.passwordDao.getPasswordRevision(password.id) + if (oldRevision == null || oldRevision != password.revision) { + passwordDatabase.passwordDao.insertPassword(password) + } + savedPasswordsSet.remove(password.id) + } + for (id in savedPasswordsSet) { + passwordDatabase.passwordDao.deletePassword(id) + } + } + } + } + + fun getPasswords(): LiveData> = + passwordDatabase.passwordDao.fetchAllPasswords() + + companion object { + private var instance: PasswordController? = null + + /** + * Get the instance of the [PasswordController], and create it if null. + * + * @param context Context of the application. + * @return The instance of the controller. + */ + fun getInstance(context: Context): PasswordController { + synchronized(this) { + var tempInstance = instance + + if (tempInstance == null) { + tempInstance = PasswordController(context) + instance = tempInstance + } + + return tempInstance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/RequestedPassword.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/RequestedPassword.kt new file mode 100644 index 0000000..adcd142 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/RequestedPassword.kt @@ -0,0 +1,18 @@ +package com.hegocre.nextcloudpasswords.data.password + +import kotlinx.serialization.Serializable + +@Serializable +data class RequestedPassword( + val strength: Int, + val numbers: Boolean, + val special: Boolean +) { + companion object { + const val STRENGTH_ULTRA = 4 + const val STRENGTH_HIGH = 3 + const val STRENGTH_MEDIUM = 2 + const val STRENGTH_STANDARD = 1 + const val STRENGTH_LOW = 0 + } +} diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/UpdatedPassword.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/UpdatedPassword.kt new file mode 100644 index 0000000..1d4df21 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/password/UpdatedPassword.kt @@ -0,0 +1,42 @@ +package com.hegocre.nextcloudpasswords.data.password + +import kotlinx.serialization.Serializable + +/** + * Data class representing an Updated Password and containing all its required information. + * + * @property id The UUID of the password. + * @property revision UUID of the current revision. + * @property password The actual password. + * @property label User defined label of the password. + * @property username Username associated with the password. + * @property url Url of the website. + * @property notes Notes for the password. Can be formatted with Markdown. + * @property customFields Custom fields created by the user. (See + * [custom fields](https://git.mdns.eu/nextcloud/passwords/-/wikis/Developers/Api/Password-Api#custom-fields)). + * @property hash SHA1 hash of the password. + * @property cseType Type of the used server side encryption. + * @property cseKey UUID of the key used for client side encryption. + * @property folder UUID of the current folder of the password. + * @property edited Unix timestamp when the user last changed the password. + * @property hidden Hides the password in list / find actions. + * @property favorite True if the user has marked the password as favorite. + */ +@Serializable +data class UpdatedPassword( + val id: String, + val revision: String, + val password: String, + val label: String, + val username: String, + val url: String, + val notes: String, + val customFields: String, + val hash: String, + val cseType: String, + val cseKey: String, + val folder: String, + val edited: Int, + val hidden: Boolean, + val favorite: Boolean, +) \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/serversettings/ServerSettings.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/serversettings/ServerSettings.kt new file mode 100644 index 0000000..dd72f2e --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/serversettings/ServerSettings.kt @@ -0,0 +1,29 @@ +package com.hegocre.nextcloudpasswords.data.serversettings + +import kotlinx.serialization.ExperimentalSerializationApi +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable +import kotlinx.serialization.descriptors.elementNames +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import kotlinx.serialization.serializer + +@Serializable +data class ServerSettings( + @SerialName(value = "user.password.security.hash") + val passwordSecurityHash: Int = 40, + @SerialName(value = "user.encryption.cse") + val encryptionCse: Int = 0, + @SerialName(value = "user.session.lifetime") + val sessionLifetime: Int = 600, + @SerialName(value = "server.theme.color.primary") + val themeColorPrimary: String = "#745bca" +) { + companion object { + @OptIn(ExperimentalSerializationApi::class) + fun getRequestBody(): String { + val names = serializer().descriptor.elementNames.toList() + return Json.encodeToString(names) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/user/UserController.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/user/UserController.kt new file mode 100644 index 0000000..cf300e9 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/user/UserController.kt @@ -0,0 +1,90 @@ +package com.hegocre.nextcloudpasswords.data.user + +import android.content.Context +import com.hegocre.nextcloudpasswords.api.Server +import com.hegocre.nextcloudpasswords.databases.AppDatabase +import com.hegocre.nextcloudpasswords.utils.PreferencesManager +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +/** + * Class used to manage to log in and log out, as well as providing the current server to the API + * Controller. This is a Singleton class and will have only one instance. + * + * @param context Context of the application. + */ +class UserController private constructor(context: Context) { + private val _preferencesManager = PreferencesManager.getInstance(context) + private val passwordDatabase = AppDatabase.getInstance(context) + private val folderDatabase = AppDatabase.getInstance(context) + + val isLoggedIn: Boolean + get() = _preferencesManager.getLoggedInServer() != null + + /** + * Method to store the server URl and credentials on the storage. + * + * @param server The URL of the server to log in + * @param username The username used to authenticate on the server. + * @param password The password used to authenticate on the server. + */ + fun logIn(server: String, username: String, password: String) { + with(_preferencesManager) { + setLoggedInServer(server) + setLoggedInUser(username) + setLoggedInPassword(password) + } + } + + /** + * Method to delete the server credentials from the storage, as well as clearing the saved master + * password and keychain if present. + * + */ + suspend fun logOut() { + withContext(Dispatchers.IO) { + passwordDatabase.passwordDao.deleteDatabase() + folderDatabase.folderDao.deleteDatabase() + } + _preferencesManager.clear() + } + + /** + * Returns the current logged in server stored on the device. + * + * @return The [Server] with the current URL and credentials. + * @throws UserException If there are no credentials stored. + */ + @Throws(UserException::class) + fun getServer(): Server { + return with(_preferencesManager) { + val url = getLoggedInServer() ?: throw UserException("Not logged in") + val username = getLoggedInUser() ?: throw UserException("Not logged in") + val password = getLoggedInPassword() ?: throw UserException("Not logged in") + Server(url, username, password) + } + } + + companion object { + private var instance: UserController? = null + + /** + * Get the instance of the [UserController], and create it if null. + * + * @param context Context of the application. + * @return The instance of the controller. + */ + fun getInstance(context: Context): UserController { + synchronized(this) { + var tempInstance = instance + + if (tempInstance == null) { + tempInstance = UserController(context) + instance = tempInstance + } + + return tempInstance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/data/user/UserException.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/data/user/UserException.kt new file mode 100644 index 0000000..45ac804 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/data/user/UserException.kt @@ -0,0 +1,3 @@ +package com.hegocre.nextcloudpasswords.data.user + +class UserException(message: String) : Exception(message) \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/databases/AppDatabase.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/databases/AppDatabase.kt new file mode 100644 index 0000000..a3669ed --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/databases/AppDatabase.kt @@ -0,0 +1,52 @@ +package com.hegocre.nextcloudpasswords.databases + +import android.content.Context +import androidx.room.AutoMigration +import androidx.room.Database +import androidx.room.DeleteTable +import androidx.room.Room +import androidx.room.RoomDatabase +import androidx.room.migration.AutoMigrationSpec +import com.hegocre.nextcloudpasswords.data.folder.Folder +import com.hegocre.nextcloudpasswords.data.password.Password +import com.hegocre.nextcloudpasswords.databases.folderdatabase.FolderDatabaseDao +import com.hegocre.nextcloudpasswords.databases.passworddatabase.PasswordDatabaseDao + +@Database( + entities = [Folder::class, Password::class], + version = 3, + autoMigrations = [ + AutoMigration(from = 2, to = 3, spec = AppDatabase.DeleteFaviconsMigration::class) + ] +) +abstract class AppDatabase : RoomDatabase() { + abstract val passwordDao: PasswordDatabaseDao + abstract val folderDao: FolderDatabaseDao + + @DeleteTable(tableName = "favicons") + class DeleteFaviconsMigration : AutoMigrationSpec + + companion object { + @Volatile + private var instance: AppDatabase? = null + + fun getInstance(context: Context): AppDatabase { + synchronized(this) { + var tempInstance = instance + if (tempInstance == null) { + tempInstance = Room.databaseBuilder( + context.applicationContext, + AppDatabase::class.java, + "password.db" + ) + .fallbackToDestructiveMigration() + .build() + + instance = tempInstance + } + + return tempInstance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/databases/folderdatabase/FolderDatabaseDao.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/databases/folderdatabase/FolderDatabaseDao.kt new file mode 100644 index 0000000..449801f --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/databases/folderdatabase/FolderDatabaseDao.kt @@ -0,0 +1,32 @@ +package com.hegocre.nextcloudpasswords.databases.folderdatabase + +import androidx.lifecycle.LiveData +import androidx.room.* +import com.hegocre.nextcloudpasswords.data.folder.Folder + +@Dao +interface FolderDatabaseDao { + @Query("SELECT * FROM folders") + fun fetchAllFolders(): LiveData> + + @Query("SELECT id FROM folders") + suspend fun fetchAllFoldersId(): List + + @Query("SELECT revision FROM folders WHERE id = :id") + suspend fun getFolderRevision(id: String): String? + + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insertFolder(folder: Folder) + + @Update + suspend fun updateFolder(folder: Folder) + + @Delete + suspend fun deleteFolder(folder: Folder) + + @Query("DELETE FROM folders WHERE id = :id") + suspend fun deleteFolder(id: String) + + @Query("DELETE FROM folders") + suspend fun deleteDatabase() +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/databases/passworddatabase/PasswordDatabaseDao.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/databases/passworddatabase/PasswordDatabaseDao.kt new file mode 100644 index 0000000..60eca47 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/databases/passworddatabase/PasswordDatabaseDao.kt @@ -0,0 +1,32 @@ +package com.hegocre.nextcloudpasswords.databases.passworddatabase + +import androidx.lifecycle.LiveData +import androidx.room.* +import com.hegocre.nextcloudpasswords.data.password.Password + +@Dao +interface PasswordDatabaseDao { + @Query("SELECT * FROM passwords") + fun fetchAllPasswords(): LiveData> + + @Query("SELECT id FROM passwords") + suspend fun fetchAllPasswordsId(): List + + @Query("SELECT revision FROM passwords WHERE id = :id") + suspend fun getPasswordRevision(id: String): String? + + @Insert(onConflict = OnConflictStrategy.REPLACE) + suspend fun insertPassword(password: Password) + + @Update + suspend fun updatePassword(password: Password) + + @Delete + suspend fun deletePassword(password: Password) + + @Query("DELETE FROM passwords WHERE id = :id") + suspend fun deletePassword(id: String) + + @Query("DELETE FROM passwords") + suspend fun deleteDatabase() +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/services/autofill/AssistStructureParser.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/services/autofill/AssistStructureParser.kt new file mode 100644 index 0000000..1e899c6 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/services/autofill/AssistStructureParser.kt @@ -0,0 +1,197 @@ +package com.hegocre.nextcloudpasswords.services.autofill + +import android.app.assist.AssistStructure +import android.os.Build +import android.text.InputType +import android.util.Log +import android.view.View +import android.view.autofill.AutofillId +import android.view.inputmethod.EditorInfo +import androidx.annotation.RequiresApi +import com.hegocre.nextcloudpasswords.BuildConfig + +/** + * Parser used to get the needed information from an assist structure to reply to an Autofill request. + * + * @param assistStructure The assist structure provided by the Autofill Request, containing all autofill + * fields information + */ +@RequiresApi(Build.VERSION_CODES.O) +class AssistStructureParser(assistStructure: AssistStructure) { + val usernameAutofillIds = mutableListOf() + val passwordAutofillIds = mutableListOf() + private var lastTextAutofillId: AutofillId? = null + private var candidateTextAutofillId: AutofillId? = null + + private val webDomains = HashMap() + + val packageName = assistStructure.activityComponent.flattenToShortString().substringBefore("/") + + // Get the most repeated domain on the fields (there may be more than one) + val webDomain: String? + get() = webDomains.toList().filter { it.first != "localhost" } + .maxByOrNull { (_, value) -> value }?.first + + init { + for (i in 0 until assistStructure.windowNodeCount) { + val windowNode = assistStructure.getWindowNodeAt(i) + windowNode.rootViewNode?.let { parseNode(it) } + } + if (usernameAutofillIds.isEmpty()) + candidateTextAutofillId?.let { + usernameAutofillIds.add(it) + } + } + + /** + * Parse the provided node and its child and classify them by type (username or password). + * + * @param node The node to parse. + */ + private fun parseNode(node: AssistStructure.ViewNode) { + node.autofillId?.let { autofillId -> + val fieldType = getFieldType(node) + if (fieldType != null) { + when (fieldType) { + FIELD_TYPE_USERNAME -> { + usernameAutofillIds.add(autofillId) + } + FIELD_TYPE_PASSWORD -> { + passwordAutofillIds.add(autofillId) + // We save the autofillId of the field above the password field, + // in case we don't find any explicit username field + candidateTextAutofillId = lastTextAutofillId + } + FIELD_TYPE_TEXT -> { + lastTextAutofillId = autofillId + } + } + } + } + + node.webDomain?.let { webDomain -> + webDomains[webDomain] = webDomains.getOrDefault(webDomain, 0) + 1 + } + + // Parse child + for (i in 0 until node.childCount) { + val windowNode = node.getChildAt(i) + parseNode(windowNode) + } + } + + /** + * Try to determine the type of the node. First, getting a provided autofill hint is tried. If not present, + * html attributes are checked. If also not provided, the text type flag is checked. + * + * @param node The node that has to be classified. + * @return The determined field type. + */ + private fun getFieldType(node: AssistStructure.ViewNode): Int? { + if (node.autofillType == View.AUTOFILL_TYPE_TEXT) { + if (BuildConfig.DEBUG) { + Log.d(packageName, "Autofill node -> ${node.hint}") + Log.d( + packageName, + "-- Hints: ${node.autofillHints?.joinToString(", ")}" + ) + Log.d( + packageName, + "-- HTML Attributes: ${node.htmlInfo?.attributes?.joinToString(", ")}" + ) + Log.d(packageName, "-- Field type: ${node.inputType}") + } + + // Get by autofill hint + node.autofillHints?.forEach { hint -> + if (hint == View.AUTOFILL_HINT_USERNAME || hint == View.AUTOFILL_HINT_EMAIL_ADDRESS) { + return FIELD_TYPE_USERNAME + } else if (hint == View.AUTOFILL_HINT_PASSWORD) { + return FIELD_TYPE_PASSWORD + } + } + + // Get by HTML attributes + if (node.hasAttribute("type", "email") || + node.hasAttribute("type", "tel") || + node.hasAttribute("type", "text") || + node.hasAttribute("name", "email") || + node.hasAttribute("name", "mail") || + node.hasAttribute("name", "user") || + node.hasAttribute("name", "username") + ) { + return FIELD_TYPE_USERNAME + } + if (node.hasAttribute("type", "password")) { + return FIELD_TYPE_PASSWORD + } + + + if (node.hint?.lowercase()?.contains("user") == true || + node.hint?.lowercase()?.contains("mail") == true + ) { + return FIELD_TYPE_USERNAME + } + + // Get by field type + if (node.inputType.isPasswordType()) { + return FIELD_TYPE_PASSWORD + } + + if (node.inputType.isTextType()) { + return FIELD_TYPE_TEXT + } + } + return null + } + + /** + * Check if the view node contains a specific HTML attribute value. + * + * @param attr The attribute to check. + * @param value The value to compare. + * @return Whether the value of the provided attribute matches the provided value. + */ + private fun AssistStructure.ViewNode?.hasAttribute(attr: String, value: String): Boolean = + this?.htmlInfo?.attributes?.firstOrNull { it.first == attr && it.second == value } != null + + /** + * Check if a text field matches the [InputType.TYPE_CLASS_TEXT] input type. + * + * @return Whether the field matches the input type. + */ + private fun Int?.isTextType() = this != null && (this and InputType.TYPE_CLASS_TEXT != 0) + + /** + * Check if a text field is any type of password field. + * + * @return Whether the field matches a password type. + */ + private fun Int?.isPasswordType() = this != null && + (isPasswordInputType(this) || isVisiblePasswordInputType(this)) + + //Methods extracted from android source, used since API 33 to heuristically provide + // the AUTOFILL_HINT_PASSWORD_AUTO hint + // https://android.googlesource.com/platform/frameworks/base/+/1f5c147eb5959a7e4fd03b751679cb5e00984c9c%5E%21/#F0 + private fun isPasswordInputType(inputType: Int): Boolean { + val variation = inputType and (EditorInfo.TYPE_MASK_CLASS or EditorInfo.TYPE_MASK_VARIATION) + return variation == EditorInfo.TYPE_CLASS_TEXT or EditorInfo.TYPE_TEXT_VARIATION_PASSWORD + || variation == EditorInfo.TYPE_CLASS_TEXT or EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD + || variation == EditorInfo.TYPE_CLASS_NUMBER or EditorInfo.TYPE_NUMBER_VARIATION_PASSWORD + || variation == EditorInfo.TYPE_TEXT_VARIATION_PASSWORD + || variation == EditorInfo.TYPE_TEXT_VARIATION_WEB_PASSWORD + || variation == EditorInfo.TYPE_NUMBER_VARIATION_PASSWORD + } + + private fun isVisiblePasswordInputType(inputType: Int): Boolean { + val variation = inputType and (EditorInfo.TYPE_MASK_CLASS or EditorInfo.TYPE_MASK_VARIATION) + return variation == EditorInfo.TYPE_CLASS_TEXT or EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD + || variation == EditorInfo.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD + } + + companion object { + private const val FIELD_TYPE_USERNAME = 0 + private const val FIELD_TYPE_PASSWORD = 1 + private const val FIELD_TYPE_TEXT = 2 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/services/autofill/AutofillHelper.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/services/autofill/AutofillHelper.kt new file mode 100644 index 0000000..8290b14 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/services/autofill/AutofillHelper.kt @@ -0,0 +1,217 @@ +package com.hegocre.nextcloudpasswords.services.autofill + +import android.annotation.SuppressLint +import android.app.PendingIntent +import android.app.assist.AssistStructure +import android.content.Context +import android.content.Intent +import android.content.IntentSender +import android.graphics.BlendMode +import android.graphics.drawable.Icon +import android.os.Build +import android.service.autofill.Dataset +import android.service.autofill.Field +import android.service.autofill.InlinePresentation +import android.service.autofill.Presentations +import android.view.autofill.AutofillId +import android.view.autofill.AutofillValue +import android.widget.RemoteViews +import android.widget.inline.InlinePresentationSpec +import androidx.annotation.RequiresApi +import androidx.autofill.inline.v1.InlineSuggestionUi +import com.hegocre.nextcloudpasswords.R + +object AutofillHelper { + @RequiresApi(Build.VERSION_CODES.O) + fun buildDataset( + context: Context, + password: Triple?, + assistStructure: AssistStructure, + inlinePresentationSpec: InlinePresentationSpec?, + authenticationIntent: IntentSender? = null + ): Dataset { + return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + if (inlinePresentationSpec != null) { + buildInlineDataset( + context, + password, + assistStructure, + inlinePresentationSpec, + authenticationIntent + ) + } else { + buildPresentationDataset(context, password, assistStructure, authenticationIntent) + } + } else { + buildPresentationDataset(context, password, assistStructure, authenticationIntent) + } + } + + @RequiresApi(Build.VERSION_CODES.R) + private fun buildInlineDataset( + context: Context, + password: Triple?, + assistStructure: AssistStructure, + inlinePresentationSpec: InlinePresentationSpec, + authenticationIntent: IntentSender? = null + ): Dataset { + val helper = AssistStructureParser(assistStructure) + return Dataset.Builder() + .apply { + helper.usernameAutofillIds.forEach { autofillId -> + addInlineAutofillValue( + context, + autofillId, + password?.first, + password?.second, + inlinePresentationSpec + ) + } + helper.passwordAutofillIds.forEach { autofillId -> + addInlineAutofillValue( + context, + autofillId, + password?.first, + password?.third, + inlinePresentationSpec + ) + } + if (authenticationIntent != null) { + setAuthentication(authenticationIntent) + } + }.build() + } + + @RequiresApi(Build.VERSION_CODES.O) + private fun buildPresentationDataset( + context: Context, + password: Triple?, + assistStructure: AssistStructure, + authenticationIntent: IntentSender? = null + ): Dataset { + val helper = AssistStructureParser(assistStructure) + return Dataset.Builder().apply { + helper.usernameAutofillIds.forEach { autofillId -> + addAutofillValue(context, autofillId, password?.first, password?.second) + } + helper.passwordAutofillIds.forEach { autofillId -> + addAutofillValue(context, autofillId, password?.first, password?.third) + } + if (authenticationIntent != null) { + setAuthentication(authenticationIntent) + } + }.build() + } + + @SuppressLint("RestrictedApi") + @RequiresApi(Build.VERSION_CODES.O) + private fun Dataset.Builder.addAutofillValue( + context: Context, + autofillId: AutofillId, + label: String?, + value: String?, + ) { + val autofillLabel = label ?: context.getString(R.string.app_name) + + val presentation = if (label == null) { + RemoteViews(context.packageName, R.layout.password_list_item).apply { + setTextViewText(R.id.text, autofillLabel) + } + } else { + RemoteViews(context.packageName, android.R.layout.simple_list_item_1).apply { + setTextViewText(android.R.id.text1, autofillLabel) + } + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + val fieldBuilder = Field.Builder() + value?.let { + fieldBuilder.setValue(AutofillValue.forText(it)) + } + val dialogPresentation = Presentations.Builder().apply { + setMenuPresentation(presentation) + }.build() + fieldBuilder.setPresentations(dialogPresentation) + setField(autofillId, fieldBuilder.build()) + } else { + @Suppress("DEPRECATION") + setValue( + autofillId, + value?.let { AutofillValue.forText(it) }, + presentation + ) + } + } + + @SuppressLint("RestrictedApi") + @RequiresApi(Build.VERSION_CODES.R) + private fun Dataset.Builder.addInlineAutofillValue( + context: Context, + autofillId: AutofillId, + label: String?, + value: String?, + inlinePresentationSpec: InlinePresentationSpec, + ) { + val autofillLabel = label ?: context.getString(R.string.app_name) + + val authIntent = Intent().apply { + setPackage(context.packageName) + identifier = AUTOFILL_INTENT_ID + } + + val intentFlags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_MUTABLE + } else { + PendingIntent.FLAG_CANCEL_CURRENT + } + + val pendingIntent = PendingIntent.getActivity( + context, + 1001, + authIntent, + intentFlags + ) + + val inlinePresentation = InlinePresentation( + InlineSuggestionUi.newContentBuilder(pendingIntent).apply { + setTitle(autofillLabel) + setStartIcon( + Icon.createWithResource(context, R.mipmap.ic_launcher) + .setTintBlendMode(BlendMode.DST) + ) + }.build().slice, inlinePresentationSpec, false + ) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + val fieldBuilder = Field.Builder() + value?.let { + fieldBuilder.setValue(AutofillValue.forText(it)) + } + val dialogPresentation = Presentations.Builder().apply { + setInlinePresentation(inlinePresentation) + }.build() + fieldBuilder.setPresentations(dialogPresentation) + setField(autofillId, fieldBuilder.build()) + } else { + val presentation = if (label == null) { + RemoteViews(context.packageName, R.layout.password_list_item).apply { + setTextViewText(R.id.text, autofillLabel) + } + } else { + RemoteViews(context.packageName, android.R.layout.simple_list_item_1).apply { + setTextViewText(android.R.id.text1, autofillLabel) + } + } + + @Suppress("DEPRECATION") + setValue( + autofillId, + value?.let { AutofillValue.forText(it) }, + presentation, + inlinePresentation + ) + } + } + + private const val AUTOFILL_INTENT_ID = "com.hegocre.nextcloudpasswords.intents.autofill" +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/services/autofill/NCPAutofillService.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/services/autofill/NCPAutofillService.kt new file mode 100644 index 0000000..2c99caf --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/services/autofill/NCPAutofillService.kt @@ -0,0 +1,143 @@ +package com.hegocre.nextcloudpasswords.services.autofill + +import android.annotation.SuppressLint +import android.app.PendingIntent +import android.content.Intent +import android.content.pm.PackageManager +import android.os.Build +import android.os.CancellationSignal +import android.service.autofill.AutofillService +import android.service.autofill.FillCallback +import android.service.autofill.FillRequest +import android.service.autofill.FillResponse +import android.service.autofill.SaveCallback +import android.service.autofill.SaveRequest +import androidx.annotation.RequiresApi +import com.hegocre.nextcloudpasswords.data.user.UserController +import com.hegocre.nextcloudpasswords.data.user.UserException +import com.hegocre.nextcloudpasswords.utils.PreferencesManager + +@RequiresApi(Build.VERSION_CODES.O) +class NCPAutofillService : AutofillService() { + @SuppressLint("RestrictedApi") + override fun onFillRequest( + request: FillRequest, + cancellationSignal: CancellationSignal, + callback: FillCallback + ) { + val context = request.fillContexts + val structure = context.last().structure + + val helper = AssistStructureParser(structure) + + // Do not autofill this application + if (helper.packageName == packageName) { + callback.onSuccess(null) + return + } + try { + UserController.getInstance(applicationContext).getServer() + } catch (e: UserException) { + // User not logged in, cannot fill request + callback.onSuccess(null) + return + } + + val useInline = PreferencesManager.getInstance(applicationContext).getUseInlineAutofill() + val inlineSuggestionsRequest = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && useInline) { + request.inlineSuggestionsRequest + } else null + + val searchHint: String? = when { + // If the structure contains a domain, use that (probably a web browser) + helper.webDomain != null -> { + helper.webDomain + } + + else -> with(packageManager) { + //Get the name of the package (QUERY_ALL_PACKAGES permission needed) + try { + val app = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + getApplicationInfo( + helper.packageName, + PackageManager.ApplicationInfoFlags.of(PackageManager.GET_META_DATA.toLong()) + ) + else + getApplicationInfo( + helper.packageName, + PackageManager.GET_META_DATA + ) + + getApplicationLabel(app).toString() + } catch (e: PackageManager.NameNotFoundException) { + e.printStackTrace() + null + } + } + } + + // Intent to open MainActivity and provide a response to the request + val authIntent = Intent("com.hegocre.nextcloudpasswords.action.main").apply { + setPackage(packageName) + putExtra(AUTOFILL_REQUEST, true) + searchHint?.let { + putExtra(AUTOFILL_SEARCH_HINT, it) + } + } + + val intentFlags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_MUTABLE + } else { + PendingIntent.FLAG_CANCEL_CURRENT + } + + val intentSender = PendingIntent.getActivity( + this, + 1001, + authIntent, + intentFlags + ).intentSender + + if (helper.passwordAutofillIds.isNotEmpty()) { + val fillResponse = FillResponse.Builder().apply { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + addDataset( + AutofillHelper.buildDataset( + applicationContext, + null, + structure, + inlineSuggestionsRequest?.inlinePresentationSpecs?.first(), + intentSender + ) + ) + } else { + addDataset( + AutofillHelper.buildDataset( + applicationContext, + null, + structure, + null, + intentSender + ) + ) + } + }.build() + + + callback.onSuccess(fillResponse) + } else { + // Do not return a response if there are no autofill fields. + callback.onSuccess(null) + } + } + + override fun onSaveRequest(request: SaveRequest, callback: SaveCallback) { + callback.onFailure("Not implemented") + } + + companion object { + const val AUTOFILL_REQUEST = "autofill_request" + const val AUTOFILL_SEARCH_HINT = "autofill_query" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/services/keepalive/KeepAliveWorker.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/services/keepalive/KeepAliveWorker.kt new file mode 100644 index 0000000..5331f7e --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/services/keepalive/KeepAliveWorker.kt @@ -0,0 +1,76 @@ +package com.hegocre.nextcloudpasswords.services.keepalive + +import android.content.Context +import androidx.work.BackoffPolicy +import androidx.work.Constraints +import androidx.work.CoroutineWorker +import androidx.work.Data +import androidx.work.NetworkType +import androidx.work.OneTimeWorkRequestBuilder +import androidx.work.WorkManager +import androidx.work.WorkRequest +import androidx.work.WorkerParameters +import com.hegocre.nextcloudpasswords.api.ApiController +import com.hegocre.nextcloudpasswords.api.SessionApi +import com.hegocre.nextcloudpasswords.data.user.UserController +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import java.util.concurrent.TimeUnit + +class KeepAliveWorker(context: Context, private val params: WorkerParameters) : + CoroutineWorker(context, params) { + override suspend fun doWork(): Result { + val apiController = ApiController.getInstance(applicationContext) + if (!apiController.sessionOpen.value) { + return Result.success() + } + + val server = UserController.getInstance(applicationContext).getServer() + val sessionApi = SessionApi.getInstance(server) + + val sessionCode = params.inputData.getString(SESSION_CODE_KEY) ?: return Result.failure() + val keepAliveDelay = params.inputData.getLong(KEEPALIVE_DELAY_KEY, -1L) + if (keepAliveDelay == -1L) return Result.failure() + + val resultSuccess = withContext(Dispatchers.IO) { + sessionApi.keepAlive(sessionCode) + } + + if (resultSuccess) { + WorkManager.getInstance(applicationContext) + .enqueue(getRequest(keepAliveDelay, sessionCode)) + return Result.success() + } else { + if (params.runAttemptCount > 2) { + ApiController.getInstance(applicationContext).clearSession() + return Result.failure() + } else { + return Result.retry() + } + } + } + + companion object { + private const val SESSION_CODE_KEY = "com.hegocre.nextcloudpasswords.sessionCode" + private const val KEEPALIVE_DELAY_KEY = "com.hegocre.nextcloudpasswords.keepAliveDelay" + const val TAG = "com.hegocre.nextcloudpasswords.keepaliveworker" + + fun getRequest(delay: Long, sessionCode: String): WorkRequest { + val data = Data.Builder() + .putString(SESSION_CODE_KEY, sessionCode) + .putLong(KEEPALIVE_DELAY_KEY, delay) + .build() + return OneTimeWorkRequestBuilder() + .setInitialDelay(delay, TimeUnit.MILLISECONDS) + .setInputData(data) + .setBackoffCriteria(BackoffPolicy.LINEAR, 10L, TimeUnit.SECONDS) + .addTag(TAG) + .setConstraints( + Constraints.Builder() + .setRequiredNetworkType(NetworkType.CONNECTED) + .build() + ) + .build() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/NCPScreen.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/NCPScreen.kt new file mode 100644 index 0000000..f780d53 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/NCPScreen.kt @@ -0,0 +1,61 @@ +package com.hegocre.nextcloudpasswords.ui + +import androidx.annotation.StringRes +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Edit +import androidx.compose.material.icons.filled.Favorite +import androidx.compose.material.icons.filled.Folder +import androidx.compose.material.icons.filled.VpnKey +import androidx.compose.material.icons.outlined.FavoriteBorder +import androidx.compose.material.icons.outlined.Folder +import androidx.compose.material.icons.outlined.VpnKey +import androidx.compose.ui.graphics.vector.ImageVector +import com.hegocre.nextcloudpasswords.R + +enum class NCPScreen( + @StringRes val title: Int, + val selectedIcon: ImageVector, + val unselectedIcon: ImageVector, + val hidden: Boolean = false +) { + Passwords( + title = R.string.passwords, + selectedIcon = Icons.Filled.VpnKey, + unselectedIcon = Icons.Outlined.VpnKey + ), + Favorites( + title = R.string.favorites, + selectedIcon = Icons.Filled.Favorite, + unselectedIcon = Icons.Outlined.FavoriteBorder + ), + Folders( + title = R.string.folders, + selectedIcon = Icons.Filled.Folder, + unselectedIcon = Icons.Outlined.Folder + ), + PasswordEdit( + title = R.string.action_edit_password, + selectedIcon = Icons.Default.Edit, + unselectedIcon = Icons.Default.Edit, + hidden = true + ), + FolderEdit( + title = R.string.edit_folder, + selectedIcon = Icons.Default.Edit, + unselectedIcon = Icons.Default.Edit, + hidden = true + ); + + companion object { + fun fromRoute(route: String?): NCPScreen = + when (route?.substringBefore("/")) { + Passwords.name -> Passwords + Favorites.name -> Favorites + Folders.name -> Folders + PasswordEdit.name -> PasswordEdit + FolderEdit.name -> FolderEdit + null -> Passwords + else -> throw IllegalArgumentException("Route $route is not recognized.") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/AboutActivity.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/AboutActivity.kt new file mode 100644 index 0000000..3a40f79 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/AboutActivity.kt @@ -0,0 +1,33 @@ +package com.hegocre.nextcloudpasswords.ui.activities + +import android.os.Bundle +import android.widget.Toast +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.core.view.WindowCompat +import com.hegocre.nextcloudpasswords.BuildConfig +import com.hegocre.nextcloudpasswords.ui.components.NCPAboutScreen +import com.hegocre.nextcloudpasswords.ui.components.NCPAppLockWrapper +import com.hegocre.nextcloudpasswords.utils.LogHelper +import com.hegocre.nextcloudpasswords.utils.copyToClipboard + +class AboutActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + WindowCompat.setDecorFitsSystemWindows(window, false) + setContent { + NCPAppLockWrapper { + NCPAboutScreen( + onBackPressed = this::finish, + onLogoLongPressed = { + if (BuildConfig.DEBUG) { + copyToClipboard(LogHelper.getInstance().appLog) + Toast.makeText(this, "Log copied!", Toast.LENGTH_LONG).show() + } + } + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/LoginActivity.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/LoginActivity.kt new file mode 100644 index 0000000..10b4380 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/LoginActivity.kt @@ -0,0 +1,39 @@ +package com.hegocre.nextcloudpasswords.ui.activities + +import android.content.Intent +import android.os.Bundle +import android.widget.Toast +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.core.view.WindowCompat +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.ui.components.NCPLoginScreen +import com.hegocre.nextcloudpasswords.utils.PreferencesManager + +class LoginActivity : ComponentActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + WindowCompat.setDecorFitsSystemWindows(window, false) + + val loginIntent = Intent(this, WebLoginActivity::class.java) + + setContent { + NCPLoginScreen( + loginIntent = loginIntent, + onLoginSuccess = { + val intent = Intent("com.hegocre.nextcloudpasswords.action.main") + .setPackage(packageName) + startActivity(intent) + finish() + }, + onLoginFailed = { + PreferencesManager.getInstance(this).setSkipCertificateValidation(false) + Toast.makeText(this, getString(R.string.error_logging_in), Toast.LENGTH_LONG) + .show() + } + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/MainActivity.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/MainActivity.kt new file mode 100644 index 0000000..c573ecc --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/MainActivity.kt @@ -0,0 +1,156 @@ +package com.hegocre.nextcloudpasswords.ui.activities + +import android.app.Activity +import android.app.assist.AssistStructure +import android.content.Intent +import android.os.Build +import android.os.Bundle +import android.view.autofill.AutofillManager +import android.widget.Toast +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.annotation.RequiresApi +import androidx.core.view.WindowCompat +import androidx.fragment.app.FragmentActivity +import coil.Coil +import coil.ImageLoader +import coil.disk.DiskCache +import com.hegocre.nextcloudpasswords.BuildConfig +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.api.ApiController +import com.hegocre.nextcloudpasswords.data.user.UserController +import com.hegocre.nextcloudpasswords.services.autofill.AutofillHelper +import com.hegocre.nextcloudpasswords.services.autofill.NCPAutofillService +import com.hegocre.nextcloudpasswords.ui.components.NCPAppLockWrapper +import com.hegocre.nextcloudpasswords.ui.components.NextcloudPasswordsApp +import com.hegocre.nextcloudpasswords.ui.viewmodels.PasswordsViewModel +import com.hegocre.nextcloudpasswords.utils.LogHelper +import com.hegocre.nextcloudpasswords.utils.OkHttpRequest +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.launch + +class MainActivity : FragmentActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + if (BuildConfig.DEBUG) LogHelper.getInstance() + + super.onCreate(savedInstanceState) + if (!UserController.getInstance(this).isLoggedIn) { + login() + return + } + + val passwordsViewModel by viewModels() + + val autofillRequested = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + intent.getBooleanExtra(NCPAutofillService.AUTOFILL_REQUEST, false) + } else { + false + } + + val autofillSearchQuery = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && autofillRequested) { + intent.getStringExtra(NCPAutofillService.AUTOFILL_SEARCH_HINT) ?: "" + } else { + "" + } + + val replyAutofill: ((String, String, String) -> Unit)? = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O + && autofillRequested + ) { + { label, username, password -> + val structure = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) + intent.getParcelableExtra( + AutofillManager.EXTRA_ASSIST_STRUCTURE, + AssistStructure::class.java + ) + else + @Suppress("DEPRECATION") intent.getParcelableExtra(AutofillManager.EXTRA_ASSIST_STRUCTURE) + + if (structure == null) { + setResult(Activity.RESULT_CANCELED) + finish() + } else { + autofillReply(Triple(label, username, password), structure) + } + } + } else null + + + passwordsViewModel.clientDeauthorized.observe(this) { deauthorized -> + if (deauthorized) { + Toast.makeText(this, R.string.client_deauthorized_toast, Toast.LENGTH_LONG).show() + logOut() + } + } + + Coil.setImageLoader { + ImageLoader.Builder(this) + .okHttpClient { OkHttpRequest.getInstance().client } + .diskCache { + DiskCache.Builder() + .directory(this.cacheDir.resolve("image_cache")) + .build() + }.build() + } + + WindowCompat.setDecorFitsSystemWindows(window, false) + + setContent { + NCPAppLockWrapper { + NextcloudPasswordsApp( + passwordsViewModel = passwordsViewModel, + onLogOut = { logOut() }, + replyAutofill = replyAutofill, + isAutofillRequest = autofillRequested, + defaultSearchQuery = autofillSearchQuery + ) + } + } + } + + private fun logOut() { + val logOutJob = SupervisorJob() + val logOutScope = CoroutineScope(Dispatchers.IO + logOutJob) + logOutScope.launch { + ApiController.getInstance(this@MainActivity).closeSession() + UserController.getInstance(this@MainActivity).logOut() + triggerRebirth() + } + } + + private fun triggerRebirth() { + val intent = packageManager.getLaunchIntentForPackage(packageName) + val componentName = intent?.component + val mainIntent = Intent.makeRestartActivityTask(componentName) + startActivity(mainIntent) + Runtime.getRuntime().exit(0) + } + + private fun login() { + val intent = Intent("com.hegocre.nextcloudpasswords.action.login") + .setPackage(packageName) + startActivity(intent) + finish() + } + + @RequiresApi(Build.VERSION_CODES.O) + private fun autofillReply( + password: Triple, + structure: AssistStructure + ) { + val dataset = AutofillHelper.buildDataset(this, password, structure, null) + + val replyIntent = Intent().apply { + putExtra(AutofillManager.EXTRA_AUTHENTICATION_RESULT, dataset) + } + + setResult(Activity.RESULT_OK, replyIntent) + + finish() + } +} + diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/SettingsActivity.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/SettingsActivity.kt new file mode 100644 index 0000000..6d39771 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/SettingsActivity.kt @@ -0,0 +1,25 @@ +package com.hegocre.nextcloudpasswords.ui.activities + +import android.os.Bundle +import androidx.activity.compose.setContent +import androidx.core.view.WindowCompat +import androidx.fragment.app.FragmentActivity +import com.hegocre.nextcloudpasswords.ui.components.NCPAppLockWrapper +import com.hegocre.nextcloudpasswords.ui.components.NCPSettingsScreen + +class SettingsActivity : FragmentActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + WindowCompat.setDecorFitsSystemWindows(window, false) + + setContent { + NCPAppLockWrapper { + NCPSettingsScreen( + onNavigationUp = { finish() } + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/WebLoginActivity.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/WebLoginActivity.kt new file mode 100644 index 0000000..cfa4738 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/activities/WebLoginActivity.kt @@ -0,0 +1,84 @@ +package com.hegocre.nextcloudpasswords.ui.activities + +import android.content.Intent +import android.os.Bundle +import android.webkit.CookieManager +import android.webkit.WebStorage +import android.webkit.WebView +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.core.view.WindowCompat +import com.hegocre.nextcloudpasswords.data.user.UserController +import com.hegocre.nextcloudpasswords.ui.components.NCPWebLoginScreen +import java.net.URLDecoder +import java.nio.charset.StandardCharsets + +class WebLoginActivity : ComponentActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + WindowCompat.setDecorFitsSystemWindows(window, false) + + val loginUrl = intent.getStringExtra("login_url")?.let { + var url = it + if (it.last() != '/') url += '/' + "${url}index.php/login/flow" + } ?: "" + + setContent { + NCPWebLoginScreen( + onLoginUrl = { url -> processCredentials(url) }, + url = loginUrl + ) + } + } + + private fun processCredentials(url: String) { + val uri = URLDecoder.decode(url, StandardCharsets.UTF_8.toString()) + val match = CRED_REGEX_1.matchEntire(uri)?.groups + + val (user, password, server) = if (match != null) { + listOf(match[2]?.value, match[3]?.value, match[1]?.value) + } else { + val match2 = CRED_REGEX_2.matchEntire(uri)?.groups + listOf(match2?.get(1)?.value, match2?.get(2)?.value, match2?.get(3)?.value) + } + + val intent = Intent() + if (user != null && password != null && server != null) { + UserController.getInstance(this).logIn( + server, + user, + password + ) + intent.putExtra("loggedIn", true) + setResult(RESULT_OK, intent) + } else { + intent.putExtra("loggedIn", false) + setResult(RESULT_CANCELED, intent) + } + + finish() + } + + override fun onDestroy() { + WebStorage.getInstance().deleteAllData() + + // Clear all the cookies + CookieManager.getInstance().removeAllCookies(null) + CookieManager.getInstance().flush() + + val webView = WebView(this) + webView.clearCache(true) + webView.clearFormData() + webView.clearHistory() + webView.clearSslPreferences() + + super.onDestroy() + } + + companion object { + private val CRED_REGEX_1 = "nc:.*server:(.*)&user:(.*)&password:(.*)".toRegex() + private val CRED_REGEX_2 = "nc:.*user:(.*)&password:(.*)&server:(.*)".toRegex() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/CommonComposables.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/CommonComposables.kt new file mode 100644 index 0000000..d75a466 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/CommonComposables.kt @@ -0,0 +1,137 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.OutlinedTextFieldDefaults +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.InterceptPlatformTextInput +import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme +import kotlinx.coroutines.awaitCancellation + +@Composable +fun OutlinedTextFieldWithCaption( + text: String, + onValueChange: (String) -> Unit, + modifier: Modifier = Modifier, + label: String = "", + captionText: String = "", + errorText: String = "", + visualTransformation: VisualTransformation = VisualTransformation.None, + keyboardType: KeyboardType = KeyboardType.Text, + trailingIcon: @Composable (() -> Unit)? = null, + onDone: () -> Unit = {} +) { + val isError by remember { derivedStateOf { errorText.isNotBlank() } } + + val keyboardController = LocalSoftwareKeyboardController.current + + Column(modifier = modifier) { + OutlinedTextField( + modifier = Modifier.align(Alignment.CenterHorizontally), + value = text, + maxLines = 1, + singleLine = true, + onValueChange = onValueChange, + label = { Text(text = label) }, + keyboardOptions = KeyboardOptions.Default.copy( + imeAction = ImeAction.Done, + keyboardType = keyboardType + ), + keyboardActions = KeyboardActions(onDone = { + onDone() + keyboardController?.hide() + }), + isError = isError, + visualTransformation = visualTransformation, + trailingIcon = trailingIcon + ) + + if (captionText.isNotBlank() || isError) { + Text( + text = if (!isError) + captionText + else + errorText, + style = if (!isError) + MaterialTheme.typography.labelSmall + else + MaterialTheme.typography.labelSmall.copy( + color = MaterialTheme.colorScheme.error + ), + modifier = Modifier.padding(start = 4.dp, top = 4.dp) + ) + } + } +} + +@OptIn(ExperimentalComposeUiApi::class) +@Composable +fun OutlinedClickableTextField( + value: String, + label: String, + onClick: () -> Unit, + modifier: Modifier = Modifier +) { + val interactionSource = remember { MutableInteractionSource() } + + Box { + InterceptPlatformTextInput(interceptor = { _, _ -> + awaitCancellation() + }) { + OutlinedTextField( + value = value, + onValueChange = { }, + label = { Text(text = label) }, + singleLine = true, + maxLines = 1, + modifier = modifier, + readOnly = true, + colors = OutlinedTextFieldDefaults.colors(cursorColor = Color.Transparent) + ) + } + Box( + modifier = Modifier + .matchParentSize() + .clickable( + onClick = onClick, + interactionSource = interactionSource, + indication = null + ), + + ) + } +} + +@Preview +@Composable +fun OutlinedTextFieldPreview() { + NextcloudPasswordsTheme { + OutlinedTextFieldWithCaption( + text = "Hello World", + onValueChange = {}, + captionText = "Caption here" + ) + } +} + diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/Dialogs.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/Dialogs.kt new file mode 100644 index 0000000..4ee7a61 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/Dialogs.kt @@ -0,0 +1,890 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable +import androidx.compose.foundation.gestures.detectTapGestures +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Folder +import androidx.compose.material.icons.filled.Visibility +import androidx.compose.material.icons.filled.VisibilityOff +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.Checkbox +import androidx.compose.material3.DropdownMenuItem +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ExposedDropdownMenuBox +import androidx.compose.material3.ExposedDropdownMenuDefaults +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.ListItem +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.MenuAnchorType +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.RadioButton +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.contentColorFor +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.autofill.AutofillType +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Dialog +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.api.FoldersApi +import com.hegocre.nextcloudpasswords.data.folder.Folder +import com.hegocre.nextcloudpasswords.data.password.CustomField +import com.hegocre.nextcloudpasswords.data.password.RequestedPassword +import com.hegocre.nextcloudpasswords.ui.theme.ContentAlpha +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme +import com.hegocre.nextcloudpasswords.utils.PreferencesManager +import com.hegocre.nextcloudpasswords.utils.autofill +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.job +import kotlinx.coroutines.launch + +@OptIn(ExperimentalComposeUiApi::class) +@Composable +fun MasterPasswordDialog( + masterPassword: String, + setMasterPassword: (String) -> Unit, + savePassword: Boolean, + setSavePassword: (Boolean) -> Unit, + onOkClick: () -> Unit, + errorText: String = "", + onDismissRequest: (() -> Unit)? = null +) { + val requester = remember { FocusRequester() } + + var showPassword by rememberSaveable { mutableStateOf(false) } + Dialog( + onDismissRequest = { onDismissRequest?.invoke() }, + ) { + Surface( + color = MaterialTheme.colorScheme.surface, + contentColor = contentColorFor(backgroundColor = MaterialTheme.colorScheme.surface), + shape = MaterialTheme.shapes.extraLarge, + tonalElevation = 6.dp + ) { + Column(modifier = Modifier.padding(24.dp)) { + LaunchedEffect(key1 = Unit) { + coroutineContext.job.invokeOnCompletion { + if (it?.cause == null) { + requester.requestFocus() + } + } + } + + OutlinedTextFieldWithCaption( + text = masterPassword, + onValueChange = setMasterPassword, + visualTransformation = if (showPassword) + VisualTransformation.None else PasswordVisualTransformation(), + keyboardType = KeyboardType.Password, + label = stringResource(R.string.dialog_master_password_title), + trailingIcon = { + IconButton(onClick = { showPassword = !showPassword }) { + Icon( + imageVector = if (showPassword) + Icons.Filled.VisibilityOff else Icons.Filled.Visibility, + contentDescription = stringResource(R.string.text_input_show_password_toggle) + ) + } + }, + errorText = errorText, + modifier = Modifier + .focusRequester(requester) + .autofill( + autofillTypes = listOf(AutofillType.Password), + onFill = setMasterPassword + ) + ) + + CompositionLocalProvider( + LocalContentColor provides LocalContentColor.current.copy(alpha = ContentAlpha.medium) + ) { + Row { + Checkbox( + checked = savePassword, + onCheckedChange = setSavePassword, + modifier = Modifier.align(Alignment.CenterVertically) + ) + Text( + text = "Save password", + modifier = Modifier + .align(Alignment.CenterVertically) + .pointerInput(Unit) { + detectTapGestures { + setSavePassword(!savePassword) + } + }, + style = MaterialTheme.typography.bodySmall + ) + } + } + + TextButton( + onClick = onOkClick, + modifier = Modifier.align(Alignment.End) + ) { + Text(text = stringResource(android.R.string.ok)) + } + } + } + } +} + +@Composable +fun LogOutDialog( + onDismissRequest: (() -> Unit)? = null, + onConfirmButton: () -> Unit +) { + AlertDialog( + onDismissRequest = { onDismissRequest?.invoke() }, + title = { Text(text = stringResource(R.string.action_log_out)) }, + text = { Text(text = stringResource(R.string.dialog_log_out_text)) }, + confirmButton = { + TextButton( + onClick = { + onConfirmButton() + onDismissRequest?.invoke() + } + ) { + Text(text = stringResource(R.string.action_log_out)) + } + }, + dismissButton = { + TextButton(onClick = { onDismissRequest?.invoke() }) { + Text(text = stringResource(id = android.R.string.cancel)) + } + } + ) +} + +@Composable +fun DeleteElementDialog( + onDismissRequest: (() -> Unit)? = null, + onConfirmButton: () -> Unit +) { + AlertDialog( + onDismissRequest = { onDismissRequest?.invoke() }, + title = { Text(text = stringResource(R.string.action_delete)) }, + text = { Text(text = stringResource(R.string.dialog_delete_element_text)) }, + confirmButton = { + TextButton( + onClick = { + onConfirmButton() + onDismissRequest?.invoke() + } + ) { + Text(text = stringResource(R.string.action_delete)) + } + }, + dismissButton = { + TextButton(onClick = { onDismissRequest?.invoke() }) { + Text(text = stringResource(id = android.R.string.cancel)) + } + } + ) +} + +@Composable +fun DiscardChangesDialog( + onDismissRequest: (() -> Unit)? = null, + onConfirmButton: () -> Unit +) { + AlertDialog( + onDismissRequest = { onDismissRequest?.invoke() }, + title = { Text(text = stringResource(R.string.action_discard)) }, + text = { Text(text = stringResource(R.string.dialog_discard_changes_text)) }, + confirmButton = { + TextButton( + onClick = { + onConfirmButton() + onDismissRequest?.invoke() + } + ) { + Text(text = stringResource(R.string.action_discard)) + } + }, + dismissButton = { + TextButton(onClick = { onDismissRequest?.invoke() }) { + Text(text = stringResource(id = android.R.string.cancel)) + } + } + ) +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun AddCustomFieldDialog( + onAddClick: (String, String) -> Unit, + onDismissRequest: (() -> Unit)? = null +) { + val types = mapOf( + CustomField.TYPE_TEXT to stringResource(id = R.string.custom_field_type_text), + CustomField.TYPE_EMAIL to stringResource(id = R.string.custom_field_type_email), + CustomField.TYPE_URL to stringResource(id = R.string.custom_field_type_url), + CustomField.TYPE_SECRET to stringResource(id = R.string.custom_field_type_secret) + ) + + val (type, setType) = remember { mutableStateOf(CustomField.TYPE_TEXT) } + val (label, setLabel) = remember { mutableStateOf("") } + + var typeMenuExpanded by remember { mutableStateOf(false) } + + var showEmptyError by rememberSaveable { + mutableStateOf(false) + } + + Dialog( + onDismissRequest = { onDismissRequest?.invoke() }, + ) { + Surface( + color = MaterialTheme.colorScheme.surface, + contentColor = contentColorFor(backgroundColor = MaterialTheme.colorScheme.surface), + shape = MaterialTheme.shapes.extraLarge, + tonalElevation = 6.dp, + ) { + Column(modifier = Modifier.padding(all = 24.dp)) { + Text( + text = stringResource(id = R.string.action_add_custom_field), + style = MaterialTheme.typography.headlineSmall, + modifier = Modifier.padding(bottom = 16.dp) + ) + + Column( + modifier = Modifier + .weight(1f, fill = false) + .verticalScroll( + rememberScrollState() + ) + ) { + ExposedDropdownMenuBox( + expanded = typeMenuExpanded, + onExpandedChange = { typeMenuExpanded = !typeMenuExpanded } + ) { + OutlinedTextField( + modifier = Modifier.menuAnchor(MenuAnchorType.PrimaryNotEditable), + value = types[type] ?: "", + onValueChange = {}, + readOnly = true, + trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = typeMenuExpanded) }, + label = { Text(text = stringResource(id = R.string.custom_field_type)) }, + colors = ExposedDropdownMenuDefaults.outlinedTextFieldColors() + ) + + ExposedDropdownMenu( + expanded = typeMenuExpanded, + onDismissRequest = { typeMenuExpanded = false } + ) { + types.forEach { type -> + DropdownMenuItem( + text = { Text(text = type.value) }, + onClick = { + setType(type.key) + typeMenuExpanded = false + }, + contentPadding = ExposedDropdownMenuDefaults.ItemContentPadding + ) + } + } + } + + OutlinedTextField( + modifier = Modifier.padding(bottom = 16.dp, top = 8.dp), + value = label, + onValueChange = setLabel, + singleLine = true, + maxLines = 1, + label = { Text(text = stringResource(id = R.string.custom_field_label)) }, + isError = showEmptyError && label.isBlank(), + supportingText = if (showEmptyError && label.isBlank()) { + { + Text(text = stringResource(id = R.string.error_field_cannot_be_empty)) + } + } else null + ) + } + + + TextButton( + onClick = { + if (label.isBlank()) { + showEmptyError = true + } else { + onAddClick(type, label) + } + }, + modifier = Modifier + .align(Alignment.End) + .padding(horizontal = 0.dp) + ) { + Text(text = stringResource(android.R.string.ok)) + } + } + } + } +} + +@Composable +fun SelectFolderDialog( + folders: List, + currentFolder: String, + onSelectClick: (String) -> Unit, + onDismissRequest: (() -> Unit)? = null +) { + val (selectedFolderId, setSelectedFolderId) = remember { mutableStateOf(currentFolder) } + val filteredFolders = remember(folders, selectedFolderId) { + folders.filter { + it.parent == selectedFolderId + } + } + val selectedFolder = remember(folders, selectedFolderId) { + folders.firstOrNull { it.id == selectedFolderId } + } + val parentFolder = remember(selectedFolder) { + folders.firstOrNull { it.id == selectedFolder?.parent } + } + + Dialog( + onDismissRequest = { onDismissRequest?.invoke() }, + ) { + Surface( + color = MaterialTheme.colorScheme.surface, + contentColor = contentColorFor(backgroundColor = MaterialTheme.colorScheme.surface), + shape = MaterialTheme.shapes.extraLarge, + tonalElevation = 6.dp, + ) { + Column(modifier = Modifier.padding(vertical = 24.dp)) { + Text( + text = if (selectedFolderId == FoldersApi.DEFAULT_FOLDER_UUID) { + stringResource(id = R.string.top_level_folder_name) + } else { + selectedFolder?.label ?: stringResource(id = R.string.top_level_folder_name) + }, + style = MaterialTheme.typography.headlineSmall, + modifier = Modifier + .padding(bottom = 16.dp) + .padding(horizontal = 24.dp) + ) + + Column( + modifier = Modifier + .weight(1f, fill = false) + ) { + LazyColumn( + modifier = Modifier.fillMaxWidth(), + ) { + if (selectedFolderId != FoldersApi.DEFAULT_FOLDER_UUID) { + item(key = "parent_${parentFolder?.id ?: FoldersApi.DEFAULT_FOLDER_UUID}") { + ListItem( + leadingContent = { + Image( + imageVector = Icons.Filled.Folder, + contentDescription = stringResource(R.string.content_description_folder_icon), + colorFilter = ColorFilter.tint( + MaterialTheme.colorScheme.onSurface.copy( + alpha = ContentAlpha.medium + ) + ), + modifier = Modifier + .size(45.dp) + .padding(8.dp) + ) + }, + headlineContent = { + Text(text = "..") + }, + modifier = Modifier.clickable { + setSelectedFolderId( + parentFolder?.id ?: FoldersApi.DEFAULT_FOLDER_UUID + ) + } + ) + } + } + + items(items = filteredFolders, key = { folder -> folder.id }) { folder -> + FolderRow( + folder = folder, + onFolderClick = { + setSelectedFolderId(folder.id) + }, + modifier = Modifier + ) + } + } + } + + TextButton( + onClick = { + onSelectClick(selectedFolderId) + }, + modifier = Modifier + .align(Alignment.End) + .padding(horizontal = 24.dp) + ) { + Text(text = stringResource(R.string.action_select)) + } + } + } + } +} + +@Composable +fun AddElementDialog( + onPasswordAdd: () -> Unit, + onFolderAdd: () -> Unit, + onDismissRequest: (() -> Unit)? = null +) { + Dialog( + onDismissRequest = { onDismissRequest?.invoke() }, + ) { + Surface( + color = MaterialTheme.colorScheme.surface, + contentColor = contentColorFor(backgroundColor = MaterialTheme.colorScheme.surface), + shape = MaterialTheme.shapes.extraLarge, + tonalElevation = 6.dp, + ) { + Column(modifier = Modifier.padding(vertical = 24.dp)) { + Text( + text = stringResource(id = R.string.action_create_element), + style = MaterialTheme.typography.headlineSmall, + modifier = Modifier + .padding(bottom = 16.dp) + .padding(horizontal = 24.dp) + ) + + ListItem( + headlineContent = { + Text(text = stringResource(id = R.string.password)) + }, + modifier = Modifier + .clickable(onClick = onPasswordAdd) + .padding(horizontal = 8.dp) + ) + + ListItem( + headlineContent = { + Text(text = stringResource(id = R.string.folder)) + }, + modifier = Modifier + .clickable(onClick = onFolderAdd) + .padding(horizontal = 8.dp) + ) + } + } + } +} + +@Composable +fun InputPasscodeDialog( + title: String, + onInputPasscode: (String) -> Unit, + onDismissRequest: (() -> Unit)? = null +) { + val requester = remember { FocusRequester() } + + var showPasscode by rememberSaveable { mutableStateOf(false) } + val (passcode, setPasscode) = remember { mutableStateOf("") } + + var showEmptyError by rememberSaveable { + mutableStateOf(false) + } + + Dialog( + onDismissRequest = { onDismissRequest?.invoke() }, + ) { + Surface( + color = MaterialTheme.colorScheme.surface, + contentColor = contentColorFor(backgroundColor = MaterialTheme.colorScheme.surface), + shape = MaterialTheme.shapes.extraLarge, + tonalElevation = 6.dp, + ) { + Column(modifier = Modifier.padding(all = 24.dp)) { + Text( + text = title, + style = MaterialTheme.typography.headlineSmall, + modifier = Modifier.padding(bottom = 16.dp) + ) + + LaunchedEffect(key1 = Unit) { + coroutineContext.job.invokeOnCompletion { + if (it?.cause == null) { + requester.requestFocus() + } + } + } + + OutlinedTextField( + modifier = Modifier + .padding(bottom = 16.dp, top = 8.dp) + .focusRequester(requester), + value = passcode, + onValueChange = { newPasscode -> + if (newPasscode.length <= 16 && + (newPasscode.toIntOrNull() != null || newPasscode.isEmpty()) + ) { + setPasscode(newPasscode) + } + }, + singleLine = true, + maxLines = 1, + label = { Text(text = stringResource(id = R.string.passcode)) }, + isError = showEmptyError && passcode.isBlank(), + keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Number), + trailingIcon = { + IconButton(onClick = { showPasscode = !showPasscode }) { + Icon( + imageVector = if (showPasscode) + Icons.Filled.VisibilityOff else Icons.Filled.Visibility, + contentDescription = stringResource(R.string.text_input_show_password_toggle) + ) + } + }, + visualTransformation = if (showPasscode) + VisualTransformation.None else PasswordVisualTransformation(), + ) + + + TextButton( + onClick = { + if (passcode.length < 4 || passcode.toIntOrNull() == null) { + showEmptyError = true + } else { + onInputPasscode(passcode) + } + }, + modifier = Modifier + .align(Alignment.End) + .padding(horizontal = 0.dp) + ) { + Text(text = stringResource(android.R.string.ok)) + } + } + } + } +} + +@Composable +fun ListPreferenceDialog( + title: (@Composable () -> Unit), + options: Map, + selectedOption: String, + onSelectOption: (String) -> Unit, + onDismissRequest: (() -> Unit)? = null +) { + Dialog( + onDismissRequest = { onDismissRequest?.invoke() }, + ) { + Surface( + color = MaterialTheme.colorScheme.surface, + contentColor = contentColorFor(backgroundColor = MaterialTheme.colorScheme.surface), + shape = MaterialTheme.shapes.extraLarge, + tonalElevation = 6.dp, + ) { + Column(modifier = Modifier.padding(vertical = 24.dp)) { + Box( + modifier = Modifier + .padding(bottom = 16.dp) + .padding(horizontal = 24.dp) + ) { + CompositionLocalProvider( + LocalTextStyle provides MaterialTheme.typography.headlineSmall + ) { + title() + } + } + + LazyColumn( + modifier = Modifier + .weight(1f, fill = false) + .fillMaxWidth() + ) { + items(items = options.keys.toList(), key = { it }) { option -> + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .clickable { + onSelectOption(option) + } + .padding(vertical = 4.dp, horizontal = 12.dp) + ) { + RadioButton( + selected = option == selectedOption, + onClick = { onSelectOption(option) } + ) + Spacer(modifier = Modifier.width(4.dp)) + Text(text = options.getOrDefault(option, "")) + } + } + } + } + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun PasswordGenerationDialog( + onGenerate: (Int, Boolean, Boolean) -> Unit, + onDismissRequest: (() -> Unit)? = null +) { + val strengthValues = mapOf( + RequestedPassword.STRENGTH_ULTRA to stringResource(id = R.string.password_strength_ultra), + RequestedPassword.STRENGTH_HIGH to stringResource(id = R.string.password_strength_high), + RequestedPassword.STRENGTH_MEDIUM to stringResource(id = R.string.password_strength_medium), + RequestedPassword.STRENGTH_STANDARD to stringResource(id = R.string.password_strength_standard), + RequestedPassword.STRENGTH_LOW to stringResource(id = R.string.password_strength_low) + ) + + val (strength, setStrength) = remember { mutableIntStateOf(RequestedPassword.STRENGTH_STANDARD) } + val (includeDigits, setIncludeDigits) = remember { mutableStateOf(true) } + val (includeSymbols, setIncludeSymbols) = remember { mutableStateOf(true) } + + val context = LocalContext.current + LaunchedEffect(Unit) { + val lastValues = PreferencesManager.getInstance(context) + .getPasswordGenerationOptions()?.split(";") ?: listOf() + setStrength(lastValues.getOrNull(0)?.toIntOrNull() ?: strength) + setIncludeDigits(lastValues.getOrNull(1)?.toBooleanStrictOrNull() ?: includeDigits) + setIncludeSymbols(lastValues.getOrNull(2)?.toBooleanStrictOrNull() ?: includeSymbols) + } + + var typeMenuExpanded by remember { mutableStateOf(false) } + + Dialog( + onDismissRequest = { onDismissRequest?.invoke() }, + ) { + Surface( + color = MaterialTheme.colorScheme.surface, + contentColor = contentColorFor(backgroundColor = MaterialTheme.colorScheme.surface), + shape = MaterialTheme.shapes.extraLarge, + tonalElevation = 6.dp, + ) { + Column(modifier = Modifier.padding(vertical = 24.dp)) { + Box( + modifier = Modifier + .padding(bottom = 16.dp) + .padding(horizontal = 24.dp) + ) { + Text( + text = stringResource(id = R.string.action_generate_password), + style = MaterialTheme.typography.headlineSmall + ) + } + + Column( + modifier = Modifier + .weight(1f, fill = false) + .fillMaxWidth() + ) { + ExposedDropdownMenuBox( + expanded = typeMenuExpanded, + onExpandedChange = { typeMenuExpanded = !typeMenuExpanded }, + modifier = Modifier + .padding(horizontal = 24.dp) + .padding(bottom = 8.dp) + ) { + OutlinedTextField( + modifier = Modifier.menuAnchor(MenuAnchorType.PrimaryNotEditable), + value = strengthValues[strength] ?: "", + onValueChange = {}, + readOnly = true, + trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon(expanded = typeMenuExpanded) }, + label = { Text(text = stringResource(id = R.string.password_generation_strength)) }, + colors = ExposedDropdownMenuDefaults.outlinedTextFieldColors() + ) + + ExposedDropdownMenu( + expanded = typeMenuExpanded, + onDismissRequest = { typeMenuExpanded = false } + ) { + strengthValues.forEach { strengthValue -> + DropdownMenuItem( + text = { Text(text = strengthValue.value) }, + onClick = { + setStrength(strengthValue.key) + typeMenuExpanded = false + }, + contentPadding = ExposedDropdownMenuDefaults.ItemContentPadding + ) + } + } + } + + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .clickable { + setIncludeDigits(!includeDigits) + } + .padding(vertical = 4.dp, horizontal = 12.dp) + ) { + Checkbox( + checked = includeDigits, + onCheckedChange = setIncludeDigits + ) + Spacer(modifier = Modifier.width(4.dp)) + Text(text = stringResource(id = R.string.password_generation_include_numbers)) + } + + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .fillMaxWidth() + .clickable { + setIncludeSymbols(!includeSymbols) + } + .padding(vertical = 4.dp, horizontal = 12.dp) + ) { + Checkbox( + checked = includeSymbols, + onCheckedChange = setIncludeSymbols + ) + Spacer(modifier = Modifier.width(4.dp)) + Text(text = stringResource(id = R.string.password_generation_include_special_characters)) + } + } + + val coroutineScope = rememberCoroutineScope() + TextButton( + onClick = { + onGenerate(strength, includeDigits, includeSymbols) + coroutineScope.launch(Dispatchers.IO) { + PreferencesManager.getInstance(context).setPasswordGenerationOptions( + "$strength;$includeDigits;$includeSymbols" + ) + } + }, + modifier = Modifier + .align(Alignment.End) + .padding(horizontal = 24.dp) + ) { + Text(text = stringResource(android.R.string.ok)) + } + } + } + } +} + +@Preview +@Composable +fun MasterPasswordDialogPreview() { + NextcloudPasswordsTheme { + MasterPasswordDialog( + masterPassword = "", + setMasterPassword = {}, + savePassword = false, + setSavePassword = {}, + onOkClick = {} + ) + } +} + +@Preview +@Composable +fun LogOutDialogPreview() { + NextcloudPasswordsTheme { + LogOutDialog { + + } + } +} + +@Preview +@Composable +fun DeleteDialogPreview() { + NextcloudPasswordsTheme { + DeleteElementDialog { + + } + } +} + +@Preview +@Composable +fun AddFieldDialogPreview() { + NextcloudPasswordsTheme { + AddCustomFieldDialog(onAddClick = { _, _ -> }) + } +} + +@Preview +@Composable +fun AddElementDialogPreview() { + NextcloudPasswordsTheme { + AddElementDialog({}, {}) + } +} + +@Preview +@Composable +fun InputPasscodePreview() { + NextcloudPasswordsTheme { + InputPasscodeDialog(title = "Input passcode", onInputPasscode = {}) + } +} + +@Preview +@Composable +fun ListPreferenceDialogPreview() { + NextcloudPasswordsTheme { + ListPreferenceDialog( + title = { Text("Language") }, + options = mapOf( + "ES" to "Spanish", + "EN" to "English", + "CA" to "Catalan" + ), + selectedOption = "CA", + onSelectOption = {} + ) + } +} + +@Preview +@Composable +fun GeneratePasswordDialogPreview() { + NextcloudPasswordsTheme { + PasswordGenerationDialog(onGenerate = { _, _, _ -> }) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/FolderEditView.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/FolderEditView.kt new file mode 100644 index 0000000..7016970 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/FolderEditView.kt @@ -0,0 +1,294 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import androidx.activity.compose.BackHandler +import androidx.activity.compose.LocalOnBackPressedDispatcherOwner +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.add +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.ime +import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsBottomHeight +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Star +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.saveable.Saver +import androidx.compose.runtime.saveable.listSaver +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.api.FoldersApi +import com.hegocre.nextcloudpasswords.data.folder.Folder +import com.hegocre.nextcloudpasswords.ui.theme.ContentAlpha +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme +import com.hegocre.nextcloudpasswords.ui.theme.favoriteColor +import kotlinx.coroutines.android.awaitFrame +import kotlinx.coroutines.launch + +class EditableFolderState(originalFolder: Folder?) { + var label by mutableStateOf(originalFolder?.label ?: "") + var parent by mutableStateOf(originalFolder?.parent ?: FoldersApi.DEFAULT_FOLDER_UUID) + var favorite by mutableStateOf(originalFolder?.favorite ?: false) + + fun isValid(): Boolean { + return label.isNotBlank() + } + + companion object { + val Saver: Saver = listSaver( + save = { + listOf( + it.label, it.parent, it.favorite.toString() + ) + }, + restore = { + EditableFolderState(null).apply { + label = it[0] + parent = it[1] + favorite = it[2].toBooleanStrictOrNull() ?: false + } + } + ) + } +} + +@Composable +fun rememberEditableFolderState(folder: Folder? = null): EditableFolderState = + rememberSaveable(folder, saver = EditableFolderState.Saver) { + EditableFolderState(folder) + } + +@Composable +fun EditableFolderView( + editableFolderState: EditableFolderState, + folders: List, + isUpdating: Boolean, + onSaveFolder: () -> Unit, + onDeleteFolder: (() -> Unit)? = null +) { + val coroutineScope = rememberCoroutineScope() + val onBackPressedDispatcher = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher + + var showDeleteDialog by rememberSaveable { + mutableStateOf(false) + } + var showFolderDialog by rememberSaveable { + mutableStateOf(false) + } + var showFieldErrors by rememberSaveable { + mutableStateOf(false) + } + var showDiscardDialog by rememberSaveable { + mutableStateOf(false) + } + var confirmedDiscard by rememberSaveable { + mutableStateOf(false) + } + + BackHandler (enabled = !confirmedDiscard) { + showDiscardDialog = true + } + + if (showDiscardDialog) { + DiscardChangesDialog( + onConfirmButton = { + confirmedDiscard = true + showDiscardDialog = false + coroutineScope.launch { + awaitFrame() + onBackPressedDispatcher?.onBackPressed() + confirmedDiscard = false + } + }, + onDismissRequest = { + showDiscardDialog = false + } + ) + } + + + LazyColumn { + item(key = "top_spacer") { Spacer(modifier = Modifier.width(16.dp)) } + + item(key = "favorite_button") { + Button( + onClick = { editableFolderState.favorite = !editableFolderState.favorite }, + modifier = Modifier + .padding(bottom = 16.dp) + .padding(horizontal = 16.dp), + colors = if (editableFolderState.favorite) ButtonDefaults.filledTonalButtonColors( + contentColor = MaterialTheme.colorScheme.onSurface, + containerColor = MaterialTheme.colorScheme.favoriteColor.copy(alpha = 0.3f) + ) + else ButtonDefaults.textButtonColors( + contentColor = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.80f), + containerColor = MaterialTheme.colorScheme.onSurface.copy(alpha = 0.12f) + ), + ) { + Icon( + imageVector = Icons.Default.Star, + contentDescription = stringResource(id = R.string.password_attr_favorite) + ) + Text( + text = stringResource(id = R.string.password_attr_favorite), + modifier = Modifier.padding(horizontal = 8.dp) + ) + } + } + + item(key = "folder_label") { + OutlinedTextField( + value = editableFolderState.label, + onValueChange = { newText -> editableFolderState.label = newText }, + label = { Text(text = stringResource(id = R.string.password_folder_attr_label)) }, + singleLine = true, + maxLines = 1, + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 16.dp) + .padding(horizontal = 16.dp), + isError = showFieldErrors && editableFolderState.label.isBlank(), + supportingText = if (showFieldErrors && editableFolderState.label.isBlank()) { + { + Text(text = stringResource(id = R.string.error_field_cannot_be_empty)) + } + } else null + ) + } + + item(key = "folder_parent") { + OutlinedClickableTextField( + value = if (editableFolderState.parent == FoldersApi.DEFAULT_FOLDER_UUID) { + stringResource(id = R.string.top_level_folder_name) + } else { + folders.firstOrNull { it.id == editableFolderState.parent }?.label + ?: stringResource(id = R.string.top_level_folder_name) + }, + label = stringResource(id = R.string.folder_attr_parent_folder), + onClick = { showFolderDialog = true }, + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 16.dp) + .padding(horizontal = 16.dp) + ) + } + + item(key = "folder_save") { + Button( + onClick = { + if (!editableFolderState.isValid()) { + showFieldErrors = true + } else { + onSaveFolder() + } + }, + content = { + if (isUpdating) { + CircularProgressIndicator( + color = MaterialTheme.colorScheme.primary, + strokeWidth = 2.dp, + modifier = Modifier.size(16.dp) + ) + } else { + Text(text = stringResource(id = R.string.action_save)) + } + }, + enabled = !isUpdating, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp) + ) + } + + if (onDeleteFolder != null) { + item(key = "folder_delete") { + if (!isUpdating) { + Button( + onClick = { showDeleteDialog = true }, + colors = ButtonDefaults.outlinedButtonColors( + contentColor = MaterialTheme.colorScheme.error, + disabledContentColor = MaterialTheme.colorScheme.error.copy(alpha = ContentAlpha.medium) + ), + content = { + Text(text = stringResource(id = R.string.action_delete_folder)) + }, + modifier = Modifier + .fillMaxWidth() + .padding(top = 8.dp) + .padding(horizontal = 16.dp) + ) + } + } + } + + item(key = "bottom_spacer") { + Spacer( + modifier = Modifier + .windowInsetsBottomHeight(WindowInsets.ime.add(WindowInsets.navigationBars)) + .padding(bottom = 16.dp) + ) + } + + } + + if (showDeleteDialog) { + DeleteElementDialog( + onConfirmButton = { + showDeleteDialog = false + onDeleteFolder?.invoke() + }, + onDismissRequest = { + showDeleteDialog = false + } + ) + } + + if (showFolderDialog) { + SelectFolderDialog( + folders = folders, + currentFolder = editableFolderState.parent, + onSelectClick = { folder -> + editableFolderState.parent = folder + showFolderDialog = false + }, + onDismissRequest = { + showFolderDialog = false + } + ) + } +} + +@Preview +@Composable +fun FolderEditPreview() { + NextcloudPasswordsTheme { + Surface { + EditableFolderView( + editableFolderState = rememberEditableFolderState(), + folders = listOf(), + isUpdating = false, + onSaveFolder = { }, + onDeleteFolder = { }, + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/ItemList.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/ItemList.kt new file mode 100644 index 0000000..a14b449 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/ItemList.kt @@ -0,0 +1,407 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.tween +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.Image +import androidx.compose.foundation.combinedClickable +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyListState +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Folder +import androidx.compose.material.icons.twotone.Security +import androidx.compose.material3.Icon +import androidx.compose.material3.ListItem +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawWithContent +import androidx.compose.ui.geometry.CornerRadius +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.data.folder.Folder +import com.hegocre.nextcloudpasswords.data.password.Password +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme +import com.hegocre.nextcloudpasswords.ui.theme.statusBreached +import com.hegocre.nextcloudpasswords.ui.theme.statusGood +import com.hegocre.nextcloudpasswords.ui.theme.statusWeak +import com.hegocre.nextcloudpasswords.utils.PreferencesManager +import kotlinx.coroutines.Dispatchers + +data class ListDecryptionState( + val decryptedList: List? = null, + val isLoading: Boolean = false +) + +@Composable +fun MixedLazyColumn( + passwords: List? = null, + folders: List? = null, + onPasswordClick: ((Password) -> Unit)? = null, + onPasswordLongClick: ((Password) -> Unit)? = null, + onFolderClick: ((Folder) -> Unit)? = null, + onFolderLongClick: ((Folder) -> Unit)? = null, + getPainterForUrl: (@Composable (String) -> Painter)? = null +) { + val context = LocalContext.current + val shouldShowIcon by PreferencesManager.getInstance(context).getShowIcons() + .collectAsState(initial = false, context = Dispatchers.IO) + val listState = rememberLazyListState() + val knobRatio by remember { + derivedStateOf { (10f / ((passwords?.size ?: 0) + (folders?.size ?: 0))).coerceIn(0f, 1f) } + } + LazyColumn( + modifier = Modifier + .fillMaxSize() + .then( + if (knobRatio == 1f) Modifier else Modifier.scrollbar( + state = listState, + horizontal = false, + visibleAlpha = 0.5f, + fixedKnobRatio = knobRatio, + knobCornerRadius = 0.dp + ) + ), + state = listState + ) { + folders?.let { + items(items = it, key = { folder -> folder.id }) { folder -> + FolderRow( + folder = folder, + onFolderClick = onFolderClick, + onFolderLongClick = onFolderLongClick + ) + } + } + passwords?.let { + items(items = it, key = { password -> password.id }) { folder -> + PasswordRow( + password = folder, + shouldShowIcon = shouldShowIcon, + onPasswordClick = onPasswordClick, + onPasswordLongClick = onPasswordLongClick, + getPainterForUrl = getPainterForUrl + ) + } + } + } +} + +@OptIn(ExperimentalFoundationApi::class) +@Composable +fun PasswordRow( + password: Password, + modifier: Modifier = Modifier, + shouldShowIcon: Boolean = false, + onPasswordClick: ((Password) -> Unit)? = null, + onPasswordLongClick: ((Password) -> Unit)? = null, + getPainterForUrl: (@Composable (String) -> Painter)? = null +) { + ListItem( + modifier = modifier + .combinedClickable( + onClick = { + onPasswordClick?.invoke(password) + }, + onLongClick = { + onPasswordLongClick?.invoke(password) + } + ), + headlineContent = { + Text( + text = password.label, + ) + }, + supportingContent = if (password.username.isNotBlank()) { + { + Text( + text = password.username, + ) + } + } else null, + trailingContent = if (password.status != 3) { + { + Icon( + imageVector = Icons.TwoTone.Security, + contentDescription = stringResource(id = R.string.password_attr_security_status), + modifier = Modifier + .size(40.dp) + .padding(all = 8.dp), + tint = (when (password.status) { + 0 -> MaterialTheme.colorScheme.statusGood + 1 -> MaterialTheme.colorScheme.statusWeak + 2 -> MaterialTheme.colorScheme.statusBreached + else -> Color.Unspecified + }) + ) + } + } else null, + leadingContent = if (shouldShowIcon) { + { + getPainterForUrl?.let { + Image( + painter = getPainterForUrl(password.url.ifBlank { password.label }), + modifier = Modifier + .size(45.dp) + .padding(all = 8.dp) + .clip(RoundedCornerShape(4.dp)), + contentDescription = stringResource(R.string.content_description_site_favicon) + ) + } + } + } else null, + ) +} + +@OptIn(ExperimentalFoundationApi::class) +@Composable +fun FolderRow( + folder: Folder, + modifier: Modifier = Modifier, + onFolderClick: ((Folder) -> Unit)? = null, + onFolderLongClick: ((Folder) -> Unit)? = null, +) { + ListItem( + leadingContent = { + Image( + imageVector = Icons.Filled.Folder, + contentDescription = stringResource(R.string.content_description_folder_icon), + colorFilter = ColorFilter.tint(MaterialTheme.colorScheme.primary), + modifier = Modifier + .size(45.dp) + .padding(8.dp) + ) + }, + headlineContent = { + Text(text = folder.label) + }, + modifier = modifier + .combinedClickable( + onClick = { + onFolderClick?.invoke(folder) + }, + onLongClick = { + onFolderLongClick?.invoke(folder) + } + ) + ) +} + +// Scrollbars added from https://stackoverflow.com/questions/66341823/jetpack-compose-scrollbars/71932181#71932181 +@Composable +fun Modifier.scrollbar( + state: LazyListState, + horizontal: Boolean, + alignEnd: Boolean = true, + thickness: Dp = 4.dp, + fixedKnobRatio: Float? = null, + knobCornerRadius: Dp = 4.dp, + trackCornerRadius: Dp = 2.dp, + knobColor: Color = MaterialTheme.colorScheme.onSurface, + padding: Dp = 0.dp, + visibleAlpha: Float = 1f, + hiddenAlpha: Float = 0f, + fadeInAnimationDurationMs: Int = 150, + fadeOutAnimationDurationMs: Int = 500, + fadeOutAnimationDelayMs: Int = 1000, +): Modifier { + check(thickness > 0.dp) { "Thickness must be a positive integer." } + check(fixedKnobRatio == null || fixedKnobRatio < 1f) { + "A fixed knob ratio must be smaller than 1." + } + check(knobCornerRadius >= 0.dp) { "Knob corner radius must be greater than or equal to 0." } + check(trackCornerRadius >= 0.dp) { "Track corner radius must be greater than or equal to 0." } + check(hiddenAlpha <= visibleAlpha) { "Hidden alpha cannot be greater than visible alpha." } + check(fadeInAnimationDurationMs >= 0) { + "Fade in animation duration must be greater than or equal to 0." + } + check(fadeOutAnimationDurationMs >= 0) { + "Fade out animation duration must be greater than or equal to 0." + } + check(fadeOutAnimationDelayMs >= 0) { + "Fade out animation delay must be greater than or equal to 0." + } + + val targetAlpha = + if (state.isScrollInProgress) { + visibleAlpha + } else { + hiddenAlpha + } + val animationDurationMs = + if (state.isScrollInProgress) { + fadeInAnimationDurationMs + } else { + fadeOutAnimationDurationMs + } + val animationDelayMs = + if (state.isScrollInProgress) { + 0 + } else { + fadeOutAnimationDelayMs + } + + val alpha by + animateFloatAsState( + targetValue = targetAlpha, + animationSpec = + tween(delayMillis = animationDelayMs, durationMillis = animationDurationMs), + label = "alpha" + ) + + return drawWithContent { + drawContent() + + state.layoutInfo.visibleItemsInfo.firstOrNull()?.let { firstVisibleItem -> + if (state.isScrollInProgress || alpha > 0f) { + // Size of the viewport, the entire size of the scrollable composable we are decorating with + // this scrollbar. + val viewportSize = + if (horizontal) { + size.width + } else { + size.height + } - padding.toPx() * 2 + + // The size of the first visible item. We use this to estimate how many items can fit in the + // viewport. Of course, this works perfectly when all items have the same size. When they + // don't, the scrollbar knob size will grow and shrink as we scroll. + val firstItemSize = firstVisibleItem.size + + // The *estimated* size of the entire scrollable composable, as if it's all on screen at + // once. It is estimated because it's possible that the size of the first visible item does + // not represent the size of other items. This will cause the scrollbar knob size to grow + // and shrink as we scroll, if the item sizes are not uniform. + val estimatedFullListSize = firstItemSize * state.layoutInfo.totalItemsCount + + // The difference in position between the first pixels visible in our viewport as we scroll + // and the top of the fully-populated scrollable composable, if it were to show all the + // items at once. At first, the value is 0 since we start all the way to the top (or start + // edge). As we scroll down (or towards the end), this number will grow. + val viewportOffsetInFullListSpace = + state.firstVisibleItemIndex * firstItemSize + state.firstVisibleItemScrollOffset + + // Where we should render the knob in our composable. + val knobPosition = + (viewportSize / estimatedFullListSize) * viewportOffsetInFullListSpace + padding.toPx() + // How large should the knob be. + val knobSize = + fixedKnobRatio?.let { it * viewportSize } + ?: ((viewportSize * viewportSize) / estimatedFullListSize) + + // Draw the knob + drawRoundRect( + color = knobColor, + topLeft = + when { + // When the scrollbar is horizontal and aligned to the bottom: + horizontal && alignEnd -> Offset( + knobPosition, + size.height - thickness.toPx() + ) + // When the scrollbar is horizontal and aligned to the top: + horizontal && !alignEnd -> Offset(knobPosition, 0f) + // When the scrollbar is vertical and aligned to the end: + alignEnd -> Offset(size.width - thickness.toPx(), knobPosition) + // When the scrollbar is vertical and aligned to the start: + else -> Offset(0f, knobPosition) + }, + size = + if (horizontal) { + Size(knobSize, thickness.toPx()) + } else { + Size(thickness.toPx(), knobSize) + }, + alpha = alpha, + cornerRadius = CornerRadius( + x = knobCornerRadius.toPx(), + y = knobCornerRadius.toPx() + ), + ) + } + } + } +} + +@Preview +@Composable +fun PasswordRowPreview() { + NextcloudPasswordsTheme { + PasswordRow( + password = Password( + id = "", + label = "Nextcloud", + username = "john_doe", + password = "secret_value", + url = "https://nextcloud.com/", + notes = "", + customFields = "", + status = 0, + statusCode = "GOOD", + hash = "", + folder = "", + revision = "", + share = null, + shared = false, + cseType = "", + cseKey = "", + sseType = "", + client = "", + hidden = false, + trashed = false, + favorite = true, + editable = true, + edited = 0, + created = 0, + updated = 0 + ), + shouldShowIcon = true + ) + } +} + +@Preview +@Composable +fun FolderRowPreview() { + NextcloudPasswordsTheme { + FolderRow( + folder = Folder( + id = "", + label = "Management", + parent = "00000000-0000-0000-0000-000000000000", + revision = "", + cseType = "", + cseKey = "", + sseType = "", + client = "", + hidden = false, + trashed = false, + favorite = false, + created = 0, + updated = 0, + edited = 0 + ) + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/LoginView.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/LoginView.kt new file mode 100644 index 0000000..7da3762 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/LoginView.kt @@ -0,0 +1,384 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import android.annotation.SuppressLint +import android.app.Activity +import android.content.Intent +import android.net.http.SslError +import android.view.View +import android.view.ViewGroup +import android.webkit.SslErrorHandler +import android.webkit.WebChromeClient +import android.webkit.WebResourceRequest +import android.webkit.WebView +import android.webkit.WebViewClient +import androidx.activity.compose.BackHandler +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.statusBars +import androidx.compose.foundation.layout.statusBarsPadding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsBottomHeight +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.Button +import androidx.compose.material3.Card +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LinearProgressIndicator +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.compose.ui.viewinterop.AndroidView +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme +import com.hegocre.nextcloudpasswords.utils.PreferencesManager + +@Composable +fun NCPLoginScreen( + loginIntent: Intent, + onLoginSuccess: () -> Unit, + onLoginFailed: () -> Unit +) { + NextcloudPasswordsTheme { + Scaffold( + topBar = { + Spacer( + modifier = Modifier + .statusBarsPadding() + .fillMaxWidth() + ) + }, + bottomBar = { + Spacer( + modifier = Modifier + .statusBarsPadding() + .fillMaxWidth() + ) + } + ) { innerPadding -> + LoginView( + modifier = Modifier + .padding(innerPadding) + .fillMaxSize(), + loginIntent = loginIntent, + onLoginSuccess = onLoginSuccess, + onLoginFailed = onLoginFailed + ) + } + } +} + +@Composable +fun LoginView( + modifier: Modifier = Modifier, + loginIntent: Intent, + onLoginSuccess: () -> Unit, + onLoginFailed: () -> Unit +) { + val launchLoginWebView = + rememberLauncherForActivityResult(contract = ActivityResultContracts.StartActivityForResult()) { result -> + if (result.resultCode == Activity.RESULT_OK) { + if (result.data?.getBooleanExtra("loggedIn", false) == true) { + onLoginSuccess() + } + } else if (result.resultCode == Activity.RESULT_CANCELED) { + if (result.data?.getBooleanExtra("loggedIn", false) == false) { + onLoginFailed() + } + } + } + + val (urlText, setUrlText) = remember { mutableStateOf("") } + var errorText by remember { mutableStateOf("") } + val errorMessages = listOf( + stringResource(R.string.error_url_cannot_be_empty), + stringResource(R.string.error_url_must_start_https) + ) + + Box( + modifier = modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ) { + Column( + horizontalAlignment = Alignment.CenterHorizontally, + modifier = Modifier.verticalScroll(rememberScrollState()) + ) { + LoginCard( + text = urlText, + onTextChange = setUrlText, + errorText = errorText, + onLoginButtonClick = { + when { + urlText.isBlank() -> { + errorText = errorMessages[0] + } + + urlText.startsWith("http://") -> { + errorText = errorMessages[1] + } + + else -> { + errorText = "" + + if (!urlText.startsWith("https://")) + setUrlText(String.format("https://%s", urlText)) + + loginIntent.putExtra( + "login_url", + if (urlText.startsWith("https://")) urlText else "https://$urlText" + ) + launchLoginWebView.launch(loginIntent) + } + } + } + ) + + Text( + text = "v${stringResource(id = R.string.version_name)} (${stringResource(id = R.string.version_code)})", + fontSize = 12.sp, + color = LocalContentColor.current.copy(alpha = 0.7f), + modifier = Modifier.padding(top = 4.dp) + ) + } + + } +} + +@Composable +fun LoginCard( + text: String, + onTextChange: (String) -> Unit, + errorText: String, + onLoginButtonClick: () -> Unit +) { + Card { + Column( + modifier = Modifier + .padding(all = 20.dp) + ) { + Image( + modifier = Modifier + .height(70.dp) + .width(70.dp) + .clip(CircleShape) + .align(Alignment.CenterHorizontally), + painter = painterResource(id = R.drawable.app_icon), + contentDescription = stringResource(id = R.string.app_name) + ) + + OutlinedTextFieldWithCaption( + text = text, + onValueChange = onTextChange, + modifier = Modifier + .padding(vertical = 8.dp), + label = stringResource(id = R.string.login_server_url), + captionText = "${stringResource(R.string.example)}: https://cloud.example.com/", + errorText = errorText, + onDone = onLoginButtonClick + ) + + Button( + modifier = Modifier.align(Alignment.End), + onClick = onLoginButtonClick + ) { + Text(text = stringResource(R.string.action_login)) + } + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@SuppressLint("SetJavaScriptEnabled") +@Composable +fun NCPWebLoginScreen( + onLoginUrl: (String) -> Unit, + modifier: Modifier = Modifier, + url: String = "" +) { + NextcloudPasswordsTheme { + val context = LocalContext.current + + var showTlsDialog by rememberSaveable { mutableStateOf(false) } + + var skipTlsValidation by rememberSaveable { mutableStateOf(false) } + + val (title, setTitle) = rememberSaveable { + mutableStateOf(url) + } + + BackHandler(enabled = skipTlsValidation) { + val intent = context.packageManager.getLaunchIntentForPackage(context.packageName) + val componentName = intent?.component + val mainIntent = Intent.makeRestartActivityTask(componentName) + context.startActivity(mainIntent) + Runtime.getRuntime().exit(0) + } + + val webViewClient = remember(skipTlsValidation) { + object : WebViewClient() { + override fun shouldOverrideUrlLoading( + view: WebView?, + request: WebResourceRequest? + ): Boolean { + request?.url.toString().let { url -> + setTitle(url) + if (url.startsWith("nc://")) { + //Login credentials captured, clear all login data + view?.clearCache(true) + view?.clearFormData() + view?.clearHistory() + view?.visibility = View.GONE + if (skipTlsValidation) { + PreferencesManager.getInstance(context) + .setSkipCertificateValidation(true) + } + onLoginUrl(url) + } else view?.loadUrl(url, mapOf("OCS-APIREQUEST" to "true")) + } + return false + } + + @SuppressLint("WebViewClientOnReceivedSslError") + override fun onReceivedSslError( + view: WebView?, + handler: SslErrorHandler?, + error: SslError? + ) { + if (skipTlsValidation) { + handler?.proceed() + } else { + showTlsDialog = true + super.onReceivedSslError(view, handler, error) + } + } + } + } + + val (loadingProgress, setLoadingProgress) = remember { mutableIntStateOf(0) } + + Scaffold( + modifier = modifier, + topBar = { + TopAppBar( + title = { + Text( + text = title, + maxLines = 1, + fontSize = 14.sp, + overflow = TextOverflow.Clip + ) + }, + windowInsets = WindowInsets.statusBars + ) + }, + bottomBar = { + Spacer(modifier = Modifier.windowInsetsBottomHeight(WindowInsets.navigationBars)) + }, + ) { paddingValues -> + Box(modifier = Modifier.padding(paddingValues)) { + AndroidView( + factory = { + WebView(it).apply { + layoutParams = ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ) + + val webChromeClient = object : WebChromeClient() { + override fun onProgressChanged(view: WebView?, newProgress: Int) { + setLoadingProgress(newProgress) + super.onProgressChanged(view, newProgress) + } + } + + this.webChromeClient = webChromeClient + + this.webViewClient = webViewClient + + settings.domStorageEnabled = true + settings.javaScriptEnabled = true + settings.userAgentString = it.getString(R.string.app_name) + + loadUrl(url, mapOf("OCS-APIREQUEST" to "true")) + } + }, + update = { + it.webViewClient = webViewClient + it.loadUrl(url, mapOf("OCS-APIREQUEST" to "true")) + }, + ) + if (loadingProgress < 100) { + LinearProgressIndicator( + progress = { (loadingProgress.toFloat() / 100) }, + modifier = Modifier.fillMaxWidth(), + ) + } + } + + if (showTlsDialog) { + AlertDialog( + onDismissRequest = { showTlsDialog = false }, + confirmButton = { + TextButton( + onClick = { + skipTlsValidation = true + showTlsDialog = false + } + ) { + Text(text = stringResource(id = android.R.string.ok)) + } + }, + dismissButton = { + TextButton( + onClick = { + showTlsDialog = false + } + ) { + Text(text = stringResource(id = android.R.string.cancel)) + } + }, + title = { Text(stringResource(id = R.string.dialog_invalid_certificate_title)) }, + text = { Text(text = stringResource(id = R.string.dialog_invalid_certificate_text)) } + ) + } + } + } +} + +@Preview(name = "Login card") +@Composable +fun PreviewCard() { + NextcloudPasswordsTheme { + LoginCard("", {}, "") {} + } +} diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPAboutScreen.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPAboutScreen.kt new file mode 100644 index 0000000..f63c267 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPAboutScreen.kt @@ -0,0 +1,439 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import androidx.compose.foundation.ExperimentalFoundationApi +import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable +import androidx.compose.foundation.combinedClickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.statusBars +import androidx.compose.foundation.layout.systemBars +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material.icons.outlined.Campaign +import androidx.compose.material.icons.outlined.Code +import androidx.compose.material.icons.outlined.Description +import androidx.compose.material.icons.outlined.Handshake +import androidx.compose.material.icons.outlined.History +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Person +import androidx.compose.material.icons.outlined.Policy +import androidx.compose.material.icons.outlined.Web +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.ListItem +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedCard +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.contentColorFor +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.window.Dialog +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme + +data class LicenseNotice( + val name: String, + val copyright: String, + val licenseName: String, + val licenseUrl: String +) + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun NCPAboutScreen( + onBackPressed: () -> Unit, + onLogoLongPressed: (() -> Unit)? = null +) { + val uriHandler = LocalUriHandler.current + + var showLicensesDialog by rememberSaveable { mutableStateOf(false) } + + NextcloudPasswordsTheme { + Scaffold( + topBar = { + TopAppBar( + title = { + Text(text = stringResource(id = R.string.screen_about)) + }, + navigationIcon = { + IconButton(onClick = onBackPressed) { + Icon( + imageVector = Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = stringResource(id = R.string.navigation_back) + ) + } + }, + windowInsets = WindowInsets.statusBars + ) + }, + contentWindowInsets = WindowInsets.systemBars + ) { paddingValues -> + Column( + modifier = Modifier.padding(paddingValues), + horizontalAlignment = Alignment.CenterHorizontally + ) { + LazyColumn(modifier = Modifier.weight(1f)) { + item { + OutlinedCard( + border = CardDefaults.outlinedCardBorder(enabled = false), + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 8.dp) + ) { + Column(modifier = Modifier.padding(bottom = 8.dp)) { + Row(verticalAlignment = Alignment.CenterVertically) { + Image( + modifier = Modifier + .padding(20.dp) + .height(50.dp) + .width(50.dp) + .clip(CircleShape), + painter = painterResource(id = R.drawable.app_icon), + contentDescription = stringResource(id = R.string.app_name) + ) + Text( + text = stringResource(id = R.string.app_name), + style = MaterialTheme.typography.headlineMedium + ) + } + AboutTextField( + icon = { + Icon( + imageVector = Icons.Outlined.Info, + contentDescription = stringResource(id = R.string.version) + ) + }, + primaryText = { Text(text = stringResource(id = R.string.version)) }, + secondaryText = { + Text( + text = "v${stringResource(id = R.string.version_name)} " + + "(${stringResource(id = R.string.version_code)})" + ) + }, + onLongClick = { + onLogoLongPressed?.invoke() + } + ) + AboutTextField( + icon = { + Icon( + imageVector = Icons.Outlined.Code, + contentDescription = stringResource(id = R.string.source_code) + ) + }, + primaryText = { Text(text = stringResource(id = R.string.source_code)) }, + onClick = { uriHandler.openUri(repoUrl) } + ) + + AboutTextField( + icon = { + Icon( + imageVector = Icons.Outlined.History, + contentDescription = stringResource(id = R.string.changelog) + ) + }, + primaryText = { Text(text = stringResource(id = R.string.changelog)) }, + onClick = { uriHandler.openUri(changelogUrl) } + ) + + AboutTextField( + icon = { + Icon( + imageVector = Icons.Outlined.Campaign, + contentDescription = stringResource(id = R.string.help_suggestions) + ) + }, + primaryText = { Text(text = stringResource(id = R.string.help_suggestions)) }, + onClick = { uriHandler.openUri("$repoUrl/issues") } + ) + + AboutTextField( + icon = { + Icon( + imageVector = Icons.Outlined.Handshake, + contentDescription = stringResource(id = R.string.contribute) + ) + }, + primaryText = { Text(text = stringResource(id = R.string.contribute)) }, + onClick = { uriHandler.openUri(contributeUrl) } + ) + + AboutTextField( + icon = { + Icon( + imageVector = Icons.Outlined.Description, + contentDescription = stringResource(id = R.string.licenses) + ) + }, + primaryText = { Text(text = stringResource(id = R.string.licenses)) }, + onClick = { showLicensesDialog = true } + ) + + AboutTextField( + icon = { + Icon( + imageVector = Icons.Outlined.Policy, + contentDescription = stringResource(id = R.string.privacy_policy) + ) + }, + primaryText = { Text(text = stringResource(id = R.string.privacy_policy)) }, + onClick = { uriHandler.openUri(policyUrl) } + ) + } + } + } + + //Authors card + item { + OutlinedCard( + border = CardDefaults.outlinedCardBorder(enabled = false), + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 8.dp) + ) { + Column(modifier = Modifier.padding(vertical = 8.dp)) { + Text( + text = stringResource(id = R.string.author), + style = MaterialTheme.typography.titleMedium, + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 12.dp, horizontal = 16.dp), + ) + + for (author in authors) { + AboutTextField( + icon = { + Icon( + imageVector = Icons.Outlined.Person, + contentDescription = stringResource(id = R.string.author) + ) + }, + primaryText = { Text(text = author.key) }, + onClick = { uriHandler.openUri(author.value) } + ) + } + + AboutTextField( + icon = { + Icon( + imageVector = Icons.Outlined.Web, + contentDescription = stringResource(id = R.string.website) + ) + }, + primaryText = { Text(text = stringResource(id = R.string.website)) }, + onClick = { uriHandler.openUri(websiteUrl) } + ) + } + } + } + } + } + + if (showLicensesDialog) { + LicensesDialog( + licenses = licenses, + onDismissRequest = { showLicensesDialog = false } + ) + } + } + } +} + +@OptIn(ExperimentalFoundationApi::class) +@Composable +fun AboutTextField( + modifier: Modifier = Modifier, + icon: (@Composable () -> Unit)? = null, + primaryText: (@Composable () -> Unit)? = null, + secondaryText: (@Composable () -> Unit)? = null, + onClick: () -> Unit = {}, + onLongClick: () -> Unit = {} +) { + Row( + modifier = modifier + .fillMaxWidth() + .combinedClickable(onClick = onClick, onLongClick = onLongClick) + .padding(vertical = 12.dp, horizontal = 16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + CompositionLocalProvider( + LocalContentColor provides LocalContentColor.current.copy(alpha = 0.7f), + ) { + icon?.invoke() + } + Column(modifier = Modifier.padding(start = if (icon == null) 0.dp else 24.dp)) { + primaryText?.let { content -> + CompositionLocalProvider( + LocalTextStyle provides MaterialTheme.typography.bodyLarge + ) { + content() + } + } + secondaryText?.let { content -> + CompositionLocalProvider( + LocalContentColor provides LocalContentColor.current.copy(alpha = 0.7f), + LocalTextStyle provides MaterialTheme.typography.bodyMedium + ) { + content() + } + } + } + } +} + +@Composable +fun LicensesDialog( + licenses: List, + onDismissRequest: (() -> Unit)? = null +) { + + Dialog( + onDismissRequest = { onDismissRequest?.invoke() }, + ) { + Surface( + color = MaterialTheme.colorScheme.surface, + contentColor = contentColorFor(backgroundColor = MaterialTheme.colorScheme.surface), + shape = MaterialTheme.shapes.extraLarge, + ) { + Column(modifier = Modifier.padding(vertical = 24.dp)) { + Text( + text = stringResource(id = R.string.licenses), + style = MaterialTheme.typography.headlineSmall, + modifier = Modifier + .padding(bottom = 16.dp) + .padding(horizontal = 24.dp) + ) + + val uriHandler = LocalUriHandler.current + + LazyColumn(modifier = Modifier.weight(1f, fill = false)) { + items(items = licenses, key = { it.name }) { license -> + ListItem( + headlineContent = { + Text(text = license.name) + }, + overlineContent = if (license.copyright.isNotBlank()) { + { + Text(text = license.copyright) + } + } else null, + supportingContent = { + Text(text = license.licenseName) + }, + modifier = Modifier + .clickable { + uriHandler.openUri(license.licenseUrl) + } + .padding(horizontal = 10.dp) + ) + } + } + + TextButton( + onClick = { onDismissRequest?.invoke() }, + modifier = Modifier + .align(Alignment.End) + .padding(horizontal = 24.dp) + ) { + Text(text = stringResource(android.R.string.ok)) + } + } + } + } +} + +const val policyUrl = "https://hegocre.com/nextcloudpasswords/privacy.html" +const val repoUrl = "https://github.com/hegocre/NextcloudPasswords" +const val websiteUrl = "https://hegocre.com/" +const val changelogUrl = "https://github.com/hegocre/NextcloudPasswords/releases/latest" +const val contributeUrl = "https://github.com/hegocre/NextcloudPasswords#contribute" +val authors = mapOf( + "Hector Godoy" to "https://github.com/hegocre", +) +val licenses = listOf( + LicenseNotice( + name = "Kotlin Programming Language", + copyright = "Copyright (C) 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.", + licenseName = "Apache License 2.0", + licenseUrl = "https://github.com/JetBrains/kotlin/blob/master/license/LICENSE.txt" + ), + LicenseNotice( + name = "Android Jetpack", + copyright = "Copyright (C) 2023 The Android Open Source Project", + licenseName = "Apache License 2.0", + licenseUrl = "https://github.com/androidx/androidx/blob/androidx-main/LICENSE.txt" + ), + LicenseNotice( + name = "OkHttp", + copyright = "Copyright (C) 2019 Square, Inc.", + licenseName = "Apache License 2.0", + licenseUrl = "https://github.com/square/okhttp/blob/master/LICENSE.txt" + ), + LicenseNotice( + name = "Java Native Access", + copyright = "", + licenseName = "Apache License 2.0", + licenseUrl = "https://github.com/java-native-access/jna/blob/master/AL2.0" + ), + LicenseNotice( + name = "Lazysodium Android", + copyright = "Copyright (C) 2022 Terl Tech Ltd • goterl.com", + licenseName = "Mozilla Public License 2.0", + licenseUrl = "https://github.com/terl/lazysodium-android/blob/master/LICENSE.md" + ), + LicenseNotice( + name = "Markdown Composer", + copyright = "Copyright (C) 2021 Erik Hellman", + licenseName = "MIT License", + licenseUrl = "https://github.com/ErikHellman/MarkdownComposer/blob/master/LICENSE.txt" + ), + LicenseNotice( + name = "MaterialKolor", + copyright = "Copyright (c) 2023 Jordon de Hoog", + licenseName = "MIT License", + licenseUrl = "https://github.com/jordond/MaterialKolor/blob/main/LICENSE" + ), +) + +@Preview +@Composable +fun NCPAboutPreview() { + NCPAboutScreen({}) +} + +@Preview +@Composable +fun LicensesDialogPreview() { + NextcloudPasswordsTheme { + LicensesDialog(licenses = licenses) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPApp.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPApp.kt new file mode 100644 index 0000000..7f9994d --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPApp.kt @@ -0,0 +1,314 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically +import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.imePadding +import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material.icons.filled.Add +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.rememberModalBottomSheetState +import androidx.compose.material3.rememberTopAppBarState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.navigation.NavGraph.Companion.findStartDestination +import androidx.navigation.compose.currentBackStackEntryAsState +import androidx.navigation.compose.rememberNavController +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.api.FoldersApi +import com.hegocre.nextcloudpasswords.ui.NCPScreen +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme +import com.hegocre.nextcloudpasswords.ui.viewmodels.PasswordsViewModel +import kotlinx.coroutines.launch + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun NextcloudPasswordsApp( + passwordsViewModel: PasswordsViewModel, + onLogOut: () -> Unit, + isAutofillRequest: Boolean = false, + defaultSearchQuery: String = "", + replyAutofill: ((String, String, String) -> Unit)? = null +) { + val coroutineScope = rememberCoroutineScope() + + val navController = rememberNavController() + val backstackEntry = navController.currentBackStackEntryAsState() + val currentScreen = NCPScreen.fromRoute( + backstackEntry.value?.destination?.route + ) + + var openBottomSheet by rememberSaveable { mutableStateOf(false) } + val modalSheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) + + val needsMasterPassword by passwordsViewModel.needsMasterPassword.collectAsState() + val masterPasswordInvalid by passwordsViewModel.masterPasswordInvalid.collectAsState() + + val sessionOpen by passwordsViewModel.sessionOpen.collectAsState() + val showSessionOpenError by passwordsViewModel.showSessionOpenError.collectAsState() + val isRefreshing by passwordsViewModel.isRefreshing.collectAsState() + + var showLogOutDialog by rememberSaveable { mutableStateOf(false) } + var showAddElementDialog by rememberSaveable { mutableStateOf(false) } + + val keyboardController = LocalSoftwareKeyboardController.current + + var searchExpanded by rememberSaveable { mutableStateOf(false) } + LaunchedEffect(Unit) { + if (isAutofillRequest) searchExpanded = true + } + val (searchQuery, setSearchQuery) = rememberSaveable { mutableStateOf(defaultSearchQuery) } + + val server = remember { + passwordsViewModel.server + } + + NextcloudPasswordsTheme { + val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior( + rememberTopAppBarState() + ) + + Scaffold( + modifier = Modifier + .nestedScroll(scrollBehavior.nestedScrollConnection) + .imePadding(), + topBar = { + if (currentScreen != NCPScreen.PasswordEdit && currentScreen != NCPScreen.FolderEdit) { + NCPSearchTopBar( + username = server.username, + serverAddress = server.url, + title = when (currentScreen) { + NCPScreen.Passwords, NCPScreen.Favorites -> stringResource(currentScreen.title) + NCPScreen.Folders -> { + passwordsViewModel.visibleFolder.value?.let { + if (it.id == FoldersApi.DEFAULT_FOLDER_UUID) + stringResource(currentScreen.title) + else + it.label + } ?: stringResource(currentScreen.title) + } + + else -> "" + }, + userAvatar = { size -> + Image( + painter = passwordsViewModel.getPainterForAvatar(), + contentDescription = "", + modifier = Modifier + .clip(CircleShape) + .size(size) + ) + }, + searchQuery = searchQuery, + setSearchQuery = setSearchQuery, + isAutofill = isAutofillRequest, + searchExpanded = searchExpanded, + onSearchClick = { searchExpanded = true }, + onSearchCloseClick = { + searchExpanded = false + setSearchQuery("") + }, + onLogoutClick = { showLogOutDialog = true }, + scrollBehavior = scrollBehavior + ) + } else { + TopAppBar( + title = { Text(text = stringResource(id = currentScreen.title)) }, + navigationIcon = { + IconButton(onClick = { navController.navigateUp() }) { + Icon( + imageVector = Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = stringResource(id = R.string.navigation_back) + ) + } + } + ) + } + }, + bottomBar = { + Column { + AnimatedVisibility(visible = !sessionOpen && showSessionOpenError && !isRefreshing) { + Surface( + color = MaterialTheme.colorScheme.errorContainer, + modifier = Modifier.clickable { (passwordsViewModel.sync()) } + ) { + Text( + text = stringResource(id = R.string.error_cannot_connect_to_server), + style = MaterialTheme.typography.bodySmall, + textAlign = TextAlign.Center, + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + ) + } + } + val navigationHeight = + WindowInsets.navigationBars.getBottom(LocalDensity.current) + AnimatedVisibility( + visible = currentScreen != NCPScreen.PasswordEdit + && currentScreen != NCPScreen.FolderEdit, + enter = slideInVertically(initialOffsetY = { (it + navigationHeight) }), + exit = slideOutVertically(targetOffsetY = { (it + navigationHeight) }) + ) { + NCPBottomNavigation( + allScreens = NCPScreen.entries.filter { !it.hidden }, + currentScreen = currentScreen, + onScreenSelected = { screen -> + navController.navigate(screen.name) { + popUpTo(navController.graph.findStartDestination().id) { + saveState = true + } + launchSingleTop = true + restoreState = true + } + }, + ) + } + } + }, + floatingActionButton = { + AnimatedVisibility( + visible = currentScreen != NCPScreen.PasswordEdit && + currentScreen != NCPScreen.FolderEdit && sessionOpen, + enter = scaleIn(), + exit = scaleOut(), + ) { + FloatingActionButton( + onClick = { showAddElementDialog = true }, + ) { + Icon( + imageVector = Icons.Filled.Add, + contentDescription = stringResource(id = R.string.action_create_element) + ) + } + } + } + ) { innerPadding -> + NCPNavHost( + modifier = Modifier.padding(innerPadding), + navController = navController, + passwordsViewModel = passwordsViewModel, + searchQuery = searchQuery, + isAutofillRequest = isAutofillRequest, + modalSheetState = modalSheetState, + openPasswordDetails = { password, folderPath -> + passwordsViewModel.setVisiblePassword(password, folderPath) + keyboardController?.hide() + openBottomSheet = true + }, + replyAutofill = replyAutofill, + searchVisibility = searchExpanded, + closeSearch = { + searchExpanded = false + setSearchQuery("") + }, + ) + + if (showLogOutDialog) { + LogOutDialog( + onDismissRequest = { showLogOutDialog = false }, + onConfirmButton = onLogOut + ) + } + + if (showAddElementDialog) { + AddElementDialog( + onPasswordAdd = { + navController.navigate("${NCPScreen.PasswordEdit.name}/none") + showAddElementDialog = false + }, + onFolderAdd = { + navController.navigate("${NCPScreen.FolderEdit.name}/none") + showAddElementDialog = false + }, + onDismissRequest = { + showAddElementDialog = false + } + ) + } + + if (needsMasterPassword) { + val (masterPassword, setMasterPassword) = rememberSaveable { + mutableStateOf("") + } + val (savePassword, setSavePassword) = rememberSaveable { + mutableStateOf(false) + } + MasterPasswordDialog( + masterPassword = masterPassword, + setMasterPassword = setMasterPassword, + savePassword = savePassword, + setSavePassword = setSavePassword, + onOkClick = { + passwordsViewModel.setMasterPassword(masterPassword, savePassword) + setMasterPassword("") + }, + errorText = if (masterPasswordInvalid) stringResource(R.string.error_invalid_password) else "", + onDismissRequest = { } + ) + } + + if (openBottomSheet) { + ModalBottomSheet( + onDismissRequest = { openBottomSheet = false }, + contentWindowInsets = { WindowInsets.navigationBars }, + sheetState = modalSheetState + ) { + PasswordItem( + passwordInfo = passwordsViewModel.visiblePassword.value, + onEditPassword = if (sessionOpen) { + { + coroutineScope.launch { + modalSheetState.hide() + }.invokeOnCompletion { + if (!modalSheetState.isVisible) { + openBottomSheet = false + } + } + navController.navigate("${NCPScreen.PasswordEdit.name}/${passwordsViewModel.visiblePassword.value?.first?.id ?: "none"}") + } + } else null, + modifier = Modifier.padding(bottom = 16.dp) + ) + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPAppLock.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPAppLock.kt new file mode 100644 index 0000000..aea82aa --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPAppLock.kt @@ -0,0 +1,509 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import android.content.res.Configuration +import androidx.biometric.BiometricManager +import androidx.compose.animation.Crossfade +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.foundation.background +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.PressInteraction +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.outlined.Backspace +import androidx.compose.material.icons.outlined.Fingerprint +import androidx.compose.material3.FilledTonalButton +import androidx.compose.material3.FilledTonalIconButton +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.scale +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.input.key.Key +import androidx.compose.ui.input.key.KeyEventType +import androidx.compose.ui.input.key.key +import androidx.compose.ui.input.key.onKeyEvent +import androidx.compose.ui.input.key.type +import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalInspectionMode +import androidx.compose.ui.platform.LocalViewConfiguration +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme +import com.hegocre.nextcloudpasswords.utils.AppLockHelper +import com.hegocre.nextcloudpasswords.utils.PreferencesManager +import com.hegocre.nextcloudpasswords.utils.showBiometricPrompt +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Deferred +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.job +import kotlin.math.roundToInt + +@Composable +fun NCPAppLockWrapper( + content: @Composable () -> Unit, +) { + val context = LocalContext.current + val appLockHelper = remember { AppLockHelper.getInstance(context) } + val hasAppLock by PreferencesManager.getInstance(context).getHasAppLock() + .collectAsState(null) + val isLocked by appLockHelper.isLocked.collectAsState() + + hasAppLock?.let { + Crossfade(targetState = it && isLocked, label = "locked") { locked -> + if (locked) { + NextcloudPasswordsAppLock( + onCheckPasscode = appLockHelper::checkPasscode, + onCorrectPasscode = appLockHelper::disableLock + ) + } else { + if (hasAppLock == false) { + // Avoid asking for passcode just after setting it + appLockHelper.disableLock() + } + content() + } + } + } +} + +@Composable +fun NextcloudPasswordsAppLock( + onCheckPasscode: (String) -> Deferred, + onCorrectPasscode: () -> Unit +) { + val isPreview = LocalInspectionMode.current + + val (inputPassword, setInputPassword) = rememberSaveable { + mutableStateOf("") + } + var isError by remember { mutableStateOf(false) } + + val context = LocalContext.current + val hasBiometricAppLock by if (isPreview) remember { mutableStateOf(true) } + else PreferencesManager.getInstance(context).getHasBiometricAppLock().collectAsState( + initial = false + ) + val canAuthenticateBiometric = if (isPreview) remember { true } + else remember { + BiometricManager.from(context) + .canAuthenticate(BiometricManager.Authenticators.BIOMETRIC_STRONG) == BiometricManager.BIOMETRIC_SUCCESS + } + + LaunchedEffect(key1 = inputPassword) { + if (onCheckPasscode(inputPassword).await()) { + onCorrectPasscode() + } + } + + LaunchedEffect(key1 = isError) { + if (isError) { + delay(1500L) + isError = false + } + } + + LaunchedEffect(key1 = hasBiometricAppLock) { + if (hasBiometricAppLock && canAuthenticateBiometric) { + showBiometricPrompt( + context = context, + title = context.getString(R.string.biometric_prompt_title), + description = context.getString(R.string.biometric_prompt_description), + onBiometricUnlock = onCorrectPasscode + ) + } + } + + val requester = remember { FocusRequester() } + + NextcloudPasswordsTheme { + Scaffold( + modifier = Modifier + .onKeyEvent { keyEvent -> + if (keyEvent.type == KeyEventType.KeyDown) { + when (keyEvent.key) { + Key.Zero, Key.NumPad0 -> setInputPassword(inputPassword + "0") + Key.One, Key.NumPad1 -> setInputPassword(inputPassword + "1") + Key.Two, Key.NumPad2 -> setInputPassword(inputPassword + "2") + Key.Three, Key.NumPad3 -> setInputPassword(inputPassword + "3") + Key.Four, Key.NumPad4 -> setInputPassword(inputPassword + "4") + Key.Five, Key.NumPad5 -> setInputPassword(inputPassword + "5") + Key.Six, Key.NumPad6 -> setInputPassword(inputPassword + "6") + Key.Seven, Key.NumPad7 -> setInputPassword(inputPassword + "7") + Key.Eight, Key.NumPad8 -> setInputPassword(inputPassword + "8") + Key.Nine, Key.NumPad9 -> setInputPassword(inputPassword + "9") + Key.Backspace -> setInputPassword(inputPassword.dropLast(1)) + } + } + return@onKeyEvent true + } + .focusRequester(requester) + ) { paddingValues -> + LaunchedEffect(key1 = Unit) { + coroutineContext.job.invokeOnCompletion { + if (it?.cause == null) { + requester.requestFocus() + } + } + } + + Box( + modifier = Modifier + .padding(paddingValues) + .fillMaxSize(), + contentAlignment = Alignment.Center + ) { + if (LocalConfiguration.current.orientation != Configuration.ORIENTATION_LANDSCAPE) { + Column(horizontalAlignment = Alignment.CenterHorizontally) { + PasscodeIndicator( + inputPassword = inputPassword, + isError = isError + ) + + val spacerPadding = minOf((screenHeight() * 0.04).roundToInt(), 170) + Spacer(modifier = Modifier.height(spacerPadding.dp)) + + KeyPad( + inputPassword = inputPassword, + setInputPassword = { setInputPassword(inputPassword + it) }, + showBiometricIndicator = hasBiometricAppLock && canAuthenticateBiometric, + onBiometricClick = { + showBiometricPrompt( + context = context, + title = context.getString(R.string.biometric_prompt_title), + description = context.getString(R.string.biometric_prompt_description), + onBiometricUnlock = onCorrectPasscode + ) + }, + showBackspaceIndicator = inputPassword.isNotBlank(), + onBackspaceClick = { setInputPassword(inputPassword.dropLast(1)) }, + onBackspaceLongClick = { setInputPassword("") } + ) + } + } else { + Row(verticalAlignment = Alignment.CenterVertically) { + Column( + modifier = Modifier.weight(1f), + verticalArrangement = Arrangement.Center + ) { + PasscodeIndicator( + inputPassword = inputPassword, + isError = isError + ) + } + + Column( + modifier = Modifier.weight(1f), + verticalArrangement = Arrangement.Center + ) { + KeyPad( + inputPassword = inputPassword, + setInputPassword = { setInputPassword(inputPassword + it) }, + showBiometricIndicator = hasBiometricAppLock && canAuthenticateBiometric, + onBiometricClick = { + showBiometricPrompt( + context = context, + title = context.getString(R.string.biometric_prompt_title), + description = context.getString(R.string.biometric_prompt_description), + onBiometricUnlock = onCorrectPasscode + ) + }, + showBackspaceIndicator = inputPassword.isNotBlank(), + onBackspaceClick = { setInputPassword(inputPassword.dropLast(1)) }, + onBackspaceLongClick = { setInputPassword("") } + ) + } + } + } + } + } + } +} + +@Composable +fun PasscodeIndicator( + inputPassword: String, + isError: Boolean, +) { + Column(modifier = Modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { + Text( + text = if (!isError) + stringResource(id = R.string.app_lock_input_passcode) + else + stringResource(id = R.string.error_app_lock_incorrect_code), + ) + + val spacerPadding = minOf((screenHeight() * 0.1).roundToInt(), 170) + Spacer(modifier = Modifier.height(spacerPadding.dp)) + + if (inputPassword.isEmpty()) { + Spacer(modifier = Modifier.height(10.dp)) + } else { + LazyRow(modifier = Modifier.padding(horizontal = 16.dp)) { + items(count = inputPassword.length, key = { it }) { + KeyboardDigitIndicator( + color = MaterialTheme.colorScheme.primary, + modifier = Modifier.animateItem() + ) + } + } + } + } + +} + +@Composable +fun KeyPad( + inputPassword: String, + setInputPassword: (String) -> Unit, + showBiometricIndicator: Boolean, + onBiometricClick: () -> Unit, + showBackspaceIndicator: Boolean, + onBackspaceClick: () -> Unit, + onBackspaceLongClick: () -> Unit, + modifier: Modifier = Modifier +) { + val isPreview = LocalInspectionMode.current + + Column(modifier = modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally) { + Row { + KeyboardNumber( + number = "1", + onPressNumber = setInputPassword + ) + + KeyboardNumber( + number = "2", + onPressNumber = setInputPassword + ) + + KeyboardNumber( + number = "3", + onPressNumber = setInputPassword + ) + } + + Row { + KeyboardNumber( + number = "4", + onPressNumber = setInputPassword + ) + + KeyboardNumber( + number = "5", + onPressNumber = setInputPassword + ) + + KeyboardNumber( + number = "6", + onPressNumber = setInputPassword + ) + } + + Row { + KeyboardNumber( + number = "7", + onPressNumber = setInputPassword + ) + + KeyboardNumber( + number = "8", + onPressNumber = setInputPassword + ) + + KeyboardNumber( + number = "9", + onPressNumber = setInputPassword + ) + } + + Row { + if (showBiometricIndicator) { + FilledTonalIconButton( + onClick = onBiometricClick, + modifier = Modifier + .padding(buttonPadding().dp) + .height(buttonSize().dp) + .width(buttonSize().dp) + ) { + Icon( + imageVector = Icons.Outlined.Fingerprint, + contentDescription = stringResource(id = R.string.biometric_unlock_preference_title), + modifier = Modifier.size(35.dp) + ) + } + } else { + Spacer( + modifier = Modifier + .padding(buttonPadding().dp) + .height(buttonSize().dp) + .width(buttonSize().dp) + ) + } + + KeyboardNumber( + number = "0", + onPressNumber = setInputPassword + ) + + if (isPreview || showBackspaceIndicator) { + val interactionSource = remember { MutableInteractionSource() } + + val viewConfiguration = LocalViewConfiguration.current + + LaunchedEffect(interactionSource, inputPassword) { + var isLongClick = false + + interactionSource.interactions.collectLatest { interaction -> + when (interaction) { + is PressInteraction.Press -> { + isLongClick = false + delay(viewConfiguration.longPressTimeoutMillis) + isLongClick = true + onBackspaceLongClick() + } + + is PressInteraction.Release -> { + if (isLongClick.not()) { + onBackspaceClick() + } + } + } + } + } + + FilledTonalIconButton( + onClick = {}, + interactionSource = interactionSource, + modifier = Modifier + .padding(buttonPadding().dp) + .height(buttonSize().dp) + .width(buttonSize().dp) + ) { + Icon( + imageVector = Icons.AutoMirrored.Outlined.Backspace, + contentDescription = stringResource(id = R.string.action_delete), + modifier = Modifier.size(25.dp) + ) + } + } else { + Spacer( + modifier = Modifier + .padding(buttonPadding().dp) + .height(buttonSize().dp) + .width(buttonSize().dp) + ) + } + } + } +} + +@Composable +fun KeyboardNumber( + number: String, + onPressNumber: (String) -> Unit +) { + FilledTonalButton( + onClick = { + onPressNumber(number) + }, + modifier = Modifier + .padding(buttonPadding().dp) + .height(buttonSize().dp) + .width(buttonSize().dp) + ) { + Text(text = number, fontSize = 25.sp) + } +} + +@Composable +fun KeyboardDigitIndicator( + color: Color, + modifier: Modifier = Modifier +) { + var visible by remember { mutableStateOf(false) } + + LaunchedEffect(key1 = Unit) { + visible = true + } + + val scale by animateFloatAsState(targetValue = if (visible) 1f else 0f, label = "opacity") + + Spacer( + modifier = modifier + .padding(horizontal = 8.dp) + .height(10.dp) + .width(10.dp) + .scale(scale) + .clip(CircleShape) + .background(color) + ) +} + +@Composable +fun screenHeight(): Float = + LocalConfiguration.current.screenHeightDp.toFloat() + +@Composable +fun screenWidth(): Float = + LocalConfiguration.current.screenWidthDp.toFloat() + +@Composable +fun buttonSize(): Int { + val screenHeight = screenHeight().times( + if (LocalConfiguration.current.orientation != Configuration.ORIENTATION_LANDSCAPE) 0.8f else 1f + ) + return minOf((screenHeight * 0.20).roundToInt(), (screenWidth() * 0.25).roundToInt(), 90) +} + +@Composable +fun buttonPadding(): Int { + val screenHeight = screenHeight().times( + if (LocalConfiguration.current.orientation != Configuration.ORIENTATION_LANDSCAPE) 0.8f else 1f + ) + return minOf((screenHeight * 0.04).roundToInt(), (screenWidth() * 0.06).roundToInt(), 8) +} + +@Preview +@Composable +fun AppLockPreview() { + NextcloudPasswordsTheme { + NextcloudPasswordsAppLock(onCheckPasscode = { + return@NextcloudPasswordsAppLock CoroutineScope(Dispatchers.Default).async { + true + } + }, {}) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPBottomNavigation.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPBottomNavigation.kt new file mode 100644 index 0000000..fe27084 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPBottomNavigation.kt @@ -0,0 +1,54 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.navigationBars +import androidx.compose.material3.Icon +import androidx.compose.material3.NavigationBar +import androidx.compose.material3.NavigationBarItem +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import com.hegocre.nextcloudpasswords.ui.NCPScreen +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme + +@Composable +fun NCPBottomNavigation( + allScreens: List, + currentScreen: NCPScreen, + onScreenSelected: (NCPScreen) -> Unit, + modifier: Modifier = Modifier +) { + NavigationBar( + modifier = modifier, + windowInsets = WindowInsets.navigationBars + ) { + allScreens.forEach { screen -> + NavigationBarItem( + icon = { + Icon( + imageVector = if (currentScreen == screen) screen.selectedIcon else screen.unselectedIcon, + contentDescription = screen.name + ) + }, + label = { Text(text = stringResource(screen.title)) }, + selected = currentScreen == screen, + onClick = { onScreenSelected(screen) }, + alwaysShowLabel = false, + ) + } + } +} + +@Preview(name = "Bottom Navigation preview") +@Composable +fun NCPBottomNavigationPreview() { + NextcloudPasswordsTheme { + NCPBottomNavigation( + allScreens = NCPScreen.entries.filter { !it.hidden }, + currentScreen = NCPScreen.Passwords, + onScreenSelected = {} + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPNavHost.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPNavHost.kt new file mode 100644 index 0000000..757b1b7 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPNavHost.kt @@ -0,0 +1,828 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import android.widget.Toast +import androidx.activity.compose.BackHandler +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.Button +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.SheetState +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.livedata.observeAsState +import androidx.compose.runtime.produceState +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.unit.dp +import androidx.navigation.NavHostController +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.navArgument +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.api.FoldersApi +import com.hegocre.nextcloudpasswords.data.folder.DeletedFolder +import com.hegocre.nextcloudpasswords.data.folder.Folder +import com.hegocre.nextcloudpasswords.data.folder.NewFolder +import com.hegocre.nextcloudpasswords.data.folder.UpdatedFolder +import com.hegocre.nextcloudpasswords.data.password.DeletedPassword +import com.hegocre.nextcloudpasswords.data.password.NewPassword +import com.hegocre.nextcloudpasswords.data.password.Password +import com.hegocre.nextcloudpasswords.data.password.UpdatedPassword +import com.hegocre.nextcloudpasswords.data.serversettings.ServerSettings +import com.hegocre.nextcloudpasswords.ui.NCPScreen +import com.hegocre.nextcloudpasswords.ui.viewmodels.PasswordsViewModel +import com.hegocre.nextcloudpasswords.utils.PreferencesManager +import com.hegocre.nextcloudpasswords.utils.decryptFolders +import com.hegocre.nextcloudpasswords.utils.decryptPasswords +import com.hegocre.nextcloudpasswords.utils.encryptValue +import com.hegocre.nextcloudpasswords.utils.sha1Hash +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.serialization.json.Json + +@ExperimentalMaterial3Api +@Composable +fun NCPNavHost( + navController: NavHostController, + passwordsViewModel: PasswordsViewModel, + modifier: Modifier = Modifier, + searchQuery: String = "", + isAutofillRequest: Boolean, + openPasswordDetails: (Password, List) -> Unit, + replyAutofill: ((String, String, String) -> Unit)? = null, + modalSheetState: SheetState? = null, + searchVisibility: Boolean? = null, + closeSearch: (() -> Unit)? = null, +) { + val context = LocalContext.current + val coroutineScope = rememberCoroutineScope() + + val passwords by passwordsViewModel.passwords.observeAsState() + val folders by passwordsViewModel.folders.observeAsState() + val keychain by passwordsViewModel.csEv1Keychain.observeAsState() + val isRefreshing by passwordsViewModel.isRefreshing.collectAsState() + val isUpdating by passwordsViewModel.isUpdating.collectAsState() + val serverSettings by passwordsViewModel.serverSettings.observeAsState(initial = ServerSettings()) + val sessionOpen by passwordsViewModel.sessionOpen.collectAsState() + + val passwordsDecryptionState by produceState( + initialValue = ListDecryptionState(isLoading = true), + key1 = passwords, key2 = keychain + ) { + value = ListDecryptionState(decryptedList = passwords?.let { passwordList -> + passwordList.decryptPasswords(keychain).sortedBy { it.label.lowercase() } + } ?: emptyList()) + } + + val foldersDecryptionState by produceState( + initialValue = ListDecryptionState(isLoading = true), + key1 = folders, key2 = keychain + ) { + value = ListDecryptionState(decryptedList = folders?.let { folderList -> + folderList.decryptFolders(keychain).sortedBy { it.label.lowercase() } + } ?: emptyList()) + } + + val baseFolderName = stringResource(R.string.top_level_folder_name) + val onPasswordClick: (Password) -> Unit = { password -> + if (isAutofillRequest && replyAutofill != null) { + replyAutofill(password.label, password.username, password.password) + } else { + val folderPath = mutableListOf() + var nextFolderUuid = password.folder + while (nextFolderUuid != FoldersApi.DEFAULT_FOLDER_UUID) { + val nextFolder = + foldersDecryptionState.decryptedList?.find { it.id == nextFolderUuid } + nextFolder?.label?.let { + folderPath.add(it) + } + nextFolderUuid = nextFolder?.parent ?: FoldersApi.DEFAULT_FOLDER_UUID + } + folderPath.add(baseFolderName) + openPasswordDetails(password, folderPath.toList()) + } + } + + val onFolderClick: (Folder) -> Unit = { folder -> + navController.navigate("${NCPScreen.Folders.name}/${folder.id}") + } + + val userStartDestination by PreferencesManager.getInstance(context).getStartScreen() + .collectAsState(NCPScreen.Passwords.name, context = Dispatchers.IO) + + val startDestination = remember(isAutofillRequest, userStartDestination) { + if (isAutofillRequest) NCPScreen.Passwords.name else userStartDestination + } + + val searchByUsername by PreferencesManager.getInstance(context).getSearchByUsername() + .collectAsState(true, context = Dispatchers.IO) + val strictUrlMatching by PreferencesManager.getInstance(context).getUseStrictUrlMatching() + .collectAsState(true, context = Dispatchers.IO) + + val filteredPasswordList = remember(passwordsDecryptionState.decryptedList, searchQuery) { + passwordsDecryptionState.decryptedList?.filter { + !it.hidden && !it.trashed && (it.matches(searchQuery, strictUrlMatching) + || (searchByUsername && it.username.contains(searchQuery))) + } + } + val filteredFolderList = remember(foldersDecryptionState.decryptedList, searchQuery) { + foldersDecryptionState.decryptedList?.filter { + !it.hidden && !it.trashed && it.label.lowercase().contains(searchQuery.lowercase()) + } + } + + NavHost( + navController = navController, + startDestination = startDestination, + modifier = modifier, + enterTransition = { fadeIn(animationSpec = tween(300)) }, + exitTransition = { fadeOut(animationSpec = tween(300)) }, + ) { + composable(NCPScreen.Passwords.name) { + NCPNavHostComposable( + modalSheetState = modalSheetState, + searchVisibility = searchVisibility, + closeSearch = closeSearch + ) { + when { + passwordsDecryptionState.isLoading -> { + Box(modifier = Modifier.fillMaxSize()) { + CircularProgressIndicator(modifier = Modifier.align(Alignment.Center)) + } + } + passwordsDecryptionState.decryptedList != null -> { + PullToRefreshBody( + isRefreshing = isRefreshing, + onRefresh = { passwordsViewModel.sync() }, + ) { + if (filteredPasswordList?.isEmpty() == true) { + if (searchQuery.isBlank()) NoContentText() else NoResultsText() + } else { + MixedLazyColumn( + passwords = filteredPasswordList, + onPasswordClick = onPasswordClick, + onPasswordLongClick = { + if (sessionOpen && !isAutofillRequest && it.editable) + navController.navigate("${NCPScreen.PasswordEdit.name}/${it.id}") + }, + getPainterForUrl = { passwordsViewModel.getPainterForUrl(url = it) } + ) + } + } + } + } + } + } + + composable(NCPScreen.Favorites.name) { + val filteredFavoritePasswords = remember(filteredPasswordList) { + filteredPasswordList?.filter { it.favorite } + } + NCPNavHostComposable( + modalSheetState = modalSheetState, + searchVisibility = searchVisibility, + closeSearch = closeSearch + ) { + when { + passwordsDecryptionState.isLoading -> { + Box(modifier = Modifier.fillMaxSize()) { + CircularProgressIndicator(modifier = Modifier.align(Alignment.Center)) + } + } + passwordsDecryptionState.decryptedList != null -> { + PullToRefreshBody( + isRefreshing = isRefreshing, + onRefresh = { passwordsViewModel.sync() }, + ) { + if (filteredFavoritePasswords?.isEmpty() == true) { + if (searchQuery.isBlank()) + NoContentText() + else + NoResultsText { navController.navigate(NCPScreen.Passwords.name) } + } else { + MixedLazyColumn( + passwords = filteredFavoritePasswords, + onPasswordClick = onPasswordClick, + onPasswordLongClick = { + if (sessionOpen && !isAutofillRequest && it.editable) + navController.navigate("${NCPScreen.PasswordEdit.name}/${it.id}") + }, + getPainterForUrl = { passwordsViewModel.getPainterForUrl(url = it) } + ) + } + } + } + } + } + } + + composable(NCPScreen.Folders.name) { + NCPNavHostComposable( + modalSheetState = modalSheetState, + searchVisibility = searchVisibility, + closeSearch = closeSearch + ) { + val filteredPasswordsParentFolder = remember(filteredPasswordList) { + filteredPasswordList?.filter { + it.folder == FoldersApi.DEFAULT_FOLDER_UUID + } + } + val filteredFoldersParentFolder = remember(filteredFolderList) { + filteredFolderList?.filter { + it.parent == FoldersApi.DEFAULT_FOLDER_UUID + } + } + when { + foldersDecryptionState.isLoading || passwordsDecryptionState.isLoading -> { + Box(modifier = Modifier.fillMaxSize()) { + CircularProgressIndicator(modifier = Modifier.align(Alignment.Center)) + } + } + foldersDecryptionState.decryptedList != null + && passwordsDecryptionState.decryptedList != null -> { + + LaunchedEffect(Unit) { + passwordsViewModel.setVisibleFolder(null) + } + + PullToRefreshBody( + isRefreshing = isRefreshing, + onRefresh = { passwordsViewModel.sync() }, + ) { + if (filteredFoldersParentFolder?.isEmpty() == true + && filteredPasswordsParentFolder?.isEmpty() == true + ) { + if (searchQuery.isBlank()) + NoContentText() + else + NoResultsText { navController.navigate(NCPScreen.Passwords.name) } + } else { + MixedLazyColumn( + passwords = filteredPasswordsParentFolder, + folders = filteredFoldersParentFolder, + onPasswordClick = onPasswordClick, + onPasswordLongClick = { + if (sessionOpen && !isAutofillRequest && it.editable) + navController.navigate("${NCPScreen.PasswordEdit.name}/${it.id}") + }, + onFolderClick = onFolderClick, + onFolderLongClick = { + if (sessionOpen && !isAutofillRequest) + navController.navigate("${NCPScreen.FolderEdit.name}/${it.id}") + }, + getPainterForUrl = { passwordsViewModel.getPainterForUrl(url = it) } + ) + } + } + } + } + } + } + + composable( + route = "${NCPScreen.Folders.name}/{folder_uuid}", + arguments = listOf( + navArgument("folder_uuid") { + type = NavType.StringType + } + ) + ) { entry -> + val folderUuid = + entry.arguments?.getString("folder_uuid") ?: FoldersApi.DEFAULT_FOLDER_UUID + val filteredPasswordsSelectedFolder = remember(filteredPasswordList) { + filteredPasswordList?.filter { + it.folder == folderUuid + } + } + val filteredFoldersSelectedFolder = remember(filteredFolderList) { + filteredFolderList?.filter { + it.parent == folderUuid + } + } + NCPNavHostComposable( + modalSheetState = modalSheetState, + searchVisibility = searchVisibility, + closeSearch = closeSearch + ) { + when { + passwordsDecryptionState.isLoading -> { + Box(modifier = Modifier.fillMaxSize()) { + CircularProgressIndicator(modifier = Modifier.align(Alignment.Center)) + } + } + passwordsDecryptionState.decryptedList != null -> { + DisposableEffect(folderUuid) { + if (foldersDecryptionState.decryptedList?.isEmpty() == false) { + passwordsViewModel.setVisibleFolder(foldersDecryptionState.decryptedList + ?.firstOrNull { it.id == folderUuid }) + } + onDispose { + if (passwordsViewModel.visibleFolder.value?.id == folderUuid) { + passwordsViewModel.setVisibleFolder(null) + } + } + } + + PullToRefreshBody( + isRefreshing = isRefreshing, + onRefresh = { passwordsViewModel.sync() }, + ) { + if (filteredFoldersSelectedFolder?.isEmpty() == true + && filteredPasswordsSelectedFolder?.isEmpty() == true + ) { + if (searchQuery.isBlank()) + NoContentText() + else + NoResultsText { navController.navigate(NCPScreen.Passwords.name) } + } else { + MixedLazyColumn( + passwords = filteredPasswordsSelectedFolder, + folders = filteredFoldersSelectedFolder, + onPasswordClick = onPasswordClick, + onPasswordLongClick = { + if (sessionOpen && !isAutofillRequest && it.editable) + navController.navigate("${NCPScreen.PasswordEdit.name}/${it.id}") + }, + onFolderClick = onFolderClick, + onFolderLongClick = { + if (sessionOpen && !isAutofillRequest) + navController.navigate("${NCPScreen.FolderEdit.name}/${it.id}") + }, + getPainterForUrl = { passwordsViewModel.getPainterForUrl(url = it) } + ) + } + } + } + } + } + } + + composable( + route = "${NCPScreen.PasswordEdit.name}/{password_uuid}", + arguments = listOf( + navArgument("password_uuid") { + type = NavType.StringType + } + ) + ) { entry -> + BackHandler(enabled = isUpdating) { + // Block back gesture when updating to avoid data loss + return@BackHandler + } + + val passwordUuid = entry.arguments?.getString("password_uuid") + val selectedPassword = remember(passwordsDecryptionState.decryptedList, passwordUuid) { + if (passwordUuid == "none") { + null + } else { + passwordsDecryptionState.decryptedList?.firstOrNull { + it.id == passwordUuid + } + } + } + NCPNavHostComposable( + modalSheetState = modalSheetState, + searchVisibility = searchVisibility, + closeSearch = closeSearch + ) { + when { + passwordsDecryptionState.isLoading || foldersDecryptionState.isLoading -> { + Box(modifier = Modifier.fillMaxSize()) { + CircularProgressIndicator(modifier = Modifier.align(Alignment.Center)) + } + } + + passwordsDecryptionState.decryptedList != null && foldersDecryptionState.decryptedList != null -> { + val editablePasswordState = + rememberEditablePasswordState(selectedPassword).apply { + if (selectedPassword == null) { + folder = passwordsViewModel.visibleFolder.value?.id ?: folder + } + } + + EditablePasswordView( + editablePasswordState = editablePasswordState, + folders = foldersDecryptionState.decryptedList ?: listOf(), + onSavePassword = { + val currentKeychain = keychain + + val customFields = + Json.encodeToString(editablePasswordState.customFields.toList()) + + if (selectedPassword == null) { + // New password + val newPassword = + if (currentKeychain != null && serverSettings.encryptionCse != 0) { + NewPassword( + password = editablePasswordState.password.encryptValue( + currentKeychain.current, + currentKeychain + ), + label = editablePasswordState.label.encryptValue( + currentKeychain.current, + currentKeychain + ), + username = editablePasswordState.username.encryptValue( + currentKeychain.current, + currentKeychain + ), + url = editablePasswordState.url.encryptValue( + currentKeychain.current, + currentKeychain + ), + notes = editablePasswordState.notes.encryptValue( + currentKeychain.current, + currentKeychain + ), + customFields = customFields.encryptValue( + currentKeychain.current, + currentKeychain + ), + hash = editablePasswordState.password.sha1Hash() + .take(serverSettings.passwordSecurityHash), + cseType = "CSEv1r1", + cseKey = currentKeychain.current, + folder = editablePasswordState.folder, + edited = 0, + hidden = false, + favorite = editablePasswordState.favorite + ) + } else { + NewPassword( + password = editablePasswordState.password, + label = editablePasswordState.label, + username = editablePasswordState.username, + url = editablePasswordState.url, + notes = editablePasswordState.notes, + customFields = customFields, + hash = editablePasswordState.password.sha1Hash() + .take(serverSettings.passwordSecurityHash), + cseType = "none", + cseKey = "", + folder = editablePasswordState.folder, + edited = 0, + hidden = false, + favorite = editablePasswordState.favorite + ) + } + coroutineScope.launch { + if (passwordsViewModel.createPassword(newPassword) + .await() + ) { + if (editablePasswordState.replyAutofill && replyAutofill != null) { + replyAutofill( + editablePasswordState.label, + editablePasswordState.username, + editablePasswordState.password + ) + } else { + navController.navigateUp() + } + } else { + Toast.makeText( + context, + R.string.error_password_saving_failed, + Toast.LENGTH_LONG + ).show() + } + } + } else { + val updatedPassword = + if (currentKeychain != null && selectedPassword.cseType == "CSEv1r1") { + UpdatedPassword( + id = selectedPassword.id, + revision = selectedPassword.revision, + password = editablePasswordState.password.encryptValue( + currentKeychain.current, + currentKeychain + ), + label = editablePasswordState.label.encryptValue( + currentKeychain.current, + currentKeychain + ), + username = editablePasswordState.username.encryptValue( + currentKeychain.current, + currentKeychain + ), + url = editablePasswordState.url.encryptValue( + currentKeychain.current, + currentKeychain + ), + notes = editablePasswordState.notes.encryptValue( + currentKeychain.current, + currentKeychain + ), + customFields = customFields.encryptValue( + currentKeychain.current, + currentKeychain + ), + hash = editablePasswordState.password.sha1Hash() + .take(serverSettings.passwordSecurityHash), + cseType = "CSEv1r1", + cseKey = currentKeychain.current, + folder = editablePasswordState.folder, + edited = if (editablePasswordState.password == selectedPassword.password) selectedPassword.edited else 0, + hidden = selectedPassword.hidden, + favorite = editablePasswordState.favorite + ) + } else { + UpdatedPassword( + id = selectedPassword.id, + revision = selectedPassword.revision, + password = editablePasswordState.password, + label = editablePasswordState.label, + username = editablePasswordState.username, + url = editablePasswordState.url, + notes = editablePasswordState.notes, + customFields = customFields, + hash = editablePasswordState.password.sha1Hash() + .take(serverSettings.passwordSecurityHash), + cseType = "none", + cseKey = "", + folder = editablePasswordState.folder, + edited = if (editablePasswordState.password == selectedPassword.password) selectedPassword.edited else 0, + hidden = selectedPassword.hidden, + favorite = editablePasswordState.favorite + ) + } + coroutineScope.launch { + if (passwordsViewModel.updatePassword(updatedPassword) + .await() + ) { + if (editablePasswordState.replyAutofill && replyAutofill != null) { + replyAutofill( + editablePasswordState.label, + editablePasswordState.username, + editablePasswordState.password + ) + } else { + navController.navigateUp() + } + } else { + Toast.makeText( + context, + R.string.error_password_saving_failed, + Toast.LENGTH_LONG + ).show() + } + } + } + }, + onDeletePassword = if (selectedPassword == null) null + else { + { + val deletedPassword = DeletedPassword( + id = selectedPassword.id, + revision = selectedPassword.revision + ) + coroutineScope.launch { + if (passwordsViewModel.deletePassword(deletedPassword) + .await() + ) { + navController.navigateUp() + } else { + Toast.makeText( + context, + R.string.error_password_deleting_failed, + Toast.LENGTH_LONG + ).show() + } + } + } + }, + isUpdating = isUpdating, + isAutofillRequest = isAutofillRequest, + onGeneratePassword = passwordsViewModel::generatePassword + ) + } + } + } + } + + composable( + route = "${NCPScreen.FolderEdit.name}/{folder_uuid}", + arguments = listOf( + navArgument("folder_uuid") { + type = NavType.StringType + } + ) + ) { entry -> + BackHandler(enabled = isUpdating) { + // Block back gesture when updating to avoid data loss + return@BackHandler + } + + val folderUuid = entry.arguments?.getString("folder_uuid") + val selectedFolder = remember(foldersDecryptionState.decryptedList, folderUuid) { + if (folderUuid == "none") { + null + } else { + foldersDecryptionState.decryptedList?.firstOrNull { + it.id == folderUuid + } + } + } + NCPNavHostComposable( + modalSheetState = modalSheetState, + searchVisibility = searchVisibility, + closeSearch = closeSearch + ) { + when { + foldersDecryptionState.isLoading -> { + Box(modifier = Modifier.fillMaxSize()) { + CircularProgressIndicator(modifier = Modifier.align(Alignment.Center)) + } + } + + foldersDecryptionState.decryptedList != null -> { + val editableFolderState = + rememberEditableFolderState(selectedFolder).apply { + if (selectedFolder == null) { + parent = passwordsViewModel.visibleFolder.value?.id ?: parent + } + } + + EditableFolderView( + editableFolderState = editableFolderState, + folders = foldersDecryptionState.decryptedList ?: listOf(), + onSaveFolder = { + if (selectedFolder == null) { + val newFolder = keychain?.let { + NewFolder( + label = editableFolderState.label.encryptValue( + it.current, + it + ), + cseType = "CSEv1r1", + cseKey = it.current, + parent = editableFolderState.parent, + edited = 0, + hidden = false, + favorite = editableFolderState.favorite + ) + } ?: NewFolder( + label = editableFolderState.label, + cseType = "none", + cseKey = "", + parent = editableFolderState.parent, + edited = 0, + hidden = false, + favorite = editableFolderState.favorite + ) + coroutineScope.launch { + if (passwordsViewModel.createFolder(newFolder) + .await() + ) { + navController.navigateUp() + } else { + Toast.makeText( + context, + R.string.error_folder_saving_failed, + Toast.LENGTH_LONG + ).show() + } + } + } else { + val updatedFolder = keychain?.let { + UpdatedFolder( + id = selectedFolder.id, + revision = selectedFolder.revision, + label = editableFolderState.label.encryptValue( + it.current, + it + ), + cseType = "CSEv1r1", + cseKey = it.current, + parent = editableFolderState.parent, + edited = if (editableFolderState.label == selectedFolder.label) selectedFolder.edited else 0, + hidden = selectedFolder.hidden, + favorite = editableFolderState.favorite + ) + } ?: UpdatedFolder( + id = selectedFolder.id, + revision = selectedFolder.revision, + label = editableFolderState.label, + cseType = "none", + cseKey = "", + parent = editableFolderState.parent, + edited = if (editableFolderState.label == selectedFolder.label) selectedFolder.edited else 0, + hidden = selectedFolder.hidden, + favorite = editableFolderState.favorite + ) + coroutineScope.launch { + if (passwordsViewModel.updateFolder(updatedFolder) + .await() + ) { + navController.navigateUp() + } else { + Toast.makeText( + context, + R.string.error_folder_saving_failed, + Toast.LENGTH_LONG + ).show() + } + } + } + }, + onDeleteFolder = if (selectedFolder == null) null + else { + { + val deletedFolder = DeletedFolder( + id = selectedFolder.id, + revision = selectedFolder.revision + ) + coroutineScope.launch { + if (passwordsViewModel.deleteFolder(deletedFolder) + .await() + ) { + navController.navigateUp() + } else { + Toast.makeText( + context, + R.string.error_folder_deleting_failed, + Toast.LENGTH_LONG + ).show() + } + } + } + }, + isUpdating = isUpdating, + ) + } + } + } + } + } +} + +@Composable +fun NoContentText() { + Box( + modifier = Modifier + .fillMaxSize() + .padding(16.dp), contentAlignment = Alignment.Center + ) { + Text(text = stringResource(id = R.string.empty_list_no_content_here)) + } +} + +@Composable +fun NoResultsText( + onButtonPress: (() -> Unit)? = null +) { + Box( + modifier = Modifier + .fillMaxSize() + .padding(16.dp), contentAlignment = Alignment.Center + ) { + Column(horizontalAlignment = Alignment.CenterHorizontally) { + Text(text = stringResource(id = R.string.empty_list_no_results_found)) + if (onButtonPress != null) { + Spacer(modifier = Modifier.height(16.dp)) + Button(onClick = onButtonPress) { + Text(text = stringResource(id = R.string.action_search_everywhere)) + } + } + } + } +} + +@ExperimentalMaterial3Api +@Composable +fun NCPNavHostComposable( + modifier: Modifier = Modifier, + modalSheetState: SheetState? = null, + searchVisibility: Boolean? = null, + closeSearch: (() -> Unit)? = null, + content: @Composable () -> Unit = { } +) { + BackHandler(enabled = searchVisibility == true) { + closeSearch?.invoke() + } + val scope = rememberCoroutineScope() + BackHandler(enabled = modalSheetState?.isVisible ?: false) { + scope.launch { + modalSheetState?.hide() + } + } + Box(modifier = modifier) { + content() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPSettings.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPSettings.kt new file mode 100644 index 0000000..6ecb2d6 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPSettings.kt @@ -0,0 +1,412 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import android.app.Activity +import android.content.Intent +import android.os.Build +import android.provider.Settings +import android.view.autofill.AutofillManager +import android.widget.Toast +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.biometric.BiometricManager +import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.navigationBarsPadding +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.statusBars +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.ui.NCPScreen +import com.hegocre.nextcloudpasswords.ui.theme.NCPTheme +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme +import com.hegocre.nextcloudpasswords.utils.PreferencesManager +import com.hegocre.nextcloudpasswords.utils.showBiometricPrompt +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import androidx.core.net.toUri + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun NCPSettingsScreen( + onNavigationUp: () -> Unit +) { + val context = LocalContext.current + val scope = rememberCoroutineScope() + val preferencesManager = remember { + PreferencesManager.getInstance(context) + } + + NextcloudPasswordsTheme { + Scaffold( + topBar = { + TopAppBar( + title = { + Text(stringResource(R.string.screen_settings)) + }, + navigationIcon = { + IconButton(onClick = onNavigationUp) { + Icon( + imageVector = Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = stringResource(id = R.string.navigation_back) + ) + } + }, + windowInsets = WindowInsets.statusBars + ) + }, + bottomBar = { + Spacer( + modifier = Modifier + .navigationBarsPadding() + .fillMaxWidth() + ) + } + ) + { innerPadding -> + Column( + Modifier + .padding(innerPadding) + .verticalScroll(rememberScrollState()) + ) { + PreferencesCategory(title = { Text(stringResource(R.string.preferences_category_general)) }) { + val selectedScreen by preferencesManager.getStartScreen() + .collectAsState( + initial = NCPScreen.Passwords.name, + context = Dispatchers.IO + ) + + val startViews = mapOf( + NCPScreen.Passwords.name to stringResource(NCPScreen.Passwords.title), + NCPScreen.Favorites.name to stringResource(NCPScreen.Favorites.title), + NCPScreen.Folders.name to stringResource(NCPScreen.Folders.title) + ) + + ListPreference( + items = startViews, + onItemSelected = { + scope.launch { + preferencesManager.setStartScreen(it) + } + }, + title = { Text(text = stringResource(id = R.string.start_view_preference_title)) }, + selectedItem = selectedScreen + ) + + val showIcons by preferencesManager.getShowIcons() + .collectAsState(initial = false, context = Dispatchers.IO) + SwitchPreference( + checked = showIcons, + onCheckedChange = { show -> + scope.launch(Dispatchers.IO) { + preferencesManager.setShowIcons(show) + } + }, + title = { Text(stringResource(R.string.show_icons_preference_title)) }, + subtitle = { Text(stringResource(R.string.show_icons_preference_subtitle)) } + ) + } + + PreferencesCategory(title = { Text(stringResource(R.string.preferences_category_search)) }) { + val useStringUrlMatching by preferencesManager.getUseStrictUrlMatching() + .collectAsState(initial = true, context = Dispatchers.IO) + SwitchPreference( + checked = useStringUrlMatching, + onCheckedChange = { useStrict -> + scope.launch(Dispatchers.IO) { + preferencesManager.setUseStrictUrlMatching(useStrict) + } + }, + title = { Text(stringResource(R.string.use_strict_domain_matching_preference_title)) }, + subtitle = { Text(stringResource(R.string.use_strict_domain_matching_preference_subtitle)) } + ) + + val searchByUsername by preferencesManager.getSearchByUsername() + .collectAsState(initial = true, context = Dispatchers.IO) + SwitchPreference( + checked = searchByUsername, + onCheckedChange = { search -> + scope.launch(Dispatchers.IO) { + preferencesManager.setSearchByUsername(search) + } + }, + title = { Text(stringResource(R.string.search_by_username_preference_title)) }, + subtitle = { Text(stringResource(R.string.search_by_username_preference_subtitle)) } + ) + } + + PreferencesCategory(title = { Text(text = stringResource(id = R.string.preferences_category_appearance)) }) { + val appTheme by preferencesManager.getAppTheme() + .collectAsState(initial = NCPTheme.SYSTEM) + val useNextcloudInstanceColor by preferencesManager.getUseInstanceColor() + .collectAsState(initial = false) + val useSystemDynamicColor by preferencesManager.getUseSystemDynamicColor() + .collectAsState(initial = false) + val themes = mapOf( + NCPTheme.SYSTEM to stringResource(id = R.string.app_theme_system), + NCPTheme.LIGHT to stringResource(id = R.string.app_theme_light), + NCPTheme.DARK to stringResource(id = R.string.app_theme_dark), + NCPTheme.AMOLED to stringResource(id = R.string.app_theme_black) + ) + + ListPreference( + items = themes, + selectedItem = appTheme, + onItemSelected = { theme -> + scope.launch(Dispatchers.IO) { + preferencesManager.setAppTheme(theme) + } + }, + title = { Text(text = stringResource(id = R.string.app_theme_preference_title)) }) + + SwitchPreference( + checked = useNextcloudInstanceColor, + onCheckedChange = { use -> + scope.launch(Dispatchers.IO) { + preferencesManager.setUseInstanceColor(use) + } + }, + title = { Text(text = stringResource(id = R.string.use_nextcloud_color_preference_title)) }, + subtitle = { Text(text = stringResource(id = R.string.use_nextcloud_color_preference_subtitle)) }, + enabled = !useSystemDynamicColor + ) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + SwitchPreference( + checked = useSystemDynamicColor, + onCheckedChange = { use -> + scope.launch(Dispatchers.IO) { + preferencesManager.setUseSystemDynamicColor(use) + } + }, + title = { Text(text = stringResource(id = R.string.use_dynamic_colors_preference_title)) }, + subtitle = { Text(text = stringResource(id = R.string.use_dynamic_colors_preference_subtitle)) }, + enabled = !useNextcloudInstanceColor + ) + } + } + + PreferencesCategory(title = { Text(text = stringResource(id = R.string.preferences_category_security)) }) { + val hasAppLock by preferencesManager.getHasAppLock() + .collectAsState(false) + val hasBiometricAppLock by preferencesManager + .getHasBiometricAppLock().collectAsState(false) + val canUseBiometrics = remember { + BiometricManager.from(context) + .canAuthenticate(BIOMETRIC_STRONG) == BiometricManager.BIOMETRIC_SUCCESS + } + + var showCreatePasscodeDialog by rememberSaveable { + mutableStateOf(false) + } + var showConfirmPasscodeDialog by rememberSaveable { + mutableStateOf(false) + } + var showDeletePasscodeDialog by rememberSaveable { + mutableStateOf(false) + } + var firstPasscode by rememberSaveable { + mutableStateOf("") + } + var isEnablingBiometric by rememberSaveable { + mutableStateOf(false) + } + + SwitchPreference( + checked = hasAppLock, + onCheckedChange = { enabled -> + if (enabled) { + showCreatePasscodeDialog = true + } else { + showDeletePasscodeDialog = true + } + }, + title = { Text(text = stringResource(id = R.string.app_lock_preference_title)) }, + subtitle = { Text(text = stringResource(id = R.string.app_lock_preference_subtitle)) } + ) + + if (canUseBiometrics) { + SwitchPreference( + checked = hasBiometricAppLock, + onCheckedChange = { enabled -> + if (enabled && !hasAppLock) { + showCreatePasscodeDialog = true + isEnablingBiometric = true + } else { + showBiometricPrompt( + context = context, + title = context.getString(R.string.biometric_prompt_title), + description = context.getString(R.string.biometric_prompt_description), + onBiometricUnlock = { + scope.launch { + preferencesManager.setHasBiometricAppLock(enabled) + } + } + ) + } + + }, + title = { Text(text = stringResource(id = R.string.biometric_unlock_preference_title)) }, + subtitle = { Text(text = stringResource(id = R.string.biometric_unlock_preference_subtitle)) }, + ) + } + + if (showCreatePasscodeDialog) { + InputPasscodeDialog( + title = stringResource(id = R.string.app_lock_input_passcode), + onInputPasscode = { + firstPasscode = it + showCreatePasscodeDialog = false + showConfirmPasscodeDialog = true + }, + onDismissRequest = { + showCreatePasscodeDialog = false + isEnablingBiometric = false + } + ) + } + + if (showConfirmPasscodeDialog) { + InputPasscodeDialog( + title = stringResource(id = R.string.app_lock_confirm_passcode), + onInputPasscode = { secondPasscode -> + if (firstPasscode != secondPasscode) { + Toast.makeText( + context, + R.string.error_passcodes_dont_match, + Toast.LENGTH_LONG + ).show() + } else { + scope.launch { + with(preferencesManager) { + setAppLockPasscode(secondPasscode) + setHasAppLock(true) + } + } + } + showConfirmPasscodeDialog = false + if (isEnablingBiometric) { + isEnablingBiometric = false + showBiometricPrompt( + context = context, + title = context.getString(R.string.biometric_prompt_title), + description = context.getString(R.string.biometric_prompt_description), + onBiometricUnlock = { + scope.launch { + preferencesManager.setHasBiometricAppLock(true) + } + } + ) + } + }, + onDismissRequest = { + showConfirmPasscodeDialog = false + isEnablingBiometric = false + firstPasscode = "" + } + ) + } + + if (showDeletePasscodeDialog) { + InputPasscodeDialog( + title = stringResource(id = R.string.app_lock_input_passcode), + onInputPasscode = { passcode -> + scope.launch { + with(preferencesManager) { + val currentPasscode = getAppLockPasscode() + + if (currentPasscode == passcode) { + setHasAppLock(false) + setAppLockPasscode(null) + setHasBiometricAppLock(false) + } else { + Toast.makeText( + context, + R.string.error_app_lock_incorrect_code, + Toast.LENGTH_LONG + ).show() + } + + } + } + showDeletePasscodeDialog = false + }, + onDismissRequest = { + showDeletePasscodeDialog = false + } + ) + } + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val autofillManager = context.getSystemService(AutofillManager::class.java) + var autofillEnabled by remember { mutableStateOf(autofillManager.hasEnabledAutofillServices()) } + val launchAutofillRequest = rememberLauncherForActivityResult( + contract = ActivityResultContracts.StartActivityForResult() + ) { result -> + if (result.resultCode == Activity.RESULT_OK) { + autofillEnabled = true + } + } + PreferencesCategory(title = { Text(text = stringResource(R.string.preferences_category_autofill_service)) }) { + SwitchPreference( + checked = autofillEnabled, + onCheckedChange = { enable -> + if (enable) { + val intent = + Intent(Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICE).apply { + data = "package:${context.packageName}".toUri() + } + launchAutofillRequest.launch(intent) + } + }, + title = { Text(stringResource(R.string.autofill_preference_title)) }, + subtitle = { Text(stringResource(R.string.autofill_preference_subtitle)) }, + enabled = !autofillEnabled + ) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { + var useInlineAutofill by remember { mutableStateOf(preferencesManager.getUseInlineAutofill()) } + + SwitchPreference( + checked = useInlineAutofill, + onCheckedChange = { enabled -> + scope.launch(Dispatchers.IO) { + if (preferencesManager.setUseInlineAutofill(enabled)) { + useInlineAutofill = enabled + } + } + }, + title = { Text(text = stringResource(id = R.string.inline_autofill_preference_title)) }, + subtitle = { Text(text = stringResource(id = R.string.inline_autofill_preference_subtitle)) }, + enabled = autofillEnabled + ) + } + } + } + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPTopBar.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPTopBar.kt new file mode 100644 index 0000000..306d3bc --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/NCPTopBar.kt @@ -0,0 +1,480 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import android.content.Intent +import android.content.res.Configuration +import androidx.compose.animation.Crossfade +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.gestures.detectTapGestures +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.statusBars +import androidx.compose.foundation.layout.statusBarsPadding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.foundation.verticalScroll +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material.icons.automirrored.outlined.Logout +import androidx.compose.material.icons.filled.Clear +import androidx.compose.material.icons.outlined.AccountCircle +import androidx.compose.material.icons.outlined.Info +import androidx.compose.material.icons.outlined.Search +import androidx.compose.material.icons.outlined.Settings +import androidx.compose.material3.BasicAlertDialog +import androidx.compose.material3.DropdownMenuItem +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LargeTopAppBar +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.TopAppBarScrollBehavior +import androidx.compose.material3.rememberTopAppBarState +import androidx.compose.material3.surfaceColorAtElevation +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalSoftwareKeyboardController +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.compose.ui.window.DialogProperties +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.ui.theme.ContentAlpha +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme +import kotlinx.coroutines.job + +object AppBarDefaults { + val TopAppBarElevation = 4.dp +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun NCPSearchTopBar( + username: String, + serverAddress: String, + modifier: Modifier = Modifier, + title: String = stringResource(R.string.app_name), + scrollBehavior: TopAppBarScrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior( + rememberTopAppBarState() + ), + userAvatar: @Composable (Dp) -> Unit = { size -> + Image( + imageVector = Icons.Outlined.AccountCircle, + contentDescription = username, + modifier = Modifier.size(size) + ) + }, + searchQuery: String = "", + setSearchQuery: (String) -> Unit = {}, + isAutofill: Boolean = false, + onLogoutClick: () -> Unit = {}, + searchExpanded: Boolean = false, + onSearchClick: () -> Unit = {}, + onSearchCloseClick: () -> Unit = {} +) { + Surface( + modifier = modifier, + ) { + Crossfade(targetState = searchExpanded, label = "expanded") { expanded -> + if (expanded) { + SearchAppBar( + searchQuery = searchQuery, + setSearchQuery = setSearchQuery, + onBackPressed = onSearchCloseClick + ) + } else { + TitleAppBar( + username = username, + serverAddress = serverAddress, + title = title, + onSearchClick = onSearchClick, + onLogoutClick = onLogoutClick, + scrollBehavior = scrollBehavior, + showMenu = !isAutofill, + userAvatar = userAvatar + ) + } + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun TitleAppBar( + username: String, + serverAddress: String, + title: String, + onSearchClick: () -> Unit, + onLogoutClick: () -> Unit, + scrollBehavior: TopAppBarScrollBehavior, + showMenu: Boolean, + userAvatar: @Composable (Dp) -> Unit +) { + var menuExpanded by rememberSaveable { mutableStateOf(false) } + + LargeTopAppBar( + title = { Text(text = title) }, + scrollBehavior = scrollBehavior, + windowInsets = WindowInsets.statusBars, + actions = { + IconButton(onClick = onSearchClick) { + Icon( + imageVector = Icons.Outlined.Search, + contentDescription = stringResource(id = R.string.action_search) + ) + } + if (showMenu) { + Box { + IconButton( + onClick = { menuExpanded = true }, + modifier = Modifier.padding(end = 8.dp) + ) { + userAvatar(26.dp) + } + + PopupAppMenu( + username = username, + serverAddress = serverAddress, + menuExpanded = menuExpanded, + userAvatar = userAvatar, + onDismissRequest = { menuExpanded = false }, + onLogoutClick = onLogoutClick + ) + } + } + }, + ) +} + +@Composable +fun SearchAppBar( + searchQuery: String, + setSearchQuery: (String) -> Unit, + onBackPressed: () -> Unit +) { + val keyboardController = LocalSoftwareKeyboardController.current + val requester = remember { FocusRequester() } + + Column( + Modifier.background(MaterialTheme.colorScheme.surfaceColorAtElevation(AppBarDefaults.TopAppBarElevation)) + ) { + Spacer(modifier = Modifier.statusBarsPadding()) + Row( + modifier = Modifier.height(64.dp), + verticalAlignment = Alignment.CenterVertically + ) { + IconButton( + onClick = onBackPressed + ) { + Icon( + imageVector = Icons.AutoMirrored.Filled.ArrowBack, + contentDescription = stringResource(id = R.string.navigation_back) + ) + } + + LaunchedEffect(key1 = Unit) { + coroutineContext.job.invokeOnCompletion { + if (it?.cause == null) { + requester.requestFocus() + } + } + } + + TextField( + modifier = Modifier + .weight(1f) + .focusRequester(requester), + value = searchQuery, + onValueChange = setSearchQuery, + maxLines = 1, + singleLine = true, + placeholder = { Text(text = stringResource(R.string.action_search)) }, + colors = TextFieldDefaults.colors( + focusedContainerColor = Color.Transparent, + unfocusedContainerColor = Color.Transparent, + disabledContainerColor = Color.Transparent, + focusedIndicatorColor = Color.Transparent, + unfocusedIndicatorColor = Color.Transparent, + disabledIndicatorColor = Color.Transparent, + ), + keyboardOptions = KeyboardOptions.Default.copy( + imeAction = ImeAction.Search, + ), + keyboardActions = KeyboardActions(onSearch = { + keyboardController?.hide() + }) + ) + IconButton( + onClick = { setSearchQuery("") } + ) { + Icon( + imageVector = Icons.Default.Clear, + contentDescription = stringResource(id = R.string.action_clear_search_query) + ) + } + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun PopupAppMenu( + username: String, + serverAddress: String, + menuExpanded: Boolean, + userAvatar: @Composable (Dp) -> Unit, + onDismissRequest: () -> Unit, + onLogoutClick: () -> Unit +) { + val context = LocalContext.current + + val dismissSheet = Modifier + .pointerInput(Unit) { + detectTapGestures { + onDismissRequest() + } + } + + val orientation = LocalConfiguration.current.orientation + val screenHeight = LocalConfiguration.current.screenHeightDp.dp + + if (menuExpanded) { + BasicAlertDialog( + onDismissRequest = onDismissRequest, + modifier = Modifier.fillMaxWidth(), + properties = DialogProperties( + usePlatformDefaultWidth = false + ) + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(), + horizontalAlignment = Alignment.CenterHorizontally + ) { + + if (orientation == Configuration.ORIENTATION_PORTRAIT) { + Spacer( + modifier = Modifier + .height(72.dp) + .fillMaxWidth() + .then(dismissSheet) + ) + } + + Surface( + modifier = Modifier + .padding(horizontal = 16.dp) + .then( + if (orientation == Configuration.ORIENTATION_PORTRAIT) + Modifier.fillMaxWidth() + else + Modifier.width(screenHeight) + ), + color = MaterialTheme.colorScheme.surface, + shape = MaterialTheme.shapes.large + ) { + Column( + modifier = Modifier + .padding(vertical = 8.dp) + .verticalScroll(rememberScrollState()), + ) { + Row( + modifier = Modifier + .padding(vertical = 12.dp) + .padding(horizontal = 16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Box( + modifier = Modifier + .padding(all = 8.dp) + .padding(end = 12.dp) + ) { + userAvatar(40.dp) + } + + Column { + Text( + text = username, + style = MaterialTheme.typography.titleMedium, + fontWeight = FontWeight.Bold, + textAlign = TextAlign.Start + ) + + CompositionLocalProvider( + LocalContentColor provides LocalContentColor.current.copy(alpha = ContentAlpha.medium) + ) { + Text( + text = serverAddress, + style = MaterialTheme.typography.bodyMedium, + fontSize = 14.sp + ) + } + } + } + + HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp)) + + DropdownMenuItem( + onClick = { + val intent = + Intent("com.hegocre.nextcloudpasswords.action.settings") + .setPackage(context.packageName) + context.startActivity(intent) + onDismissRequest() + }, + text = { + Text( + text = stringResource(id = R.string.screen_settings), + modifier = Modifier.padding(end = 16.dp) + ) + }, + leadingIcon = { + Icon( + imageVector = Icons.Outlined.Settings, + contentDescription = stringResource(id = R.string.screen_settings), + modifier = Modifier + .padding(end = 8.dp) + .padding(start = 16.dp) + ) + } + ) + + DropdownMenuItem( + onClick = { + val intent = Intent("com.hegocre.nextcloudpasswords.action.about") + .setPackage(context.packageName) + context.startActivity(intent) + onDismissRequest() + }, + text = { + Text( + text = stringResource(id = R.string.screen_about), + modifier = Modifier.padding(end = 16.dp) + ) + }, + leadingIcon = { + Icon( + imageVector = Icons.Outlined.Info, + contentDescription = stringResource(id = R.string.screen_about), + modifier = Modifier + .padding(end = 8.dp) + .padding(start = 16.dp) + ) + } + ) + + DropdownMenuItem( + onClick = { + onLogoutClick() + onDismissRequest() + }, + text = { + Text( + text = stringResource(R.string.action_log_out), + modifier = Modifier.padding(end = 16.dp) + ) + }, + leadingIcon = { + Icon( + imageVector = Icons.AutoMirrored.Outlined.Logout, + contentDescription = stringResource(id = R.string.action_log_out), + modifier = Modifier + .padding(end = 8.dp) + .padding(start = 16.dp) + ) + } + ) + + HorizontalDivider(modifier = Modifier.padding(vertical = 8.dp)) + + CompositionLocalProvider( + LocalContentColor provides LocalContentColor.current.copy(alpha = ContentAlpha.medium) + ) { + Text( + text = "${stringResource(id = R.string.app_name)} v${ + stringResource( + id = R.string.version_name + ) + }(${ + stringResource( + id = R.string.version_code + ) + })", + style = MaterialTheme.typography.labelSmall, + textAlign = TextAlign.Center, + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 8.dp) + ) + } + } + } + + Spacer( + modifier = Modifier + .weight(1f) + .fillMaxWidth() + .then(dismissSheet) + ) + } + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Preview(name = "Top bar") +@Composable +fun TopBarPreview() { + NextcloudPasswordsTheme { + NCPSearchTopBar("", "") + } +} + +@Preview +@Composable +fun SearchBarPreview() { + NextcloudPasswordsTheme { + SearchAppBar( + searchQuery = "Query", + setSearchQuery = {}, + onBackPressed = {} + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/PasswordEditView.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/PasswordEditView.kt new file mode 100644 index 0000000..3bb9113 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/PasswordEditView.kt @@ -0,0 +1,683 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import android.widget.Toast +import androidx.activity.compose.BackHandler +import androidx.activity.compose.LocalOnBackPressedDispatcherOwner +import androidx.compose.animation.animateColorAsState +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.add +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.ime +import androidx.compose.foundation.layout.navigationBars +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsBottomHeight +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Casino +import androidx.compose.material.icons.filled.Delete +import androidx.compose.material.icons.filled.Star +import androidx.compose.material.icons.filled.Visibility +import androidx.compose.material.icons.filled.VisibilityOff +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateListOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.saveable.Saver +import androidx.compose.runtime.saveable.listSaver +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.runtime.toMutableStateList +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.api.FoldersApi +import com.hegocre.nextcloudpasswords.data.folder.Folder +import com.hegocre.nextcloudpasswords.data.password.CustomField +import com.hegocre.nextcloudpasswords.data.password.Password +import com.hegocre.nextcloudpasswords.ui.theme.ContentAlpha +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme +import com.hegocre.nextcloudpasswords.ui.theme.favoriteColor +import com.hegocre.nextcloudpasswords.utils.isValidEmail +import com.hegocre.nextcloudpasswords.utils.isValidURL +import kotlinx.coroutines.Deferred +import kotlinx.coroutines.android.awaitFrame +import kotlinx.coroutines.launch +import kotlinx.serialization.json.Json +import kotlin.reflect.KFunction3 + +class EditablePasswordState(originalPassword: Password?) { + var password by mutableStateOf(originalPassword?.password ?: "") + var label by mutableStateOf(originalPassword?.label ?: "") + var username by mutableStateOf(originalPassword?.username ?: "") + var url by mutableStateOf(originalPassword?.url ?: "") + var notes by mutableStateOf(originalPassword?.notes ?: "") + var folder by mutableStateOf(originalPassword?.folder ?: FoldersApi.DEFAULT_FOLDER_UUID) + var customFields = + if (originalPassword?.customFields?.isBlank() == true) mutableStateListOf() else + Json.decodeFromString>(originalPassword?.customFields ?: "[]") + .toMutableStateList() + var favorite by mutableStateOf(originalPassword?.favorite ?: false) + var replyAutofill = false + + fun isValid(): Boolean { + if (label.isBlank()) + return false + if (password.isBlank()) + return false + if (!url.isValidURL()) + return false + for (customField in customFields) { + when (customField.type) { + CustomField.TYPE_URL -> { + if (!customField.value.isValidURL()) + return false + } + + CustomField.TYPE_EMAIL -> { + if (!customField.value.isValidEmail()) + return false + } + } + } + return true + } + + companion object { + val Saver: Saver = listSaver( + save = { + listOf( + it.password, it.label, it.username, it.url, it.notes, + it.folder, Json.encodeToString(it.customFields.toList()), + it.favorite.toString(), it.replyAutofill.toString() + ) + }, + restore = { + EditablePasswordState(null).apply { + password = it[0] + label = it[1] + username = it[2] + url = it[3] + notes = it[4] + folder = it[5] + customFields = + Json.decodeFromString>(it[6]).toMutableStateList() + favorite = it[7].toBooleanStrictOrNull() ?: false + replyAutofill = it[8].toBooleanStrictOrNull() ?: false + } + } + ) + } +} + +@Composable +fun rememberEditablePasswordState(password: Password? = null): EditablePasswordState = + rememberSaveable(password, saver = EditablePasswordState.Saver) { + EditablePasswordState(password) + } + +@Composable +fun EditablePasswordView( + editablePasswordState: EditablePasswordState, + folders: List, + isUpdating: Boolean, + isAutofillRequest: Boolean, + onGeneratePassword: KFunction3>?, + onSavePassword: () -> Unit, + onDeletePassword: (() -> Unit)? = null +) { + val coroutineScope = rememberCoroutineScope() + val context = LocalContext.current + val onBackPressedDispatcher = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher + + var showDeleteDialog by rememberSaveable { + mutableStateOf(false) + } + var showAddCustomFieldDialog by rememberSaveable { + mutableStateOf(false) + } + var showFolderDialog by rememberSaveable { + mutableStateOf(false) + } + var showFieldErrors by rememberSaveable { + mutableStateOf(false) + } + var showDiscardDialog by rememberSaveable { + mutableStateOf(false) + } + var confirmedDiscard by rememberSaveable { + mutableStateOf(false) + } + + BackHandler (enabled = !confirmedDiscard) { + showDiscardDialog = true + } + + if (showDiscardDialog) { + DiscardChangesDialog( + onConfirmButton = { + confirmedDiscard = true + showDiscardDialog = false + coroutineScope.launch { + awaitFrame() + onBackPressedDispatcher?.onBackPressed() + confirmedDiscard = false + } + }, + onDismissRequest = { + showDiscardDialog = false + } + ) + } + + LazyColumn { + item(key = "top_spacer") { Spacer(modifier = Modifier.width(16.dp)) } + + item(key = "favorite_button") { + val contentColor by animateColorAsState( + targetValue = if (editablePasswordState.favorite) + MaterialTheme.colorScheme.onSurface else MaterialTheme.colorScheme.onSurface.copy( + alpha = 0.80f + ), + label = "favoriteContentColor" + ) + val containerColor by animateColorAsState( + targetValue = if (editablePasswordState.favorite) + MaterialTheme.colorScheme.favoriteColor.copy(alpha = 0.3f) else MaterialTheme.colorScheme.onSurface.copy( + alpha = 0.12f + ), + label = "favoriteContentColor" + ) + Button( + onClick = { editablePasswordState.favorite = !editablePasswordState.favorite }, + modifier = Modifier + .padding(bottom = 16.dp) + .padding(horizontal = 16.dp), + colors = ButtonDefaults.filledTonalButtonColors( + contentColor = contentColor, + containerColor = containerColor + ), + ) { + Icon( + imageVector = Icons.Default.Star, + contentDescription = stringResource(id = R.string.password_attr_favorite) + ) + Text( + text = stringResource(id = R.string.password_attr_favorite), + modifier = Modifier.padding(horizontal = 8.dp) + ) + } + } + + item(key = "password_label") { + OutlinedTextField( + value = editablePasswordState.label, + onValueChange = { newText -> editablePasswordState.label = newText }, + label = { Text(text = stringResource(id = R.string.password_folder_attr_label)) }, + singleLine = true, + maxLines = 1, + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 16.dp) + .padding(horizontal = 16.dp), + isError = showFieldErrors && editablePasswordState.label.isBlank(), + supportingText = if (showFieldErrors && editablePasswordState.label.isBlank()) { + { + Text(text = stringResource(id = R.string.error_field_cannot_be_empty)) + } + } else null + ) + } + + item(key = "password_username") { + OutlinedTextField( + value = editablePasswordState.username, + onValueChange = { newText -> editablePasswordState.username = newText }, + label = { Text(text = stringResource(id = R.string.password_attr_username)) }, + singleLine = true, + maxLines = 1, + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 16.dp) + .padding(horizontal = 16.dp) + ) + } + + + item(key = "password_password") { + var showPassword by rememberSaveable { + mutableStateOf(false) + } + + var showGenerateDialog by remember { + mutableStateOf(false) + } + + var isGenerating by rememberSaveable { + mutableStateOf(false) + } + + OutlinedTextField( + value = editablePasswordState.password, + onValueChange = { newText -> editablePasswordState.password = newText }, + textStyle = LocalTextStyle.current.copy(fontFamily = FontFamily(Font(R.font.dejavu_sans_mono))), + label = { Text(text = stringResource(id = R.string.password_attr_password)) }, + singleLine = true, + maxLines = 1, + trailingIcon = { + Row(verticalAlignment = Alignment.CenterVertically) { + + + if (isGenerating) { + CircularProgressIndicator( + color = MaterialTheme.colorScheme.onSurfaceVariant, + strokeWidth = 2.dp, + modifier = Modifier.size(20.dp) + ) + } + + IconButton(onClick = { showPassword = !showPassword }) { + Icon( + imageVector = if (showPassword) + Icons.Filled.VisibilityOff else Icons.Filled.Visibility, + contentDescription = stringResource(R.string.text_input_show_password_toggle) + ) + } + + if (onGeneratePassword != null) { + IconButton(onClick = { + showGenerateDialog = true + }) { + Icon( + imageVector = Icons.Default.Casino, + contentDescription = stringResource(id = R.string.action_generate_password) + ) + } + } + + } + }, + keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Password), + visualTransformation = if (showPassword) + VisualTransformation.None else PasswordVisualTransformation(), + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 16.dp) + .padding(horizontal = 16.dp), + isError = showFieldErrors && editablePasswordState.password.isBlank(), + supportingText = if (showFieldErrors && editablePasswordState.password.isBlank()) { + { + Text(text = stringResource(id = R.string.error_field_cannot_be_empty)) + } + } else null + ) + + if (showGenerateDialog) { + PasswordGenerationDialog( + onGenerate = { strength, includeDigits, includeSymbols -> + if (onGeneratePassword != null) { + coroutineScope.launch { + isGenerating = true + val generatedPassword = onGeneratePassword( + strength, includeDigits, includeSymbols + ).await() + if (generatedPassword == null) { + Toast.makeText( + context, + R.string.error_could_not_generate_password, + Toast.LENGTH_LONG + ).show() + } else { + editablePasswordState.password = generatedPassword + } + isGenerating = false + } + showGenerateDialog = false + } + }, + onDismissRequest = { + showGenerateDialog = false + } + ) + } + } + + item(key = "password_url") { + OutlinedTextField( + value = editablePasswordState.url, + onValueChange = { newText -> editablePasswordState.url = newText }, + label = { Text(text = stringResource(id = R.string.password_attr_url)) }, + singleLine = true, + maxLines = 1, + keyboardOptions = KeyboardOptions.Default.copy(keyboardType = KeyboardType.Uri), + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 16.dp) + .padding(horizontal = 16.dp), + isError = showFieldErrors && !editablePasswordState.url.isValidURL(), + supportingText = if (showFieldErrors && !editablePasswordState.url.isValidURL()) { + { + Text(text = stringResource(id = R.string.error_enter_valid_url)) + } + } else null + ) + } + + item(key = "password_folder") { + OutlinedClickableTextField( + value = if (editablePasswordState.folder == FoldersApi.DEFAULT_FOLDER_UUID) { + stringResource(id = R.string.top_level_folder_name) + } else { + folders.firstOrNull { it.id == editablePasswordState.folder }?.label + ?: stringResource(id = R.string.top_level_folder_name) + }, + label = stringResource(id = R.string.folder), + onClick = { + showFolderDialog = true + }, + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 16.dp) + .padding(horizontal = 16.dp) + ) + } + + itemsIndexed( + items = editablePasswordState.customFields, + key = { index, field -> "${index}_password_custom_${field.label}" }) { index, customField -> + var showValue by rememberSaveable { + mutableStateOf(customField.type != CustomField.TYPE_SECRET) + } + + OutlinedTextField( + value = customField.value, + onValueChange = { newText -> + val newElement = editablePasswordState.customFields[index].copy(value = newText) + editablePasswordState.customFields.removeAt(index) + editablePasswordState.customFields.add(index, newElement) + }, + textStyle = if (customField.type == CustomField.TYPE_SECRET) + LocalTextStyle.current.copy(fontFamily = FontFamily(Font(R.font.dejavu_sans_mono))) + else + LocalTextStyle.current, + label = { Text(text = customField.label) }, + singleLine = true, + maxLines = 1, + trailingIcon = { + Row { + if (customField.type == CustomField.TYPE_SECRET) { + IconButton(onClick = { showValue = !showValue }) { + Icon( + imageVector = if (showValue) + Icons.Filled.VisibilityOff else Icons.Filled.Visibility, + contentDescription = stringResource(R.string.text_input_show_password_toggle) + ) + } + } + + IconButton(onClick = { editablePasswordState.customFields.removeAt(index) }) { + Icon( + imageVector = Icons.Default.Delete, + contentDescription = stringResource(R.string.action_delete) + ) + } + } + }, + keyboardOptions = KeyboardOptions.Default.copy( + keyboardType = when (customField.type) { + CustomField.TYPE_SECRET -> KeyboardType.Password + CustomField.TYPE_EMAIL -> KeyboardType.Email + CustomField.TYPE_URL -> KeyboardType.Uri + else -> KeyboardType.Text + } + ), + visualTransformation = if (showValue) + VisualTransformation.None else PasswordVisualTransformation(), + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 16.dp) + .padding(horizontal = 16.dp), + isError = when (customField.type) { + CustomField.TYPE_URL -> showFieldErrors && !customField.value.isValidURL() + CustomField.TYPE_EMAIL -> showFieldErrors && !customField.value.isValidEmail() + else -> false + }, + supportingText = when (customField.type) { + CustomField.TYPE_URL -> { + if (showFieldErrors && !customField.value.isValidURL()) { + { + Text(text = stringResource(id = R.string.error_enter_valid_url)) + } + } else null + } + + CustomField.TYPE_EMAIL -> { + if (showFieldErrors && !customField.value.isValidEmail()) { + { + Text(text = stringResource(id = R.string.error_enter_valid_email)) + } + } else null + } + + else -> null + }, + ) + + } + + item(key = "password_notes") { + OutlinedTextField( + value = editablePasswordState.notes, + onValueChange = { newText -> editablePasswordState.notes = newText }, + label = { Text(text = stringResource(id = R.string.password_attr_notes)) }, + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 24.dp) + .padding(horizontal = 16.dp) + ) + } + + item(key = "custom_field_add") { + Button( + onClick = { showAddCustomFieldDialog = true }, + content = { + Text(text = stringResource(id = R.string.action_add_custom_field)) + }, + colors = ButtonDefaults.filledTonalButtonColors(), + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 8.dp) + .padding(horizontal = 16.dp) + ) + } + + item(key = "password_save") { + Button( + onClick = { + if (!editablePasswordState.isValid()) { + showFieldErrors = true + } else { + onSavePassword() + } + }, + content = { + if (isUpdating) { + CircularProgressIndicator( + color = MaterialTheme.colorScheme.primary, + strokeWidth = 2.dp, + modifier = Modifier.size(16.dp) + ) + } else { + Text(text = stringResource(id = R.string.action_save)) + } + }, + enabled = !isUpdating, + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp) + ) + } + + if (isAutofillRequest) { + item(key = "password_save_autofill") { + Button( + onClick = { + if (!editablePasswordState.isValid()) { + showFieldErrors = true + } else { + editablePasswordState.replyAutofill = true + onSavePassword() + } + }, + content = { + if (isUpdating) { + CircularProgressIndicator( + color = MaterialTheme.colorScheme.primary, + strokeWidth = 2.dp, + modifier = Modifier.size(16.dp) + ) + } else { + Text(text = stringResource(id = R.string.action_save_autofill)) + } + }, + enabled = !isUpdating, + modifier = Modifier + .fillMaxWidth() + .padding(top = 8.dp) + .padding(horizontal = 16.dp) + ) + } + } + + if (onDeletePassword != null) { + item(key = "password_delete") { + if (!isUpdating) { + Button( + onClick = { showDeleteDialog = true }, + colors = ButtonDefaults.outlinedButtonColors( + contentColor = MaterialTheme.colorScheme.error, + disabledContentColor = MaterialTheme.colorScheme.error.copy(alpha = ContentAlpha.medium) + ), + content = { + Text(text = stringResource(id = R.string.action_delete_password)) + }, + modifier = Modifier + .fillMaxWidth() + .padding(top = 8.dp) + .padding(horizontal = 16.dp) + ) + } + } + } + + item(key = "bottom_spacer") { + Spacer( + modifier = Modifier + .windowInsetsBottomHeight(WindowInsets.ime.add(WindowInsets.navigationBars)) + .padding(bottom = 16.dp) + ) + } + + } + + if (showDeleteDialog) { + DeleteElementDialog( + onConfirmButton = { + showDeleteDialog = false + onDeletePassword?.invoke() + }, + onDismissRequest = { + showDeleteDialog = false + } + ) + } + + if (showAddCustomFieldDialog) { + AddCustomFieldDialog( + onAddClick = { type, label -> + editablePasswordState.customFields.add( + CustomField( + type = type, label = label, value = "" + ) + ) + showAddCustomFieldDialog = false + }, + onDismissRequest = { + showAddCustomFieldDialog = false + } + ) + } + + if (showFolderDialog) { + SelectFolderDialog( + folders = folders, + currentFolder = editablePasswordState.folder, + onSelectClick = { folder -> + editablePasswordState.folder = folder + showFolderDialog = false + }, + onDismissRequest = { + showFolderDialog = false + } + ) + } +} + +@Preview +@Composable +fun PasswordEditPreview() { + NextcloudPasswordsTheme { + Surface { + EditablePasswordView( + editablePasswordState = rememberEditablePasswordState().apply { + customFields.add( + CustomField( + type = CustomField.TYPE_TEXT, + label = "Custom field 1", + value = "" + ) + ) + customFields.add( + CustomField( + type = CustomField.TYPE_SECRET, + label = "Custom field 2", + value = "" + ) + ) + }, + folders = listOf(), + isUpdating = false, + isAutofillRequest = true, + onSavePassword = { }, + onDeletePassword = { }, + onGeneratePassword = null + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/PasswordItem.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/PasswordItem.kt new file mode 100644 index 0000000..d984818 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/PasswordItem.kt @@ -0,0 +1,578 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import android.content.ActivityNotFoundException +import android.webkit.URLUtil +import android.widget.Toast +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.text.InlineTextContent +import androidx.compose.foundation.text.appendInlineContent +import androidx.compose.foundation.text.selection.SelectionContainer +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Edit +import androidx.compose.material.icons.filled.Folder +import androidx.compose.material.icons.filled.Star +import androidx.compose.material.icons.twotone.AccountCircle +import androidx.compose.material.icons.twotone.AlternateEmail +import androidx.compose.material.icons.twotone.ContentCopy +import androidx.compose.material.icons.twotone.Info +import androidx.compose.material.icons.twotone.Link +import androidx.compose.material.icons.twotone.Password +import androidx.compose.material.icons.twotone.Shield +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.ListItem +import androidx.compose.material3.ListItemDefaults +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment.Companion.CenterVertically +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.Placeholder +import androidx.compose.ui.text.PlaceholderVerticalAlign +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.data.password.CustomField +import com.hegocre.nextcloudpasswords.data.password.Password +import com.hegocre.nextcloudpasswords.ui.components.markdown.MDDocument +import com.hegocre.nextcloudpasswords.ui.theme.ContentAlpha +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme +import com.hegocre.nextcloudpasswords.ui.theme.favoriteColor +import com.hegocre.nextcloudpasswords.utils.copyToClipboard +import kotlinx.serialization.json.Json +import org.commonmark.node.Document +import org.commonmark.parser.Parser + +@Composable +fun PasswordItem( + passwordInfo: Pair>?, + modifier: Modifier = Modifier, + onEditPassword: (() -> Unit)? = null, +) { + passwordInfo?.let { pass -> + PasswordItemContent( + passwordInfo = pass, + onEditPassword = onEditPassword, + modifier = modifier + ) + } ?: Text( + text = stringResource(R.string.password), + style = MaterialTheme.typography.headlineMedium, + modifier = Modifier.padding(bottom = 8.dp) + ) +} + +@Composable +fun PasswordItemContent( + passwordInfo: Pair>, + onEditPassword: (() -> Unit)?, + modifier: Modifier = Modifier +) { + val context = LocalContext.current + val copiedText = stringResource(R.string.copied) + + val uriHandler = LocalUriHandler.current + + val password = passwordInfo.first + val folderPath = remember { + buildAnnotatedString { + appendInlineContent("folder") + append(" ") + passwordInfo.second.reversed().forEachIndexed { index, folderName -> + if (index != 0) append(" /") + append(" $folderName") + } + } + } + + val customFields by remember { + derivedStateOf { + if (password.customFields.isNotBlank()) { + Json.decodeFromString>(password.customFields) + } else { + listOf() + } + } + } + + Column(modifier = modifier) { + Row( + modifier = Modifier + .padding(bottom = 4.dp) + .padding(horizontal = 16.dp), + verticalAlignment = CenterVertically + ) { + val favoriteInlineContent = mapOf( + Pair( + "favorite", + InlineTextContent( + placeholder = Placeholder( + width = LocalTextStyle.current.fontSize, + height = LocalTextStyle.current.fontSize, + placeholderVerticalAlign = PlaceholderVerticalAlign.Center + ) + ) { + Icon( + imageVector = Icons.Default.Star, + contentDescription = stringResource( + id = R.string.password_attr_favorite + ), + tint = MaterialTheme.colorScheme.favoriteColor + ) + } + ) + ) + Text( + text = buildAnnotatedString { + append(password.label) + if (password.favorite) { + append(" ") + appendInlineContent("favorite") + } + }, + inlineContent = favoriteInlineContent, + style = MaterialTheme.typography.headlineMedium, + modifier = Modifier + .padding(bottom = 2.dp) + .weight(1f) + ) + if (password.editable) { + onEditPassword?.let { + IconButton(onClick = it) { + Icon( + imageVector = Icons.Default.Edit, + contentDescription = stringResource(id = R.string.action_edit_password), + ) + } + } + } + } + LazyColumn { + item(key = "${password.id}_path") { + val folderInlineContent = mapOf( + Pair( + "folder", + InlineTextContent( + placeholder = Placeholder( + width = LocalTextStyle.current.fontSize, + height = LocalTextStyle.current.fontSize, + placeholderVerticalAlign = PlaceholderVerticalAlign.Center + ) + ) { + Icon( + imageVector = Icons.Default.Folder, + contentDescription = stringResource( + id = R.string.folder + ), + tint = MaterialTheme.colorScheme.onSurface + .copy(alpha = ContentAlpha.medium) + ) + } + ) + ) + Text( + text = folderPath, + inlineContent = folderInlineContent, + modifier = Modifier + .padding(bottom = 16.dp) + .padding(horizontal = 16.dp) + ) + } + + if (password.username.isNotBlank()) { + item(key = "${password.id}_username") { + val usernameLabel = stringResource(id = R.string.password_attr_username) + + PasswordTextField( + text = password.username, + label = usernameLabel, + icon = { + Icon( + imageVector = Icons.TwoTone.AccountCircle, + contentDescription = stringResource(id = R.string.password_attr_username) + ) + }, + trailingIcon = { + IconButton(onClick = { + context.copyToClipboard(password.username) + Toast.makeText( + context, + String.format(copiedText, usernameLabel), + Toast.LENGTH_SHORT + ).show() + }) { + Icon( + imageVector = Icons.TwoTone.ContentCopy, + contentDescription = stringResource(id = R.string.action_copy_value) + ) + } + } + ) + } + } + + item(key = "${password.id}_password") { + var showPassword by rememberSaveable { mutableStateOf(false) } + + val passwordLabel = stringResource(id = R.string.password_attr_password) + + PasswordTextField( + text = if (showPassword) password.password else "●".repeat(password.password.length), + label = passwordLabel, + icon = { + Icon( + imageVector = Icons.TwoTone.Password, + contentDescription = stringResource(id = R.string.password_attr_password) + ) + }, + trailingIcon = { + IconButton(onClick = { + context.copyToClipboard(password.password, isSensitive = true) + Toast.makeText( + context, + String.format(copiedText, passwordLabel), + Toast.LENGTH_SHORT + ).show() + }) { + Icon( + imageVector = Icons.TwoTone.ContentCopy, + contentDescription = stringResource(id = R.string.action_copy_value) + ) + } + }, + onClickText = { showPassword = !showPassword }, + fontFamily = FontFamily(Font(R.font.dejavu_sans_mono)) + ) + } + + if (password.url.isNotBlank()) { + item(key = "${password.id}_url") { + val urlLabel = stringResource(id = R.string.password_attr_url) + + PasswordTextField( + text = password.url, + label = urlLabel, + icon = { + Icon( + imageVector = Icons.TwoTone.Link, + contentDescription = stringResource(id = R.string.password_attr_url) + ) + }, + trailingIcon = { + IconButton(onClick = { + context.copyToClipboard(password.url) + Toast.makeText( + context, + String.format(copiedText, urlLabel), + Toast.LENGTH_SHORT + ).show() + }) { + Icon( + imageVector = Icons.TwoTone.ContentCopy, + contentDescription = stringResource(id = R.string.action_copy_value) + ) + } + }, + onClickText = if (URLUtil.isValidUrl(password.url)) { + { + try { + uriHandler.openUri(password.url) + } catch (ex: ActivityNotFoundException) { + Toast.makeText( + context, + R.string.error_could_not_open_url, + Toast.LENGTH_LONG + ).show() + } + } + } else if (URLUtil.isValidUrl("https://${password.url}")) { + { + try { + uriHandler.openUri("https://${password.url}") + } catch (ex: ActivityNotFoundException) { + Toast.makeText( + context, + R.string.error_could_not_open_url, + Toast.LENGTH_LONG + ).show() + } + } + } else null + ) + } + } + + if (customFields.isNotEmpty()) { + itemsIndexed( + items = customFields, + key = { index, field -> "${index}_${password.id}_${field.label}" }) {_, customField -> + when (customField.type) { + CustomField.TYPE_TEXT, CustomField.TYPE_EMAIL -> { + PasswordTextField( + text = customField.value, + label = customField.label, + icon = { + if (customField.type == CustomField.TYPE_TEXT) { + Icon( + imageVector = Icons.TwoTone.Info, + contentDescription = stringResource(id = R.string.custom_field_type_text) + ) + } else { + Icon( + imageVector = Icons.TwoTone.AlternateEmail, + contentDescription = stringResource(id = R.string.custom_field_type_email) + ) + } + }, + trailingIcon = { + IconButton(onClick = { + context.copyToClipboard(customField.value) + Toast.makeText( + context, + String.format(copiedText, customField.label), + Toast.LENGTH_SHORT + ).show() + }) { + Icon( + imageVector = Icons.TwoTone.ContentCopy, + contentDescription = stringResource(id = R.string.action_copy_value) + ) + } + } + ) + } + + CustomField.TYPE_SECRET -> { + var showSecret by rememberSaveable { mutableStateOf(false) } + + PasswordTextField( + text = if (showSecret) customField.value else + "●".repeat(customField.value.length), + label = customField.label, + icon = { + Icon( + imageVector = Icons.TwoTone.Shield, + contentDescription = stringResource(id = R.string.custom_field_type_secret) + ) + }, + trailingIcon = { + IconButton(onClick = { + context.copyToClipboard(customField.value) + Toast.makeText( + context, + String.format(copiedText, customField.label), + Toast.LENGTH_SHORT + ).show() + }) { + Icon( + imageVector = Icons.TwoTone.ContentCopy, + contentDescription = stringResource(id = R.string.action_copy_value) + ) + } + }, + + onClickText = { showSecret = !showSecret }, + fontFamily = FontFamily(Font(R.font.dejavu_sans_mono)) + ) + } + + CustomField.TYPE_URL -> { + PasswordTextField( + text = customField.value, + label = customField.label, + icon = { + Icon( + imageVector = Icons.TwoTone.Link, + contentDescription = stringResource(id = R.string.password_attr_url) + ) + }, + trailingIcon = { + IconButton(onClick = { + context.copyToClipboard(customField.value) + Toast.makeText( + context, + String.format(copiedText, customField.label), + Toast.LENGTH_SHORT + ).show() + }) { + Icon( + imageVector = Icons.TwoTone.ContentCopy, + contentDescription = stringResource(id = R.string.action_copy_value) + ) + } + }, + onClickText = if (URLUtil.isValidUrl(customField.value)) { + { + try { + uriHandler.openUri(customField.value) + } catch (ex: ActivityNotFoundException) { + Toast.makeText( + context, + R.string.error_could_not_open_url, + Toast.LENGTH_LONG + ).show() + } + } + } else if (URLUtil.isValidUrl("https://${customField.value}")) { + { + try { + uriHandler.openUri("https://${customField.value}") + } catch (ex: ActivityNotFoundException) { + Toast.makeText( + context, + R.string.error_could_not_open_url, + Toast.LENGTH_LONG + ).show() + } + } + } else null + ) + } + } + } + } + + if (password.notes.isNotBlank()) { + item(key = "${password.id}_notes") { + val notesLabel = stringResource(id = R.string.password_attr_notes) + + PasswordMarkdownField( + markdown = password.notes.replace("\n", "\n\n"), + modifier = Modifier + .padding(top = 8.dp) + .padding(horizontal = 4.dp), + label = notesLabel + ) + } + } + } + } +} + +@Composable +fun PasswordTextField( + text: String, + label: String, + modifier: Modifier = Modifier, + icon: @Composable () -> Unit = {}, + trailingIcon: @Composable () -> Unit = {}, + onClickText: (() -> Unit)? = null, + maxLines: Int? = null, + fontFamily: FontFamily? = null, +) { + ListItem( + headlineContent = { + Text( + text = text, + maxLines = maxLines ?: Int.MAX_VALUE, + overflow = TextOverflow.Ellipsis, + fontFamily = fontFamily, + modifier = Modifier + .clickable( + enabled = onClickText != null, + onClick = onClickText ?: {} + ), + ) + }, + overlineContent = { + Text( + text = label.uppercase(), + maxLines = 1 + ) + }, + leadingContent = icon, + trailingContent = trailingIcon, + colors = ListItemDefaults.colors(containerColor = Color.Transparent), + modifier = modifier + ) +} + +@Composable +fun PasswordMarkdownField( + markdown: String, + modifier: Modifier = Modifier, + label: String = "", +) { + val root = remember(markdown) { + Parser.builder().build().parse(markdown) as Document + } + Column(modifier = modifier.padding(horizontal = 16.dp)) { + if (label.isNotBlank()) { + Text( + text = label.uppercase(), + style = MaterialTheme.typography.labelSmall, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + SelectionContainer { + Column { + MDDocument(root) + } + } + } +} + +@Preview +@Composable +fun PasswordItemPreview() { + NextcloudPasswordsTheme { + Surface { + PasswordItem( + passwordInfo = Pair( + Password( + id = "", + label = "Nextcloud with a really long label", + username = "john_doe", + password = "secret_value", + url = "https://nextcloud.com/", + notes = "# This is a note\n\nIt is very important that this is read by all __means__\n\n" + + "## Subsection \n\n This is also important.\n\n" + + "## Another subsection\n\n### Even deeper\n\n Some text\nSome more text", + customFields = "", + status = 0, + statusCode = "GOOD", + hash = "", + folder = "", + revision = "", + share = null, + shared = false, + cseType = "", + cseKey = "", + sseType = "", + client = "", + hidden = false, + trashed = false, + favorite = true, + editable = true, + edited = 0, + created = 0, + updated = 0 + ), listOf("Second", "Home") + ), + onEditPassword = {}, + modifier = Modifier.padding(bottom = 16.dp) + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/PullToRefreshBody.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/PullToRefreshBody.kt new file mode 100644 index 0000000..585e98c --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/PullToRefreshBody.kt @@ -0,0 +1,25 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.pulltorefresh.PullToRefreshBox +import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState +import androidx.compose.runtime.Composable + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun PullToRefreshBody( + isRefreshing: Boolean, + onRefresh: () -> Unit = {}, + content: @Composable () -> Unit = {} +) { + val pullRefreshState = rememberPullToRefreshState() + + PullToRefreshBox( + state = pullRefreshState, + onRefresh = onRefresh, + isRefreshing = isRefreshing, + content = { content() } + //contentColor = MaterialTheme.colorScheme.primary, + //containerColor = MaterialTheme.colorScheme.surfaceColorAtElevation(4.dp) + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/Settings.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/Settings.kt new file mode 100644 index 0000000..f31b8c9 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/Settings.kt @@ -0,0 +1,181 @@ +package com.hegocre.nextcloudpasswords.ui.components + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material3.LocalContentColor +import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Switch +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.hegocre.nextcloudpasswords.ui.theme.NextcloudPasswordsTheme + +@Composable +fun PreferencesCategory( + title: @Composable () -> Unit, + content: @Composable () -> Unit +) { + Column { + Column( + modifier = Modifier.padding(bottom = 18.dp) + ) { + CompositionLocalProvider( + LocalContentColor provides MaterialTheme.colorScheme.primary, + LocalTextStyle provides MaterialTheme.typography.labelSmall.copy(fontSize = 14.sp) + ) { + Box(modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp)) { + title() + } + } + + content() + } + } + +} + +@Composable +fun SwitchPreference( + checked: Boolean, + onCheckedChange: (Boolean) -> Unit, + title: @Composable () -> Unit, + modifier: Modifier = Modifier, + subtitle: (@Composable () -> Unit)? = null, + enabled: Boolean = true +) { + + Row( + modifier = modifier + .fillMaxWidth() + .clickable { if (enabled) onCheckedChange(!checked) } + .padding(vertical = 12.dp, horizontal = 16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Column( + Modifier + .weight(1f) + .padding(end = 12.dp)) { + title() + CompositionLocalProvider( + LocalTextStyle provides MaterialTheme.typography.bodySmall.copy(fontSize = 13.sp) + ) { + subtitle?.let { + it() + } + } + } + Switch( + checked = checked, + onCheckedChange = { if (enabled) onCheckedChange(it) }, + enabled = enabled, + ) + } +} + +@Composable +fun ListPreference( + items: Map, + selectedItem: String, + onItemSelected: (String) -> Unit, + title: @Composable () -> Unit, + modifier: Modifier = Modifier, +) { + var dialogVisible by remember { mutableStateOf(false) } + Row( + modifier = modifier + .fillMaxWidth() + .clickable { dialogVisible = true } + .padding(vertical = 12.dp, horizontal = 16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Column(Modifier.weight(1f)) { + title() + CompositionLocalProvider( + LocalTextStyle provides MaterialTheme.typography.bodySmall.copy(fontSize = 13.sp) + ) { + Text(items.getOrDefault(selectedItem, "")) + } + } + + if (dialogVisible) { + ListPreferenceDialog( + title = title, + options = items, + selectedOption = selectedItem, + onSelectOption = { + onItemSelected(it) + dialogVisible = false + }, + onDismissRequest = { dialogVisible = false } + ) + } + } +} + +@Preview +@Composable +fun PreferencesPreview() { + NextcloudPasswordsTheme { + Surface { + Column { + PreferencesCategory(title = { Text("General") }) { + ListPreference( + items = mapOf("passwords" to "Passwords"), + onItemSelected = {}, + title = { Text(text = "Initial view") }, + selectedItem = "passwords" + ) + + SwitchPreference( + checked = true, + onCheckedChange = {}, + title = { Text(text = "Show icons") }, + subtitle = { Text(text = "Show website icons") } + ) + } + + PreferencesCategory(title = { Text("Security") }) { + SwitchPreference( + checked = true, + onCheckedChange = {}, + title = { Text(text = "App lock") }, + subtitle = { Text(text = "Lock access to the application with a code") } + ) + + SwitchPreference( + checked = true, + onCheckedChange = {}, + title = { Text(text = "Biometric unlock") }, + subtitle = { Text(text = "Unlock the app with biometric credentials such as fingerprint or face") } + ) + } + + PreferencesCategory(title = { Text("Security") }) { + SwitchPreference( + checked = true, + onCheckedChange = {}, + title = { Text(text = "Autofill") }, + subtitle = { Text(text = "Enable autofill service") }, + enabled = false + ) + } + } + + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/markdown/MarkdownTextView.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/markdown/MarkdownTextView.kt new file mode 100644 index 0000000..f240bc2 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/components/markdown/MarkdownTextView.kt @@ -0,0 +1,306 @@ +package com.hegocre.nextcloudpasswords.ui.components.markdown + +import androidx.compose.foundation.Image +import androidx.compose.foundation.gestures.detectTapGestures +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.text.InlineTextContent +import androidx.compose.foundation.text.appendInlineContent +import androidx.compose.material3.ColorScheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.drawBehind +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.Placeholder +import androidx.compose.ui.text.PlaceholderVerticalAlign +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextLayoutResult +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextDecoration +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import coil.compose.rememberAsyncImagePainter +import coil.request.ImageRequest +import coil.size.Size +import org.commonmark.node.BlockQuote +import org.commonmark.node.BulletList +import org.commonmark.node.Code +import org.commonmark.node.Document +import org.commonmark.node.Emphasis +import org.commonmark.node.FencedCodeBlock +import org.commonmark.node.HardLineBreak +import org.commonmark.node.Heading +import org.commonmark.node.Image +import org.commonmark.node.Link +import org.commonmark.node.ListBlock +import org.commonmark.node.Node +import org.commonmark.node.OrderedList +import org.commonmark.node.Paragraph +import org.commonmark.node.StrongEmphasis +import org.commonmark.node.Text + +private const val TAG_URL = "url" +private const val TAG_IMAGE_URL = "imageUrl" + +@Composable +fun MDDocument(document: Document) { + MDBlockChildren(document) +} + +@Composable +fun MDHeading(heading: Heading, modifier: Modifier = Modifier) { + val style = when (heading.level) { + 1 -> MaterialTheme.typography.headlineSmall + 2 -> MaterialTheme.typography.headlineSmall.copy(fontSize = 20.sp) + 3 -> MaterialTheme.typography.headlineSmall.copy(fontSize = 18.sp) + 4 -> MaterialTheme.typography.headlineSmall.copy(fontSize = 16.sp) + 5 -> MaterialTheme.typography.headlineSmall.copy(fontSize = 14.sp) + 6 -> MaterialTheme.typography.headlineSmall.copy(fontSize = 14.sp) + else -> { + // Invalid header... + MDBlockChildren(heading) + return + } + } + + val padding = if (heading.parent is Document) 8.dp else 0.dp + Box(modifier = modifier.padding(bottom = padding)) { + val text = buildAnnotatedString { + appendMarkdownChildren(heading, MaterialTheme.colorScheme) + } + MarkdownText(text, style) + } +} + +@Composable +fun MDParagraph(paragraph: Paragraph, modifier: Modifier = Modifier) { + val padding = if (paragraph.parent is Document) 10.dp else 0.dp + Box(modifier = modifier.padding(bottom = padding)) { + val styledText = buildAnnotatedString { + pushStyle(MaterialTheme.typography.bodyMedium.toSpanStyle()) + appendMarkdownChildren(paragraph, MaterialTheme.colorScheme) + pop() + } + MarkdownText(styledText, MaterialTheme.typography.bodyMedium) + } +} + +@Composable +fun MDImage(image: Image, modifier: Modifier = Modifier) { + Box(modifier = modifier.fillMaxWidth(), contentAlignment = Alignment.Center) { + Image( + painter = rememberAsyncImagePainter( + ImageRequest.Builder(LocalContext.current).data(data = image.destination) + .apply(block = fun ImageRequest.Builder.() { + size(Size.ORIGINAL) + }).build() + ), + contentDescription = null, + ) + } +} + +@Composable +fun MDBulletList(bulletList: BulletList, modifier: Modifier = Modifier) { + val marker = bulletList.marker + MDListItems(bulletList, modifier = modifier) { + val text = buildAnnotatedString { + pushStyle(MaterialTheme.typography.bodyMedium.toSpanStyle()) + append("$marker ") + appendMarkdownChildren(it, MaterialTheme.colorScheme) + pop() + } + MarkdownText(text, MaterialTheme.typography.bodyMedium, modifier) + } +} + +@Composable +fun MDOrderedList(orderedList: OrderedList, modifier: Modifier = Modifier) { + var number = orderedList.markerStartNumber + val delimiter = orderedList.markerDelimiter + MDListItems(orderedList, modifier) { + val text = buildAnnotatedString { + pushStyle(MaterialTheme.typography.bodyMedium.toSpanStyle()) + append("${number++}$delimiter ") + appendMarkdownChildren(it, MaterialTheme.colorScheme) + pop() + } + MarkdownText(text, MaterialTheme.typography.bodyMedium, modifier) + } +} + +@Composable +fun MDListItems( + listBlock: ListBlock, + modifier: Modifier = Modifier, + item: @Composable (node: Node) -> Unit +) { + val bottom = if (listBlock.parent is Document) 8.dp else 0.dp + val start = if (listBlock.parent is Document) 0.dp else 8.dp + Column(modifier = modifier.padding(start = start, bottom = bottom)) { + var listItem = listBlock.firstChild + while (listItem != null) { + var child = listItem.firstChild + while (child != null) { + when (child) { + is BulletList -> MDBulletList(child, modifier) + is OrderedList -> MDOrderedList(child, modifier) + else -> item(child) + } + child = child.next + } + listItem = listItem.next + } + } +} + +@Composable +fun MDBlockQuote(blockQuote: BlockQuote, modifier: Modifier = Modifier) { + val color = MaterialTheme.colorScheme.onBackground + Box(modifier = modifier + .drawBehind { + drawLine( + color = color, + strokeWidth = 2f, + start = Offset(12.dp.value, 0f), + end = Offset(12.dp.value, size.height) + ) + } + .padding(start = 16.dp, top = 4.dp, bottom = 4.dp)) { + val text = buildAnnotatedString { + pushStyle( + MaterialTheme.typography.bodyMedium.toSpanStyle() + .plus(SpanStyle(fontStyle = FontStyle.Italic)) + ) + appendMarkdownChildren(blockQuote, MaterialTheme.colorScheme) + pop() + } + Text(text, modifier) + } +} + +@Composable +fun MDFencedCodeBlock(fencedCodeBlock: FencedCodeBlock, modifier: Modifier = Modifier) { + val padding = if (fencedCodeBlock.parent is Document) 8.dp else 0.dp + Box(modifier = modifier.padding(start = 8.dp, bottom = padding)) { + Text( + text = fencedCodeBlock.literal, + style = TextStyle(fontFamily = FontFamily.Monospace), + modifier = modifier + ) + } +} + +@Composable +fun MDBlockChildren(parent: Node) { + var child = parent.firstChild + while (child != null) { + when (child) { + is BlockQuote -> MDBlockQuote(child) + is Heading -> MDHeading(child) + is Paragraph -> MDParagraph(child) + is FencedCodeBlock -> MDFencedCodeBlock(child) + is Image -> MDImage(child) + is BulletList -> MDBulletList(child) + is OrderedList -> MDOrderedList(child) + } + child = child.next + } +} + +fun AnnotatedString.Builder.appendMarkdownChildren( + parent: Node, colors: ColorScheme +) { + var child = parent.firstChild + while (child != null) { + when (child) { + is Paragraph -> appendMarkdownChildren(child, colors) + is Text -> append(child.literal) + is Image -> appendInlineContent(TAG_IMAGE_URL, child.destination) + is Emphasis -> { + pushStyle(SpanStyle(fontStyle = FontStyle.Italic)) + appendMarkdownChildren(child, colors) + pop() + } + + is StrongEmphasis -> { + pushStyle(SpanStyle(fontWeight = FontWeight.Bold)) + appendMarkdownChildren(child, colors) + pop() + } + + is Code -> { + pushStyle(TextStyle(fontFamily = FontFamily.Monospace).toSpanStyle()) + append(child.literal) + pop() + } + + is HardLineBreak -> { + append("\n") + } + + is Link -> { + val underline = SpanStyle(colors.primary, textDecoration = TextDecoration.Underline) + pushStyle(underline) + pushStringAnnotation(TAG_URL, child.destination) + appendMarkdownChildren(child, colors) + pop() + pop() + } + } + child = child.next + } +} + +@Composable +fun MarkdownText(text: AnnotatedString, style: TextStyle, modifier: Modifier = Modifier) { + val uriHandler = LocalUriHandler.current + val layoutResult = remember { mutableStateOf(null) } + + Text(text = text, + modifier.pointerInput(Unit) { + detectTapGestures { offset -> + layoutResult.value?.let { layoutResult -> + val position = layoutResult.getOffsetForPosition(offset) + text.getStringAnnotations(position, position) + .firstOrNull() + ?.let { sa -> + if (sa.tag == TAG_URL) { + uriHandler.openUri(sa.item) + } + } + } + } + }, + style = style, + inlineContent = mapOf( + TAG_IMAGE_URL to InlineTextContent( + Placeholder(style.fontSize, style.fontSize, PlaceholderVerticalAlign.Bottom) + ) { + Image( + painter = rememberAsyncImagePainter(model = it), + contentDescription = null, + modifier = modifier, + alignment = Alignment.Center + ) + + } + ), + onTextLayout = { layoutResult.value = it } + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/Color.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/Color.kt new file mode 100644 index 0000000..b19898d --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/Color.kt @@ -0,0 +1,72 @@ +package com.hegocre.nextcloudpasswords.ui.theme + +import androidx.compose.ui.graphics.Color + +val md_theme_light_primary = Color(0xFF0061A4) +val md_theme_light_onPrimary = Color(0xFFFFFFFF) +val md_theme_light_primaryContainer = Color(0xFFD1E4FF) +val md_theme_light_onPrimaryContainer = Color(0xFF001D36) +val md_theme_light_secondary = Color(0xFF535F70) +val md_theme_light_onSecondary = Color(0xFFFFFFFF) +val md_theme_light_secondaryContainer = Color(0xFFD7E3F7) +val md_theme_light_onSecondaryContainer = Color(0xFF101C2B) +val md_theme_light_tertiary = Color(0xFF006398) +val md_theme_light_onTertiary = Color(0xFFFFFFFF) +val md_theme_light_tertiaryContainer = Color(0xFFCDE5FF) +val md_theme_light_onTertiaryContainer = Color(0xFF001D32) +val md_theme_light_error = Color(0xFFBA1A1A) +val md_theme_light_errorContainer = Color(0xFFFFDAD6) +val md_theme_light_onError = Color(0xFFFFFFFF) +val md_theme_light_onErrorContainer = Color(0xFF410002) +val md_theme_light_background = Color(0xFFFDFCFF) +val md_theme_light_onBackground = Color(0xFF1A1C1E) +val md_theme_light_surface = Color(0xFFFDFCFF) +val md_theme_light_onSurface = Color(0xFF1A1C1E) +val md_theme_light_surfaceVariant = Color(0xFFDFE2EB) +val md_theme_light_onSurfaceVariant = Color(0xFF43474E) +val md_theme_light_outline = Color(0xFF73777F) +val md_theme_light_inverseOnSurface = Color(0xFFF1F0F4) +val md_theme_light_inverseSurface = Color(0xFF2F3033) +val md_theme_light_inversePrimary = Color(0xFF9ECAFF) +val md_theme_light_surfaceTint = Color(0xFF0061A4) +val md_theme_light_outlineVariant = Color(0xFFC3C7CF) +val md_theme_light_scrim = Color(0xFF000000) + +val md_theme_dark_primary = Color(0xFF9ECAFF) +val md_theme_dark_onPrimary = Color(0xFF003258) +val md_theme_dark_primaryContainer = Color(0xFF00497D) +val md_theme_dark_onPrimaryContainer = Color(0xFFD1E4FF) +val md_theme_dark_secondary = Color(0xFFBBC7DB) +val md_theme_dark_onSecondary = Color(0xFF253140) +val md_theme_dark_secondaryContainer = Color(0xFF3B4858) +val md_theme_dark_onSecondaryContainer = Color(0xFFD7E3F7) +val md_theme_dark_tertiary = Color(0xFF94CCFF) +val md_theme_dark_onTertiary = Color(0xFF003352) +val md_theme_dark_tertiaryContainer = Color(0xFF004B74) +val md_theme_dark_onTertiaryContainer = Color(0xFFCDE5FF) +val md_theme_dark_error = Color(0xFFFFB4AB) +val md_theme_dark_errorContainer = Color(0xFF93000A) +val md_theme_dark_onError = Color(0xFF690005) +val md_theme_dark_onErrorContainer = Color(0xFFFFDAD6) +val md_theme_dark_background = Color(0xFF1A1C1E) +val md_theme_dark_onBackground = Color(0xFFE2E2E6) +val md_theme_dark_surface = Color(0xFF1A1C1E) +val md_theme_dark_onSurface = Color(0xFFE2E2E6) +val md_theme_dark_surfaceVariant = Color(0xFF43474E) +val md_theme_dark_onSurfaceVariant = Color(0xFFC3C7CF) +val md_theme_dark_outline = Color(0xFF8D9199) +val md_theme_dark_inverseOnSurface = Color(0xFF1A1C1E) +val md_theme_dark_inverseSurface = Color(0xFFE2E2E6) +val md_theme_dark_inversePrimary = Color(0xFF0061A4) +val md_theme_dark_surfaceTint = Color(0xFF9ECAFF) +val md_theme_dark_outlineVariant = Color(0xFF43474E) +val md_theme_dark_scrim = Color(0xFF000000) + +val Amber500 = Color(0xFFFFC107) +val Amber200 = Color(0xFFFFE082) + +val Green500 = Color(0xFF4CAF50) +val Green200 = Color(0xFFA5D6A7) + +val Red500 = Color(0xFFF44336) +val Red200 = Color(0xFFEF9A9A) \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/ContentAlpha.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/ContentAlpha.kt new file mode 100644 index 0000000..e17ac12 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/ContentAlpha.kt @@ -0,0 +1,7 @@ +package com.hegocre.nextcloudpasswords.ui.theme + +object ContentAlpha { + // Enable if needed // const val high = 0.87f + const val medium = 0.60f + // Enable if needed // const val disabled = 0.38f +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/NCPTheme.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/NCPTheme.kt new file mode 100644 index 0000000..ac2ed10 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/NCPTheme.kt @@ -0,0 +1,213 @@ +package com.hegocre.nextcloudpasswords.ui.theme + +import android.app.Activity +import android.os.Build +import androidx.compose.foundation.isSystemInDarkTheme +import androidx.compose.material3.ColorScheme +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.dynamicDarkColorScheme +import androidx.compose.material3.dynamicLightColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect +import androidx.compose.runtime.collectAsState +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.luminance +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalInspectionMode +import androidx.compose.ui.platform.LocalView +import androidx.core.graphics.toColorInt +import androidx.core.view.WindowCompat +import com.hegocre.nextcloudpasswords.utils.PreferencesManager +import com.materialkolor.dynamicColorScheme + +private val defaultLightColorScheme = lightColorScheme( + primary = md_theme_light_primary, + onPrimary = md_theme_light_onPrimary, + primaryContainer = md_theme_light_primaryContainer, + onPrimaryContainer = md_theme_light_onPrimaryContainer, + secondary = md_theme_light_secondary, + onSecondary = md_theme_light_onSecondary, + secondaryContainer = md_theme_light_secondaryContainer, + onSecondaryContainer = md_theme_light_onSecondaryContainer, + tertiary = md_theme_light_tertiary, + onTertiary = md_theme_light_onTertiary, + tertiaryContainer = md_theme_light_tertiaryContainer, + onTertiaryContainer = md_theme_light_onTertiaryContainer, + error = md_theme_light_error, + errorContainer = md_theme_light_errorContainer, + onError = md_theme_light_onError, + onErrorContainer = md_theme_light_onErrorContainer, + background = md_theme_light_background, + onBackground = md_theme_light_onBackground, + surface = md_theme_light_surface, + onSurface = md_theme_light_onSurface, + surfaceVariant = md_theme_light_surfaceVariant, + onSurfaceVariant = md_theme_light_onSurfaceVariant, + outline = md_theme_light_outline, + inverseOnSurface = md_theme_light_inverseOnSurface, + inverseSurface = md_theme_light_inverseSurface, + inversePrimary = md_theme_light_inversePrimary, + surfaceTint = md_theme_light_surfaceTint, + outlineVariant = md_theme_light_outlineVariant, + scrim = md_theme_light_scrim, +) + + +private val defaultDarkColorScheme = darkColorScheme( + primary = md_theme_dark_primary, + onPrimary = md_theme_dark_onPrimary, + primaryContainer = md_theme_dark_primaryContainer, + onPrimaryContainer = md_theme_dark_onPrimaryContainer, + secondary = md_theme_dark_secondary, + onSecondary = md_theme_dark_onSecondary, + secondaryContainer = md_theme_dark_secondaryContainer, + onSecondaryContainer = md_theme_dark_onSecondaryContainer, + tertiary = md_theme_dark_tertiary, + onTertiary = md_theme_dark_onTertiary, + tertiaryContainer = md_theme_dark_tertiaryContainer, + onTertiaryContainer = md_theme_dark_onTertiaryContainer, + error = md_theme_dark_error, + errorContainer = md_theme_dark_errorContainer, + onError = md_theme_dark_onError, + onErrorContainer = md_theme_dark_onErrorContainer, + background = md_theme_dark_background, + onBackground = md_theme_dark_onBackground, + surface = md_theme_dark_surface, + onSurface = md_theme_dark_onSurface, + surfaceVariant = md_theme_dark_surfaceVariant, + onSurfaceVariant = md_theme_dark_onSurfaceVariant, + outline = md_theme_dark_outline, + inverseOnSurface = md_theme_dark_inverseOnSurface, + inverseSurface = md_theme_dark_inverseSurface, + inversePrimary = md_theme_dark_inversePrimary, + surfaceTint = md_theme_dark_surfaceTint, + outlineVariant = md_theme_dark_outlineVariant, + scrim = md_theme_dark_scrim, +) + +@Composable +fun NextcloudPasswordsTheme( + content: @Composable () -> Unit +) { + val isPreview = LocalInspectionMode.current + + if (isPreview) { + MaterialTheme( + colorScheme = if (isSystemInDarkTheme()) defaultDarkColorScheme else defaultLightColorScheme, + typography = Typography, + content = content + ) + } else { + val context = LocalContext.current + val preferencesManager = PreferencesManager.getInstance(context) + val appTheme by preferencesManager.getAppTheme().collectAsState(initial = NCPTheme.SYSTEM) + val useNextcloudInstanceColor by preferencesManager.getUseInstanceColor() + .collectAsState(initial = false) + val instanceColorString by preferencesManager.getInstanceColor() + .collectAsState(initial = "#745bca") + val instanceColor by remember { + derivedStateOf { + try { + Color(instanceColorString.toColorInt()) + } catch (e: IllegalArgumentException) { + Color(0xFF745BCA) + } + } + } + val useSystemDynamicColor by preferencesManager.getUseSystemDynamicColor() + .collectAsState(initial = false) + + val colorScheme = when { + useSystemDynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> { + when { + appTheme == NCPTheme.LIGHT -> dynamicLightColorScheme(context) + appTheme == NCPTheme.DARK -> dynamicDarkColorScheme(context) + appTheme == NCPTheme.AMOLED -> dynamicDarkColorScheme(context).copy( + background = Color.Black, + surface = Color.Black + ) + + isSystemInDarkTheme() -> dynamicDarkColorScheme(context) + else -> dynamicLightColorScheme(context) + } + } + + useNextcloudInstanceColor -> { + when (appTheme) { + NCPTheme.LIGHT -> dynamicColorScheme( + instanceColor, + isDark = false, + isAmoled = false + ) + + NCPTheme.DARK -> dynamicColorScheme(instanceColor, isDark = true, isAmoled = false) + NCPTheme.AMOLED -> dynamicColorScheme(instanceColor, isDark = true, isAmoled = true) + else -> dynamicColorScheme(instanceColor, isSystemInDarkTheme(), false) + } + } + + appTheme == NCPTheme.LIGHT -> defaultLightColorScheme + appTheme == NCPTheme.DARK -> defaultDarkColorScheme + appTheme == NCPTheme.AMOLED -> defaultDarkColorScheme.copy( + background = Color.Black, + surface = Color.Black + ) + + isSystemInDarkTheme() -> defaultDarkColorScheme + else -> defaultLightColorScheme + } + val view = LocalView.current + + if (!view.isInEditMode) { + SideEffect { + val window = (view.context as Activity).window + val insetsController = WindowCompat.getInsetsController(window, view) + insetsController.isAppearanceLightStatusBars = colorScheme.isLight() + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + insetsController.isAppearanceLightNavigationBars = colorScheme.isLight() + } + } + } + + MaterialTheme( + colorScheme = colorScheme, + typography = Typography, + content = content + ) + } +} + +fun ColorScheme.isLight() = this.background.luminance() > 0.5 + +val ColorScheme.favoriteColor: Color + get() { + return if (isLight()) Amber500 else Amber200 + } + +val ColorScheme.statusGood: Color + get() { + return if (isLight()) Green500 else Green200 + } + +val ColorScheme.statusWeak: Color + get() { + return if (isLight()) Amber500 else Amber200 + } + +val ColorScheme.statusBreached: Color + get() { + return if (isLight()) Red500 else Red200 + } + +object NCPTheme { + const val SYSTEM = "system_theme" + const val LIGHT = "light_theme" + const val DARK = "dark_theme" + const val AMOLED = "amoled_theme" +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/Type.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/Type.kt new file mode 100644 index 0000000..ecd6a30 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/theme/Type.kt @@ -0,0 +1,28 @@ +package com.hegocre.nextcloudpasswords.ui.theme + +import androidx.compose.material3.Typography +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.sp + +// Set of Material typography styles to start with +val Typography = Typography( + bodyMedium = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 16.sp + ) + /* Other default text styles to override + button = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.W500, + fontSize = 14.sp + ), + caption = TextStyle( + fontFamily = FontFamily.Default, + fontWeight = FontWeight.Normal, + fontSize = 12.sp + ) + */ +) \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/ui/viewmodels/PasswordsViewModel.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/viewmodels/PasswordsViewModel.kt new file mode 100644 index 0000000..23eac96 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/ui/viewmodels/PasswordsViewModel.kt @@ -0,0 +1,345 @@ +package com.hegocre.nextcloudpasswords.ui.viewmodels + +import android.app.Application +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.content.res.ColorStateList +import android.os.Build +import androidx.compose.material3.MaterialTheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.mutableStateOf +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.graphics.toArgb +import androidx.compose.ui.platform.LocalContext +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData +import androidx.lifecycle.viewModelScope +import coil.compose.rememberAsyncImagePainter +import coil.request.ImageRequest +import com.hegocre.nextcloudpasswords.R +import com.hegocre.nextcloudpasswords.api.ApiController +import com.hegocre.nextcloudpasswords.api.encryption.CSEv1Keychain +import com.hegocre.nextcloudpasswords.api.exceptions.ClientDeauthorizedException +import com.hegocre.nextcloudpasswords.api.exceptions.PWDv1ChallengeMasterKeyInvalidException +import com.hegocre.nextcloudpasswords.api.exceptions.PWDv1ChallengeMasterKeyNeededException +import com.hegocre.nextcloudpasswords.api.exceptions.PWDv1ChallengePasswordException +import com.hegocre.nextcloudpasswords.data.folder.DeletedFolder +import com.hegocre.nextcloudpasswords.data.folder.Folder +import com.hegocre.nextcloudpasswords.data.folder.FolderController +import com.hegocre.nextcloudpasswords.data.folder.NewFolder +import com.hegocre.nextcloudpasswords.data.folder.UpdatedFolder +import com.hegocre.nextcloudpasswords.data.password.DeletedPassword +import com.hegocre.nextcloudpasswords.data.password.NewPassword +import com.hegocre.nextcloudpasswords.data.password.Password +import com.hegocre.nextcloudpasswords.data.password.PasswordController +import com.hegocre.nextcloudpasswords.data.password.UpdatedPassword +import com.hegocre.nextcloudpasswords.data.serversettings.ServerSettings +import com.hegocre.nextcloudpasswords.data.user.UserController +import com.hegocre.nextcloudpasswords.utils.AppLockHelper +import com.hegocre.nextcloudpasswords.utils.PreferencesManager +import kotlinx.coroutines.Deferred +import kotlinx.coroutines.async +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch +import okhttp3.Credentials +import java.net.MalformedURLException +import java.net.URL + +class PasswordsViewModel(application: Application) : AndroidViewModel(application) { + private val preferencesManager = PreferencesManager.getInstance(application) + + private var masterPassword: MutableLiveData = MutableLiveData(null).also { + it.value = preferencesManager.getMasterPassword() + } + + private val _isRefreshing = MutableStateFlow(false) + val isRefreshing: StateFlow + get() = _isRefreshing.asStateFlow() + + + private val _isUpdating = MutableStateFlow(false) + val isUpdating: StateFlow + get() = _isUpdating.asStateFlow() + + private val _needsMasterPassword = MutableStateFlow(false) + val needsMasterPassword: StateFlow + get() = _needsMasterPassword.asStateFlow() + + private val _masterPasswordInvalid = MutableStateFlow(false) + val masterPasswordInvalid: StateFlow + get() = _masterPasswordInvalid.asStateFlow() + + private val _clientDeauthorized = MutableLiveData(false) + val clientDeauthorized: LiveData + get() = _clientDeauthorized + + private val apiController = ApiController.getInstance(application) + + val sessionOpen + get() = apiController.sessionOpen + + private val _showSessionOpenError = MutableStateFlow(false) + val showSessionOpenError: StateFlow + get() = _showSessionOpenError.asStateFlow() + + val csEv1Keychain: LiveData + get() = apiController.csEv1Keychain + + val serverSettings: LiveData + get() = apiController.serverSettings + + val server + get() = UserController.getInstance(getApplication()).getServer() + + val passwords: LiveData> + get() = PasswordController.getInstance(getApplication()).getPasswords() + val folders: LiveData> + get() = FolderController.getInstance(getApplication()).getFolders() + + var visiblePassword = mutableStateOf>?>(null) + private set + var visibleFolder = mutableStateOf(null) + private set + + init { + val screenLockFilter = IntentFilter().apply { + addAction(Intent.ACTION_SCREEN_OFF) + } + val screenOffReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (context != null && intent != null) { + val action = intent.action + if (screenLockFilter.matchAction(action)) { + AppLockHelper.getInstance(context).enableLock() + } + } + } + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { + application.registerReceiver( + screenOffReceiver, + screenLockFilter, + Context.RECEIVER_EXPORTED + ) + } else { + application.registerReceiver(screenOffReceiver, screenLockFilter) + } + + if (!sessionOpen.value) + openSession(masterPassword.value) + } + + private fun openSession(password: String?) { + viewModelScope.launch { + _isRefreshing.emit(true) + try { + if (apiController.openSession(password)) { + sync() + _showSessionOpenError.emit(true) + return@launch + } + _showSessionOpenError.emit(true) + } catch (ex: PWDv1ChallengeMasterKeyNeededException) { + _needsMasterPassword.emit(true) + } catch (ex: ClientDeauthorizedException) { + _clientDeauthorized.postValue(true) + } catch (ex: Exception) { + when (ex) { + is PWDv1ChallengeMasterKeyInvalidException, is PWDv1ChallengePasswordException -> { + _needsMasterPassword.emit(true) + _masterPasswordInvalid.emit(true) + masterPassword.postValue(null) + preferencesManager.setMasterPassword(null) + } + else -> { + _showSessionOpenError.emit(true) + ex.printStackTrace() + } + } + } + _isRefreshing.emit(false) + } + } + + fun setMasterPassword(password: String, save: Boolean = false) { + openSession(password) + masterPassword.postValue(password) + viewModelScope.launch { + _needsMasterPassword.emit(false) + _masterPasswordInvalid.emit(false) + } + if (save) + preferencesManager.setMasterPassword(password) + } + + fun sync() { + if (sessionOpen.value) { + viewModelScope.launch { + _isRefreshing.emit(true) + PasswordController.getInstance(getApplication()).syncPasswords() + FolderController.getInstance(getApplication()).syncFolders() + _isRefreshing.emit(false) + } + } else { + openSession(masterPassword.value) + } + } + + fun setVisiblePassword(password: Password, folderPath: List) { + visiblePassword.value = Pair(password, folderPath) + } + + fun setVisibleFolder(folder: Folder?) { + visibleFolder.value = folder + } + + fun createPassword(newPassword: NewPassword): Deferred { + return viewModelScope.async { + _isUpdating.value = true + if (!apiController.createPassword(newPassword)) { + _isUpdating.value = false + return@async false + } + sync() + _isUpdating.value = false + true + } + } + + fun updatePassword(updatedPassword: UpdatedPassword): Deferred { + return viewModelScope.async { + _isUpdating.value = true + if (!apiController.updatePassword(updatedPassword)) { + _isUpdating.value = false + return@async false + } + sync() + _isUpdating.value = false + true + } + } + + fun deletePassword(deletedPassword: DeletedPassword): Deferred { + return viewModelScope.async { + _isUpdating.value = true + if (!apiController.deletePassword(deletedPassword)) { + _isUpdating.value = false + return@async false + } + sync() + _isUpdating.value = false + true + } + } + + fun generatePassword( + strength: Int, includeDigits: Boolean, includeSymbols: Boolean + ): Deferred { + return viewModelScope.async { + return@async apiController.generatePassword(strength, includeDigits, includeSymbols) + } + } + + fun createFolder(newFolder: NewFolder): Deferred { + return viewModelScope.async { + _isUpdating.value = true + if (!apiController.createFolder(newFolder)) { + _isUpdating.value = false + return@async false + } + sync() + _isUpdating.value = false + true + } + } + + fun updateFolder(updatedFolder: UpdatedFolder): Deferred { + return viewModelScope.async { + _isUpdating.value = true + if (!apiController.updateFolder(updatedFolder)) { + _isUpdating.value = false + return@async false + } + sync() + _isUpdating.value = false + true + } + } + + fun deleteFolder(deletedFolder: DeletedFolder): Deferred { + return viewModelScope.async { + _isUpdating.value = true + if (!apiController.deleteFolder(deletedFolder)) { + _isUpdating.value = false + return@async false + } + sync() + _isUpdating.value = false + true + } + } + + @Composable + fun getPainterForUrl(url: String): Painter { + val context = LocalContext.current + val domain = try { + URL(url).host + } catch (e: MalformedURLException) { + url + } + val (requestUrl, server) = apiController.getFaviconServiceRequest(domain) + return rememberAsyncImagePainter( + ImageRequest.Builder(context).apply { + data(requestUrl) + addHeader("OCS-APIRequest", "true") + addHeader("Authorization", Credentials.basic(server.username, server.password)) + crossfade(true) + val lockDrawable = context.getDrawable(R.drawable.ic_lock)?.apply { + setTintList( + ColorStateList.valueOf( + MaterialTheme.colorScheme.primary.toArgb() + ) + ) + } + placeholder(lockDrawable) + fallback(lockDrawable) + error(lockDrawable) + }.build() + ) + } + + @Composable + fun getPainterForAvatar(): Painter { + val context = LocalContext.current + + val (requestUrl, server) = apiController.getAvatarServiceRequest() + return rememberAsyncImagePainter( + model = ImageRequest.Builder(context).apply { + data(requestUrl) + addHeader("OCS-APIRequest", "true") + addHeader("Authorization", Credentials.basic(server.username, server.password)) + crossfade(true) + val accountDrawable = context.getDrawable(R.drawable.ic_account_circle)?.apply { + setTintList( + ColorStateList.valueOf( + MaterialTheme.colorScheme.primary.toArgb() + ) + ) + } + placeholder(accountDrawable) + fallback(accountDrawable) + error(accountDrawable) + }.build() + ) + } + + override fun onCleared() { + apiController + super.onCleared() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/utils/AppLockHelper.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/AppLockHelper.kt new file mode 100644 index 0000000..72899dd --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/AppLockHelper.kt @@ -0,0 +1,53 @@ +package com.hegocre.nextcloudpasswords.utils + +import android.content.Context +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Deferred +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.async +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch + +class AppLockHelper private constructor(context: Context) { + private val preferencesManager = PreferencesManager.getInstance(context) + + private var _isLocked = MutableStateFlow(true) + val isLocked: StateFlow + get() = _isLocked.asStateFlow() + + fun checkPasscode(passcode: String): Deferred { + return CoroutineScope(Dispatchers.Default).async { + val correctPasscode = preferencesManager.getAppLockPasscode() ?: "0000" + passcode == correctPasscode + } + } + + fun disableLock() { + CoroutineScope(Dispatchers.Default).launch { + _isLocked.emit(false) + } + } + + fun enableLock() { + CoroutineScope(Dispatchers.Default).launch { + _isLocked.emit(true) + } + } + + companion object { + private var instance: AppLockHelper? = null + + fun getInstance(context: Context): AppLockHelper { + synchronized(this) { + var tempInstance = instance + if (tempInstance == null) { + tempInstance = AppLockHelper(context) + } + instance = tempInstance + return tempInstance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/utils/BiometricAuth.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/BiometricAuth.kt new file mode 100644 index 0000000..f892dee --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/BiometricAuth.kt @@ -0,0 +1,61 @@ +package com.hegocre.nextcloudpasswords.utils + +import android.content.Context +import androidx.biometric.BiometricManager.Authenticators.BIOMETRIC_STRONG +import androidx.biometric.BiometricPrompt +import androidx.fragment.app.FragmentActivity + +// 1 +private val biometricsIgnoredErrors = listOf( + BiometricPrompt.ERROR_NEGATIVE_BUTTON, + BiometricPrompt.ERROR_CANCELED, + BiometricPrompt.ERROR_USER_CANCELED, + BiometricPrompt.ERROR_NO_BIOMETRICS +) + +fun showBiometricPrompt( + context: Context, + title: String, + description: String, + onBiometricUnlock: () -> Unit, + onBiometricFailed: (() -> Unit)? = null, + onBiometricError: (() -> Unit)? = null +) { + // 2 + val promptInfo = BiometricPrompt.PromptInfo.Builder() + .setTitle(title) + .setDescription(description) + .setAllowedAuthenticators(BIOMETRIC_STRONG) + .setNegativeButtonText(context.getString(android.R.string.cancel)) + .build() + + // 3 + val biometricPrompt = BiometricPrompt( + context as FragmentActivity, + object : BiometricPrompt.AuthenticationCallback() { + // 4 + override fun onAuthenticationError( + errorCode: Int, + errString: CharSequence + ) { + if (errorCode !in biometricsIgnoredErrors) { + onBiometricError?.invoke() + } + } + + // 5 + override fun onAuthenticationSucceeded( + result: BiometricPrompt.AuthenticationResult + ) { + onBiometricUnlock() + } + + // 6 + override fun onAuthenticationFailed() { + onBiometricFailed?.invoke() + } + } + ) + // 7 + biometricPrompt.authenticate(promptInfo) +} diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/utils/ClipboardUtils.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/ClipboardUtils.kt new file mode 100644 index 0000000..af75b61 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/ClipboardUtils.kt @@ -0,0 +1,19 @@ +package com.hegocre.nextcloudpasswords.utils + +import android.content.ClipData +import android.content.ClipDescription +import android.content.ClipboardManager +import android.content.Context +import android.os.Build +import android.os.PersistableBundle + +fun Context.copyToClipboard(value: String, isSensitive: Boolean = false) { + val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + val clip = ClipData.newPlainText("text/plain", value) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + val extras = PersistableBundle() + extras.putBoolean(ClipDescription.EXTRA_IS_SENSITIVE, isSensitive) + clip.description.extras = extras + } + clipboard.setPrimaryClip(clip) +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/utils/EncryptionUtils.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/EncryptionUtils.kt new file mode 100644 index 0000000..fd3a198 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/EncryptionUtils.kt @@ -0,0 +1,91 @@ +package com.hegocre.nextcloudpasswords.utils + +import com.goterl.lazysodium.interfaces.SecretBox +import com.goterl.lazysodium.utils.Key +import com.hegocre.nextcloudpasswords.api.encryption.CSEv1Keychain +import com.hegocre.nextcloudpasswords.api.exceptions.SodiumDecryptionException +import com.hegocre.nextcloudpasswords.data.folder.Folder +import com.hegocre.nextcloudpasswords.data.password.Password +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import java.security.MessageDigest + +suspend fun List.decryptPasswords(csEv1Keychain: CSEv1Keychain? = null): List = + withContext(Dispatchers.Default) { + val decryptedList: MutableList = mutableListOf() + + forEach { password -> + //Decrypt password + val decryptedPassword = password.decrypt(csEv1Keychain) + if (decryptedPassword != null) + decryptedList.add(decryptedPassword) + } + + decryptedList.toList() + } + +suspend fun List.decryptFolders(csEv1Keychain: CSEv1Keychain? = null): List = + withContext(Dispatchers.Default) { + val decryptedList: MutableList = mutableListOf() + + forEach { folder -> + //Decrypt password + val decryptedFolder = folder.decrypt(csEv1Keychain) + if (decryptedFolder != null) + decryptedList.add(decryptedFolder) + } + + decryptedList.toList() + } + +/** + * Decrypt and encrypted value using the provided key id from the keychain. + * + * @param cseKey The id of the key used to encrypt and decrypt the value. + * @param csEv1Keychain The keychain containing the key. + * @return The decrypted value. + */ +fun String.decryptValue(cseKey: String, csEv1Keychain: CSEv1Keychain): String { + if (this.isEmpty() || cseKey.isEmpty()) return this + + val sodium = LazySodiumUtils.getSodium() + + val value = sodium.sodiumHex2Bin(this) + val nonce = value.sliceArray(0 until SecretBox.NONCEBYTES) + val cipher = value.sliceArray(SecretBox.NONCEBYTES until value.size) + val decryptionKey = sodium.sodiumHex2Bin(csEv1Keychain.keys[cseKey]!!) + + val message = ByteArray(cipher.size - SecretBox.MACBYTES) + if (!sodium.cryptoSecretBoxOpenEasy( + message, + cipher, + cipher.size.toLong(), + nonce, + decryptionKey + ) + ) throw SodiumDecryptionException("Could not decrypt value") + + return message.toString(Charsets.UTF_8) +} + +fun String.encryptValue(cseKey: String, csEv1Keychain: CSEv1Keychain): String { + if (this.isEmpty() || cseKey.isEmpty()) return this + + val sodium = LazySodiumUtils.getSodium() + + val nonce = sodium.randomBytesBuf(SecretBox.NONCEBYTES) + val encryptionKey = Key.fromHexString(csEv1Keychain.keys[cseKey]!!) + val encryptedContent = sodium.cryptoSecretBoxEasy(this, nonce, encryptionKey) + + return sodium.sodiumBin2Hex(nonce) + encryptedContent +} + +fun String.sha1Hash(): String { + val digest = MessageDigest.getInstance("SHA-1") + val result = digest.digest(this.toByteArray()) + val sb = StringBuilder() + for (b in result) { + sb.append(String.format("%02x", b)) + } + return sb.toString() +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/utils/Error.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/Error.kt new file mode 100644 index 0000000..1e6ab8f --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/Error.kt @@ -0,0 +1,12 @@ +package com.hegocre.nextcloudpasswords.utils + +object Error { + const val API_TIMEOUT = 10000 + const val API_NO_CSE = 10001 + const val API_BAD_RESPONSE = 10002 + const val API_NO_SESSION = 10003 + + const val SSL_HANDSHAKE_EXCEPTION = 20000 + + const val UNKNOWN = -1 +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/utils/LazySodiumUtils.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/LazySodiumUtils.kt new file mode 100644 index 0000000..e8eeef1 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/LazySodiumUtils.kt @@ -0,0 +1,33 @@ +package com.hegocre.nextcloudpasswords.utils + +import com.goterl.lazysodium.LazySodiumAndroid +import com.goterl.lazysodium.SodiumAndroid + +/** + * Singleton class used to provide the [LazySodiumAndroid] instance. This is used to avoid creating new instances + * and potentially crashing the application. + * + */ +class LazySodiumUtils private constructor() { + companion object { + var instance: LazySodiumAndroid? = null + + /** + * Get the [LazySodiumAndroid] instance, and create one if not present. + * + * @return A LazySodium instance + */ + fun getSodium(): LazySodiumAndroid { + synchronized(this) { + var tempInstance = instance + + if (tempInstance == null) { + tempInstance = LazySodiumAndroid(SodiumAndroid()) + instance = tempInstance + } + + return tempInstance + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/utils/LogHelper.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/LogHelper.kt new file mode 100644 index 0000000..5fab1e4 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/LogHelper.kt @@ -0,0 +1,42 @@ +package com.hegocre.nextcloudpasswords.utils + +import com.hegocre.nextcloudpasswords.BuildConfig +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ensureActive +import kotlinx.coroutines.launch + +class LogHelper private constructor() { + private val _appLog = StringBuilder("") + val appLog: String + get() = _appLog.toString() + + init { + if (BuildConfig.DEBUG) { + CoroutineScope(Dispatchers.IO).launch { + Runtime.getRuntime().exec("logcat -c") + Runtime.getRuntime().exec("logcat") + .inputStream + .bufferedReader() + .useLines { lines -> + lines.forEach { line -> + ensureActive() + _appLog.append("$line\n") + } + } + } + } + } + + companion object { + private var instance: LogHelper? = null + + fun getInstance(): LogHelper { + synchronized(this) { + if (instance == null) instance = LogHelper() + + return instance as LogHelper + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/utils/OkHttpRequest.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/OkHttpRequest.kt new file mode 100644 index 0000000..f299f43 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/OkHttpRequest.kt @@ -0,0 +1,201 @@ +package com.hegocre.nextcloudpasswords.utils + +import android.annotation.SuppressLint +import okhttp3.Credentials +import okhttp3.MediaType +import okhttp3.MediaType.Companion.toMediaTypeOrNull +import okhttp3.OkHttpClient +import okhttp3.Request +import okhttp3.RequestBody.Companion.toRequestBody +import okhttp3.Response +import java.io.IOException +import java.net.MalformedURLException +import java.net.URL +import java.security.cert.X509Certificate +import java.util.concurrent.TimeUnit +import javax.net.ssl.SSLContext +import javax.net.ssl.X509TrustManager + +/** + * Class to manage the [OkHttpRequest] requests, and make them using always the same client, as suggested + * [here](https://square.github.io/okhttp/4.x/okhttp/okhttp3/-ok-http-client/#okhttpclients-should-be-shared). + * + */ +class OkHttpRequest private constructor() { + var allowInsecureRequests = false + + private val secureClient = OkHttpClient.Builder() + .readTimeout(30, TimeUnit.SECONDS) + .writeTimeout(30, TimeUnit.SECONDS) + .build() + private val insecureClient: OkHttpClient + + val client: OkHttpClient + get() = if (allowInsecureRequests) insecureClient else secureClient + + init { + val insecureTrustManager = @SuppressLint("CustomX509TrustManager") + object : X509TrustManager { + @SuppressLint("TrustAllX509TrustManager") + override fun checkClientTrusted(p0: Array?, p1: String?) { + } + + @SuppressLint("TrustAllX509TrustManager") + override fun checkServerTrusted(p0: Array?, p1: String?) { + } + + override fun getAcceptedIssuers(): Array = arrayOf() + } + val sslContext = SSLContext.getInstance("SSL") + sslContext.init(null, arrayOf(insecureTrustManager), java.security.SecureRandom()) + insecureClient = OkHttpClient.Builder() + .readTimeout(15, TimeUnit.SECONDS) + .writeTimeout(20, TimeUnit.SECONDS) + .sslSocketFactory(sslContext.socketFactory, insecureTrustManager) + .hostnameVerifier { _, _ -> true } + .build() + } + + + @Throws( + MalformedURLException::class, + IllegalArgumentException::class, + IOException::class, + IllegalStateException::class + ) + fun get( + sUrl: String, sessionCode: String? = null, + username: String? = null, password: String? = null + ): Response { + val url = URL(sUrl) + + val requestBuilder = Request.Builder() + .url(url) + .header("OCS-APIRequest", "true") + + if (username != null && password != null) { + requestBuilder.addHeader("Authorization", Credentials.basic(username, password)) + } + + if (sessionCode != null) { + requestBuilder.addHeader("x-api-session", sessionCode) + } + + val request = requestBuilder.build() + + return client.newCall(request).execute() + } + + @Throws( + MalformedURLException::class, + IllegalArgumentException::class, + IOException::class, + IllegalStateException::class + ) + fun post( + sUrl: String, sessionCode: String? = null, + body: String, mediaType: MediaType?, + username: String? = null, password: String? = null + ): Response { + val formBody = body.toRequestBody(mediaType) + + val url = URL(sUrl) + + val requestBuilder = Request.Builder() + .url(url) + .header("OCS-APIRequest", "true") + .post(formBody) + + if (username != null && password != null) { + requestBuilder.addHeader("Authorization", Credentials.basic(username, password)) + } + + if (sessionCode != null) { + requestBuilder.addHeader("x-api-session", sessionCode) + } + + val request = requestBuilder.build() + + return client.newCall(request).execute() + } + + @Throws( + MalformedURLException::class, + IllegalArgumentException::class, + IOException::class, + IllegalStateException::class + ) + fun patch( + sUrl: String, sessionCode: String? = null, + body: String, mediaType: MediaType?, + username: String? = null, password: String? = null + ): Response { + val formBody = body.toRequestBody(mediaType) + + val url = URL(sUrl) + + val requestBuilder = Request.Builder() + .url(url) + .header("OCS-APIRequest", "true") + .patch(formBody) + + if (username != null && password != null) { + requestBuilder.addHeader("Authorization", Credentials.basic(username, password)) + } + + if (sessionCode != null) { + requestBuilder.addHeader("x-api-session", sessionCode) + } + + val request = requestBuilder.build() + + return client.newCall(request).execute() + } + + @Throws( + MalformedURLException::class, + IllegalArgumentException::class, + IOException::class, + IllegalStateException::class + ) + fun delete( + sUrl: String, sessionCode: String? = null, + body: String, mediaType: MediaType?, + username: String? = null, password: String? = null + ): Response { + val formBody = body.toRequestBody(mediaType) + + val url = URL(sUrl) + + val requestBuilder = Request.Builder() + .url(url) + .header("OCS-APIRequest", "true") + .delete(formBody) + + if (username != null && password != null) { + requestBuilder.addHeader("Authorization", Credentials.basic(username, password)) + } + + if (sessionCode != null) { + requestBuilder.addHeader("x-api-session", sessionCode) + } + + val request = requestBuilder.build() + + return client.newCall(request).execute() + } + + companion object { + private var instance: OkHttpRequest? = null + + val JSON = "application/json; charset=utf-8".toMediaTypeOrNull() + + fun getInstance(): OkHttpRequest { + synchronized(this) { + if (instance == null) instance = OkHttpRequest() + + return instance as OkHttpRequest + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/utils/PreferencesManager.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/PreferencesManager.kt new file mode 100644 index 0000000..a8d23fa --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/PreferencesManager.kt @@ -0,0 +1,193 @@ +package com.hegocre.nextcloudpasswords.utils + +import android.content.Context +import androidx.datastore.preferences.core.Preferences +import androidx.datastore.preferences.core.booleanPreferencesKey +import androidx.datastore.preferences.core.edit +import androidx.datastore.preferences.core.emptyPreferences +import androidx.datastore.preferences.core.stringPreferencesKey +import androidx.datastore.preferences.preferencesDataStore +import androidx.security.crypto.EncryptedSharedPreferences +import androidx.security.crypto.MasterKeys +import com.hegocre.nextcloudpasswords.data.password.RequestedPassword +import com.hegocre.nextcloudpasswords.data.serversettings.ServerSettings +import com.hegocre.nextcloudpasswords.ui.NCPScreen +import com.hegocre.nextcloudpasswords.ui.theme.NCPTheme +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.map +import kotlinx.serialization.encodeToString +import kotlinx.serialization.json.Json +import java.io.IOException + +class PreferencesManager private constructor(context: Context) { + private val Context._sharedPreferences by preferencesDataStore(name = "preferences") + private val sharedPreferences = context._sharedPreferences + + private val _encryptedSharedPrefs = context.let { + val masterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC) + EncryptedSharedPreferences.create( + "${it.packageName}_encrypted_preferences", + masterKeyAlias, + it, + EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, + EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM + ) + } + + suspend fun clear(): Boolean { + sharedPreferences.edit { + it.clear() + } + return _encryptedSharedPrefs.edit().clear().commit() + } + + fun getHasAppLock(): Flow = getPreference(PreferenceKeys.HAS_APP_LOCK, false) + suspend fun setHasAppLock(value: Boolean) = setPreference(PreferenceKeys.HAS_APP_LOCK, value) + + fun getHasBiometricAppLock(): Flow = + getPreference(PreferenceKeys.HAS_BIOMETRIC_APP_LOCK, false) + + suspend fun setHasBiometricAppLock(value: Boolean) = + setPreference(PreferenceKeys.HAS_BIOMETRIC_APP_LOCK, value) + + fun getAppLockPasscode(): String? = _encryptedSharedPrefs.getString("APP_LOCK_PASSCODE", null) + fun setAppLockPasscode(value: String?): Boolean = + _encryptedSharedPrefs.edit().putString("APP_LOCK_PASSCODE", value).commit() + + fun getLoggedInServer(): String? = _encryptedSharedPrefs.getString("LOGGED_IN_SERVER", null) + fun setLoggedInServer(value: String?): Boolean = + _encryptedSharedPrefs.edit().putString("LOGGED_IN_SERVER", value).commit() + + fun getLoggedInUser(): String? = _encryptedSharedPrefs.getString("LOGGED_IN_USER", null) + fun setLoggedInUser(value: String?): Boolean = + _encryptedSharedPrefs.edit().putString("LOGGED_IN_USER", value).commit() + + fun getLoggedInPassword(): String? = _encryptedSharedPrefs.getString("LOGGED_IN_PASSWORD", null) + fun setLoggedInPassword(value: String?): Boolean = + _encryptedSharedPrefs.edit().putString("LOGGED_IN_PASSWORD", value).commit() + + fun getMasterPassword(): String? = _encryptedSharedPrefs.getString("MASTER_KEY", null) + fun setMasterPassword(value: String?): Boolean = + _encryptedSharedPrefs.edit().putString("MASTER_KEY", value).commit() + + fun getCSEv1Keychain(): String? = _encryptedSharedPrefs.getString("CSE_V1_KEYCHAIN", null) + fun setCSEv1Keychain(value: String?): Boolean = + _encryptedSharedPrefs.edit().putString("CSE_V1_KEYCHAIN", value).commit() + + fun getServerSettings(): ServerSettings = try { + _encryptedSharedPrefs.getString("SERVER_SETTINGS", null)?.let { + Json.decodeFromString(it) + } ?: ServerSettings() + } catch (e: Exception) { + ServerSettings() + } + + fun setServerSettings(value: ServerSettings?): Boolean = + _encryptedSharedPrefs.edit().putString("SERVER_SETTINGS", value?.let { + Json.encodeToString(it) + }).commit() + + fun getSkipCertificateValidation(): Boolean = + _encryptedSharedPrefs.getBoolean("SKIP_CERTIFICATE_VALIDATION", false) + + fun setSkipCertificateValidation(value: Boolean): Boolean = + _encryptedSharedPrefs.edit().putBoolean("SKIP_CERTIFICATE_VALIDATION", value).commit() + + fun getUseInlineAutofill(): Boolean = + _encryptedSharedPrefs.getBoolean("USE_INLINE_AUTOFILL", false) + + fun setUseInlineAutofill(value: Boolean): Boolean = + _encryptedSharedPrefs.edit().putBoolean("USE_INLINE_AUTOFILL", value).commit() + + fun getPasswordGenerationOptions(): String? = + _encryptedSharedPrefs.getString( + "PASSWORD_GENERATION_OPTIONS", + "${RequestedPassword.STRENGTH_STANDARD};true;true" + ) + + fun setPasswordGenerationOptions(value: String?): Boolean = + _encryptedSharedPrefs.edit().putString("PASSWORD_GENERATION_OPTIONS", value).commit() + + fun getShowIcons(): Flow = getPreference(PreferenceKeys.SHOW_ICONS, false) + suspend fun setShowIcons(value: Boolean) = setPreference(PreferenceKeys.SHOW_ICONS, value) + + fun getStartScreen(): Flow = + getPreference(PreferenceKeys.START_SCREEN, NCPScreen.Passwords.name) + + suspend fun setStartScreen(value: String) = setPreference(PreferenceKeys.START_SCREEN, value) + + fun getAppTheme(): Flow = getPreference(PreferenceKeys.APP_THEME, NCPTheme.SYSTEM) + suspend fun setAppTheme(value: String) = setPreference(PreferenceKeys.APP_THEME, value) + + fun getInstanceColor(): Flow = getPreference(PreferenceKeys.INSTANCE_COLOR, "#745bca") + suspend fun setInstanceColor(value: String) = + setPreference(PreferenceKeys.INSTANCE_COLOR, value) + + fun getUseInstanceColor(): Flow = + getPreference(PreferenceKeys.USE_NEXTCLOUD_INSTANCE_COLOR, false) + + suspend fun setUseInstanceColor(value: Boolean) = + setPreference(PreferenceKeys.USE_NEXTCLOUD_INSTANCE_COLOR, value) + + fun getUseSystemDynamicColor(): Flow = + getPreference(PreferenceKeys.USE_SYSTEM_DYNAMIC_COLOR, false) + + suspend fun setUseSystemDynamicColor(value: Boolean) = + setPreference(PreferenceKeys.USE_SYSTEM_DYNAMIC_COLOR, value) + + fun getSearchByUsername(): Flow = + getPreference(PreferenceKeys.SEARCH_BY_USERNAME, true) + + suspend fun setSearchByUsername(value: Boolean) = + setPreference(PreferenceKeys.SEARCH_BY_USERNAME, value) + + fun getUseStrictUrlMatching(): Flow = + getPreference(PreferenceKeys.USE_STRICT_URL_MATCHING, true) + + suspend fun setUseStrictUrlMatching(value: Boolean) = + setPreference(PreferenceKeys.USE_STRICT_URL_MATCHING, value) + + private fun getPreference(key: Preferences.Key, defaultValue: T): Flow = + sharedPreferences.data + .catch { exception -> + if (exception is IOException) { + emit(emptyPreferences()) + } else { + throw exception + } + } + .map { preferences -> + preferences[key] ?: defaultValue + } + + private suspend fun setPreference(key: Preferences.Key, value: T) { + sharedPreferences.edit { preferences -> + preferences[key] = value + } + } + + companion object { + private var instance: PreferencesManager? = null + + fun getInstance(context: Context): PreferencesManager { + synchronized(this) { + if (instance == null) instance = PreferencesManager(context) + return instance as PreferencesManager + } + } + + private object PreferenceKeys { + val SHOW_ICONS = booleanPreferencesKey("SHOW_ICONS") + val START_SCREEN = stringPreferencesKey("START_SCREEN") + val HAS_APP_LOCK = booleanPreferencesKey("HAS_APP_LOCK") + val HAS_BIOMETRIC_APP_LOCK = booleanPreferencesKey("HAS_BIOMETRIC_APP_LOCK") + val APP_THEME = stringPreferencesKey("APP_THEME") + val USE_NEXTCLOUD_INSTANCE_COLOR = booleanPreferencesKey("USE_NEXTCLOUD_INSTANCE_COLOR") + val USE_SYSTEM_DYNAMIC_COLOR = booleanPreferencesKey("USE_SYSTEM_DYNAMIC_COLOR") + val INSTANCE_COLOR = stringPreferencesKey("INSTANCE_COLOR") + val SEARCH_BY_USERNAME = booleanPreferencesKey("SEARCH_BY_USERNAME") + val USE_STRICT_URL_MATCHING = booleanPreferencesKey("USE_STRICT_URL_MATCHING") + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/utils/Result.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/Result.kt new file mode 100644 index 0000000..8f0431f --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/Result.kt @@ -0,0 +1,6 @@ +package com.hegocre.nextcloudpasswords.utils + +sealed class Result { + data class Success(val data: T) : Result() + data class Error(val code: Int) : Result() +} \ No newline at end of file diff --git a/app/src/main/java/com/hegocre/nextcloudpasswords/utils/TextUtils.kt b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/TextUtils.kt new file mode 100644 index 0000000..e2c58f6 --- /dev/null +++ b/app/src/main/java/com/hegocre/nextcloudpasswords/utils/TextUtils.kt @@ -0,0 +1,55 @@ +package com.hegocre.nextcloudpasswords.utils + +import android.webkit.URLUtil +import androidx.compose.ui.ExperimentalComposeUiApi +import androidx.compose.ui.Modifier +import androidx.compose.ui.autofill.AutofillNode +import androidx.compose.ui.autofill.AutofillType +import androidx.compose.ui.composed +import androidx.compose.ui.focus.onFocusChanged +import androidx.compose.ui.layout.boundsInWindow +import androidx.compose.ui.layout.onGloballyPositioned +import androidx.compose.ui.platform.LocalAutofill +import androidx.compose.ui.platform.LocalAutofillTree + +fun String.isValidEmail(): Boolean { + return if (this.isBlank()) { + true + } else { + android.util.Patterns.EMAIL_ADDRESS.matcher(this).matches() + } +} + +fun String.isValidURL(): Boolean { + return if (this.isBlank()) { + true + } else { + URLUtil.isValidUrl(this) || URLUtil.isValidUrl("http://${this}") + } +} + +@OptIn(ExperimentalComposeUiApi::class) +fun Modifier.autofill( + onFill: (String) -> Unit, + autofillTypes: List +) = composed { + val autofill = LocalAutofill.current + val autofillNode = AutofillNode( + onFill = onFill, autofillTypes = autofillTypes + ) + LocalAutofillTree.current += autofillNode + + this + .onGloballyPositioned { + autofillNode.boundingBox = it.boundsInWindow() + } + .onFocusChanged { focusState -> + autofill?.run { + if (focusState.isFocused) { + requestAutofillForNode(autofillNode) + } else { + cancelAutofillForNode(autofillNode) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/app_icon.png b/app/src/main/res/drawable/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bd62c9a0bc0375d94ddeb544dbff5d82484c2ff1 GIT binary patch literal 36949 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_account_circle.xml b/app/src/main/res/drawable/ic_account_circle.xml new file mode 100644 index 0000000..8666f46 --- /dev/null +++ b/app/src/main/res/drawable/ic_account_circle.xml @@ -0,0 +1,13 @@ + + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..ecf9baa --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..5b44293 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_lock.xml b/app/src/main/res/drawable/ic_lock.xml new file mode 100644 index 0000000..d2da1fd --- /dev/null +++ b/app/src/main/res/drawable/ic_lock.xml @@ -0,0 +1,15 @@ + + + + diff --git a/app/src/main/res/font/dejavu_sans_mono.ttf b/app/src/main/res/font/dejavu_sans_mono.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f5786022f18216b4c59c6fb0c634b52c8b6e7990 GIT binary patch literal 340712 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

JVuh<&iTWp{J;w*9G-ib5g= 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

( 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 z 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/password_list_item.xml b/app/src/main/res/layout/password_list_item.xml new file mode 100644 index 0000000..bf7e8fd --- /dev/null +++ b/app/src/main/res/layout/password_list_item.xml @@ -0,0 +1,29 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..3992db09e4c8ec0e5dfe9c53c7e7cadf8c43b3b8 GIT binary patch literal 4340 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..2a14a9363a723fc8fad15844b96afce65743dffc GIT binary patch literal 2816 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 SW0jnnk-j%qyqyWLpPmA$l1D%Q literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..ec15d5f13eabe14fbc881d13950a633c2f9669dd GIT binary patch literal 5914 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 Qes2de1r*>^i*|Lk1tV#w{r~^~ literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..056f851e5c136a6b780095c1e83678f7c952ec85 GIT binary patch literal 11296 zcmV+*EZ@^oNk&E(EC2vkMM6+kP&iBrEC2v6zrZgL35RXlND}NAdtP|2|ALdrJrzXs ze**BoT2;ZbAT6qV);Lx9J5@dc2AT$+10ZY#bw6{ zJ&B}H{2&}Qj-*JX)#%`v8771e;5GS&vmx|<0?iD$b4u--$y+CyD- zh!lDXt+EoZ%Rpud08WK{3lCI#)hoQEdIaiUApoTi6neJ+ng~=$vIk~LiQ#((1^}W1 zIf*(05CLGe-YWzO0RYJaL~YQ1klq1 zfa&QAdF*Xd5~#)ws;8Gic}x=N4b&4U?L{jHz%>vTpfxrZ-2LNfbYsAr!xJs_k@mpC zo2;`An!UleZ6ilg|7B0U@Q;WIpy~EOKB3)W*kGI>ivsRMRu5S7rxbJx!ODUlV+$ur zs`eDSl`kZ>lB7scvwQF*2bh`9 zf46Qm5+&IU+XlRj5m$jgkOD~B?FV4K_J5J%I^S<~S9J?!JQ}mZoXBC$ig#Jjcp2to zl@&*tFf(2H17ht$D`qqVEHe+-p2=uNYApJmqpq&5Znb9pSt;jK^|698xvfjTfF=s+ z@@;!6RAz@2hTo+Qjl*muImeT2+o~klwpIIFBBJWNnVI)?b`S4TBoh|jLCVBV#ZJJE zT5xATGO(GMnOQ~FTC;n)ZQHbMZQDw1eT+HgSUR?CUiMB`kRjW)qF368T|YrV+s3ii zzCz|!S~eyIdi8eOwrNS*w)H;dTH9eqq-{G(B#zUzZGO{_v27hT(sn2_0~zM_-fPV< zAVHGcwplEN<%v22he$g88wfr;p$T&@IQdqH+2>&>CO?H?_AxdEBiQlM-y}GDh8O;O zkrQ8ip3cGu8mUMGnS2E2ezqtFpLw25z7<<^cU-#`jJ*qAUkttLB{}nuvi8-fJkowh zGpD?SqvR0Oh;p)*sA?RjxGNRwPE}{`OS#i}kq|YN=-^kMC(k%O^?_-Y4-Iz%e*nPP z--gH^;_p=v_pvM&posr24HUzM-(09X4VY9~BHP*S2Enx?j zE(+}gAp$4>00Y7RR<{5EeI{UQ6+lLqXUq`p(eMMF>86DH*1xBZdjQ5>x!%o!bV0M@ z#pfHHH9e!mck3Cvo-Ouk*sXzW1EU~bN?=?WWDx++H2ck@$ojw*6Qqy>i3s$uMYKeC zAmuvIc@9?&{^E+kMqww<@Hp`COW9!v%)P#xvH#QV=khihK0SbQ15== z*w+Y3gb;lI6oHCCQDj7BFa?eytO8W#WpK+VuX%XMxYKn)8JKw26%NB?JyYyGfN{6PvIp>p&mR*_L{tx1Dr00Dr$ zi9x?1C1@Q&waJkQ$dN1>3|u7oXD;bKgonWROP9LYFJaj-^}PrD!jBKna`P7i?%0&LY|U^Spckd0u~L-jw5b?=oKFP!e96Yp^Qh<<>hAuyT3KpNaAxG zeT%RcAo5foGDvnmxumx)4V6Zxp-2sYA_pQ+xJlJdMf(K`L?$QoG;>5S}o43`CF zAXAs?J*F<#)BOL|hiIg)5$%8)o}!qMij_GJtldJJHoISg?#9EFC4^#G!8)U5=naHPZr!a=FN z{Dc>m`=Mt445z>@$KEq;1$TaY+{^W+q@0OC>_v7>ZQD*ab@g}`oo^ffVJGkag)>I{ zsfC}M?ZwK;uC@Yj_sQF+yqAy|NQtR-R3mBXb^WESM`o`Ao-G{Xg+%Z5X1onR_Zny1 zB`f%%4_>m?!22nz!%$d!<{*wKpsC7nq%mcm0{mpzY9as%q+0$3gmpCa{-?aUycR3n z>T>q{R|59P$Eozk39+TXU?2rt5MUQ10Z(b5c{ySz{_5H$Lpm+! z0hRb$Elz20iadA<=`xc~{Srkz)Z)yA|K4uGiTnNe81Qi!K2|j;6L=^}X*qbQgBMXRq07zY(Cq z6DN`mbU!INd}@gsZejwSyz$~UUeeN4pu0gUC#@O?ynqSf6Co9jm>v=votO#d?}x}G zR*mczwsp;y1pGBONpmZd9t?m`$wn~6?nsH_oK_nWT4`|;pt}K+7YuxeW=4*hLCyBl zz#pCC5!CG5NpQ(yaq4Hj+B8-g?pc_dqe*n}Z*iFcOOQepCP z#6Tl2`1MktZi`%krMuHoB#(rrU#^e!g(do;cjF^}b?>t9SS*Dd;BZFU7Gb9*!u>$N^y$A*YiMC%`JZ6+_`jpd=Pw2d~`#ra$Xo30$~)bBC}3l_cHZ zdzy+cqN;=CqAz3|naJ>Td3WsJ0y>OIM@-fKyFB3Y$Uv|fOR*FTLPia87tcQ|06>;8Hcta5 z<7-d($_JN(vFCee2ce$$`eFcIeg%YpD;*4?jj1fvo#DYKRCL=-181GQh9@FWox{Xe zpQotphv%qyJR#P2QFdZ}b8{l>C4>>+kM>O>0RTnn>tL^w$z!*b*KsfpS?6qO`nNBh z^yAk7Bv@n@tR{=RGaHqC+Z%6~x!{AFdvi7ZiUc*u=}VbO2N2@ln4S zU-tPW{7$qGq&SP+IKE9XBfyY^lEaV(DWOh;y8Py+ue^aL{QhKYmrLC#@Z0_d+YC#R z`1uV$x2`(HGK;C0grE*AwE9DK=@*WQ{Uc3vxqm+GH=mD*e0xKnU^rXy7=8NVzpO}C zuUXgrL9m}%<&pTAx zde_s{zzju~d{?eL9Pm}A$H#dk4m~M@7{mdgTQT->W>7iEyL6qNp)v?_Yp)$KBiUa<4F=+1+>dib_y^f9#^wmIr?7JR0YDn)82x5dYN&zbB zJF3(hwa+cPLu693<=1$^RJ;mu0PUtVIZ_P+GTO`fKkQEnXZ0l%M#r2BR2R*E=7mIh zvWY|0GQ)M7%Qbu!2vpQ5bZ#fv6A?hnY=vHc(Rtb1-{UXq z8)u%EeISLA>#KM5s`s#1le9Q#uwvT8p{IKw^xQ#4!zjL%hDvwq)e!Sm)X)Y{`8}-p zxoDu~6exDC_v~KvA$^hSEvn~x2x1z11cbQ3azq?MvCkabHoC7C*eM_?UStr(JU8M( zhZx%z-uuF7@6)|!BpS#u(I4^7-|k`QL@Y)2%jYig=Zq6@AP*nKC^9UDLW^@Ix9fJ% zyY<}n?$St@c2s7(+1|!W!hDN&4M;XX?4DYQ2v~#^q$Em3kl3u&D9)L)uj$^*%=2%y zz2{>R1*v}9cYJvlD-OUHMA&u>`T%4~sMwP2ZU8u$Zw0fnJKye)Z#|?BoN-Zbz!lV^ zIlrIdMuMFglp)6za7l<4^`n0^0BuNC>`ZRlMQ1d59-^E-(MNomYjp-B>lwf*C+57h zs1BkD_UWns#57W|s$)L)xpO;aS+i)?XamRGs`s7S{xRzGfB@k9J|V{qZh@+;pcI%{ z9b#n8og{=$^adZ{G}Ryc_HVA@q&dtQ0K5UX(#iK29q;b}$4z!0_$(PT!_ zrDXSLi-yJ$ZV?Q{JH|;P35C`@=WJIT)pNasqMW?WvZdxScL)T1D2|m6Y?{IWq}17F zHX|NTASQbX!lafViu1gK>7k!)=n+XS@h15OM=i~XLxX2@=7zd6$`Bzno?)s`$Z#(q z@eS`dYInqkMv{wtpZa~@`t?;tiY*XA=s1(Z6{y{wC&WN;WK&e;B>?|V75>>$uX~sM zvm5njRgvTXsL#n&8=3m>UxPN=0;MxjYLF0*fqN-{I)8=ymm#4r>#lRwOSkK>zduC~ z4Q-jfWpf(_zjRWmvTF(*#h_5 z!-*$=^eG+yTYy}O`#q)##nxNWb(g-@$K!njU%$aacpbNe`J^qtQ{y&UETO};ui?Z~ z5<%a#0B`_D;vnapeBm2B1cc)+^qait9nGv*i&caNI0>;Y5Uo!7S^eM_=fC|6UH$4R zXyq3J+kQL(>=SKFMzdzeZ!Ws|H*Px)oKyIo(W;Ncp@eISf9e|~j?_4@aa(_dB^Qp@ zwnTlNYgZGs;AEhO8SFUtH(T-E=YM$f-JbzD$||e^K$d$n8S~x~e_FTuH^>art7<;+ zbBI_PMF15V5qvq7E7JtN`t$cN6xw#B(}iVzHB)Y&+n;we!Hj}e07XGC6cs6;NIgn+ zIHFH!8fi|`Ki6H03$@unFNp1@BlZ;wy#TTi<(y)0wx0?Y1oO-QRwW`w<|kO=QmaP3 z)6=GNqgX`+LKeBqR;XPYsDwr%PMZ)Zlt1T|M~W~I5+IpYG zj+&4l3F%jrbD(EXm(`YOEjSh|1f!glc)ZfATe161gam24I>(g)ZcMHd$%hnsXO7_qDmV z&Fwk2ax(`rVqx8CjVm#WxfZ!iaNIsP?iIXquX)FP7X9!3%l|jp=9t>6xP%uFig=!2 zp)dit&yZjyrQhJ$H#F){b*{e(3WxKvf-C@pN+dCY?h+X#nYH{Qk2y>Vs7%9_*ySW_BbD^+cs5oo6 zFvTJ@=)iW`#e@{Hg&fZ?(V8i?dpPz@7!$}R=^lGYgJ}^!QA&ycWMr$-O_{(+$?;s8 z*3}P~2tmo^)G||oCkaIDDUCvi3>tKkhwo>FORg5y@ zLg8m%lEg99AOcgEA7!%D!c*ul;1K?9RKh?CSfgwOyf1I#<$Q*Eutt0U0R)t9x~6x` z>{7&mf76h{T&n<~sM@EdL+6BC5@RsvG!sysiVJudXP)gZR9@;YTM_A5DdB9EU{set zGH(mHf$F)Ne$Kmx9%_rSJB;Xmi2(kfrqHZ9CQFxaBK>Scy z9+ce_mxEM-$}eSM1wI_F1BY`a41oqn3keqJ(E<#_x`W<~+*%L0!DxlKcfUiCtwa)Q zURC+6D#J(zAnff!woUt5WB679-VG*R0&E@$EB^*Y`c~1Tpt7I{ckXfskBSOUtobMu zeoD&B-aAZ8A08M&PaI;@nd)4qnCV=VT*zvkoqakCvZ#g@FdBaTutw z1Azu0ecjt9F%X7=bwgXRmW}}*6(cLwJ4AEs&F-Kf8ErozKMA{@*WG3?c$Yg zUd#Cp>(u^-{hN$G z=e4WmJ*V)xU;Wi*53l08JcVKO5Trjd+_se?`mkBz zfsiy-16m8Pm3h78$v#g(o~}%YOC6VK8c!7++Y#mMcP`K0b>sQlFRe2EjIpOo{09x< z6(LeSC;$Q~bQHZ+CWs#X-c+vt&#&?rv#X({A(-;h=UYUk%K1{4cgcn)qXMA^6~qI@ zd4d=P={%uFhK%i7z!D?z_3+Xa2z6CdTbR1cqMhq5ftPL;t4&lFpxsHX-CmI*;#MGG zI}q>n0AB~U(?xZzd*m|DmZG+L(+yD2UnT@FVaLjqkb{#=c} z5mBLKDH*G(&b=u-Mr18Z=)4I=l|U6i=2Ye?g6uWm2Dm9#BntqzGVN%rn%yZ?T53fo za<)tz&Y1~MpWjgJ+$$OY1FB3N2pQM(=xU%KE6)=Q(~yeY=NJ`#uq)##{}(L$VI?nexLD& zQ*$cbH!#>i;;kr=0en5|PVW(mL_%;&c zI$fVb#CF+pp3v|XDgb^QM?$XM?F;?pjH9SslVli`xu&RPf9lHl(4w+zDMI_{4gO;j zZX`h+e7o%nMlJkGr?FT*@r%hPP4&a!=HXbF^e(n~h6yc{6fU0I^0O{r;6~8bX zq<$wQCZ-SY;~xH)g4jkV*&bFCE`VyW?3+r>4mmp@Tz`z%&>IXhhzReX^Y`roHgzqd z=-6DjpBV~MEvC7=!m^t^@z@*P#6~XxFtosc(yCj$y07PIQSbiDet#XxatcF>lVf&$ z_MOKcE;yYGfn`GrD%W1S4uB#Eg{XgQXN*es#;)9c_as~Jf3I3#pL6<(>(!D~vwZ_B zWV6)@%m2%;Uva%l4p{On%ut34EW2x*x+NSxrlPk6 zqk30XGV^AP)@aOSXH#O<9QY%aZ)Wr?P-vA|9sBGm58d;$V_c!vs(lj_WvBJ*_(vx) z5f2Fb2cOqy-uGn=lVj{ zG_In8EFpVPDT-1Qd}W#K2v6lwRxcGGUowwSO0wwdcdQ)iZdZyr7zx+Fb^!pi?=ktI?O={8sSjtw+ZpLJp5<0vbPuS z!vF%nE#~(%gi)lK#vz+$L4o2b9hP<T{Wf|MDDc3wVp?nyFttfL4oAW-X^TFP3?&t`tdC^qyZ7%^K^ z&$Jipp>j|$wgNrR{xDo2)-zx3Y9h4)Mvh)z!fa)=<Y`fVb-w{u4M5U>0nJs-=Pl7azfs%yWE zWz#3N|AZ7+j6LCf7Xg40;q?H!Z=3uW<4>f}mJHC*WnPP_)~@NF$4AY#QNZ8pb|<*F zGYyY>^cHpCO9Phy5Vrs~9Wwu)jG;cP-ZIY_e>9pXuhj4*$W^%UX;<&8ZqnS=QlpI% zY{NfJ#G9VJ;J8pQl2(xD`BVE?4z&B&*Emf*-7Qq`3dsU13#mWU;xDDo!xX>y2F$dP~aOZ(x41c^M_EKzz+Db1fI~q zY=lTV95?o^h~#}ikJ7jP&$sJ4YU~A-`W#?>akV-oIR`p+sKhiho&5g$L_Op_1b<8Xo3&| zLRbUS^T&l}%n>0A6_TWbQsW?(z?L?AtY_lhVj{^UGs2u!h!b-$UBPUx zHoVOx57Wk@&Px)|1Hc8;%v=UK62c3gn4C^)52gI+cB%op5Zu~`I#D-~vkcNZ4G!f5 z44q+VQw0Dh&J&aeBB&W~bzWLz4-%6nHrjcN4)*OlHVt*KNXfOejzH_RZ4-&LH@m-O zPa)cv5Ac;-2Ot8s zwAMfbWo>OuOobp99DFdBNO41Tln}_N$>{^>wmHDj!+^S-h_UhCd6gE;CeQ8lhf=x1 zwY4=3Aj(U+R#YbzfbG%5-dqA4Tfkwgy3?x`Dv80a+7>e>Vu^Wg!5l`$!tOs^P~v|H zE^W%AT(fPNhUx1a+-WA(2;f-@gSRfJGRrez3A-TF$oYkMm9c57*>JBNl$$&~4idc7gi zMgTKfFE+)tRumkRK-GbszoTn+200}x!_@e^Xl+VYGi_*%PNuaYf;ynB3|1Kc35&3U z&$cA($Wd3u`iaUo5XbSVHiG37utvE`*EJ|2Y~(;xNmEe;Hkjs8c5e__5@BH+itR>< z_(`4A5MhP_1$3_ch^SoP-I$^qNG(&R&p*~_vozml$i`qNS}gG{72;dmAi2iB!Jt86 za%C?zM$vTc6Ln5oaOol<1A^%^P04`ztfkITQUgZ_)+&)^q^*Kx%VU|uN7H0ExDQTp z67nTGk+MO{2}xVO8?F4L0@0(R${9$n3R!F4>Jja3X_>ULNMT5AoPd#(Dvp_~rW*`e zJ3(s`qOGQo$VCm!F3{q5b+ADs`7xW+<_V{@UJ_^>5CDnbJ}G!S(qhudia1_EEaX{c zqR;RP4HiHLyy;FN9}o@$qE~?z8Hos6f+)x);?8295@LhQ3}Ww-!nrl3p+hX)Tm{pB zx|VUxPgn8v@QKYe7lC-Cq!=P7CpfX#B*35i2_!<_5At0yW+Kl z6tZk>#4701x?NTp+;N!hogM0H7GA7P4Kdbu{e?Y(yU+K!b4W z;Ni$42{YhEa0qVmOleYSdPdMS0f4jsK^@(M7b-5}A(5vGUC-GCzL3qO3{8nK-aueuQ-ah1TR%UKQCND|DO7a}R3Nd| zo06z~>u9)E#!|PYp|c-~d*4n{dpUit-C$itts38tL1jvgG#aQbx<)EhSLmj*Vz*Au zmg?JfDAx;o!S4=ZfoG>pxk6WgYNNa$?%dvf+S!u*ft}<7mM#J^rATAIq1jxiOdiz= z93d>LBw1S%u;y6PzG#+!<}c9e#rH88)#?~awV+&$9@)Cf3QDOgVCkZlOl6s))-f&B z_pR-n60X`KS89MCg40bEZX*S|>^OE4SO@(WOt^QuVi#pw)k=N+iU)41F{UFaK{J&p z1$3FnGFu;!63P|PUG3i}(}Nnr21GzoXj4~<+i~w~CXZEsNT>wVdVsQRlx+{}^UpV2 zsiw3oM_Cq7U4{k;K64b_T6?I=nr|H2d9#9%GBCH$=v~CE4dM_Wk+!rQ7?@e_!68T*+u1 zfVJLE6AgzeSwnZ}5tJ({LnkS+jO}jqT~55QZ$9*=BmQ}QzGtfQJ%ze`#~=y43WeFzz0c4qO zBoBBzHfiVdH!!}<;k#hv@ zEk}MHBXia3*S386=HyY8S?hpKa#XfmC5Tp9Ypqn50~!D{pgm!KW6fTSrKHa|I`hi@ zt-bfg^~rMwXLs=4vAAcXU<5EDaHJxDGeTTtMi~3e#8$th?7i&K&Hj4&ST#b0Q3_M@ zxOr#&>J`&()<#iLrUJZXb&_H`slL+myf=kH*QXGJC*VkC%|?t_h`(61ex-K3uNocO z-S+qxZ68nHQviwsm=SV-2z`+#c;-w~^R7lEfJZl(ZJQ(Uli`}6R!|KnhpG9-{W)B` zVQ^tzy9t6RbFGB6zB~r?l~XH(x^5_~f#q@l3Q%w)Wl8d~<6~=fN@~1fz3SE49oRWI zJf6H|Y`E8wGKGLuGr%B-&=(O=Mu27L?SPR37-(h?50NlQ!n&ciZHD;Ca7|Hnh+aL1 z<&v$*%IpV^##e8SuijcsC}rtQwjtff+sQS8Keck|)QZ+kPnVXHfKmV3Qc3- zqioS|R%v{dQ*1kT^t;Ar+sMM&V(2PRgGneb@)68r7!mqPVX(+%*C~zbfKFAhn%`|bDw%}tg!<1E3yTh)XJLJPKpTeqIEG1o7M6XN+}S6 z?QMd4Tv7$5&RNHal~ty-9&2iN)w_P(L}SDFVABZqS?Df=HZ#tcNaulEz+*-V7!nKx zSb!5S1R9?b0x<;e3nUpL!>{mnZh=?9i7U=jxmGRIdAe@z$%4({!#(rp)}DM+o|{F2 zDmB)Y_EytL;aL;eNq)G}I2uc37F5ekC@8EoxV@HIBFwWhk7HI;s-cmN?_GMAqUCH} zy{m1vIn-8=J56df4I6SvS!$8YrA*{Aa9jeGoDs+oyvnHA%OLjKd$-hmx#~5SUCz7d zmg_Uk)hCM!(^Ge1;^?hiD#zsv3To7hIGfB(>+R$y8?H2t;Yv1CO)KTH6iNm6^lFVD zYnCz~rI-)_tz!vW3r7d&;2c(Ll^kC#&6s8q`B5hfA*NE`Xw{e1o#VP=R4?tTOdYO0#tx%9-k^xf%nk1WmnB28X8T0gLdeUu?ZEltAK(I>8{74OQF$peF&N^ W5BShH-X$HjH3%^y#8dY*Hvj;k;53f_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/resources.properties b/app/src/main/res/resources.properties new file mode 100644 index 0000000..d5a3ddc --- /dev/null +++ b/app/src/main/res/resources.properties @@ -0,0 +1 @@ +unqualifiedResLocale=en-US \ No newline at end of file diff --git a/app/src/main/res/values-af-rZA/strings.xml b/app/src/main/res/values-af-rZA/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-af-rZA/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-ar-rSA/strings.xml b/app/src/main/res/values-ar-rSA/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-ar-rSA/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-ca-rES/strings.xml b/app/src/main/res/values-ca-rES/strings.xml new file mode 100644 index 0000000..09df808 --- /dev/null +++ b/app/src/main/res/values-ca-rES/strings.xml @@ -0,0 +1,129 @@ + + + Nextcloud Passwords + Icona del lloc + Iniciar sessió + Adreça del servidor + L\'adreça no pot estar buida + L\'adreça ha de començar amb https:// + Exemple + Tancar sessió + Segur que voleu tancar la sessió? + Contrasenya + Contrasenya + Introduïu la contrasenya + Mostrar contrasenya + Contrasenyes + Favorites + Carpetes + Error inciant sessió + Cerca + Emplenament automàtic + Configuració + Activar el servei d\'emplenament automàtic + General + Mostrar icones + Mostrar les icones dels llocs web + Vista inicial + El client ha estat desautoritzat. Si us plau, inicieu sessió de nou. + Servei d\'emplenament automàtic + Desar + Editar contrasenya + Nom + Nom + Usuari + Lloc web + Lloc web + No s\'ha pogut desar la contrasenya. Si us plau, intenteu-ho de nou + Eliminar contrasenya + No s\'ha pogut eliminar la contrasenya. Si us plau, intenteu-ho de nou + Aquest element serà eliminat. Si us plau, confirmeu aquesta acció + Eliminar + Notes + %s copiat + Favorita + Nou camp personalitzat + Tipus de camp + Text + Correu electrònic + Secret + Aquest camp no pot estar buit + Introdueixi un URL vàlid + Introdueixi un correu electrònic vàlid + No s\'ha pogut generar la contrasenya + No s\'ha pogut obrir l\'URL + Informació + Enrere + Versió + Codi font + Política de privadesa + Llicències + Ajuda i suggeriments + Autor + Lloc web + Estat de seguretat + Icona de la carpeta + Nova contrasenya + Menú + Netejar els termes de cerca + Generar contrasenya + Copiar valor + Inici + Carpeta + Seleccionar + Crear + Editar carpeta + No s\'ha pogut desar la carpeta. Si us plau, intenteu-ho de nou + No s\'ha pogut eliminar la carpeta. Si us plau, intenteu-ho de nou + Eliminar carpeta + Carpeta superior + Seguretat + Bloqueig d\'aplicació + Bloquejar l\'accés a l\'aplicació amb un codi + Desbloqueig biomètric + Permetre desbloquejar l\'apicació amb les credencials biomètriques + Codi incorrecte + Codi + Introdueixi el codi + Confirmi el codi + Els codis no coincideixen + Si us plau, verifiqui la seva identitat per accedir a les contrasenyes + Autenticació biomètrica + No s\'ha pogut connectar al servidor. Premi per intentar-ho de nou. + Certificat invàlid + El certificat HTTPS és invàlid. Desitja procedir amb la connexió? + Superior + Alta + Mitjana + Estàndard + Baixa + Incloure dígits + Incloure caràcters especials + Fortalesa + Aparença + Sistema + Clar + Fosc + Negre + Tema de l\'aplicació + Usar colors de Nextcloud + Utilitzar el color de la instància com a color d\'accent + Usar colors dinàmics + Utilitzar els colors dinàmics del sistema + Registre de canvis + No hi ha contingut + Sense resultats + Cercar globalment + Contribuir + Autocompletat en línia + Mostrar els suggeriments d\'autocompletat al teclat si és possible + Cerca per usuari + Cercar contrasenyes pel nom d\'usuari + Desar i emplenar + Contrasenya invàlida + Cerca + Domini estricte + Fer coincidir les contrasenyes pel domini complet, excloent-hi subdominis + Descartar + Els canvis fets a aquest element seran descartats. Voleu continuar? + diff --git a/app/src/main/res/values-cs-rCZ/strings.xml b/app/src/main/res/values-cs-rCZ/strings.xml new file mode 100644 index 0000000..cfc5ed0 --- /dev/null +++ b/app/src/main/res/values-cs-rCZ/strings.xml @@ -0,0 +1,121 @@ + + + Nextcloud Passwords + Favikona stránky + Přihlašovací jméno + URL serveru + Adresa URL nesmí být prázdná + Adresa URL musí začínat na https:// + Příklad + Odhlásit se + Jste si jisti, že se chcete odhlásit? + Heslo + Heslo + Zadejte hlavní heslo + Zobrazit heslo + Hesla + Oblíbené + Složky + Chyba při přihlašování + Vyhledat + Automatické vyplňování + Nastavení + Zapnout službu automatického vyplňování + Obecné + Zobrazit ikony + Zobrazit ikony webových stránek + Počáteční zobrazení + Klient byl deautorizován. Přihlaste se prosím znovu. + Služba automatického vyplňování + Uložit + Upravit heslo + Označení + Označení + Uživatelské jméno + URL + URL + Ukládání hesla selhalo. Prosím, zkuste to znovu + Odstranit heslo + Mazání hesla selhalo. Prosím, zkuste to znovu + Tento prvek bude odstraněn. Potvrďte prosím tuto akci + Odstranit + Poznámky + %s zkopírováno + Oblíbené + Nové vlastní pole + Typ pole + Text + E-mail + Tajné + Toto pole nemůže být prázdné + Zadejte platnou URL adresu + Zadejte platnou e-mailovou adresu + Heslo se nepodařilo vygenerovat + URL adresu se nepodařilo otevřít + O + Zpět + Verze + Zdrojový kód + Zásady ochrany soukromí + Licence + Nápověda a návrhy + Autor + Webová stránka + Status zabezpečení + Ikona složky + Nové heslo + Menu + Vymazat hledaný dotaz + Vygenerovat heslo + Zkopírovat hodnotu + Domů + Složka + Vybrat + Vytvořit + Upravit složku + Ukládání složky selhalo. Zkuste to prosím znovu + Smazání složky selhalo. Zkuste to prosím znovu + Odstranit složku + Nadřazená složka + Zabezpečení + Zámek aplikace + Uzamknut přístup do aplikace pomocí kódu + Biometrické odemknutí + Povolit odemknutí aplikace pomocí biometrických prvků zařízení + Nesprávný kód + Heslo + Zadejte heslo + Potvrdit heslo + Hesla se neshodují + Pro přístup k heslům prosím ověřte svou identitu + Biometrické ověření + Nelze se připojit k serveru. Klepnutím akci opakujte. + Neplatný certifikát + HTTPS certifikát je neplatný. Chcete pokračovat? + Ultra + Vysoké + Střední + Standardní + Nízké + Zahrnout čísla + Zahrnout speciální znaky + Síla + Vzhled + Systém + Světlý + Tmavý + Černý + Motiv aplikace + Použít barvy Nextcloudu + Použít barvu instance jako barvu akcentu + Použít dynamické barvy + Použít dynamické barvy systému + Seznam změn + Žádný obsah + Nenalezeny žádné výsledky + Hledat všude + Přispět + Použít inline automatické vyplňování + Zobrazit návrhy automatického vyplňování na klávesnici, pokud je podporováno + Vyhledat + diff --git a/app/src/main/res/values-da-rDK/strings.xml b/app/src/main/res/values-da-rDK/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-da-rDK/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml new file mode 100644 index 0000000..e8a4418 --- /dev/null +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -0,0 +1,127 @@ + + + Nextcloud Passwörter + Webseiten-Symbol + Login + Server-URL + URL darf nicht leer sein + URL muss mit https:// beginnen + Beispiel + Abmelden + Möchten Sie sich wirklich abmelden? + Passwort + Passwort + Master-Passwort eingeben + Passwort anzeigen + Passwörter + Favoriten + Ordner + Fehler beim Anmelden + Suche + Automatisches Ausfüllen + Einstellungen + Dienst für automatisches Ausfüllen aktivieren + Allgemein + Symbole anzeigen + Webseite-Symbole anzeigen + Startansicht + Der Client wurde deautorisiert. Bitte melden Sie sich erneut an. + Dienst für automatisches Ausfüllen + Speichern + Passwort bearbeiten + Name + Name + Benutzername + URL + URL + Passwort speichern fehlgeschlagen. Bitte erneut versuchen + Passwort löschen + Löschen des Passworts fehlgeschlagen. Bitte erneut versuchen + Dieses Element wird gelöscht. Bitte bestätigen Sie diese Aktion + Löschen + Notizen + %s kopiert + Favorit + Neues benutzerdefiniertes Feld + Feldtyp + Text + E-Mail + Geheim + Dieses Feld darf nicht leer sein + Bitte gültige URL eingeben + Bitte gültige E-Mail eingeben + Passwort konnte nicht erstellt werden + URL konnte nicht geöffnet werden + Über + Zurück + Version + Quelltext + Datenschutzerklärung + Lizenzen + Hilfe und Vorschläge + Autor + Webseite + Sicherheitsstatus + Ordnersymbol + Neues Passwort + Menü + Suche löschen + Passwort erzeugen + Inhalt kopieren + Startseite + Ordner + Auswählen + Erstellen + Ordner bearbeiten + Speichern des Ordners fehlgeschlagen. Bitte erneut versuchen + Löschen des Ordners fehlgeschlagen. Bitte erneut versuchen + Ordner löschen + Übergeordneter Ordner + Sicherheit + App-Sperre + Den Zugriff auf die App mit einem Zugangscode sperren + Biometrisch entsperren + Das Entsperren der App mit Gerätebiometrie erlauben + Zugangscode ist nicht korrekt + Zugangscode + Zugangscode eingeben + Zugangscode bestätigen + Zugangscodes stimmen nicht überein + Bitte verifizieren Sie Ihre Identität, um auf die Passwörter zuzugreifen + Biometrische Authentifizierung + Keine Verbindung zum Server. Bitte tippen für einen weiteren Verbindungsversuch. + Ungültiges Zertifikat + Das HTTPS-Zertifikat ist ungültig. Fortfahren? + Ultra + Hoch + Mittel + Standard + Niedrig + Zahlen einschließen + Sonderzeichen einschließen + Stärke + Aussehen + System + Hell + Dunkel + Schwarz + App-Design + Nextcloud-Farben verwenden + Farbe der Nextcloud-Instanz als Akzentfarbe verwenden + Dynamische Farben verwenden + Dynamische Farben des Systems verwenden + Änderungsprotokoll + Kein Inhalt + Keine Ergebnisse gefunden + Überall suchen + Mitwirken + Inline-AutoAusfüllen verwenden + AutoAusfüllen-Vorschläge auf der Tastatur anzeigen, wenn unterstützt + Nach Benutzername suchen + Passwörter nach Benutzername suchen + Speichern und AutoAusfüllen + Ungültiges Passwort + Suche + Strikte Domänen-Übereinstimmung + Passwörter nach der vollständigen Domain abgleichen, ohne Subdomains + diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-el-rGR/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-en-rUS/strings.xml b/app/src/main/res/values-en-rUS/strings.xml new file mode 100644 index 0000000..b482b81 --- /dev/null +++ b/app/src/main/res/values-en-rUS/strings.xml @@ -0,0 +1,129 @@ + + + Nextcloud Passwords + Site favicon + Login + Server URL + URL cannot be empty + URL must start with https:// + Example + Log out + Are you sure you want to log out? + Password + Password + Enter master password + Show Password + Passwords + Favorites + Folders + Error logging in + Search + Autofill + Settings + Enable autofill service + General + Show icons + Show web site icons + Start view + The client has been deauthorized. Please, login again. + Autofill service + Save + Edit password + Label + Label + Username + URL + URL + Password saving has failed. Please, try again + Delete password + Password deleting has failed. Please, try again + This element will be deleted. Please, confirm this action + Delete + Notes + %s copied + Favorite + New custom field + Field type + Text + Email + Secret + This field cannot be empty + Enter a valid URL + Enter a valid email + Could not generate password + Could not open URL + About + Back + Version + Source code + Privacy policy + Licenses + Help and suggestions + Author + Website + Security status + Folder icon + New password + Menu + Clear search query + Generate password + Copy value + Home + Folder + Select + Create + Edit folder + Folder saving has failed. Please, try again + Folder deleting has failed. Please, try again + Delete folder + Parent folder + Security + App lock + Lock the access to the app with a passcode + Biometric unlock + Allow unlocking the app with device biometrics + Incorrect code + Passcode + Input passcode + Confirm passcode + Passcodes don\'t match + Please, verify your identity to access the passwords + Biometric authentication + Cannot connect to server. Tap to retry. + Invalid certificate + The HTTPS certificate is invalid. Do you want to proceed? + Ultra + High + Medium + Standard + Low + Include numbers + Include special characters + Strength + Appearance + System + Light + Dark + Black + App theme + Use Nextcloud colors + Use the instance color as the accent color + Use dynamic colors + Use the dynamic colors from the system + Changelog + No content here + No results found + Search everywhere + Contribute + Use inline autofill + Show autofill suggestions on the keyboard when supported + Search by username + Search passwords by the username value + Save and autofill + Invalid password + Search + Strict domain matching + Match passwords by its full domain, excluding subdomains + Discard + Changes made to this item will be discarded. Do you want to continue? + diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml new file mode 100644 index 0000000..08059d3 --- /dev/null +++ b/app/src/main/res/values-es-rES/strings.xml @@ -0,0 +1,129 @@ + + + Nextcloud Passwords + Icono del sitio + Iniciar sesión + Dirección del servidor + La dirección no puede estar vacía + La dirección debe comenzar por https:// + Ejemplo + Cerrar sesión + ¿Seguro que desea cerrar sessión? + Contraseña + Contraseña + Introduzca la contraseña + Mostrar contraseña + Contraseñas + Favoritas + Carpetas + Error iniciando sesión + Buscar + Autocompletar + Configuración + Activar el servicio de autocompletar + General + Mostrar iconos + Mostrar iconos de los sitios web + Vista inicial + El cliente ha sido desautorizado. Por favor, vuelva a iniciar sesión + Servicio de autocompletar + Guardar + Editar contraseña + Nombre + Nombre + Usuario + Sitio web + Sitio web + No se ha podido guardar la contraseña. Por favor, inténtelo de nuevo + Eliminar contraseña + No se ha podido eliminar la contraseña. Por favor, inténtelo de nuevo + Este elemento será eliminado. Por favor, confirme esta acción + Eliminar + Notas + %s copiado + Favorita + Nuevo campo personalizado + Tipo de campo + Texto + Correo electrónico + Secreto + Este campo no puede estar vacío + Introduzca un URL válido + Introduzca un correo electrónico válido + No se ha podido generar la contraseña + No se ha podido abrir el URL + Información + Atrás + Versión + Código fuente + Política de privacidad + Licencias + Ayuda y sugerimientos + Autor + Sitio web + Estado de seguridad + Icono de la carpeta + Nueva contraseña + Menú + Limpiar los terminos de búsqueda + Generar contraseña + Copiar valor + Inicio + Carpeta + Seleccionar + Crear + Editar carpeta + No se ha podido guardar la carpeta. Por favor, inténtelo de nuevo + No se ha podido eliminar la carpeta. Por favor, inténtelo de nuevo + Eliminar carpeta + Carpeta superior + Seguridad + Bloqueo de aplicación + Bloquear el acceso a la aplicación con un código + Desbloqueo biométrico + Permitir desbloquear la aplicación con credenciales biométricas + Código incorrecto + Código + Introduzca el código + Confirme el código + Los códigos no coinciden + Por favor, verifique su identidad para acceder a las contraseñas + Autenticación biométrica + No se ha podido conectar al servidor. Pulse para intentarlo de nuevo. + Certificado inválido + El certificado HTTPS es inválido. Desea proceder con la conexión? + Superior + Alta + Media + Estándar + Baja + Incluir números + Incluir caracteres especiales + Fortaleza + Apariencia + Sistema + Claro + Oscuro + Negro + Tema de la aplicación + Usar colores de Nextcloud + Usa el color de la instancia como color de acento + Usar colores dinámicos + Usar los colores dinámicos del sistema + Registro de cambios + No hay contenido + No hay resultados + Buscar globalmente + Contribuir + Autocompletado en línea + Mostar sugerencias de autocompletado en el teclado si es posible + Búsqueda por usuario + Buscar contraseñas por el nombre de usuario + Guardar y autocompletar + Contraseña inválida + Buscar + Dominio estricto + Hacer coincidir las contraseñas por su dominio completo, excluyendo subdominios + Descartar + Los cambios realizados a este objeto serán descartados. ¿Desea continuar? + diff --git a/app/src/main/res/values-et-rEE/strings.xml b/app/src/main/res/values-et-rEE/strings.xml new file mode 100644 index 0000000..f504c38 --- /dev/null +++ b/app/src/main/res/values-et-rEE/strings.xml @@ -0,0 +1,127 @@ + + + Nextcloud\'i Paroolid + Veebisaidi ikoon + Sisselogimine + Serveri URL + URL ei saa olla tühi + URL\'i alguses peab olema https:// + Näidis + Logi välja + Kas olete kindel, et soovite välja logida? + Parool + Parool + Peaparool + Näita parooli + Paroolid + Lemmikud + Kaustad + Viga sisselogimisel + Otsing + Automaattäide + Sätted + Lülita sisse automaattäite teenus + Üldine + Näita ikoone + Näita veebisaidi ikoone + Algvaade + Rakendus on deautoriseeritud. Palun logige uuesti sisse. + Automaattäite teenus + Salvesta + Muuda parooli + Nimetus + Nimetus + Kasutajanimi + URL + URL + Parooli salvestamine ebaõnnestus. Palun proovige uuesti + Kustuta parool + Parooli kustutamine ebaõnnestus. Palun proovige uuesti + See element kustutatakse. Palun kinnitage toiming + Kustuta + Märkmed + %s kopeeritud + Lemmik + Uus kohandatud väli + Välja tüüp + Tekst + Meil + Saladus + See väli ei saa olla tühi + Sisestage kehtiv URL + Sisestage kehtiv meiliaadress + Parooli genereerimine ebaõnnestus + URL\'i avamine ebaõnnestus + Teave + Tagasi + Versioon + Lähtekood + Privaatsuspoliitika + Litsensid + Abi ja soovitused + Autor + Veebisait + Turvalisuse olek + Kausta ikoon + Uus parool + Menüü + Puhasta otsingu päring + Genereeri parool + Kopeeri väärtus + Kodu + Kaust + Vali + Loo + Muuda kausta + Kausta salvestamine ebaõnnestus. Palun proovige uuesti + Kausta kustutamine ebaõnnestus. Palun proovige uuesti + Kustuta kaust + Ülemkaust + Turvalisus + Äpilukk + Lukusta äpile juurdepääs parooliga + Biomeetriline lukust vabastamine + Luba lukust avamine seadme biomeetrikatega + Vale kood + Parool + Sisesta parool + Kinnita parool + Paroolid pole samasugused + Palun kinnita enda identiteet, et paroolidele ligi pääseda + Biomeetriline autoriseerimine + Ei saa serveriga ühendust. Vajutage, et uuesti proovida. + Mitteekehtiv sertifikaat + HTTPS\'i sertifikaat pole kehtiv. Soovite jätkata? + Ultra + Kõrge + Keskmine + Tavaline + Madal + Lisa numbried + Lisa sümboleid + Tugevus + Välimus + Süsteem + Hele + Tume + Must + Äpi teema + Kasuta Nextcloud\'i värve + Kasuta serveri värve aktsendivärvina + Kasuta dünaamilisi värve + Kasuta süsteemi dünaamilisi värve + Muudatuste logi + Siin pole sisu + Ei leidnud tulemusi + Otsige kõikjalt + Panusta + Kasuta realist automaattäidet + Näita automaattäite soovitusi klaviatuuril, kui toetatud + Otsi kasutajanime järgi + Otsi paroole kasutajanime järgi + Salvesta ja täida automaatselt + Vale parool + Otsing + Range domeeni sobitamine + Sobita paroole nende terve domeeniga, välja arvatud alamdomeenid + diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-fi-rFI/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml new file mode 100644 index 0000000..f537b30 --- /dev/null +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -0,0 +1,119 @@ + + + Nextcloud Passwords + Favicône du site + Identifiant + URL du serveur + L\'URL ne peut être vide + L\'URL doit commencer par https:// + Exemple + Déconnexion + Êtes vous certain de vouloir vous déconnecter ? + Mot de passe + Mot de passe + Entrez le mot de passe maître + Afficher le mot de passe + Mots de passe + Favoris + Dossiers + Erreur de connexion + Recherche + Auto-remplissage + Paramètres + Activer le service d\'auto-remplissage + Général + Afficher les icônes + Montrer les favicônes des sites + Écran d\'accueil + Le client a été desautorisé. Veuillez vous reconnecter. + Service d\'auto-remplissage + Sauvegarder + Éditer le mot de passe + Label + Label + Nom d\'utilisateur + URL + URL + La sauvegarde du mot de passe a échoué. Veuillez réessayer + Supprimer le mot de passe + La suppression du mot de passe a échoué. Veuillez réessayer + Cet élément sera supprimé. Veuillez confirmer cette action. + Supprimer + Notes + %s copié + Favoris + Nouveau champ personnalisé + Type de champ + Texte + E-mail + Secret + Ce champ ne peut être vide + Saisissez une URL valide + Saisissez un e-mail valide + Impossible de générer le mot de passe + Impossible d\'ouvrir l\'URL + A propos + Retour + Version + Code source + Politique de confidentialité + Licenses + Aide et suggestions + Auteur + Site internet + État de la sécurité + Icône de dossier + Nouveau mot de passe + Menu + Effacer la recherche + Générer un mot de passe + Copier la valeur + Accueil + Dossier + Sélectionner + Créer + Éditer le dossier + L\'enregistrement du dossier a échoué. Veuillez réessayer. + La suppression du dossier a échoué. Veuillez réessayer. + Supprimer le dossier + Dossier parent + Sécurité + Verrouillage de l\'application + Verrouiller l\'accès à l\'application avec un code d\'accès + Déverrouillage biométrique + Permettre le déverrouillage de l\'application à l\'aide des données biométriques de l\'appareil + Code erroné + Code d\'accès + Saisir le code d\'accès + Confirmer le code d\'accès + Les codes d\'accès ne correspondent pas + Veuillez vérifier votre identité pour accéder aux mots de passe. + Authentification biométrique + Impossible de se connecter au serveur. Tapez pour réessayer. + Certificat invalide + Le certificat HTTPS n\'est pas valide. Voulez-vous continuer ? + Ultra + Haut + Médium + Standard + Faible + Inclure des chiffres + Inclure des caractères spéciaux + Force + Apparence + Système + Clair + Sombre + Noir + Thème de l\'application + Utiliser les couleurs de Nextcloud + Utiliser la couleur de l\'instance comme couleur d\'accentuation + Utiliser des couleurs dynamiques + Utiliser les couleurs dynamiques du système + Journal des changements + Pas de contenu trouvé ici + Pas de résultat trouvé + Rechercher partout + Contribuer + Recherche + diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-iw-rIL/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml new file mode 100644 index 0000000..9d30497 --- /dev/null +++ b/app/src/main/res/values-night/themes.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-nl-rNL/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-no-rNO/strings.xml b/app/src/main/res/values-no-rNO/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-no-rNO/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml new file mode 100644 index 0000000..347430e --- /dev/null +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -0,0 +1,119 @@ + + + Nextcloud Hasła + Favicon strony + Login + Adres URL serwera + Adres URL nie może być pusty + Adres URL musi zaczynać się od https:// + Przykład + Wyloguj się + Czy na pewno chcesz się wylogować? + Hasło + Hasło + Wprowadź hasło główne + Pokaż Hasło + Hasła + Ulubione + Foldery + Wystąpił błąd podczas logowania + Wyszukaj + Autouzupełnianie + Ustawienia + Włącz usługę automatycznego uzupełniania + Ogólne + Pokazuj ikony + Pokazuj ikony strony internetowej + Widok początkowy + Klient został deautoryzowany. Zaloguj się ponownie. + Usługa autouzupełniania + Zapisz + Edytuj hasło + Etykieta + Etykieta + Nazwa użytkownika + Adres URL + Adres URL + Zapisywanie hasła nie powiodło się. Spróbuj ponownie + Usuń hasło + Usuwanie hasła nie powiodło się. Spróbuj ponownie + Ten element zostanie usunięty. Proszę potwierdzić + Usuń + Notatki + Skopiowano %s + Ulubiony + Nowe niestandardowe pole + Typ pola + Tekst + Adres e-mail + Sekret + To pole nie może być puste + Wprowadź poprawny adres URL + Wprowadź poprawny adres e-mail + Nie można wygenerować hasła + Nie można otworzyć adresu URL + O aplikacji + Wstecz + Wersja + Kod źródłowy + Polityka prywatności + Licencje + Pomoc i sugestie + Autor + Strona internetowa + Status bezpieczeństwa + Ikona folderu + Nowe hasło + Menu + Wyczyść wyszukiwanie + Generuj hasło + Kopiuj wartość + Strona główna + Folder + Wybierz + Utwórz + Edytuj folder + Zapisywanie folderu nie powiodło się. Spróbuj ponownie + Usuwanie folderu nie powiodło się. Spróbuj ponownie + Usuń folder + Folder nadrzędny + Bezpieczeństwo + Blokada aplikacji + Zablokuj dostęp do aplikacji kodem PIN + Odblokowanie biometryczne + Zezwalaj na odblokowanie aplikacji za pomocą biometrii urządzenia + Nieprawidłowy kod + Kod PIN + Wprowadź kod PIN + Potwierdź kod PIN + Kody PIN nie pasują + Proszę zweryfikować swoją tożsamość, aby uzyskać dostęp do haseł + Uwierzytelnianie biometryczne + Nie można połączyć się z serwerem. Dotknij, aby ponowić. + Niepoprawny certyfikat + Certyfikat HTTPS jest nieprawidłowy. Czy chcesz kontynuować? + Ultra + Wysoki + Średni + Standardowy + Niski + Uwzględnij numery + Uwzględnij znaki specjalne + Siła + Wygląd + System + Jasny + Ciemny + Czarny + Motyw aplikacji + Użyj kolorów Nextcloud + Użyj koloru instancji jako koloru akcentu + Użyj kolorów dynamicznych + Użyj kolorów dynamicznych z systemu + Lista zmian + Brak treści + Nie znaleziono żadnych wyników + Szukaj wszędzie + Wspomóż + Wyszukaj + diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-pt-rPT/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-ro-rRO/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml new file mode 100644 index 0000000..010f30f --- /dev/null +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -0,0 +1,121 @@ + + + Nextcloud Пароли + Иконка сайта + Войти + URL сервера + URL не может быть пустым + URL должен начинаться с https:// + Пример + Выход + Вы действительно хотите выйти? + Пароль + Пароль + Введите мастер-пароль + Показать пароль + Пароли + Избранное + Папки + Ошибка входа + Поиск + Автозаполнение + Настройки + Включить службу автозаполнения + Основное + Показывать иконки + Показывать иконки веб-сайтов + Стартовый экран + Клиент был деавторизован. Пожалуйста, войдите снова. + Служба автозаполнения + Сохранить + Редактировать пароль + Наименование + Наименование + Имя пользователя + URL-адрес + URL-адрес + Не удалось сохранить пароль. Пожалуйста, попробуйте снова + Удалить пароль + Не удалось удалить пароль. Пожалуйста, попробуйте снова + Пожалуйста, подтвердите удаление этого элемента + Удалить + Примечания + %s скопирован + В избранном + Новое дополнительное поле + Тип поля + Текст + E-Mail + Ключ + Это поле не может быть пустым + Введите корректный URL-адрес + Введите корректный e-mail + Не удалось сгенерировать пароль + Не удалось открыть URL-адрес + О приложении + Назад + Версия + Исходный код + Политика конфиденциальности + Лицензии + Помощь и предложения + Разработчик + Веб-сайт + Безопасность + Иконка папки + Новый пароль + Меню + Очистить поисковый запрос + Сгенерировать пароль + Скопировать значение + Главная + Папка + Выделение + Создать + Редактировать папку + Не удалось сохранить папку. Пожалуйста, попробуйте снова + Не удалось удалить папку. Пожалуйста, попробуйте снова + Удалить папку + Родительская папка + Безопасность + Блокировка приложения + Блокировать доступ к приложению с помощью пин-кода + Разблокировка биометрией + Разрешить разблокировку приложения при помощи биометрических данных + Неправильный код + Пин-код + Введите пин-код + Подтвердите пин-код + Пин-код не совпадает + Пожалуйста, подтвердите свою личность для доступа к списку паролей + Авторизация при помощи биометрии + Не удалось подключиться к серверу. Нажмите, чтобы повторить попытку. + Недопустимый сертификат + Недопустимый сертификат HTTPS. Хотите продолжить? + Ультра + Высокий + Средний + Стандартный + Низкий + Использовать цифры + Использовать специальные символы + Защищенность + Внешний вид + Системная + Светлая + Тёмная + Чёрная + Тема приложения + Использовать цвета NextCloud + Использовать цвета с сервера в качестве акцентного цвета + Использовать динамические цвета + Использовать системные динамические цвета + Список изменений + Здесь ничего нет + Ничего не найдено + Искать везде + Внести свой вклад + Использовать автозаполнение при печати + Показывать подсказки автозаполнения на клавиатуре, когда это возможно + Поиск + diff --git a/app/src/main/res/values-sr-rSP/strings.xml b/app/src/main/res/values-sr-rSP/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-sr-rSP/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-sv-rSE/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-uk-rUA/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-vi-rVN/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 0000000..f9d82dc --- /dev/null +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,4 @@ + + + Search + diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml new file mode 100644 index 0000000..655b643 --- /dev/null +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -0,0 +1,125 @@ + + + Nextcloud Passwords + 網站圖示 + 登入 + 伺服器網址 + 網址不能為空 + 網址起頭通常為https:// + 範例 + 登出 + 您確定要登出? + 密碼 + 密碼 + 輸入主密碼 + 顯示密碼 + 密碼 + 收藏 + 資料夾 + 錯誤登入 + 搜尋 + 自動填入 + 設定 + 啟用自動填入 + 一般 + 顯示圖示 + 顯示網站圖示 + 開始檢視 + 此客戶端已被取消授權,請從新登入 + 自動填入服務 + 儲存 + 編輯密碼 + 標籤 + 標籤 + 使用者名稱 + 網址 + 網址 + 密碼儲存錯誤,請重新嘗試 + 刪除密碼 + 密碼刪除失敗,請重新嘗試 + 這筆資訊即將刪除,請確認操作 + 刪除 + 備忘 + %s已複製 + 我的最愛 + 新自訂欄位 + 欄位類型 + 文字 + 電子信箱 + 隱藏 + 這個欄位不能為空 + 輸入有效的網址 + 輸入有效的電子信箱 + 無法產生密碼 + 無法開啟網址 + 關於 + 返回 + 版本 + 原始碼 + 隱私權政策 + 授權 + 幫助與建議 + 作者 + 網站 + 安全狀態 + 資料夾圖示 + 新密碼 + 選單 + 清除搜尋 + 產生密碼 + 複製內容 + 首頁 + 資料夾 + 選擇 + 建立 + 編輯資料夾 + 資料夾儲存錯誤,請重新嘗試 + 資料夾刪除錯誤,請重新嘗試 + 刪除資料夾 + 上層資料夾 + 安全性 + App鎖定 + 使用密碼鎖定對App的訪問 + 生物辨識解鎖 + 允許使用設備生物辨識解鎖App + 不正確的代碼 + 密碼 + 輸入密碼 + 確認密碼 + 密碼不匹配 + 請驗證您的身分以存取密碼 + 生物辨識認證 + 無法連線伺服器,請點擊重試 + 無效的憑證 + HTTPS憑證無效,您要繼續嗎? + 複雜 + + 中等 + 標準 + + 包含數字 + 包含特殊符號 + 強度 + 外觀 + 系統 + 淺色模式 + 深色模式 + 黑色模式 + App主題 + 使用Nextcloud配色 + 使用為強調色 + 使用動態色彩 + 使用系統的動態顏色 + 變更紀錄 + 沒有內容 + 未找到結果 + 搜尋全部 + 貢獻 + 使用內部自動填入 + 如果支援,在鍵盤上顯示自動填入建議 + 使用者名稱搜尋 + 利用使用者名稱搜尋密碼 + 儲存並自動填入 + 無效的密碼 + 搜尋 + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..3b8bdf4 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,128 @@ + + Nextcloud Passwords + Site favicon + Login + Server URL + URL cannot be empty + URL must start with https:// + Example + Log out + Are you sure you want to log out? + Password + Password + Enter master password + Show Password + Passwords + Favorites + Folders + Error logging in + Search + Autofill + Settings + Enable autofill service + General + Show icons + Show web site icons + Start view + The client has been deauthorized. Please, login again. + Autofill service + Save + Edit password + Label + Label + Username + URL + URL + Password saving has failed. Please, try again + Delete password + Password deleting has failed. Please, try again + This element will be deleted. Please, confirm this action + Delete + Notes + %s copied + Favorite + New custom field + Field type + Text + Email + Secret + This field cannot be empty + Enter a valid URL + Enter a valid email + Could not generate password + Could not open URL + About + Back + Version + Source code + Privacy policy + Licenses + Help and suggestions + Author + Website + Security status + Folder icon + New password + Menu + Clear search query + Generate password + Copy value + Home + Folder + Select + Create + Edit folder + Folder saving has failed. Please, try again + Folder deleting has failed. Please, try again + Delete folder + Parent folder + Security + App lock + Lock the access to the app with a passcode + Biometric unlock + Allow unlocking the app with device biometrics + Incorrect code + Passcode + Input passcode + Confirm passcode + Passcodes don\'t match + Please, verify your identity to access the passwords + Biometric authentication + Cannot connect to server. Tap to retry. + Invalid certificate + The HTTPS certificate is invalid. Do you want to proceed? + Ultra + High + Medium + Standard + Low + Include numbers + Include special characters + Strength + Appearance + System + Light + Dark + Black + App theme + Use Nextcloud colors + Use the instance color as the accent color + Use dynamic colors + Use the dynamic colors from the system + Changelog + No content here + No results found + Search everywhere + Contribute + Use inline autofill + Show autofill suggestions on the keyboard when supported + Search by username + Search passwords by the username value + Save and autofill + Invalid password + Search + Strict domain matching + Match passwords by its full domain, excluding subdomains + Discard + Changes made to this item will be discarded. Do you want to continue? + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..d091813 --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/data_extraction_rules.xml b/app/src/main/res/xml/data_extraction_rules.xml new file mode 100644 index 0000000..c447775 --- /dev/null +++ b/app/src/main/res/xml/data_extraction_rules.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/full_backup_content.xml b/app/src/main/res/xml/full_backup_content.xml new file mode 100644 index 0000000..761b801 --- /dev/null +++ b/app/src/main/res/xml/full_backup_content.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/xml/network_security_config.xml b/app/src/main/res/xml/network_security_config.xml new file mode 100644 index 0000000..fe28108 --- /dev/null +++ b/app/src/main/res/xml/network_security_config.xml @@ -0,0 +1,13 @@ + + + + + + + + + diff --git a/app/src/main/res/xml/service_configuration.xml b/app/src/main/res/xml/service_configuration.xml new file mode 100644 index 0000000..d4a6cdc --- /dev/null +++ b/app/src/main/res/xml/service_configuration.xml @@ -0,0 +1,275 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/test/java/com/hegocre/nextcloudpasswords/OkHttpTest.kt b/app/src/test/java/com/hegocre/nextcloudpasswords/OkHttpTest.kt new file mode 100644 index 0000000..957f87b --- /dev/null +++ b/app/src/test/java/com/hegocre/nextcloudpasswords/OkHttpTest.kt @@ -0,0 +1,35 @@ +package com.hegocre.nextcloudpasswords + +import com.hegocre.nextcloudpasswords.utils.OkHttpRequest +import org.junit.Assert.assertEquals +import org.junit.Test +import javax.net.ssl.SSLHandshakeException + +/** + * Unit test to check TLS Validation on different OkHttpRequest modes. + */ + +class OkHttpTest { + @Test + fun secureGetConnectionTest() { + val okHttpRequest = OkHttpRequest.getInstance() + okHttpRequest.allowInsecureRequests = false + val request = okHttpRequest.get("https://tls-v1-2.badssl.com:1012/") + assertEquals(request.code, 200) + } + + @Test(expected = SSLHandshakeException::class) + fun insecureGetDisallowedConnectionTest() { + val okHttpRequest = OkHttpRequest.getInstance() + okHttpRequest.allowInsecureRequests = false + okHttpRequest.get("https://self-signed.badssl.com/") + } + + @Test + fun insecureGetAllowedConnectionTest() { + val okHttpRequest = OkHttpRequest.getInstance() + okHttpRequest.allowInsecureRequests = true + val request = okHttpRequest.get("https://self-signed.badssl.com/") + assertEquals(request.code, 200) + } +} \ No newline at end of file diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..e16e5e8 --- /dev/null +++ b/build.gradle @@ -0,0 +1,23 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. +buildscript { + ext { + kotlin_version = '2.1.20' + room_version = '2.7.0' + ksp_version = '2.0.0' + } + repositories { + google() + mavenCentral() + } + dependencies { + classpath 'com.android.tools.build:gradle:8.8.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +tasks.register('clean', Delete) { + delete rootProject.layout.buildDirectory +} \ No newline at end of file diff --git a/crowdin.yml b/crowdin.yml new file mode 100644 index 0000000..bdff78f --- /dev/null +++ b/crowdin.yml @@ -0,0 +1,8 @@ +files: + - source: /app/src/main/res/values/strings.xml + translation: /app/src/main/res/values-%android_code%/%original_file_name% + translate_attributes: 0 + - source: /fastlane/metadata/android/en-US/*_description.txt + translation: /fastlane/metadata/android/%locale%/%original_file_name% + - source: /fastlane/metadata/android/en-US/changelogs/*.txt + translation: /fastlane/metadata/android/%locale%/changelogs/%original_file_name% diff --git a/fastlane/metadata/android/af-ZA/changelogs/10.txt b/fastlane/metadata/android/af-ZA/changelogs/10.txt new file mode 100644 index 0000000..bf63ecf --- /dev/null +++ b/fastlane/metadata/android/af-ZA/changelogs/10.txt @@ -0,0 +1,4 @@ +- Added support for inline autofill +- Autofill field detection improvements +- Always go to passwords view on autofill requests +- Bug fixes and internal improvements \ No newline at end of file diff --git a/fastlane/metadata/android/af-ZA/changelogs/17.txt b/fastlane/metadata/android/af-ZA/changelogs/17.txt new file mode 100644 index 0000000..3bbeb2f --- /dev/null +++ b/fastlane/metadata/android/af-ZA/changelogs/17.txt @@ -0,0 +1,3 @@ +- Better offline support +- Visual tweaks +- Internal improvements \ No newline at end of file diff --git a/fastlane/metadata/android/af-ZA/changelogs/18.txt b/fastlane/metadata/android/af-ZA/changelogs/18.txt new file mode 100644 index 0000000..018fdd0 --- /dev/null +++ b/fastlane/metadata/android/af-ZA/changelogs/18.txt @@ -0,0 +1,2 @@ +- Fix connectivity problems on some devices +- Fix connection to instances with self-signed certificates diff --git a/fastlane/metadata/android/af-ZA/changelogs/25.txt b/fastlane/metadata/android/af-ZA/changelogs/25.txt new file mode 100644 index 0000000..668dba6 --- /dev/null +++ b/fastlane/metadata/android/af-ZA/changelogs/25.txt @@ -0,0 +1,8 @@ +- Add more digits to app lock +- Lock app on device lock +- Add password generation options +- Add appearance customization options +- Add more information on the about screen +- Fix icon loading on self-hosted instances +- Fix some autofill fields not being detected +- Visual improvements and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/af-ZA/changelogs/26.txt b/fastlane/metadata/android/af-ZA/changelogs/26.txt new file mode 100644 index 0000000..020f90d --- /dev/null +++ b/fastlane/metadata/android/af-ZA/changelogs/26.txt @@ -0,0 +1,4 @@ +- Fix pin layout on non-vertical orientations +- Fix error when typing some characters on the search bar +- Remember last used password generation options +- Allow disabling inline autofill \ No newline at end of file diff --git a/fastlane/metadata/android/af-ZA/changelogs/29.txt b/fastlane/metadata/android/af-ZA/changelogs/29.txt new file mode 100644 index 0000000..ff4d88d --- /dev/null +++ b/fastlane/metadata/android/af-ZA/changelogs/29.txt @@ -0,0 +1,2 @@ +- Internal improvements +- Added Russian and Chinese Traditional \ No newline at end of file diff --git a/fastlane/metadata/android/af-ZA/changelogs/30.txt b/fastlane/metadata/android/af-ZA/changelogs/30.txt new file mode 100644 index 0000000..29ff07b --- /dev/null +++ b/fastlane/metadata/android/af-ZA/changelogs/30.txt @@ -0,0 +1,5 @@ +- Allow searching by username +- Allow adding passwords when autofilling +- Added Czech, Russian and Chinese Traditional translations +- Visual tweaks +- Internal improvements and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/af-ZA/changelogs/32.txt b/fastlane/metadata/android/af-ZA/changelogs/32.txt new file mode 100644 index 0000000..e87e0e4 --- /dev/null +++ b/fastlane/metadata/android/af-ZA/changelogs/32.txt @@ -0,0 +1,5 @@ +- Folder path is now displayed on the password details +- Support predictive back gesture on Android U+ +- Make notes text selectable +- Usage improvements +- Library updates and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/af-ZA/changelogs/5.txt b/fastlane/metadata/android/af-ZA/changelogs/5.txt new file mode 100644 index 0000000..22b3a23 --- /dev/null +++ b/fastlane/metadata/android/af-ZA/changelogs/5.txt @@ -0,0 +1,4 @@ +- Improve autofill service +- Improve URL searching +- Allow connecting to servers with self-signed certificate +- Minor bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/af-ZA/changelogs/6.txt b/fastlane/metadata/android/af-ZA/changelogs/6.txt new file mode 100644 index 0000000..abb4a7c --- /dev/null +++ b/fastlane/metadata/android/af-ZA/changelogs/6.txt @@ -0,0 +1 @@ +- Internal improvements diff --git a/fastlane/metadata/android/af-ZA/full_description.txt b/fastlane/metadata/android/af-ZA/full_description.txt new file mode 100644 index 0000000..604931d --- /dev/null +++ b/fastlane/metadata/android/af-ZA/full_description.txt @@ -0,0 +1,10 @@ +This app connects to a Nextcloud server with Passwords App installed, and allows viewing and editing its content on a user-friendly UI. It also acts as an AutoFill service, making logging in on Android devices easier. + +Features: +- Display user passwords and folders on a Material Design UI +- Edit and create passwords, including custom fields +- Edit and create folders +- Show site icons, with cache to minimize data usage (optional) +- App lock screen with both passcode and biometric authentication +- Autofill service (Android 8.0 or higher) +- Privacy friendly: The only server this app connects is your own Nextcloud Server \ No newline at end of file diff --git a/fastlane/metadata/android/af-ZA/short_description.txt b/fastlane/metadata/android/af-ZA/short_description.txt new file mode 100644 index 0000000..0755c0c --- /dev/null +++ b/fastlane/metadata/android/af-ZA/short_description.txt @@ -0,0 +1 @@ +Secure app for viewing passwords for the Nextcloud Passwords app \ No newline at end of file diff --git a/fastlane/metadata/android/ar-SA/changelogs/10.txt b/fastlane/metadata/android/ar-SA/changelogs/10.txt new file mode 100644 index 0000000..bf63ecf --- /dev/null +++ b/fastlane/metadata/android/ar-SA/changelogs/10.txt @@ -0,0 +1,4 @@ +- Added support for inline autofill +- Autofill field detection improvements +- Always go to passwords view on autofill requests +- Bug fixes and internal improvements \ No newline at end of file diff --git a/fastlane/metadata/android/ar-SA/changelogs/17.txt b/fastlane/metadata/android/ar-SA/changelogs/17.txt new file mode 100644 index 0000000..3bbeb2f --- /dev/null +++ b/fastlane/metadata/android/ar-SA/changelogs/17.txt @@ -0,0 +1,3 @@ +- Better offline support +- Visual tweaks +- Internal improvements \ No newline at end of file diff --git a/fastlane/metadata/android/ar-SA/changelogs/18.txt b/fastlane/metadata/android/ar-SA/changelogs/18.txt new file mode 100644 index 0000000..018fdd0 --- /dev/null +++ b/fastlane/metadata/android/ar-SA/changelogs/18.txt @@ -0,0 +1,2 @@ +- Fix connectivity problems on some devices +- Fix connection to instances with self-signed certificates diff --git a/fastlane/metadata/android/ar-SA/changelogs/25.txt b/fastlane/metadata/android/ar-SA/changelogs/25.txt new file mode 100644 index 0000000..668dba6 --- /dev/null +++ b/fastlane/metadata/android/ar-SA/changelogs/25.txt @@ -0,0 +1,8 @@ +- Add more digits to app lock +- Lock app on device lock +- Add password generation options +- Add appearance customization options +- Add more information on the about screen +- Fix icon loading on self-hosted instances +- Fix some autofill fields not being detected +- Visual improvements and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/ar-SA/changelogs/26.txt b/fastlane/metadata/android/ar-SA/changelogs/26.txt new file mode 100644 index 0000000..020f90d --- /dev/null +++ b/fastlane/metadata/android/ar-SA/changelogs/26.txt @@ -0,0 +1,4 @@ +- Fix pin layout on non-vertical orientations +- Fix error when typing some characters on the search bar +- Remember last used password generation options +- Allow disabling inline autofill \ No newline at end of file diff --git a/fastlane/metadata/android/ar-SA/changelogs/29.txt b/fastlane/metadata/android/ar-SA/changelogs/29.txt new file mode 100644 index 0000000..ff4d88d --- /dev/null +++ b/fastlane/metadata/android/ar-SA/changelogs/29.txt @@ -0,0 +1,2 @@ +- Internal improvements +- Added Russian and Chinese Traditional \ No newline at end of file diff --git a/fastlane/metadata/android/ar-SA/changelogs/30.txt b/fastlane/metadata/android/ar-SA/changelogs/30.txt new file mode 100644 index 0000000..29ff07b --- /dev/null +++ b/fastlane/metadata/android/ar-SA/changelogs/30.txt @@ -0,0 +1,5 @@ +- Allow searching by username +- Allow adding passwords when autofilling +- Added Czech, Russian and Chinese Traditional translations +- Visual tweaks +- Internal improvements and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/ar-SA/changelogs/32.txt b/fastlane/metadata/android/ar-SA/changelogs/32.txt new file mode 100644 index 0000000..e87e0e4 --- /dev/null +++ b/fastlane/metadata/android/ar-SA/changelogs/32.txt @@ -0,0 +1,5 @@ +- Folder path is now displayed on the password details +- Support predictive back gesture on Android U+ +- Make notes text selectable +- Usage improvements +- Library updates and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/ar-SA/changelogs/5.txt b/fastlane/metadata/android/ar-SA/changelogs/5.txt new file mode 100644 index 0000000..22b3a23 --- /dev/null +++ b/fastlane/metadata/android/ar-SA/changelogs/5.txt @@ -0,0 +1,4 @@ +- Improve autofill service +- Improve URL searching +- Allow connecting to servers with self-signed certificate +- Minor bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/ar-SA/changelogs/6.txt b/fastlane/metadata/android/ar-SA/changelogs/6.txt new file mode 100644 index 0000000..abb4a7c --- /dev/null +++ b/fastlane/metadata/android/ar-SA/changelogs/6.txt @@ -0,0 +1 @@ +- Internal improvements diff --git a/fastlane/metadata/android/ar-SA/full_description.txt b/fastlane/metadata/android/ar-SA/full_description.txt new file mode 100644 index 0000000..604931d --- /dev/null +++ b/fastlane/metadata/android/ar-SA/full_description.txt @@ -0,0 +1,10 @@ +This app connects to a Nextcloud server with Passwords App installed, and allows viewing and editing its content on a user-friendly UI. It also acts as an AutoFill service, making logging in on Android devices easier. + +Features: +- Display user passwords and folders on a Material Design UI +- Edit and create passwords, including custom fields +- Edit and create folders +- Show site icons, with cache to minimize data usage (optional) +- App lock screen with both passcode and biometric authentication +- Autofill service (Android 8.0 or higher) +- Privacy friendly: The only server this app connects is your own Nextcloud Server \ No newline at end of file diff --git a/fastlane/metadata/android/ar-SA/short_description.txt b/fastlane/metadata/android/ar-SA/short_description.txt new file mode 100644 index 0000000..0755c0c --- /dev/null +++ b/fastlane/metadata/android/ar-SA/short_description.txt @@ -0,0 +1 @@ +Secure app for viewing passwords for the Nextcloud Passwords app \ No newline at end of file diff --git a/fastlane/metadata/android/ca-ES/changelogs/10.txt b/fastlane/metadata/android/ca-ES/changelogs/10.txt new file mode 100644 index 0000000..40dad61 --- /dev/null +++ b/fastlane/metadata/android/ca-ES/changelogs/10.txt @@ -0,0 +1,4 @@ +- Afegit suport per l'emplenament automàtic en línia +- Millores en la detecció de camps d'emplenament automàtic +- Sempre es mostrarà la vista de contrasenyes a les sol·licituds d'emplenament automàtic +- Correcció d'errors i millores internes \ No newline at end of file diff --git a/fastlane/metadata/android/ca-ES/changelogs/17.txt b/fastlane/metadata/android/ca-ES/changelogs/17.txt new file mode 100644 index 0000000..5158c34 --- /dev/null +++ b/fastlane/metadata/android/ca-ES/changelogs/17.txt @@ -0,0 +1,3 @@ +- Millores en el funcionament sense connexió +- Retocs visuals +- Millores internes \ No newline at end of file diff --git a/fastlane/metadata/android/ca-ES/changelogs/18.txt b/fastlane/metadata/android/ca-ES/changelogs/18.txt new file mode 100644 index 0000000..376833d --- /dev/null +++ b/fastlane/metadata/android/ca-ES/changelogs/18.txt @@ -0,0 +1,2 @@ +- Solucionats problemes de connectivitat en alguns dispositius +- Solucionats problemes de connexió amb instàncies autofirmades diff --git a/fastlane/metadata/android/ca-ES/changelogs/25.txt b/fastlane/metadata/android/ca-ES/changelogs/25.txt new file mode 100644 index 0000000..f2ec7dc --- /dev/null +++ b/fastlane/metadata/android/ca-ES/changelogs/25.txt @@ -0,0 +1,8 @@ +- Afegit suport per més nombres al bloqueig de l'aplicació +- Es bloquejarà l'aplicació quan es bloquegi el dispositiu +- Afegides opcions de generació de contrasenyes +- Afegides opcions de personalització de l'aparença +- Es mostra més informació a la secció d'informació +- Solucionats problemes de càrrega d'imatges en instàncies autosignades +- Millorada la detecció de camps d'autocompletat +- Millores visuals i correcció d'errors \ No newline at end of file diff --git a/fastlane/metadata/android/ca-ES/changelogs/26.txt b/fastlane/metadata/android/ca-ES/changelogs/26.txt new file mode 100644 index 0000000..a2b21b4 --- /dev/null +++ b/fastlane/metadata/android/ca-ES/changelogs/26.txt @@ -0,0 +1,4 @@ +- Solucionats problemes en la distribució de la pantalla de bloqueig +- Solucionat un problema en escriure alguns caràcters a la barra de cerca +- Es recordaran les opcions utilitzades en la generació de contrasenyes +- Es permet desactivar l'autocompletat en línia \ No newline at end of file diff --git a/fastlane/metadata/android/ca-ES/changelogs/29.txt b/fastlane/metadata/android/ca-ES/changelogs/29.txt new file mode 100644 index 0000000..83b2c4e --- /dev/null +++ b/fastlane/metadata/android/ca-ES/changelogs/29.txt @@ -0,0 +1,2 @@ +- Millores internes +- Afegides traduccions al rus i al xinès tradicional \ No newline at end of file diff --git a/fastlane/metadata/android/ca-ES/changelogs/30.txt b/fastlane/metadata/android/ca-ES/changelogs/30.txt new file mode 100644 index 0000000..e56a897 --- /dev/null +++ b/fastlane/metadata/android/ca-ES/changelogs/30.txt @@ -0,0 +1,5 @@ +- Permet cercar per usuari +- Permet crear contrasenyes durant l'autocompletat +- Afegides les traduccions per txec, rus i xinès tradicional +- Retocs visuals +- Millores internes i correcció d'errors \ No newline at end of file diff --git a/fastlane/metadata/android/ca-ES/changelogs/32.txt b/fastlane/metadata/android/ca-ES/changelogs/32.txt new file mode 100644 index 0000000..c2c7f06 --- /dev/null +++ b/fastlane/metadata/android/ca-ES/changelogs/32.txt @@ -0,0 +1,5 @@ +- Es mostra la ruta de les contrasenyes a la vista de detall +- Afegit suport per al gest de retrocés predictiu a Android U i superiors +- Les notes d'una contrasenya ara es poden seleccionar +- Millores d'ús +- Actualització de llibreries i correcció d'errors \ No newline at end of file diff --git a/fastlane/metadata/android/ca-ES/changelogs/5.txt b/fastlane/metadata/android/ca-ES/changelogs/5.txt new file mode 100644 index 0000000..fffbef5 --- /dev/null +++ b/fastlane/metadata/android/ca-ES/changelogs/5.txt @@ -0,0 +1,4 @@ +- Millores en el servei d'emplenament automàtic +- Millores en la cerca d'URL +- Es permet connectar amb instàncies amb certificats autosignats +- Correccions d'errors menors \ No newline at end of file diff --git a/fastlane/metadata/android/ca-ES/changelogs/6.txt b/fastlane/metadata/android/ca-ES/changelogs/6.txt new file mode 100644 index 0000000..809269f --- /dev/null +++ b/fastlane/metadata/android/ca-ES/changelogs/6.txt @@ -0,0 +1 @@ +- Millores internes diff --git a/fastlane/metadata/android/ca-ES/full_description.txt b/fastlane/metadata/android/ca-ES/full_description.txt new file mode 100644 index 0000000..80a9910 --- /dev/null +++ b/fastlane/metadata/android/ca-ES/full_description.txt @@ -0,0 +1,10 @@ +Aquesta aplicació es connecta a un servidor de Nextcloud amb l'aplicació Contrasenyes instal·lada, i permet veure i editar el seu contingut en una interfície amigable. A més, actua com a servei d'Emplenament Automàtic, permetent iniciar sessió als dispositius Android de forma senzilla. + +Característiques: +- Mostra les contrasenyes i carpetes de l'usuari amb una interfície de Material Design +- Edita i crea contrasenyes, incloent-hi els camps personalitzats +- Edita i crea carpetes +- Mostra les icones dels llocs web, amb memòria cau per reduir l'ús de dades (opcional) +- Bloqueja l'aplicació amb un codi o amb autenticació biomètrica +- Servei d'emplenament automàtic (Android 8.0 i superior) +- Respectuós amb la privadesa: L'únic servidor a què es connecta és a la instància de Nextcloud \ No newline at end of file diff --git a/fastlane/metadata/android/ca-ES/short_description.txt b/fastlane/metadata/android/ca-ES/short_description.txt new file mode 100644 index 0000000..6843e4d --- /dev/null +++ b/fastlane/metadata/android/ca-ES/short_description.txt @@ -0,0 +1 @@ +Aplicació segura per veure contrasenyes de Nextcloud \ No newline at end of file diff --git a/fastlane/metadata/android/cs-CZ/changelogs/10.txt b/fastlane/metadata/android/cs-CZ/changelogs/10.txt new file mode 100644 index 0000000..48b7423 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/10.txt @@ -0,0 +1,4 @@ +- Přidána podpora pro inline automatické vyplňování +- Zlepšení detekce pole automatického vyplňování +- Vždy přejít na zobrazení hesel při automatickém vyplňování +- Opravy chyb a interní vylepšení \ No newline at end of file diff --git a/fastlane/metadata/android/cs-CZ/changelogs/17.txt b/fastlane/metadata/android/cs-CZ/changelogs/17.txt new file mode 100644 index 0000000..a71c10c --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/17.txt @@ -0,0 +1,3 @@ +- Lepší offline podpora +- Vizuální vylepšení +- Interní vylepšení \ No newline at end of file diff --git a/fastlane/metadata/android/cs-CZ/changelogs/18.txt b/fastlane/metadata/android/cs-CZ/changelogs/18.txt new file mode 100644 index 0000000..2bca416 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/18.txt @@ -0,0 +1,2 @@ +- Oprava problémů s připojením na některých zařízeních +- Oprava připojení k serverům s self-signed certifikátem diff --git a/fastlane/metadata/android/cs-CZ/changelogs/25.txt b/fastlane/metadata/android/cs-CZ/changelogs/25.txt new file mode 100644 index 0000000..11824b2 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/25.txt @@ -0,0 +1,8 @@ +- Přidání více číslic do zámku aplikace +- Zamknout aplikaci při uzamčení zařízení +- Přidání možnosti generování hesla +- Přidání možností přizpůsobení vzhledu +- Přidání dalšícj informací do "O aplikaci" menu +- Opravit načítání ikon na self-hosted instancích +- Oprava některých polí automatického vyplňování, které nebyly rozpoznány +- Vizuální vylepšení a opravy chyb \ No newline at end of file diff --git a/fastlane/metadata/android/cs-CZ/changelogs/26.txt b/fastlane/metadata/android/cs-CZ/changelogs/26.txt new file mode 100644 index 0000000..e0a9053 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/26.txt @@ -0,0 +1,4 @@ +- Opravit rozložení propnutých položek při nevertikálních orientacích +- Oprava chyb při psaní některých znaků na vyhledávací liště +- Zapamatovat si naposledy použité možnosti generování hesla +- Povolit vypnutí automatického vyplňování inline \ No newline at end of file diff --git a/fastlane/metadata/android/cs-CZ/changelogs/29.txt b/fastlane/metadata/android/cs-CZ/changelogs/29.txt new file mode 100644 index 0000000..02767c2 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/29.txt @@ -0,0 +1,2 @@ +- Interní vylepšení +- Přidána Ruština a Tradiční Čínština \ No newline at end of file diff --git a/fastlane/metadata/android/cs-CZ/changelogs/30.txt b/fastlane/metadata/android/cs-CZ/changelogs/30.txt new file mode 100644 index 0000000..5986532 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/30.txt @@ -0,0 +1,5 @@ +- Allow searching by username +- Allow adding passwords when autofilling +- Added Czech, Russian and Chinese Traditional translations +- Vizuální vylepšení +- Internal improvements and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/cs-CZ/changelogs/32.txt b/fastlane/metadata/android/cs-CZ/changelogs/32.txt new file mode 100644 index 0000000..e87e0e4 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/32.txt @@ -0,0 +1,5 @@ +- Folder path is now displayed on the password details +- Support predictive back gesture on Android U+ +- Make notes text selectable +- Usage improvements +- Library updates and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/cs-CZ/changelogs/5.txt b/fastlane/metadata/android/cs-CZ/changelogs/5.txt new file mode 100644 index 0000000..f516056 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/5.txt @@ -0,0 +1,4 @@ +- Zlepšení služby automatického vyplňování +- Zlepšení hledání URL +- Povolení připojení k serverům s self-signed certifikátem +- Drobné opravy chyb \ No newline at end of file diff --git a/fastlane/metadata/android/cs-CZ/changelogs/6.txt b/fastlane/metadata/android/cs-CZ/changelogs/6.txt new file mode 100644 index 0000000..f0807ed --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/6.txt @@ -0,0 +1 @@ +- Interní vylepšení diff --git a/fastlane/metadata/android/cs-CZ/full_description.txt b/fastlane/metadata/android/cs-CZ/full_description.txt new file mode 100644 index 0000000..9c85bb2 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/full_description.txt @@ -0,0 +1,10 @@ +Tato aplikace se připojuje k Nextcloud serveru s nainstalovanou aplikací Passwords App a umožňuje zobrazení a úpravu jejího obsahu na uživatelsky přívětivém UI. Také funguje jako služba automatického vyplňování, usnadňující přihlášení na Android zařízeních. + +Výhody: +- Zobrazí uživatelská hesla a složky v Material Design rozhraní +- Upravit a vytvořit hesla, včetně vlastních polí +- Upravit a vytvořit složky +- Zobrazit ikony stránek s mezipamětí pro minimalizaci využití dat (volitelné) +- Zamykací obrazovka aplikace s heslem i biometrickým ověřením +- Služba automatického vyplňování (Android 8.0 nebo vyšší) +- Přívětivé k ochraně osobních údajů: Jediný server, na který je aplikace připojena, je váš vlastní Nextcloud server \ No newline at end of file diff --git a/fastlane/metadata/android/cs-CZ/short_description.txt b/fastlane/metadata/android/cs-CZ/short_description.txt new file mode 100644 index 0000000..6b81838 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/short_description.txt @@ -0,0 +1 @@ +Bezpečná aplikace pro prohlížení hesel pro Nextcloud Passwords aplikaci \ No newline at end of file diff --git a/fastlane/metadata/android/da-DK/changelogs/10.txt b/fastlane/metadata/android/da-DK/changelogs/10.txt new file mode 100644 index 0000000..bf63ecf --- /dev/null +++ b/fastlane/metadata/android/da-DK/changelogs/10.txt @@ -0,0 +1,4 @@ +- Added support for inline autofill +- Autofill field detection improvements +- Always go to passwords view on autofill requests +- Bug fixes and internal improvements \ No newline at end of file diff --git a/fastlane/metadata/android/da-DK/changelogs/17.txt b/fastlane/metadata/android/da-DK/changelogs/17.txt new file mode 100644 index 0000000..3bbeb2f --- /dev/null +++ b/fastlane/metadata/android/da-DK/changelogs/17.txt @@ -0,0 +1,3 @@ +- Better offline support +- Visual tweaks +- Internal improvements \ No newline at end of file diff --git a/fastlane/metadata/android/da-DK/changelogs/18.txt b/fastlane/metadata/android/da-DK/changelogs/18.txt new file mode 100644 index 0000000..018fdd0 --- /dev/null +++ b/fastlane/metadata/android/da-DK/changelogs/18.txt @@ -0,0 +1,2 @@ +- Fix connectivity problems on some devices +- Fix connection to instances with self-signed certificates diff --git a/fastlane/metadata/android/da-DK/changelogs/25.txt b/fastlane/metadata/android/da-DK/changelogs/25.txt new file mode 100644 index 0000000..668dba6 --- /dev/null +++ b/fastlane/metadata/android/da-DK/changelogs/25.txt @@ -0,0 +1,8 @@ +- Add more digits to app lock +- Lock app on device lock +- Add password generation options +- Add appearance customization options +- Add more information on the about screen +- Fix icon loading on self-hosted instances +- Fix some autofill fields not being detected +- Visual improvements and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/da-DK/changelogs/26.txt b/fastlane/metadata/android/da-DK/changelogs/26.txt new file mode 100644 index 0000000..020f90d --- /dev/null +++ b/fastlane/metadata/android/da-DK/changelogs/26.txt @@ -0,0 +1,4 @@ +- Fix pin layout on non-vertical orientations +- Fix error when typing some characters on the search bar +- Remember last used password generation options +- Allow disabling inline autofill \ No newline at end of file diff --git a/fastlane/metadata/android/da-DK/changelogs/29.txt b/fastlane/metadata/android/da-DK/changelogs/29.txt new file mode 100644 index 0000000..ff4d88d --- /dev/null +++ b/fastlane/metadata/android/da-DK/changelogs/29.txt @@ -0,0 +1,2 @@ +- Internal improvements +- Added Russian and Chinese Traditional \ No newline at end of file diff --git a/fastlane/metadata/android/da-DK/changelogs/30.txt b/fastlane/metadata/android/da-DK/changelogs/30.txt new file mode 100644 index 0000000..29ff07b --- /dev/null +++ b/fastlane/metadata/android/da-DK/changelogs/30.txt @@ -0,0 +1,5 @@ +- Allow searching by username +- Allow adding passwords when autofilling +- Added Czech, Russian and Chinese Traditional translations +- Visual tweaks +- Internal improvements and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/da-DK/changelogs/32.txt b/fastlane/metadata/android/da-DK/changelogs/32.txt new file mode 100644 index 0000000..e87e0e4 --- /dev/null +++ b/fastlane/metadata/android/da-DK/changelogs/32.txt @@ -0,0 +1,5 @@ +- Folder path is now displayed on the password details +- Support predictive back gesture on Android U+ +- Make notes text selectable +- Usage improvements +- Library updates and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/da-DK/changelogs/5.txt b/fastlane/metadata/android/da-DK/changelogs/5.txt new file mode 100644 index 0000000..22b3a23 --- /dev/null +++ b/fastlane/metadata/android/da-DK/changelogs/5.txt @@ -0,0 +1,4 @@ +- Improve autofill service +- Improve URL searching +- Allow connecting to servers with self-signed certificate +- Minor bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/da-DK/changelogs/6.txt b/fastlane/metadata/android/da-DK/changelogs/6.txt new file mode 100644 index 0000000..abb4a7c --- /dev/null +++ b/fastlane/metadata/android/da-DK/changelogs/6.txt @@ -0,0 +1 @@ +- Internal improvements diff --git a/fastlane/metadata/android/da-DK/full_description.txt b/fastlane/metadata/android/da-DK/full_description.txt new file mode 100644 index 0000000..604931d --- /dev/null +++ b/fastlane/metadata/android/da-DK/full_description.txt @@ -0,0 +1,10 @@ +This app connects to a Nextcloud server with Passwords App installed, and allows viewing and editing its content on a user-friendly UI. It also acts as an AutoFill service, making logging in on Android devices easier. + +Features: +- Display user passwords and folders on a Material Design UI +- Edit and create passwords, including custom fields +- Edit and create folders +- Show site icons, with cache to minimize data usage (optional) +- App lock screen with both passcode and biometric authentication +- Autofill service (Android 8.0 or higher) +- Privacy friendly: The only server this app connects is your own Nextcloud Server \ No newline at end of file diff --git a/fastlane/metadata/android/da-DK/short_description.txt b/fastlane/metadata/android/da-DK/short_description.txt new file mode 100644 index 0000000..0755c0c --- /dev/null +++ b/fastlane/metadata/android/da-DK/short_description.txt @@ -0,0 +1 @@ +Secure app for viewing passwords for the Nextcloud Passwords app \ No newline at end of file diff --git a/fastlane/metadata/android/de-DE/changelogs/10.txt b/fastlane/metadata/android/de-DE/changelogs/10.txt new file mode 100644 index 0000000..fe0db10 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/10.txt @@ -0,0 +1,4 @@ +- Unterstützung für Inline-AutoAusfüllen hinzugefügt +- Verbesserungen der AutoAusfüllen-Felderkennung +- Gehe immer zur Passwortansicht bei AutoAusfüllen-Anfragen +- Fehlerbehebungen und interne Verbesserungen \ No newline at end of file diff --git a/fastlane/metadata/android/de-DE/changelogs/17.txt b/fastlane/metadata/android/de-DE/changelogs/17.txt new file mode 100644 index 0000000..9528d90 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/17.txt @@ -0,0 +1,3 @@ +- Bessere Offline-Unterstützung +- Visuelle Optimierungen +- Interne Verbesserungen \ No newline at end of file diff --git a/fastlane/metadata/android/de-DE/changelogs/18.txt b/fastlane/metadata/android/de-DE/changelogs/18.txt new file mode 100644 index 0000000..b5db30f --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/18.txt @@ -0,0 +1,2 @@ +- Behebung von Verbindungsproblemen auf einigen Geräten +- Behebung von Verbindungen zu Instanzen mit selbstsignierten Zertifikaten diff --git a/fastlane/metadata/android/de-DE/changelogs/25.txt b/fastlane/metadata/android/de-DE/changelogs/25.txt new file mode 100644 index 0000000..185d32e --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/25.txt @@ -0,0 +1,8 @@ +- Weitere Ziffern zur App-Sperre hinzufügen +- Sperre App bei Gerätesperrung +- Optionen zur Passwort-Generierung hinzufügen +- Optionen zur Anpassung hinzufügen +- Weitere Informationen auf dem Info-Bildschirm hinzufügen +- Das Laden des Symbols auf selbst-gehosteten Instanzen behoben +- Einige nicht erkannte AutoAusfüllen-Felder behoben +- Visuelle Verbesserungen und Fehlerkorrekturen \ No newline at end of file diff --git a/fastlane/metadata/android/de-DE/changelogs/26.txt b/fastlane/metadata/android/de-DE/changelogs/26.txt new file mode 100644 index 0000000..96fc372 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/26.txt @@ -0,0 +1,4 @@ +- Pin-Layout bei nicht-vertikalen Orientierungen behoben +- Fehlerbehebung beim Tippen einiger Zeichen in der Suchleiste +- Zuletzt verwendete Passwort-Erstellungsoptionen merken +- Aktivieren von Inline-AutoAusfüllen erlauben \ No newline at end of file diff --git a/fastlane/metadata/android/de-DE/changelogs/29.txt b/fastlane/metadata/android/de-DE/changelogs/29.txt new file mode 100644 index 0000000..5bd066d --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/29.txt @@ -0,0 +1,2 @@ +- Interne Verbesserungen +- Russisch und Chinesisch Traditionell hinzugefügt \ No newline at end of file diff --git a/fastlane/metadata/android/de-DE/changelogs/30.txt b/fastlane/metadata/android/de-DE/changelogs/30.txt new file mode 100644 index 0000000..04ff61d --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/30.txt @@ -0,0 +1,5 @@ +- Suche nach Benutzername erlauben +- Hinzufügen von Passwörtern beim automatischen Ausfüllen erlauben +- Übersetzungen für Tschechisch, Russisch und Chinesisch Traditionell hinzugefügt +- Visuelle Optimierungen +- Interne Verbesserungen und Fehlerbehebungen \ No newline at end of file diff --git a/fastlane/metadata/android/de-DE/changelogs/32.txt b/fastlane/metadata/android/de-DE/changelogs/32.txt new file mode 100644 index 0000000..9fbbb27 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/32.txt @@ -0,0 +1,5 @@ +- Ordnerpfad wird nun bei den Passwortdetails angezeigt +- Unterstützung für vorausschauende Zurück-Geste für Android U+ +- auswählbarer Text in Notizen +- Verbesserungen der Nutzung +- Bibliotheksaktualisierungen und Fehlerbehebungen \ No newline at end of file diff --git a/fastlane/metadata/android/de-DE/changelogs/5.txt b/fastlane/metadata/android/de-DE/changelogs/5.txt new file mode 100644 index 0000000..416bfd7 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/5.txt @@ -0,0 +1,4 @@ +- AutoAusfüllen-Dienst verbessern +- URL-Suche verbessern +- Verbindung zu Servern mit selbstsigniertem Zertifikat erlauben +- Kleinere Fehlerbehebungen \ No newline at end of file diff --git a/fastlane/metadata/android/de-DE/changelogs/6.txt b/fastlane/metadata/android/de-DE/changelogs/6.txt new file mode 100644 index 0000000..c59416f --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/6.txt @@ -0,0 +1 @@ +- Interne Verbesserungen diff --git a/fastlane/metadata/android/de-DE/full_description.txt b/fastlane/metadata/android/de-DE/full_description.txt new file mode 100644 index 0000000..a3e9ece --- /dev/null +++ b/fastlane/metadata/android/de-DE/full_description.txt @@ -0,0 +1,10 @@ +Diese App verbindet sich mit einem Nextcloud Server und installierter Passwort-App und ermöglicht das Betrachten und Bearbeiten von Inhalten auf einer benutzerfreundlichen Benutzeroberfläche. Sie agiert auch als AutoAusfüllen-Dienst, um bequemes Anmelden auf Android-Geräten zu ermöglichen. + +Funktionen: +- Passwörter und Ordner in einer Material Design-Oberfläche anzeigen +- Bearbeiten und Erstellen von Passwörtern, einschließlich benutzerdefinierter Felder +- Ordner bearbeiten und erstellen +- Webseiten-Symbole anzeigen, mit Cache, um die Datennutzung zu minimieren (optional) +- App-Sperre mit Zugangscode und biometrischer Authentifizierung +- AutoAusfüllen-Dienst (Android 8.0 oder höher) +- Datenschutzfreundlich: Der einzige Server, mit dem sich diese App verbindet, ist der eigene Nextcloud Server \ No newline at end of file diff --git a/fastlane/metadata/android/de-DE/short_description.txt b/fastlane/metadata/android/de-DE/short_description.txt new file mode 100644 index 0000000..8c7b279 --- /dev/null +++ b/fastlane/metadata/android/de-DE/short_description.txt @@ -0,0 +1 @@ +Sichere App zum Anzeigen von Passwörtern für die Nextcloud Passwörter App \ No newline at end of file diff --git a/fastlane/metadata/android/el-GR/changelogs/10.txt b/fastlane/metadata/android/el-GR/changelogs/10.txt new file mode 100644 index 0000000..bf63ecf --- /dev/null +++ b/fastlane/metadata/android/el-GR/changelogs/10.txt @@ -0,0 +1,4 @@ +- Added support for inline autofill +- Autofill field detection improvements +- Always go to passwords view on autofill requests +- Bug fixes and internal improvements \ No newline at end of file diff --git a/fastlane/metadata/android/el-GR/changelogs/17.txt b/fastlane/metadata/android/el-GR/changelogs/17.txt new file mode 100644 index 0000000..3bbeb2f --- /dev/null +++ b/fastlane/metadata/android/el-GR/changelogs/17.txt @@ -0,0 +1,3 @@ +- Better offline support +- Visual tweaks +- Internal improvements \ No newline at end of file diff --git a/fastlane/metadata/android/el-GR/changelogs/18.txt b/fastlane/metadata/android/el-GR/changelogs/18.txt new file mode 100644 index 0000000..018fdd0 --- /dev/null +++ b/fastlane/metadata/android/el-GR/changelogs/18.txt @@ -0,0 +1,2 @@ +- Fix connectivity problems on some devices +- Fix connection to instances with self-signed certificates diff --git a/fastlane/metadata/android/el-GR/changelogs/25.txt b/fastlane/metadata/android/el-GR/changelogs/25.txt new file mode 100644 index 0000000..668dba6 --- /dev/null +++ b/fastlane/metadata/android/el-GR/changelogs/25.txt @@ -0,0 +1,8 @@ +- Add more digits to app lock +- Lock app on device lock +- Add password generation options +- Add appearance customization options +- Add more information on the about screen +- Fix icon loading on self-hosted instances +- Fix some autofill fields not being detected +- Visual improvements and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/el-GR/changelogs/26.txt b/fastlane/metadata/android/el-GR/changelogs/26.txt new file mode 100644 index 0000000..020f90d --- /dev/null +++ b/fastlane/metadata/android/el-GR/changelogs/26.txt @@ -0,0 +1,4 @@ +- Fix pin layout on non-vertical orientations +- Fix error when typing some characters on the search bar +- Remember last used password generation options +- Allow disabling inline autofill \ No newline at end of file diff --git a/fastlane/metadata/android/el-GR/changelogs/29.txt b/fastlane/metadata/android/el-GR/changelogs/29.txt new file mode 100644 index 0000000..ff4d88d --- /dev/null +++ b/fastlane/metadata/android/el-GR/changelogs/29.txt @@ -0,0 +1,2 @@ +- Internal improvements +- Added Russian and Chinese Traditional \ No newline at end of file diff --git a/fastlane/metadata/android/el-GR/changelogs/30.txt b/fastlane/metadata/android/el-GR/changelogs/30.txt new file mode 100644 index 0000000..29ff07b --- /dev/null +++ b/fastlane/metadata/android/el-GR/changelogs/30.txt @@ -0,0 +1,5 @@ +- Allow searching by username +- Allow adding passwords when autofilling +- Added Czech, Russian and Chinese Traditional translations +- Visual tweaks +- Internal improvements and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/el-GR/changelogs/32.txt b/fastlane/metadata/android/el-GR/changelogs/32.txt new file mode 100644 index 0000000..e87e0e4 --- /dev/null +++ b/fastlane/metadata/android/el-GR/changelogs/32.txt @@ -0,0 +1,5 @@ +- Folder path is now displayed on the password details +- Support predictive back gesture on Android U+ +- Make notes text selectable +- Usage improvements +- Library updates and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/el-GR/changelogs/5.txt b/fastlane/metadata/android/el-GR/changelogs/5.txt new file mode 100644 index 0000000..22b3a23 --- /dev/null +++ b/fastlane/metadata/android/el-GR/changelogs/5.txt @@ -0,0 +1,4 @@ +- Improve autofill service +- Improve URL searching +- Allow connecting to servers with self-signed certificate +- Minor bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/el-GR/changelogs/6.txt b/fastlane/metadata/android/el-GR/changelogs/6.txt new file mode 100644 index 0000000..abb4a7c --- /dev/null +++ b/fastlane/metadata/android/el-GR/changelogs/6.txt @@ -0,0 +1 @@ +- Internal improvements diff --git a/fastlane/metadata/android/el-GR/full_description.txt b/fastlane/metadata/android/el-GR/full_description.txt new file mode 100644 index 0000000..604931d --- /dev/null +++ b/fastlane/metadata/android/el-GR/full_description.txt @@ -0,0 +1,10 @@ +This app connects to a Nextcloud server with Passwords App installed, and allows viewing and editing its content on a user-friendly UI. It also acts as an AutoFill service, making logging in on Android devices easier. + +Features: +- Display user passwords and folders on a Material Design UI +- Edit and create passwords, including custom fields +- Edit and create folders +- Show site icons, with cache to minimize data usage (optional) +- App lock screen with both passcode and biometric authentication +- Autofill service (Android 8.0 or higher) +- Privacy friendly: The only server this app connects is your own Nextcloud Server \ No newline at end of file diff --git a/fastlane/metadata/android/el-GR/short_description.txt b/fastlane/metadata/android/el-GR/short_description.txt new file mode 100644 index 0000000..0755c0c --- /dev/null +++ b/fastlane/metadata/android/el-GR/short_description.txt @@ -0,0 +1 @@ +Secure app for viewing passwords for the Nextcloud Passwords app \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/10.txt b/fastlane/metadata/android/en-US/changelogs/10.txt new file mode 100644 index 0000000..bf63ecf --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/10.txt @@ -0,0 +1,4 @@ +- Added support for inline autofill +- Autofill field detection improvements +- Always go to passwords view on autofill requests +- Bug fixes and internal improvements \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/17.txt b/fastlane/metadata/android/en-US/changelogs/17.txt new file mode 100644 index 0000000..3bbeb2f --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/17.txt @@ -0,0 +1,3 @@ +- Better offline support +- Visual tweaks +- Internal improvements \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/18.txt b/fastlane/metadata/android/en-US/changelogs/18.txt new file mode 100644 index 0000000..018fdd0 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/18.txt @@ -0,0 +1,2 @@ +- Fix connectivity problems on some devices +- Fix connection to instances with self-signed certificates diff --git a/fastlane/metadata/android/en-US/changelogs/25.txt b/fastlane/metadata/android/en-US/changelogs/25.txt new file mode 100644 index 0000000..668dba6 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/25.txt @@ -0,0 +1,8 @@ +- Add more digits to app lock +- Lock app on device lock +- Add password generation options +- Add appearance customization options +- Add more information on the about screen +- Fix icon loading on self-hosted instances +- Fix some autofill fields not being detected +- Visual improvements and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/26.txt b/fastlane/metadata/android/en-US/changelogs/26.txt new file mode 100644 index 0000000..020f90d --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/26.txt @@ -0,0 +1,4 @@ +- Fix pin layout on non-vertical orientations +- Fix error when typing some characters on the search bar +- Remember last used password generation options +- Allow disabling inline autofill \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/29.txt b/fastlane/metadata/android/en-US/changelogs/29.txt new file mode 100644 index 0000000..ff4d88d --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/29.txt @@ -0,0 +1,2 @@ +- Internal improvements +- Added Russian and Chinese Traditional \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/30.txt b/fastlane/metadata/android/en-US/changelogs/30.txt new file mode 100644 index 0000000..29ff07b --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/30.txt @@ -0,0 +1,5 @@ +- Allow searching by username +- Allow adding passwords when autofilling +- Added Czech, Russian and Chinese Traditional translations +- Visual tweaks +- Internal improvements and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/32.txt b/fastlane/metadata/android/en-US/changelogs/32.txt new file mode 100644 index 0000000..e87e0e4 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/32.txt @@ -0,0 +1,5 @@ +- Folder path is now displayed on the password details +- Support predictive back gesture on Android U+ +- Make notes text selectable +- Usage improvements +- Library updates and bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/36.txt b/fastlane/metadata/android/en-US/changelogs/36.txt new file mode 100644 index 0000000..8516946 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/36.txt @@ -0,0 +1,4 @@ +- Trust user Certificate Authorities (thanks to @SaeedDev94) +- Ask for confirmation before discarding edits +- Updated dependencies +- Internal improvements and bug fixes diff --git a/fastlane/metadata/android/en-US/changelogs/5.txt b/fastlane/metadata/android/en-US/changelogs/5.txt new file mode 100644 index 0000000..22b3a23 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/5.txt @@ -0,0 +1,4 @@ +- Improve autofill service +- Improve URL searching +- Allow connecting to servers with self-signed certificate +- Minor bug fixes \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/6.txt b/fastlane/metadata/android/en-US/changelogs/6.txt new file mode 100644 index 0000000..abb4a7c --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/6.txt @@ -0,0 +1 @@ +- Internal improvements diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt new file mode 100644 index 0000000..604931d --- /dev/null +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -0,0 +1,10 @@ +This app connects to a Nextcloud server with Passwords App installed, and allows viewing and editing its content on a user-friendly UI. It also acts as an AutoFill service, making logging in on Android devices easier. + +Features: +- Display user passwords and folders on a Material Design UI +- Edit and create passwords, including custom fields +- Edit and create folders +- Show site icons, with cache to minimize data usage (optional) +- App lock screen with both passcode and biometric authentication +- Autofill service (Android 8.0 or higher) +- Privacy friendly: The only server this app connects is your own Nextcloud Server \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/images/icon.png b/fastlane/metadata/android/en-US/images/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a12eef5241176229a2fc439d13cecc30f0d07b5 GIT binary patch literal 7156 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

CiW?#s5t~pLu+5>u{2^9iCzc|P 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 Qpwv;kcJpe!%)Q6|4>S~`)&Kwi literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/2.png new file mode 100644 index 0000000000000000000000000000000000000000..588de741e438c5d56dfe4a43a5d05cf4d86782ae GIT binary patch literal 159922 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

  • %Bsy#36ZPKf8@q>qNECZHe@`V4 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≪lG)6y5w~ZUQv47)`5}5I9_K)CcK7|mc~93%NxE!r5~E-&|4m#E{klz{%dOO z)yoRT`GUf+34Ky6%k*;|WW6ygW3{AUhJ!3�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 literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/3.png new file mode 100644 index 0000000000000000000000000000000000000000..c04be09724bcd9708d13795014183be889614c6c GIT binary patch literal 148758 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

    2_7ok<&ktSDv=L?Hj|w881aZ5F>Ry| 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 z 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 z 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 T9T91%Sm}4r|Lb3UBh&v0wVZym literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/7.png new file mode 100644 index 0000000000000000000000000000000000000000..f479d04950b711d6722b47ba831802c8f8ddde26 GIT binary patch literal 147821 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≪N2LqFRj-u~}9!B(#Bd@@#`8|`iVJvBukxkgyI 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 L50>xx{pr5}p0G~? literal 0 HcmV?d00001 diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/8.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/8.png new file mode 100644 index 0000000000000000000000000000000000000000..01e4aa97d1dd4a5fab45211747dfb56ff1dd3e3f GIT binary patch literal 137421 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 z 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á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≫L+crb^Bz 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 '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..93e3f59 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,92 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..a4707cf --- /dev/null +++ b/settings.gradle @@ -0,0 +1,12 @@ +plugins { + id 'org.gradle.toolchains.foojay-resolver-convention' version '0.8.0' +} +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + } +} +rootProject.name = "Nextcloud Passwords" +include ':app'