Skip to content

Commit

Permalink
Merge branch 'release/1.7.3'
Browse files Browse the repository at this point in the history
  • Loading branch information
SailReal committed Apr 11, 2022
2 parents c4ba93e + b788d83 commit 6106d27
Show file tree
Hide file tree
Showing 28 changed files with 240 additions and 64 deletions.
17 changes: 17 additions & 0 deletions .idea/deploymentTargetDropDown.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 5 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,13 @@ git submodule init && git submodule update // (not necessary if cloned using --r
./gradlew assembleApkstoreDebug
```

Before connecting to OneDrive or Dropbox you have to provide valid API keys using environment variables:
Before connecting to Dropbox, OneDrive or pCloud you have to provide valid API keys using environment variables:
For build type

* **release**: `DROPBOX_API_KEY` or `ONEDRIVE_API_KEY` and `ONEDRIVE_API_REDIRCT_URI`
* **debug**: `DROPBOX_API_KEY_DEBUG` or `ONEDRIVE_API_KEY_DEBUG` and `ONEDRIVE_API_REDIRCT_URI_DEBUG`
* **release**: `DROPBOX_API_KEY`, `ONEDRIVE_API_KEY` and `ONEDRIVE_API_REDIRCT_URI` or `PCLOUD_CLIENT_ID`
* **debug**: `DROPBOX_API_KEY_DEBUG`, `ONEDRIVE_API_KEY_DEBUG` and `ONEDRIVE_API_REDIRCT_URI_DEBUG` or `PCLOUD_CLIENT_ID_DEBUG`

Before connecting to Google Drive you have to create a new project in [Google Cloud Platform](https://console.cloud.google.com) with Google Drive API, credentials including Google Drive scopes (read, write, delete,..) and the fingerprint of the key you use to build the app.

## Contributing to Cryptomator for Android

Expand Down
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ apply from: 'buildsystem/dependencies.gradle'
apply plugin: "com.vanniktech.android.junit.jacoco"

buildscript {
ext.kotlin_version = '1.6.10'
ext.kotlin_version = '1.6.20'
repositories {
mavenCentral()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.1.2'
classpath 'com.android.tools.build:gradle:7.1.3'
classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'
classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.16.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
Expand Down Expand Up @@ -39,7 +39,7 @@ allprojects {
ext {
androidApplicationId = 'org.cryptomator'
androidVersionCode = getVersionCode()
androidVersionName = '1.7.2'
androidVersionName = '1.7.3'
}
repositories {
mavenCentral()
Expand Down
8 changes: 4 additions & 4 deletions buildsystem/dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ ext {

timberVersion = '5.0.1'

zxcvbnVersion = '1.5.2'
zxcvbnVersion = '1.6.0'

scaleImageViewVersion = '3.10.0'

Expand All @@ -65,7 +65,7 @@ ext {
// cloud provider libs
cryptolibVersion = '2.0.2'

dropboxVersion = '5.1.1'
dropboxVersion = '5.2.0'

googleApiServicesVersion = 'v3-rev20220110-1.32.1'
googlePlayServicesVersion = '19.2.0'
Expand All @@ -76,10 +76,10 @@ ext {
*/
trackingFreeGoogleCLientVersion = '1.41.5'

msgraphVersion = '5.17.0'
msgraphVersion = '5.19.0'
msgraphAuthVersion = '3.0.2'

minIoVersion = '8.3.7'
minIoVersion = '8.3.8'
staxVersion = '1.2.0' // needed for minIO

commonsCodecVersion = '1.15'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl

@Throws(IOException::class)
private fun findFile(parentDriveId: String?, name: String): File? {
val fileListQuery = client().files().list().setFields("files(id,mimeType,name,size,shortcutDetails)")
val fileListQuery = client().files().list().setFields("files(id,mimeType,name,size,shortcutDetails)").setSupportsAllDrives(true).setIncludeItemsFromAllDrives(true)
fileListQuery.q = "name contains '$name' and '$parentDriveId' in parents and trashed = false"
return fileListQuery.execute().files.firstOrNull { it.name == name }
}
Expand Down Expand Up @@ -131,6 +131,8 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
.setFields("nextPageToken,files(id,mimeType,modifiedTime,name,size,shortcutDetails)") //
.setPageSize(1000) //
.setPageToken(pageToken)
.setSupportsAllDrives(true)
.setIncludeItemsFromAllDrives(true)
fileListQuery.q = "'" + folder.driveId + "' in parents and trashed = false"
val fileList = fileListQuery.execute()
for (file in fileList.files) {
Expand Down Expand Up @@ -160,6 +162,7 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
.files() //
.create(metadata) //
.setFields("id,name") //
.setSupportsAllDrives(true) //
.execute()
return idCache.cache(GoogleDriveCloudNodeFactory.folder(parentFolder, createdFolder))
} ?: throw ParentFolderIsNullException(folder.name)
Expand All @@ -181,6 +184,7 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
.setFields("id,mimeType,modifiedTime,name,size") //
.setAddParents(targetsParent.driveId) //
.setRemoveParents(sourcesParent.driveId) //
.setSupportsAllDrives(true) //
.execute()
idCache.remove(source)
return idCache.cache(GoogleDriveCloudNodeFactory.from(targetsParent, movedFile))
Expand Down Expand Up @@ -224,6 +228,7 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
.files() //
.update(file.driveId, metadata, it) //
.setFields("id,modifiedTime,name,size") //
.setSupportsAllDrives(true) //
.execute()
}
}
Expand All @@ -246,6 +251,7 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
.files() //
.create(metadata, it) //
.setFields("id,modifiedTime,name,size") //
.setSupportsAllDrives(true) //
.execute()
}
}
Expand Down Expand Up @@ -316,6 +322,7 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl
client() //
.files()[file.driveId] //
.setAlt("media") //
.setSupportsAllDrives(true) //
.executeMediaAndDownloadTo(it)
}
} catch (e: HttpResponseException) {
Expand Down Expand Up @@ -373,7 +380,7 @@ internal class GoogleDriveImpl(context: Context, googleDriveCloud: GoogleDriveCl

@Throws(IOException::class)
fun delete(node: GoogleDriveNode) {
client().files().delete(node.driveId).execute()
client().files().delete(node.driveId).setSupportsAllDrives(true).execute()
idCache.remove(node)
}

Expand Down
2 changes: 1 addition & 1 deletion fastlane/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ Create GitHub draft release
[bundle exec] fastlane android dryRun
```

Dry run - check trackin added for all flavors
Dry run - check tracking added for all flavors

----

Expand Down
2 changes: 1 addition & 1 deletion fastlane/izzyscript/result_apkstore.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion fastlane/izzyscript/result_fdroid.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion fastlane/izzyscript/result_playstore.json

Large diffs are not rendered by default.

5 changes: 2 additions & 3 deletions fastlane/metadata/android/de-DE/changelogs/default.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
- Fehlermeldungen, wenn ein Tresor nicht unterstützt wird, verbessert
- Anzeigefehler, der beim Verschieben von Ordnern mit lokalem Speicher und direktem Zugriff auf diesen auftritt, behoben
- Fehler, dass beim automatischen Hochladen aufgrund der Batterieoptimierung nicht immer alle Bilder erfasst werden, behoben
- Das Hinzufügen und Erstellen von Tresoren über eine Verknüpfung zu "Meiner Ablage" aus einem Ordner im Bereich "Geteilte Laufwerke" behoben
- Absturz der App auf einigen Geräten beim Betrachten von Bildern und Klicken auf den Bildschirm behoben
5 changes: 2 additions & 3 deletions fastlane/metadata/android/en-US/changelogs/default.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
- Improved error messages when a vault is not supported
- Fixed moving folders with local storage shows an error when accessed directly
- Fixed auto upload does not always upload all images automatically due to battery optimization
- Fixed adding and creating vaults using a shortcut to "My Drive" from a folder in the "Shared Drives" location
- Fixed app crash on some devices when browsing images and clicking the screen
5 changes: 2 additions & 3 deletions fastlane/release-notes.html
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<ul>
<li>Improved error messages when a vault is not supported</li>
<li>Fixed moving folders with local storage shows an error when accessed directly</li>
<li>Fixed auto upload does not always upload all images automatically due to battery optimization</li>
<li>Fixed adding and creating vaults using a shortcut to "My Drive" from a folder in the "Shared Drives" location</li>
<li>Fixed app crash on some devices when browsing images and clicking the screen</li>
</ul>
Binary file removed lib/google-http-client-1.41.4.jar
Binary file not shown.
Binary file removed lib/google-http-client-android-1.41.4.jar
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package org.cryptomator.presentation.util

import android.content.Context
import android.util.AttributeSet
import android.view.MotionEvent
import androidx.viewpager.widget.ViewPager

/**
* Workaround for https://github.com/cryptomator/android/issues/429
* Source https://github.com/Baseflow/PhotoView/issues/31#issuecomment-19803926
*/
class ViewPagerWorkaround : ViewPager {

constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)

override fun onTouchEvent(ev: MotionEvent?): Boolean {
return try {
super.onTouchEvent(ev)
} catch (ex: IllegalArgumentException) {
false
}
}

override fun onInterceptTouchEvent(ev: MotionEvent?): Boolean {
return try {
super.onInterceptTouchEvent(ev)
} catch (ex: IllegalArgumentException) {
false
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
android:layout_height="match_parent"
android:background="@color/colorBlack">

<androidx.viewpager.widget.ViewPager
<org.cryptomator.presentation.util.ViewPagerWorkaround
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Expand Down
12 changes: 12 additions & 0 deletions presentation/src/main/res/values-bn-rBD/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
<string name="error_no_network_connection">কোনো নেটওয়ার্ক সংযোগ নেই</string>
<string name="error_invalid_passphrase">ভুল পাসওয়ার্ড</string>
<string name="error_file_or_folder_exists">একটি ফাইল অথবা ফোল্ডার ইতিমধ্যে রয়েছে।</string>
<string name="error_vault_version_not_supported">ভোল্ট সংস্করণ %1$s অসমর্থিত. এই ভোল্টটি তৈরি করা হয়েছিল ক্রিপ্টোমেটরের একটি নতুন অথবা পুরনো সংস্করণ দিয়ে.</string>
<string name="error_vault_config_file_missing_due_to_format_999">%1$s ফাইলটি ভোল্ট ফোল্ডারে অনুপস্থিত. এই ফাইলটি ক্লাউডের ভোল্ট ফোল্ডারে আছে কিনা তা নিশ্চিত করুন.</string>
<string name="error_vault_already_exists">ভোল্টটি ইতিমধ্যে রয়েছে।</string>
<string name="error_no_such_file">ফাইলটি নেই।</string>
<string name="error_vault_has_been_locked">ভোল্টটি লক করা হয়েছে।</string>
Expand All @@ -29,11 +31,14 @@
<string name="error_vault_key_invalid">%1$s এই %2$s এর সাথে মেলে না</string>
<string name="error_vault_config_loading">ভোল্ট কোনফিগারেশন লোডিংএ সাধারণ ত্রুটি দেখা দিয়েছে</string>
<string name="error_file_not_found_after_opening_using_3party">ক্রিপ্টোমেটরে ফিরে যাওয়ার পর লোকাল ফাইলটি বিদ্যমান নয়। তাই সম্ভাব্য পরিবর্তনগুলো আবার ক্লাউডে স্থানান্তর করা হবে না।</string>
<string name="error_no_such_bucket">এরকম কোন bucket নেই</string>
<!-- # clouds -->
<!-- ## cloud names -->
<string name="cloud_names_local_storage">সিস্টেম স্টোরেজ</string>
<!-- # permission -->
<!-- ## permission messages -->
<string name="permission_message_export_file">ক্রিপ্টোমেটরের ফাইল এক্সপোর্ট করতে স্টোরেজ অনুমতি প্রয়োজন</string>
<string name="permission_message_upload_file">ক্রিপ্টোমেটরের ফাইল আপলোড করতে স্টোরেজ অনুমতি প্রয়োজন</string>
<string name="snack_bar_action_title_settings">সেটিংস</string>
<string name="snack_bar_action_title_search">খুঁজুন</string>
<string name="snack_bar_action_title_search_previous">পিছনে</string>
Expand Down Expand Up @@ -118,11 +123,17 @@
<string name="screen_webdav_settings_msg_password_must_not_be_empty">পাসওয়ার্ড খালি থাকতে পারবে না।</string>
<!-- ## screen: s3 settings -->
<string name="screen_s3_settings_display_name_label">নাম প্রদর্শন করুন</string>
<string name="screen_s3_settings_access_key_label">Access Key</string>
<string name="screen_s3_settings_secret_key_label">Secret Key</string>
<string name="screen_s3_settings_bucket_label">বিদ্যমান বাকেট</string>
<string name="screen_s3_settings_endpoint_label">এন্ডপয়েন্ট</string>
<string name="screen_s3_settings_region_label">অঞ্চল</string>
<string name="screen_s3_settings_msg_display_name_not_empty">নাম খালি হতে পারব না</string>
<string name="screen_s3_settings_msg_access_key_not_empty">Access Key খালি হতে পারবে না</string>
<string name="screen_s3_settings_msg_secret_key_not_empty">Secret Key খালি হতে পারবে না</string>
<string name="screen_s3_settings_msg_bucket_not_empty">Bucket খালি হতে পারবে না</string>
<!-- ## screen: enter vault name -->
<string name="screen_enter_vault_name_msg_name_empty">ভোল্ট এর নাম খালি হতে পারবে না.</string>
<string name="screen_enter_vault_name_vault_label">ভোল্ট এর নাম</string>
<string name="screen_enter_vault_name_button_text">তৈরি করুন</string>
<!-- ## screen: set password -->
Expand Down Expand Up @@ -202,6 +213,7 @@
<string name="dialog_replace_positive_button_single_file_exists">প্রতিস্থাপন করুন</string>
<string name="dialog_replace_msg_single_file_exists">%1$s নামে একটি ফাইল ইতিমধ্যে রয়েছে। আপনি কি এটা প্রতিস্থাপন করতে চান?</string>
<string name="dialog_replace_msg_all_files_exists">সব ফাইলগুলি ইতিমধ্যে রয়েছে। আপনি কি তাদের প্রতিস্থাপন করতে চান?</string>
<string name="dialog_unable_to_share_positive_button">আচ্ছা</string>
<string name="dialog_lock_vault">লক করুন</string>
<string name="dialog_app_is_obscured_info_neutral_button">বন্ধ করুন</string>
<string name="dialog_sym_link_back_button">পিছনে</string>
Expand Down
8 changes: 4 additions & 4 deletions presentation/src/main/res/values-de-rDE/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,8 @@
<string name="screen_file_browser_node_action_open_with_text">Öffnen mit&#8230;</string>
<string name="screen_file_browser_selection_mode_title_zero_elements">Elemente auswählen</string>
<string name="screen_file_browser_selection_mode_title_one_or_more_elements">%1$d ausgewählt</string>
<string name="screen_file_browser_select_items">Elemente auswählen</string>
<string name="screen_file_browser_select_all_items">Alle Elemente auswählen</string>
<string name="screen_file_browser_select_items">Auswählen</string>
<string name="screen_file_browser_select_all_items">Alle auswählen</string>
<string name="screen_file_browser_refresh_items">Aktualisieren</string>
<string name="screen_file_browser_no_connection_message">Keine Verbindung</string>
<string name="screen_file_browser_no_connection_button_text">Wiederholen</string>
Expand Down Expand Up @@ -153,7 +153,7 @@
<string name="screen_set_password_strength_indicator_1">Schwach</string>
<string name="screen_set_password_strength_indicator_2">Mittel</string>
<string name="screen_set_password_strength_indicator_3">Stark</string>
<string name="screen_set_password_strength_indicator_4">Sehr Stark</string>
<string name="screen_set_password_strength_indicator_4">Sehr stark</string>
<!-- ## screen: settings -->
<string name="screen_settings_section_general">Allgemein</string>
<string name="screen_settings_cloud_settings_label">Cloud-Dienste</string>
Expand Down Expand Up @@ -232,7 +232,7 @@
<string name="dialog_replace_positive_button_all_files_exist">Alle ersetzen</string>
<string name="dialog_replace_positive_button_some_files_exist">Bestehende ersetzen</string>
<string name="dialog_replace_positive_button_single_file_exists">Ersetzen</string>
<string name="dialog_replace_msg_single_file_exists">Eine Datei names \'%1$s\' existiert bereits. Soll diese ersetzt werden?</string>
<string name="dialog_replace_msg_single_file_exists">Eine Datei namens „%1$s existiert bereits. Soll sie ersetzt werden?</string>
<string name="dialog_replace_msg_all_files_exists">Alle Dateien existieren bereits. Sollen diese ersetzt werden?</string>
<string name="dialog_replace_msg_some_files_exists">%1$d Dateien existieren bereits. Sollen diese ersetzt werden?</string>
<string name="dialog_replace_title_single_file_exists">Datei ersetzen?</string>
Expand Down
41 changes: 41 additions & 0 deletions presentation/src/main/res/values-fa-rIR/strings.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- # app -->
<!-- # error messages -->
<!-- # clouds -->
<!-- ## cloud names -->
<!-- # permission -->
<!-- ## permission messages -->
<string name="snack_bar_action_title_search_next">بعدی</string>
<!-- # screens -->
<!-- # screen: vault list -->
<!-- # screen: file browser -->
<!-- ## screen: text editor -->
<!-- ## screen: share files -->
<!-- ## screen: choose cloud service -->
<!-- ## screen: cloud connections -->
<!-- ## screen: webdav settings -->
<!-- ## screen: s3 settings -->
<!-- ## screen: enter vault name -->
<!-- ## screen: set password -->
<!-- ## screen: settings -->
<!-- ## screen: cloud settings -->
<!-- ## screen: licenses -->
<!-- ## screen: authenticate cloud -->
<!-- ## screen: insecure android version info -->
<!-- # dialogs -->
<string name="dialog_enter_password_positive_button">بازکردن قفل</string>
<!-- Vault not found -->
<string name="dialog_lock_vault">قفل</string>
<string name="dialog_sym_link_back_button">بازگشت</string>
<!-- # error reports -->
<!-- # misc -->
<!-- ## file size helper -->
<!-- ## date helper -->
<!-- ## biometric authentication -->
<!-- notification -->
<!-- lock timeout names -->
<!-- cache size names -->
<!-- screen scheme mode names -->
<!-- update interval names -->
</resources>
8 changes: 8 additions & 0 deletions presentation/src/main/res/values-hr-rHR/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@
<!-- ## cloud names -->
<!-- # permission -->
<!-- ## permission messages -->
<string name="snack_bar_action_title_search_next">Sljedeći</string>
<!-- # screens -->
<!-- # screen: vault list -->
<!-- # screen: file browser -->
<string name="screen_file_browser_default_title">Trezor</string>
<!-- ## screen: text editor -->
<!-- ## screen: share files -->
<!-- ## screen: choose cloud service -->
Expand All @@ -17,13 +19,19 @@
<!-- ## screen: s3 settings -->
<!-- ## screen: enter vault name -->
<!-- ## screen: set password -->
<string name="screen_set_password_button_text">Gotovo</string>
<!-- ## screen: settings -->
<!-- ## screen: cloud settings -->
<!-- ## screen: licenses -->
<!-- ## screen: authenticate cloud -->
<!-- ## screen: insecure android version info -->
<!-- # dialogs -->
<string name="dialog_button_cancel">Odustani</string>
<string name="dialog_enter_password_positive_button">Otključaj</string>
<!-- Vault not found -->
<string name="dialog_lock_vault">Zaključaj</string>
<string name="dialog_app_is_obscured_info_neutral_button">Zatvori</string>
<string name="dialog_sym_link_back_button">Nazad</string>
<!-- # error reports -->
<!-- # misc -->
<!-- ## file size helper -->
Expand Down
Loading

0 comments on commit 6106d27

Please sign in to comment.