From 8d5762a6c05dc0a8669861dadf0f46e77ac118a2 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 16 Feb 2021 12:27:18 +0100 Subject: [PATCH 1/8] Bump version to 1.5.12-beta1 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index feadbf81..d9b5b4b7 100644 --- a/build.gradle +++ b/build.gradle @@ -42,7 +42,7 @@ allprojects { ext { androidApplicationId = 'org.cryptomator' androidVersionCode = getVersionCode() - androidVersionName = '1.5.12-SNAPSHOT' + androidVersionName = '1.5.12-beta1' } repositories { mavenCentral() From 2452ddb5a2d7385564a79fc03854a09dc62b22b3 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 16 Feb 2021 13:56:23 +0100 Subject: [PATCH 2/8] Add release notes for v1.5.12-beta1 --- fastlane/metadata/android/de-DE/changelogs/default.txt | 5 ++++- fastlane/metadata/android/en-US/changelogs/default.txt | 5 ++++- fastlane/metadata/android/fr-FR/changelogs/default.txt | 1 - fastlane/release-notes.html | 5 ++++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/fastlane/metadata/android/de-DE/changelogs/default.txt b/fastlane/metadata/android/de-DE/changelogs/default.txt index 96332f4f..d723022d 100644 --- a/fastlane/metadata/android/de-DE/changelogs/default.txt +++ b/fastlane/metadata/android/de-DE/changelogs/default.txt @@ -1 +1,4 @@ -- Foo \ No newline at end of file +- Möglichkeit zum Sortieren der Tresorliste hinzugefügt +- Logging in Google Drive Cloud hinzugefügt +- Verhalten bei Änderung des OneDrive-Passworts verbessert +- CryptoBot-Symbole aufpoliert \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/default.txt b/fastlane/metadata/android/en-US/changelogs/default.txt index 96332f4f..c52505db 100644 --- a/fastlane/metadata/android/en-US/changelogs/default.txt +++ b/fastlane/metadata/android/en-US/changelogs/default.txt @@ -1 +1,4 @@ -- Foo \ No newline at end of file +- Added possibility to sort vault list +- Added logging to Google drive cloud +- Enhanced behaviour when OneDrive password changed +- Polished CryptoBot icons \ No newline at end of file diff --git a/fastlane/metadata/android/fr-FR/changelogs/default.txt b/fastlane/metadata/android/fr-FR/changelogs/default.txt index 96332f4f..e69de29b 100644 --- a/fastlane/metadata/android/fr-FR/changelogs/default.txt +++ b/fastlane/metadata/android/fr-FR/changelogs/default.txt @@ -1 +0,0 @@ -- Foo \ No newline at end of file diff --git a/fastlane/release-notes.html b/fastlane/release-notes.html index 8066f97b..58c05bfb 100644 --- a/fastlane/release-notes.html +++ b/fastlane/release-notes.html @@ -1,3 +1,6 @@ \ No newline at end of file From 0c3671e74724ff3db05caa500cb44f29d902a73b Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 16 Feb 2021 15:07:26 +0100 Subject: [PATCH 3/8] Create APK's in deployToServer- and deployToFDroid-lane for GitHub --- fastlane/Fastfile | 108 +++++++++++++++++++--------------------------- 1 file changed, 45 insertions(+), 63 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 348e5fa2..f219606b 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -28,30 +28,16 @@ platform :android do |options| FileUtils.cp(release_note_path_en, "metadata/android/fr-FR/changelogs/default.txt") deployToPlaystore(beta:options[:beta]) + deployToServer(beta:options[:beta]) + deployToFDroid(beta:options[:beta]) - if options[:beta] - puts "Skipping deployment to server cause there isn't currently a beta channel" - - slack( - default_payloads: [], # reduce the notification to the minimum - message: ":rocket: Successfully deployed #{version} with code #{build} to the Play Store :cryptomator:", - payload: { - "Changes" => File.read(release_note_path_en) - } - ) - else - deployToServer(beta:options[:beta]) - deployToFDroid(beta:options[:beta]) - - slack( - default_payloads: [], # reduce the notification to the minimum - message: ":rocket: Successfully deployed #{version} with code #{build} to the Play Store and APK store :cryptomator:", - payload: { - "Changes" => File.read(release_note_path_en) - } - ) - end - + slack( + default_payloads: [], # reduce the notification to the minimum + message: ":rocket: Successfully deployed #{version} with code #{build} to the Play Store :cryptomator:", + payload: { + "Changes" => File.read(release_note_path_en) + } + ) end desc "Deploy new version to Play Store" @@ -134,39 +120,43 @@ platform :android do |options| latest_version_jsn.write(token) latest_version_jsn.close - puts "Uploading APK and release note" + if options[:beta] + puts "Skipping deployment to server cause there isn't currently a beta channel" + else + puts "Uploading APK and release note" - aws_s3( - bucket: ENV['S3_BUCKET'], - endpoint: ENV['S3_ENDPOINT'], - region: ENV['S3_REGION'], - access_key: ENV['S3_ACCESS_KEY'], - secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], - path: "android/#{version}", - files: [ - "fastlane/release/Cryptomator-#{version}.apk", - "fastlane/release-notes.html" - ], - skip_html_upload: true, - apk: '' - ) - - puts "Uploading #{latest_version_filename} with claims #{claims}" - puts "Rename #{latest_version_filename} to latest-version.json for deployment" - - aws_s3( - bucket: ENV['S3_BUCKET'], - endpoint: ENV['S3_ENDPOINT'], - region: ENV['S3_REGION'], - access_key: ENV['S3_ACCESS_KEY'], - secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], - path: "android", - files: [ - "fastlane/latest_versions/#{latest_version_filename}" - ], - skip_html_upload: true, - apk: '' - ) + aws_s3( + bucket: ENV['S3_BUCKET'], + endpoint: ENV['S3_ENDPOINT'], + region: ENV['S3_REGION'], + access_key: ENV['S3_ACCESS_KEY'], + secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], + path: "android/#{version}", + files: [ + "fastlane/release/Cryptomator-#{version}.apk", + "fastlane/release-notes.html" + ], + skip_html_upload: true, + apk: '' + ) + + puts "Uploading #{latest_version_filename} with claims #{claims}" + puts "Rename #{latest_version_filename} to latest-version.json for deployment" + + aws_s3( + bucket: ENV['S3_BUCKET'], + endpoint: ENV['S3_ENDPOINT'], + region: ENV['S3_REGION'], + access_key: ENV['S3_ACCESS_KEY'], + secret_access_key: ENV['S3_SECRET_ACCESS_KEY'], + path: "android", + files: [ + "fastlane/latest_versions/#{latest_version_filename}" + ], + skip_html_upload: true, + apk: '' + ) + end FileUtils.mv("release/Cryptomator-#{version}.apk", "release/Cryptomator-#{version}_signed.apk") end @@ -190,12 +180,4 @@ platform :android do |options| FileUtils.cp(lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH], "release/Cryptomator-#{version}_fdroid_signed.apk") end - - after_all do |lane| - #error do |lane, exception| - # slack( - # message: exception.message, - # success:false - # ) - end end From 174016dd37c68be8f22db52c78d34d6f15d6eb4e Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 16 Feb 2021 18:13:49 +0100 Subject: [PATCH 4/8] Partially revert 8dc310b to re-add custom storage location like SD cards --- .../java/org/cryptomator/presentation/model/CloudTypeModel.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/presentation/src/main/java/org/cryptomator/presentation/model/CloudTypeModel.kt b/presentation/src/main/java/org/cryptomator/presentation/model/CloudTypeModel.kt index 74f9d2b6..ca16deb3 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/model/CloudTypeModel.kt +++ b/presentation/src/main/java/org/cryptomator/presentation/model/CloudTypeModel.kt @@ -21,7 +21,8 @@ enum class CloudTypeModel(builder: Builder) { .withMultiInstances()), // LOCAL(Builder("LOCAL", R.string.cloud_names_local_storage) // .withCloudImageResource(R.drawable.storage_type_local) // - .withCloudImageLargeResource(R.drawable.storage_type_local_large)); + .withCloudImageLargeResource(R.drawable.storage_type_local_large) // + .withMultiInstances()); val cloudName: String = builder.cloudName val displayNameResource: Int = builder.displayNameResource From 503a6cf0c13fda047709b3f760121f065162c679 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 16 Feb 2021 18:28:26 +0100 Subject: [PATCH 5/8] Bump version to 1.5.12-beta2 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d9b5b4b7..ed8df4be 100644 --- a/build.gradle +++ b/build.gradle @@ -42,7 +42,7 @@ allprojects { ext { androidApplicationId = 'org.cryptomator' androidVersionCode = getVersionCode() - androidVersionName = '1.5.12-beta1' + androidVersionName = '1.5.12-beta2' } repositories { mavenCentral() From 9767466064ed0d11374c638e2bdd501cc548c1e8 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Sat, 20 Feb 2021 17:11:20 +0100 Subject: [PATCH 6/8] Apply sorting of vaults when sharing with CM and biometric setup too --- .../model/comparator/VaultPositionComparator.kt | 10 ++++++++++ .../ui/adapter/BiometricAuthSettingsAdapter.kt | 7 +++++-- .../ui/adapter/SharedLocationsAdapter.kt | 9 +++++++-- .../presentation/ui/adapter/VaultsAdapter.kt | 17 +++++++++-------- .../ui/fragment/SharedFilesFragment.kt | 8 +++++--- 5 files changed, 36 insertions(+), 15 deletions(-) create mode 100644 presentation/src/main/java/org/cryptomator/presentation/model/comparator/VaultPositionComparator.kt diff --git a/presentation/src/main/java/org/cryptomator/presentation/model/comparator/VaultPositionComparator.kt b/presentation/src/main/java/org/cryptomator/presentation/model/comparator/VaultPositionComparator.kt new file mode 100644 index 00000000..08324c77 --- /dev/null +++ b/presentation/src/main/java/org/cryptomator/presentation/model/comparator/VaultPositionComparator.kt @@ -0,0 +1,10 @@ +package org.cryptomator.presentation.model.comparator + +import org.cryptomator.presentation.model.VaultModel + +class VaultPositionComparator : Comparator { + + override fun compare(v1: VaultModel, v2: VaultModel): Int { + return v1.position - v2.position + } +} diff --git a/presentation/src/main/java/org/cryptomator/presentation/ui/adapter/BiometricAuthSettingsAdapter.kt b/presentation/src/main/java/org/cryptomator/presentation/ui/adapter/BiometricAuthSettingsAdapter.kt index e1e2bfef..b01a9050 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/ui/adapter/BiometricAuthSettingsAdapter.kt +++ b/presentation/src/main/java/org/cryptomator/presentation/ui/adapter/BiometricAuthSettingsAdapter.kt @@ -2,15 +2,18 @@ package org.cryptomator.presentation.ui.adapter import android.view.View import com.google.android.material.switchmaterial.SwitchMaterial -import kotlinx.android.synthetic.main.item_biometric_auth_vault.view.* import org.cryptomator.presentation.R import org.cryptomator.presentation.model.VaultModel +import org.cryptomator.presentation.model.comparator.VaultPositionComparator import org.cryptomator.presentation.ui.adapter.BiometricAuthSettingsAdapter.BiometricAuthSettingsViewHolder import javax.inject.Inject +import kotlinx.android.synthetic.main.item_biometric_auth_vault.view.cloud +import kotlinx.android.synthetic.main.item_biometric_auth_vault.view.toggleBiometricAuth +import kotlinx.android.synthetic.main.item_biometric_auth_vault.view.vaultName class BiometricAuthSettingsAdapter // @Inject -constructor() : RecyclerViewBaseAdapter() { +constructor() : RecyclerViewBaseAdapter(VaultPositionComparator()) { private var onVaultBiometricAuthSettingsChanged: OnVaultBiometricAuthSettingsChanged? = null diff --git a/presentation/src/main/java/org/cryptomator/presentation/ui/adapter/SharedLocationsAdapter.kt b/presentation/src/main/java/org/cryptomator/presentation/ui/adapter/SharedLocationsAdapter.kt index 6ec8b950..28f85a17 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/ui/adapter/SharedLocationsAdapter.kt +++ b/presentation/src/main/java/org/cryptomator/presentation/ui/adapter/SharedLocationsAdapter.kt @@ -1,14 +1,19 @@ package org.cryptomator.presentation.ui.adapter import android.view.View -import kotlinx.android.synthetic.main.item_shareable_location.view.* import org.cryptomator.presentation.R import org.cryptomator.presentation.model.VaultModel +import org.cryptomator.presentation.model.comparator.VaultPositionComparator import org.cryptomator.presentation.ui.adapter.SharedLocationsAdapter.VaultViewHolder import javax.inject.Inject +import kotlinx.android.synthetic.main.item_shareable_location.view.chooseFolderLocation +import kotlinx.android.synthetic.main.item_shareable_location.view.chosenLocation +import kotlinx.android.synthetic.main.item_shareable_location.view.cloudImage +import kotlinx.android.synthetic.main.item_shareable_location.view.selectedVault +import kotlinx.android.synthetic.main.item_shareable_location.view.vaultName class SharedLocationsAdapter @Inject -constructor() : RecyclerViewBaseAdapter() { +constructor() : RecyclerViewBaseAdapter(VaultPositionComparator()) { private var selectedVault: VaultModel? = null private var selectedLocation: String? = null diff --git a/presentation/src/main/java/org/cryptomator/presentation/ui/adapter/VaultsAdapter.kt b/presentation/src/main/java/org/cryptomator/presentation/ui/adapter/VaultsAdapter.kt index 5d00e96d..946aebfe 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/ui/adapter/VaultsAdapter.kt +++ b/presentation/src/main/java/org/cryptomator/presentation/ui/adapter/VaultsAdapter.kt @@ -1,15 +1,22 @@ package org.cryptomator.presentation.ui.adapter import android.view.View -import kotlinx.android.synthetic.main.item_vault.view.* import org.cryptomator.presentation.R import org.cryptomator.presentation.model.VaultModel +import org.cryptomator.presentation.model.comparator.VaultPositionComparator import org.cryptomator.presentation.ui.adapter.VaultsAdapter.VaultViewHolder import javax.inject.Inject +import kotlinx.android.synthetic.main.item_vault.view.cloudImage +import kotlinx.android.synthetic.main.item_vault.view.settings +import kotlinx.android.synthetic.main.item_vault.view.unlockedImage +import kotlinx.android.synthetic.main.item_vault.view.vaultName +import kotlinx.android.synthetic.main.item_vault.view.vaultPath class VaultsAdapter @Inject -internal constructor() : RecyclerViewBaseAdapter(VaultModelComparator()), VaultsMoveListener.Listener { +internal constructor() : RecyclerViewBaseAdapter(VaultPositionComparator()), VaultsMoveListener.Listener { + interface OnItemInteractionListener { + fun onVaultClicked(vaultModel: VaultModel) fun onVaultSettingsClicked(vaultModel: VaultModel) @@ -76,10 +83,4 @@ internal constructor() : RecyclerViewBaseAdapter { - override fun compare(o1: VaultModel, o2: VaultModel): Int { - return o1.position - o2.position - } - } } diff --git a/presentation/src/main/java/org/cryptomator/presentation/ui/fragment/SharedFilesFragment.kt b/presentation/src/main/java/org/cryptomator/presentation/ui/fragment/SharedFilesFragment.kt index 9d6f8e51..4a45076b 100644 --- a/presentation/src/main/java/org/cryptomator/presentation/ui/fragment/SharedFilesFragment.kt +++ b/presentation/src/main/java/org/cryptomator/presentation/ui/fragment/SharedFilesFragment.kt @@ -8,6 +8,7 @@ import org.cryptomator.presentation.R import org.cryptomator.presentation.model.CloudFolderModel import org.cryptomator.presentation.model.SharedFileModel import org.cryptomator.presentation.model.VaultModel +import org.cryptomator.presentation.model.comparator.VaultPositionComparator import org.cryptomator.presentation.presenter.SharedFilesPresenter import org.cryptomator.presentation.ui.adapter.SharedFilesAdapter import org.cryptomator.presentation.ui.adapter.SharedFilesAdapter.Callback @@ -69,9 +70,10 @@ class SharedFilesFragment : BaseFragment() { } fun displayVaults(vaults: List?) { - if (vaults?.isNotEmpty() == true) { - presenter.selectedVault?.let { presenter.selectedVault = vaults[vaults.indexOf(it)] } - val preselectedVault = presenter.selectedVault ?: vaults[0] + val sortedVaults = vaults?.sortedWith(VaultPositionComparator()) + if (sortedVaults?.isNotEmpty() == true) { + presenter.selectedVault?.let { presenter.selectedVault = sortedVaults[sortedVaults.indexOf(it)] } + val preselectedVault = presenter.selectedVault ?: sortedVaults[0] locationsAdapter.setPreselectedVault(preselectedVault) presenter.onVaultSelected(preselectedVault) } From 8fe48c095af905d10827aa4f6c9b8d5cdd644650 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Mon, 22 Feb 2021 11:36:30 +0100 Subject: [PATCH 7/8] Bump version to 1.5.12 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index ed8df4be..4e29c087 100644 --- a/build.gradle +++ b/build.gradle @@ -42,7 +42,7 @@ allprojects { ext { androidApplicationId = 'org.cryptomator' androidVersionCode = getVersionCode() - androidVersionName = '1.5.12-beta2' + androidVersionName = '1.5.12' } repositories { mavenCentral() From b5e516798edf35a3b109323b864ab69df30ba37d Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Mon, 22 Feb 2021 11:40:54 +0100 Subject: [PATCH 8/8] Adjust release notes for version 1.5.12 --- fastlane/metadata/android/en-US/changelogs/default.txt | 2 +- fastlane/release-notes.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fastlane/metadata/android/en-US/changelogs/default.txt b/fastlane/metadata/android/en-US/changelogs/default.txt index c52505db..22075f45 100644 --- a/fastlane/metadata/android/en-US/changelogs/default.txt +++ b/fastlane/metadata/android/en-US/changelogs/default.txt @@ -1,4 +1,4 @@ - Added possibility to sort vault list - Added logging to Google drive cloud -- Enhanced behaviour when OneDrive password changed +- Enhanced behavior when OneDrive password changed - Polished CryptoBot icons \ No newline at end of file diff --git a/fastlane/release-notes.html b/fastlane/release-notes.html index 58c05bfb..839af27d 100644 --- a/fastlane/release-notes.html +++ b/fastlane/release-notes.html @@ -1,6 +1,6 @@
  • Added possibility to sort vault list
  • Added logging to Google drive cloud
  • -
  • Enhanced behaviour when OneDrive password changed
  • +
  • Enhanced behavior when OneDrive password changed
  • Polished CryptoBot icons
\ No newline at end of file