Merge branch 'develop' into feature/vault-format-8
This commit is contained in:
commit
38ef3b2f7f
@ -15,7 +15,7 @@ buildscript {
|
||||
classpath 'com.fernandocejas.frodo:frodo-plugin:0.8.3'
|
||||
classpath 'com.vanniktech:gradle-android-junit-jacoco-plugin:0.16.0'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "de.mannodermaus.gradle.plugins:android-junit5:1.7.0.0"
|
||||
classpath "de.mannodermaus.gradle.plugins:android-junit5:1.7.1.1"
|
||||
}
|
||||
}
|
||||
|
||||
@ -42,7 +42,7 @@ allprojects {
|
||||
ext {
|
||||
androidApplicationId = 'org.cryptomator'
|
||||
androidVersionCode = getVersionCode()
|
||||
androidVersionName = '1.5.14-SNAPSHOT'
|
||||
androidVersionName = '1.6.0-SNAPSHOT'
|
||||
}
|
||||
repositories {
|
||||
mavenCentral()
|
||||
|
@ -55,7 +55,7 @@ ext {
|
||||
|
||||
googleApiServicesVersion = 'v3-rev197-1.25.0'
|
||||
googlePlayServicesVersion = '19.0.0'
|
||||
googleClientVersion = '1.31.3'
|
||||
googleClientVersion = '1.31.4'
|
||||
|
||||
msgraphVersion = '2.10.0'
|
||||
msaAuthVersion = '0.10.0'
|
||||
@ -70,7 +70,7 @@ ext {
|
||||
jUnit4Version = '4.13.1'
|
||||
assertJVersion = '1.7.1'
|
||||
mockitoVersion = '3.9.0'
|
||||
mockitoInlineVersion = '3.8.0'
|
||||
mockitoInlineVersion = '3.9.0'
|
||||
hamcrestVersion = '1.3'
|
||||
dexmakerVersion = '1.0'
|
||||
espressoVersion = '3.3.0'
|
||||
@ -85,7 +85,7 @@ ext {
|
||||
androidxViewpagerVersion = '1.0.0'
|
||||
androidxSwiperefreshVersion = '1.1.0'
|
||||
androidxPreferenceVersion = '1.0.0' // 1.1.0 and 1.1.2 does have a bug with the text size
|
||||
androidxRecyclerViewVersion = '1.1.0'
|
||||
androidxRecyclerViewVersion = '1.2.0'
|
||||
androidxDocumentfileVersion = '1.0.1'
|
||||
androidxBiometricVersion = '1.1.0'
|
||||
androidxTestCoreVersion = '1.3.0'
|
||||
|
@ -20,4 +20,4 @@ S3_SECRET_ACCESS_KEY=
|
||||
|
||||
SLACK_URL=
|
||||
|
||||
GITHUB_TOKEN=
|
||||
GITHUB_PERSONAL_ACCESS_TOKEN=
|
||||
|
@ -32,7 +32,7 @@ platform :android do |options|
|
||||
|
||||
slack(
|
||||
default_payloads: [], # reduce the notification to the minimum
|
||||
message: ":rocket: Successfully deployed #{version} with code #{build} to the Play Store :cryptomator:",
|
||||
message: ":rocket: Successfully deployed #{version} with code #{build} :cryptomator:",
|
||||
payload: {
|
||||
"Changes" => File.read(release_note_path_en)
|
||||
}
|
||||
|
@ -1,2 +1,4 @@
|
||||
- Möglichkeit neu erstellte Videos über den automatischen Upload hochzuladen hinzugefügt
|
||||
- Möglichkeit das Entsperren eines Tresors abzubrechen hinzugefügt
|
||||
- Native pCloud-Unterstützung hinzugefügt (großen Dank an Manu für die Implementierung)
|
||||
- App-Absturz beim Wiederherstellen von Cryptomator aus einem Backup behoben
|
||||
- Verbesserte Anzeige von langen Einstellungen
|
||||
- Verbessertes Löschen des letzten Bildes über die Vorschau. Springt jetzt zurück in die Tresor-Inhaltsliste
|
@ -1,2 +1,4 @@
|
||||
- Added possibility to upload newly created videos via automatic upload as well
|
||||
- Added possibility to cancel unlocking a vault
|
||||
- Added pCloud native support (thanks to Manu for this huge contribution)
|
||||
- Fixed app crash when restoring Cryptomator from a backup
|
||||
- Enhanced display of long settings
|
||||
- Enhanced deletion of the last image via the preview. Now jumps back to the vault contents list
|
4
fastlane/metadata/android/fr-FR/changelogs/.gitignore
vendored
Normal file
4
fastlane/metadata/android/fr-FR/changelogs/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
# Ignore everything in this directory
|
||||
*
|
||||
# Except this file
|
||||
!.gitignore
|
@ -1,4 +1,6 @@
|
||||
<ul>
|
||||
<li>Added possibility to upload newly created videos via automatic upload as well</li>
|
||||
<li>Added possibility to cancel unlocking a vault</li>
|
||||
<li>Added pCloud native support (thanks to Manu for this huge contribution)</li>
|
||||
<li>Fixed app crash when restoring Cryptomator from a backup</li>
|
||||
<li>Enhanced display of long settings</li>
|
||||
<li>Enhanced deletion of the last image via the preview. Now jumps back to the vault contents list</li>
|
||||
</ul>
|
@ -850,8 +850,7 @@ class BrowseFilesPresenter @Inject constructor( //
|
||||
private fun createNewDocumentUri(parentUri: Uri, fileName: String): Uri {
|
||||
val mimeType = mimeTypes.fromFilename(fileName) //
|
||||
.orElse(MimeType.APPLICATION_OCTET_STREAM)
|
||||
val newDocumentUri: Uri?
|
||||
newDocumentUri = try {
|
||||
return try {
|
||||
DocumentsContract.createDocument( //
|
||||
context().contentResolver, //
|
||||
parentUri, //
|
||||
@ -859,11 +858,7 @@ class BrowseFilesPresenter @Inject constructor( //
|
||||
fileName)
|
||||
} catch (e: FileNotFoundException) {
|
||||
throw NoSuchCloudFileException(fileName)
|
||||
}
|
||||
if (newDocumentUri == null) {
|
||||
throw IllegalFileNameException()
|
||||
}
|
||||
return newDocumentUri
|
||||
} ?: throw IllegalFileNameException()
|
||||
}
|
||||
|
||||
@Callback
|
||||
@ -1093,7 +1088,7 @@ class BrowseFilesPresenter @Inject constructor( //
|
||||
|
||||
fun openFileFinished() {
|
||||
try {
|
||||
// necessary see https://gitlab.skymatic.de/cryptomator/android/-/issues/569
|
||||
// necessary see https://community.cryptomator.org/t/android-tabelle-nach-upload-unlesbar/6550
|
||||
Thread.sleep(500)
|
||||
} catch (e: InterruptedException) {
|
||||
Timber.tag("BrowseFilesPresenter").e(e, "Failed to sleep after resuming editing, necessary for google office apps")
|
||||
@ -1107,12 +1102,17 @@ class BrowseFilesPresenter @Inject constructor( //
|
||||
context().revokeUriPermission(uriToOpenedFile, Intent.FLAG_GRANT_WRITE_URI_PERMISSION or Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
||||
|
||||
uriToOpenedFile?.let {
|
||||
val hashAfterEdit = calculateDigestFromUri(it)
|
||||
if (hashAfterEdit.isPresent && openedCloudFileMd5.isPresent //
|
||||
&& Arrays.equals(hashAfterEdit.get(), openedCloudFileMd5.get())) {
|
||||
Timber.tag("BrowseFilesPresenter").i("Opened app finished, file not changed")
|
||||
} else {
|
||||
uploadChangedFile()
|
||||
try {
|
||||
val hashAfterEdit = calculateDigestFromUri(it)
|
||||
if (hashAfterEdit.isPresent && openedCloudFileMd5.isPresent //
|
||||
&& Arrays.equals(hashAfterEdit.get(), openedCloudFileMd5.get())) {
|
||||
Timber.tag("BrowseFilesPresenter").i("Opened app finished, file not changed")
|
||||
} else {
|
||||
uploadChangedFile()
|
||||
}
|
||||
} catch (e: FileNotFoundException) {
|
||||
Timber.tag("BrowseFilesPresenter").e(e, "Failed to read back changes, file isn't present anymore")
|
||||
Toast.makeText(context(), R.string.error_file_not_found_after_opening_using_3party, Toast.LENGTH_LONG).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1159,6 +1159,7 @@ class BrowseFilesPresenter @Inject constructor( //
|
||||
openWritableFileNotification.ifPresent { obj: OpenWritableFileNotification -> obj.hide() }
|
||||
}
|
||||
|
||||
@Throws(FileNotFoundException::class)
|
||||
private fun calculateDigestFromUri(uri: Uri): Optional<ByteArray> {
|
||||
val digest = MessageDigest.getInstance("MD5")
|
||||
DigestInputStream(context().contentResolver.openInputStream(uri), digest).use { dis ->
|
||||
|
@ -6,6 +6,7 @@ import android.content.ActivityNotFoundException
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.widget.Toast
|
||||
import org.cryptomator.data.cloud.crypto.CryptoCloud
|
||||
import org.cryptomator.data.util.NetworkConnectionCheck
|
||||
import org.cryptomator.domain.Cloud
|
||||
@ -122,7 +123,13 @@ class VaultListPresenter @Inject constructor( //
|
||||
val intent = Intent(context(), LicenseCheckActivity::class.java)
|
||||
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
|
||||
intent.data = Uri.parse(String.format("app://cryptomator/%s", license))
|
||||
context().startActivity(intent)
|
||||
|
||||
try {
|
||||
context().startActivity(intent)
|
||||
} catch (e: ActivityNotFoundException) {
|
||||
Toast.makeText(context(), "Please contact the support.", Toast.LENGTH_LONG).show()
|
||||
finish()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -102,7 +102,6 @@
|
||||
<string name="screen_share_files_section_location">Speicherort</string>
|
||||
<string name="screen_share_files_save_button_text">Speichern</string>
|
||||
<string name="screen_share_files_msg_success">Dateien verschlüsselt</string>
|
||||
<string name="screen_share_files_new_text_file">text.txt</string>
|
||||
<!-- ## screen: choose cloud service -->
|
||||
<string name="screen_choose_cloud_service_title">Cloud-Dienst</string>
|
||||
<string name="screen_choose_cloud_service_subtitle_add_existing_vault">Neuen Tresor anlegen</string>
|
||||
@ -216,7 +215,7 @@
|
||||
<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_all_files_exists">Alle Dateien existieren bereits. Sollen diese ersetzt werden?</string>
|
||||
<string name="dialog_replace_msg_some_files_exists">%d 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>
|
||||
<string name="dialog_replace_title_multiple_files_exist">Dateien ersetzen?</string>
|
||||
<string name="dialog_unable_to_share_title">Teilen nicht möglich</string>
|
||||
@ -231,8 +230,7 @@
|
||||
<string name="dialog_unsaved_changes_title">Sie haben ungespeicherte Änderungen</string>
|
||||
<string name="dialog_unsaved_changes_message">Möchten Sie wirklich beenden, ohne zu speichern?</string>
|
||||
<string name="dialog_unsaved_changes_discard">Verwerfen</string>
|
||||
<string name="dialog_unsaved_changes_save">@string/dialog_button_cancel</string>
|
||||
<string name="dialog_file_name_placeholder">@string/screen_share_files_new_text_file</string>
|
||||
<string name="dialog_file_name_placeholder">text.txt</string>
|
||||
<string name="dialog_delete_vault_message">Sind Sie sicher, dass sie den Tresor entfernen wollen?</string>
|
||||
<string name="dialog_delete_vault_hint">Dieser Vorgang wird den Tresor nur aus dieser Liste entfernen und nicht tatsächlich löschen.</string>
|
||||
<string name="dialog_upload_file_title">Lade hoch…</string>
|
||||
|
@ -142,7 +142,7 @@
|
||||
<string name="dialog_replace_positive_button_single_file_exists">Reemplazar</string>
|
||||
<string name="dialog_replace_msg_single_file_exists">Ya existe un archivo llamado %1$s. ¿Quieres reemplazarlo?</string>
|
||||
<string name="dialog_replace_msg_all_files_exists">Todos los archivos existen ya. ¿Quieres reemplazarlos?</string>
|
||||
<string name="dialog_replace_msg_some_files_exists">\"%d archivos existen ya. ¿Quieres reemplazarlos?</string>
|
||||
<string name="dialog_replace_msg_some_files_exists">%1$d archivos existen ya. ¿Quieres reemplazarlos?</string>
|
||||
<string name="dialog_replace_title_single_file_exists">\"¿Reemplazar archivo?</string>
|
||||
<string name="dialog_replace_title_multiple_files_exist">\"¿Reemplazar archivos?</string>
|
||||
<string name="dialog_unable_to_share_title">No se puede compartir archivos</string>
|
||||
|
@ -5,6 +5,7 @@
|
||||
<!-- # error messages -->
|
||||
<string name="error_generic">Une erreur est survenue</string>
|
||||
<string name="error_authentication_failed">Échec de l\'authentification</string>
|
||||
<string name="error_authentication_failed_re_authenticate">Échec de l\'authentification, veuillez vous connecter en utilisant %1$s</string>
|
||||
<string name="error_no_network_connection">Pas de connexion au réseau</string>
|
||||
<string name="error_invalid_passphrase">Mot de passe erroné</string>
|
||||
<string name="error_file_or_folder_exists">Un fichier ou un dossier existe déjà.</string>
|
||||
@ -175,6 +176,7 @@
|
||||
<string name="screen_settings_section_version">Version</string>
|
||||
<string name="screen_settings_advanced_settings">Paramètres Avancés</string>
|
||||
<string name="screen_settings_background_unlock_preparation_label">Accélérer le déverrouillage</string>
|
||||
<string name="screen_settings_background_unlock_preparation_label_summary">Téléchargez la configuration du coffre-fort en arrière-plan lorsque vous êtes invité à entrer le mot de passe ou l\'authentification biométrique</string>
|
||||
<string name="screen_settings_keep_unlocked_while_editing_files">Maintenir deverouillé</string>
|
||||
<string name="screen_settings_keep_unlocked_while_editing_files_summary">Gardez les coffres forts déverrouillées pendant l\'édition des fichiers</string>
|
||||
<!-- ## screen: cloud settings -->
|
||||
@ -214,7 +216,7 @@
|
||||
<string name="dialog_replace_positive_button_single_file_exists">Remplacer</string>
|
||||
<string name="dialog_replace_msg_single_file_exists">Un fichier nommé \'%1$s\' existe déjà. Voulez-vous le remplacer?</string>
|
||||
<string name="dialog_replace_msg_all_files_exists">Tous les fichiers existent déjà. Voulez-vous les remplacer?</string>
|
||||
<string name="dialog_replace_msg_some_files_exists">%d fichiers existent déjà. Voulez-vous les remplacer?</string>
|
||||
<string name="dialog_replace_msg_some_files_exists">%1$d fichiers existent déjà. Voulez-vous les remplacer?</string>
|
||||
<string name="dialog_replace_title_single_file_exists">Remplacer le fichier?</string>
|
||||
<string name="dialog_replace_title_multiple_files_exist">Remplacer les fichiers?</string>
|
||||
<string name="dialog_unable_to_share_title">Impossible de partager des fichiers</string>
|
||||
|
@ -200,7 +200,7 @@
|
||||
<string name="dialog_replace_positive_button_single_file_exists">Değiştir</string>
|
||||
<string name="dialog_replace_msg_single_file_exists">\'%1$s\' adlı bir dosya zaten var. Değiştirmek istiyor musunuz?</string>
|
||||
<string name="dialog_replace_msg_all_files_exists">Tüm dosyalar zaten mevcut. Onları değiştirmek ister misin?</string>
|
||||
<string name="dialog_replace_msg_some_files_exists">%d dosya zaten var. Onları değiştirmek ister misin?</string>
|
||||
<string name="dialog_replace_msg_some_files_exists">%1$d dosya zaten var. Onları değiştirmek ister misin?</string>
|
||||
<string name="dialog_replace_title_single_file_exists">Dosya değiştirilsin mi?</string>
|
||||
<string name="dialog_replace_title_multiple_files_exist">Dosyalar değiştirilsin mi?</string>
|
||||
<string name="dialog_unable_to_share_title">Dosyalar paylaşılamıyor</string>
|
||||
|
@ -35,6 +35,8 @@
|
||||
<string name="error_vault_version_mismatch">Version specified in vault.cryptomator is different to masterkey.cryptomator</string>
|
||||
<string name="error_vault_key_invalid">vault.cryptomator does not match with this masterkey.cryptomator</string>
|
||||
<string name="error_vault_config_loading">General error while loading the vault config</string>
|
||||
<string name="error_file_not_found_after_opening_using_3party">Local file isn\'t present anymore after switching back to Cryptomator. Possible changes cannot be propagated back to the cloud.</string>
|
||||
|
||||
<!-- # clouds -->
|
||||
|
||||
<!-- ## cloud names -->
|
||||
@ -308,7 +310,7 @@
|
||||
<string name="dialog_replace_positive_button_single_file_exists">Replace</string>
|
||||
<string name="dialog_replace_msg_single_file_exists">A file named \'%1$s\' already exists. Do you want to replace it?</string>
|
||||
<string name="dialog_replace_msg_all_files_exists">All files already exist. Do you want to replace them?</string>
|
||||
<string name="dialog_replace_msg_some_files_exists">%d files already exist. Do you want to replace them?</string>
|
||||
<string name="dialog_replace_msg_some_files_exists">%1$d files already exist. Do you want to replace them?</string>
|
||||
<string name="dialog_replace_title_single_file_exists">Replace file?</string>
|
||||
<string name="dialog_replace_title_multiple_files_exist">Replace files?</string>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user