diff --git a/.gitignore b/.gitignore index e2091fa3d..c689a5f59 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,6 @@ src/quicksyPlaystore/res/values/push.xml build/ captures/ signing.properties -signing.managed.properties # Ignore Gradle GUI config gradle-app.setting diff --git a/CHANGELOG.md b/CHANGELOG.md index fedfe63c2..0e9eb28bd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,61 +1,5 @@ # Changelog -### Version 2.15.3 - -* fix call integration on some Android 14 devices -* Introduce 'Invites from Strangers' setting - -### Version 2.15.2 - -* Fix Quicksy registration on Android 6/7 -* Play incoming call ringtone on notification channel - -### Version 2.15.1 - -* Show message status as icons -* Introduce 'Large font' setting for message bubbles - -### Version 2.15.0 - -* Use Material 3 theme -* Reorganize settings -* Synchronize read state across devices - -### Version 2.14.2 - -* Restore access to Channel Discovery for Android 6+7 -* Improve logging for failed call integration - -### Version 2.14.1 - -* Fix A/V calls on Android 8 -* Fix race conditions in new call integration -* Fix video compression sticking around - -### Version 2.14.0 - -* Improve integration of A/V calls into the operating system - -### Version 2.13.4 - -* Fix minor regressions introduced with 2.13.1 - -### Version 2.13.3 - -* Provide easier access to 'Privacy Policy' on Play Store version (Quicksy and Conversations) -* Remove address book integration on Play Store version of Conversations - -### Version 2.13.2 - -* minor bug fixes -* slight modifications in Quicksy onboard flow - -### Version 2.13.1 - -* Support P2P file transfer via WebRTC data channels -* Fix interoperability issues with Bind 2.0 on ejabberd -* Bundle Let’s Encrypt root certificates for Android <= 7 - ### Version 2.13.0 * Easier access to 'Show QR code' diff --git a/README.md b/README.md index b006810bd..a0cfed0b8 100644 --- a/README.md +++ b/README.md @@ -11,13 +11,7 @@

-

- - - - - -

+![screenshots](https://codeberg.org/iNPUTmice/Conversations/raw/branch/master/screenshots.png) ## Design principles diff --git a/build.gradle b/build.gradle index b1b7a6d34..9269d10ed 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { maven { url "https://www.jitpack.io" } } dependencies { - classpath 'com.android.tools.build:gradle:8.3.1' + classpath 'com.android.tools.build:gradle:8.2.0-rc03' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.8.21" } } @@ -35,26 +35,24 @@ configurations { } dependencies { - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.3' implementation 'androidx.viewpager:viewpager:1.0.0' - playstoreImplementation('com.google.firebase:firebase-messaging:23.4.1') { + playstoreImplementation('com.google.firebase:firebase-messaging:23.3.1') { exclude group: 'com.google.firebase', module: 'firebase-core' exclude group: 'com.google.firebase', module: 'firebase-analytics' exclude group: 'com.google.firebase', module: 'firebase-measurement-connector' } conversationsPlaystoreImplementation("com.android.installreferrer:installreferrer:2.2") - quicksyPlaystoreImplementation 'com.google.android.gms:play-services-auth-api-phone:18.0.2' + quicksyPlaystoreImplementation 'com.google.android.gms:play-services-auth-api-phone:18.0.1' implementation 'com.github.open-keychain.open-keychain:openpgp-api:v5.7.1' implementation("com.github.CanHub:Android-Image-Cropper:2.2.0") implementation 'androidx.appcompat:appcompat:1.6.1' - implementation 'androidx.exifinterface:exifinterface:1.3.7' + implementation 'androidx.exifinterface:exifinterface:1.3.6' implementation 'androidx.cardview:cardview:1.0.0' - implementation "androidx.preference:preference:1.2.1" implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' - implementation 'com.google.android.material:material:1.11.0' - implementation 'androidx.work:work-runtime:2.9.0' + implementation 'com.google.android.material:material:1.10.0' implementation "androidx.emoji2:emoji2:1.4.0" freeImplementation "androidx.emoji2:emoji2-bundled:1.4.0" @@ -67,7 +65,7 @@ dependencies { implementation 'me.leolin:ShortcutBadger:1.1.22@aar' implementation 'org.whispersystems:signal-protocol-java:2.6.2' implementation 'com.makeramen:roundedimageview:2.3.0' - + implementation "com.wefika:flowlayout:0.4.1" //noinspection GradleDependency implementation('com.github.natario1:Transcoder:v0.9.1') { exclude group: 'com.otaliastudios.opengl', module: 'egloo' @@ -80,15 +78,15 @@ dependencies { implementation 'org.hsluv:hsluv:0.2' implementation 'org.conscrypt:conscrypt-android:2.5.2' implementation 'me.drakeet.support:toastcompat:1.1.0' - implementation "com.leinardi.android:speed-dial:3.3.0" + implementation "com.leinardi.android:speed-dial:3.2.0" implementation "com.squareup.retrofit2:retrofit:2.9.0" implementation "com.squareup.retrofit2:converter-gson:2.9.0" - implementation "com.squareup.okhttp3:okhttp:4.12.0" + implementation "com.squareup.okhttp3:okhttp:4.11.0" implementation 'com.google.guava:guava:32.1.3-android' - quicksyImplementation 'io.michaelrocks:libphonenumber-android:8.13.28' - implementation 'im.conversations.webrtc:webrtc-android:119.0.1' + implementation 'io.michaelrocks:libphonenumber-android:8.13.17' + implementation 'im.conversations.webrtc:webrtc-android:119.0.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation "androidx.recyclerview:recyclerview:1.2.1" @@ -119,8 +117,8 @@ android { defaultConfig { minSdkVersion 24 targetSdkVersion 34 - versionCode 42110 - versionName "2.15.3" + versionCode 42081 + versionName "2.13.0" archivesBaseName += "-$versionName" applicationId "eu.siacs.conversations.narayana" resValue "string", "applicationId", applicationId @@ -166,12 +164,10 @@ android { def appName = "Quicksy" resValue "string", "app_name", appName buildConfigField "String", "APP_NAME", "\"$appName\"" - buildConfigField "String", "PRIVACY_POLICY", "\"https://quicksy.im/privacy.htm\"" } conversations { dimension "mode" - buildConfigField "String", "PRIVACY_POLICY", "\"https://conversations.im/privacy.html\"" } playstore { diff --git a/conversations.doap b/conversations.doap index 231859b2b..4d492f9b3 100644 --- a/conversations.doap +++ b/conversations.doap @@ -474,26 +474,12 @@ 0.1.0 - - - - complete - 0.1.0 - - - - - - complete - 0.1.0 - - - 2.14.0 - 2024-03-22 - + 2.9.13 + 2021-05-03 + diff --git a/fastlane/metadata/android/de-DE/changelogs/4208104.txt b/fastlane/metadata/android/de-DE/changelogs/4208104.txt deleted file mode 100644 index 9f9787c70..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4208104.txt +++ /dev/null @@ -1,4 +0,0 @@ -* Leichterer Zugriff auf 'QR-Code anzeigen' -* Unterstützung von PEP Native Bookmarks -* Unterstützung für SDP Offer / Answer-Model (wird von SIP Gateways verwendet) -* Anhebung der Ziel-API auf Android 14 diff --git a/fastlane/metadata/android/de-DE/changelogs/4208804.txt b/fastlane/metadata/android/de-DE/changelogs/4208804.txt deleted file mode 100644 index b3e0925f4..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4208804.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Unterstützung von P2P-Dateiübertragung über WebRTC-Datenkanäle -* Behebung von Interoperabilitätsproblemen mit Bind 2.0 auf ejabberd -* Bündelung von Let's Encrypt Root-Zertifikaten für Android <= 7 diff --git a/fastlane/metadata/android/de-DE/changelogs/4209004.txt b/fastlane/metadata/android/de-DE/changelogs/4209004.txt deleted file mode 100644 index 018d6e1eb..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4209004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* kleinere Fehlerbehebungen -* Geringfügige Änderungen beim Quicksy-Onboarding diff --git a/fastlane/metadata/android/de-DE/changelogs/4209204.txt b/fastlane/metadata/android/de-DE/changelogs/4209204.txt deleted file mode 100644 index 7658709d2..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4209204.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Einfacherer Zugang zu den Datenschutzbestimmungen in der Play Store-Version (Quicksy und Conversations) -* Entfernen der Adressbuchintegration in der Play Store-Version von Conversations diff --git a/fastlane/metadata/android/de-DE/changelogs/4209404.txt b/fastlane/metadata/android/de-DE/changelogs/4209404.txt deleted file mode 100644 index bb5feb585..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4209404.txt +++ /dev/null @@ -1 +0,0 @@ -* Behebung kleinerer Schwierigkeiten, die mit 2.13.1 eingeführt wurden diff --git a/fastlane/metadata/android/de-DE/changelogs/4210104.txt b/fastlane/metadata/android/de-DE/changelogs/4210104.txt deleted file mode 100644 index 92e5e62ad..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4210104.txt +++ /dev/null @@ -1 +0,0 @@ -* Verbesserung der Integration von A/V-Aufrufen in das Betriebssystem diff --git a/fastlane/metadata/android/de-DE/changelogs/4210404.txt b/fastlane/metadata/android/de-DE/changelogs/4210404.txt deleted file mode 100644 index 22647fbf9..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4210404.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Behebung von A/V-Anrufen unter Android 8 -* Behebung von Problemen bei der Integration neuer Anrufe -* Behebt das Problem mit der Videokompression diff --git a/fastlane/metadata/android/de-DE/changelogs/4210504.txt b/fastlane/metadata/android/de-DE/changelogs/4210504.txt deleted file mode 100644 index ed0af77ba..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4210504.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Wiederherstellung des Zugangs zu Channel Discovery für Android 6+7 -* Verbesserte Protokollierung bei fehlgeschlagener Anrufintegration diff --git a/fastlane/metadata/android/de-DE/changelogs/4210604.txt b/fastlane/metadata/android/de-DE/changelogs/4210604.txt deleted file mode 100644 index 6cfacb0f8..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4210604.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Nutzung des Material 3 Designs -* Einstellungen umgestaltet -* Lesestatus geräteübergreifend synchronisieren diff --git a/fastlane/metadata/android/de-DE/changelogs/4210704.txt b/fastlane/metadata/android/de-DE/changelogs/4210704.txt deleted file mode 100644 index 6cfacb0f8..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4210704.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Nutzung des Material 3 Designs -* Einstellungen umgestaltet -* Lesestatus geräteübergreifend synchronisieren diff --git a/fastlane/metadata/android/de-DE/changelogs/4210804.txt b/fastlane/metadata/android/de-DE/changelogs/4210804.txt deleted file mode 100644 index b50278794..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4210804.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Nachrichtenstatus als Symbole anzeigen -* Einstellung für Schriftgröße der Nachrichten hinzugefügt diff --git a/fastlane/metadata/android/de-DE/changelogs/4210904.txt b/fastlane/metadata/android/de-DE/changelogs/4210904.txt deleted file mode 100644 index 28fcd66e1..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4210904.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Quicksy Registrierung auf Android 6/7 repariert -* Klingelton für eingehende Anrufe im Benachrichtigungskanal abspielen diff --git a/fastlane/metadata/android/de-DE/changelogs/4211004.txt b/fastlane/metadata/android/de-DE/changelogs/4211004.txt deleted file mode 100644 index 7bf3e43fa..000000000 --- a/fastlane/metadata/android/de-DE/changelogs/4211004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Anrufintegration auf einigen Android 14-Geräten behoben -* Neue Einstellung "Einladungen von Unbekannten" diff --git a/fastlane/metadata/android/en-US/changelogs/4208804.txt b/fastlane/metadata/android/en-US/changelogs/4208804.txt deleted file mode 100644 index b6a7bb98f..000000000 --- a/fastlane/metadata/android/en-US/changelogs/4208804.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Support P2P file transfer via WebRTC data channels -* Fix interoperability issues with Bind 2.0 on ejabberd -* Bundle Let’s Encrypt root certificates for Android <= 7 diff --git a/fastlane/metadata/android/en-US/changelogs/4209004.txt b/fastlane/metadata/android/en-US/changelogs/4209004.txt deleted file mode 100644 index b062bedcb..000000000 --- a/fastlane/metadata/android/en-US/changelogs/4209004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* minor bug fixes -* slight modifications in Quicksy onboard flow diff --git a/fastlane/metadata/android/en-US/changelogs/4209204.txt b/fastlane/metadata/android/en-US/changelogs/4209204.txt deleted file mode 100644 index 83a947d54..000000000 --- a/fastlane/metadata/android/en-US/changelogs/4209204.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Provide easier access to 'Privacy Policy' on Play Store version (Quicksy and Conversations) -* Remove address book integration on Play Store version of Conversations diff --git a/fastlane/metadata/android/en-US/changelogs/4209404.txt b/fastlane/metadata/android/en-US/changelogs/4209404.txt deleted file mode 100644 index 764f13c52..000000000 --- a/fastlane/metadata/android/en-US/changelogs/4209404.txt +++ /dev/null @@ -1 +0,0 @@ -* Fix minor regressions introduced with 2.13.1 diff --git a/fastlane/metadata/android/en-US/changelogs/4210104.txt b/fastlane/metadata/android/en-US/changelogs/4210104.txt deleted file mode 100644 index 94c8f6058..000000000 --- a/fastlane/metadata/android/en-US/changelogs/4210104.txt +++ /dev/null @@ -1 +0,0 @@ -* Improve integration of A/V calls into the operating system diff --git a/fastlane/metadata/android/en-US/changelogs/4210404.txt b/fastlane/metadata/android/en-US/changelogs/4210404.txt deleted file mode 100644 index 0715795ad..000000000 --- a/fastlane/metadata/android/en-US/changelogs/4210404.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Fix A/V calls on Android 8 -* Fix race conditions in new call integration -* Fix video compression sticking around diff --git a/fastlane/metadata/android/en-US/changelogs/4210504.txt b/fastlane/metadata/android/en-US/changelogs/4210504.txt deleted file mode 100644 index b4c432acc..000000000 --- a/fastlane/metadata/android/en-US/changelogs/4210504.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Restore access to Channel Discovery for Android 6+7 -* Improve logging for failed call integration diff --git a/fastlane/metadata/android/en-US/changelogs/4210704.txt b/fastlane/metadata/android/en-US/changelogs/4210704.txt deleted file mode 100644 index 393d597c1..000000000 --- a/fastlane/metadata/android/en-US/changelogs/4210704.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Use Material 3 theme -* Reorganize settings -* Synchronize read state across devices diff --git a/fastlane/metadata/android/en-US/changelogs/4210804.txt b/fastlane/metadata/android/en-US/changelogs/4210804.txt deleted file mode 100644 index 07755e93c..000000000 --- a/fastlane/metadata/android/en-US/changelogs/4210804.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Show message status as icons -* Introduce 'Large font' setting for message bubbles diff --git a/fastlane/metadata/android/en-US/changelogs/4210904.txt b/fastlane/metadata/android/en-US/changelogs/4210904.txt deleted file mode 100644 index db7288ce9..000000000 --- a/fastlane/metadata/android/en-US/changelogs/4210904.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Fix Quicksy registration on Android 6/7 -* Play incoming call ringtone on notification channel diff --git a/fastlane/metadata/android/en-US/changelogs/4211004.txt b/fastlane/metadata/android/en-US/changelogs/4211004.txt deleted file mode 100644 index 4561aa2ce..000000000 --- a/fastlane/metadata/android/en-US/changelogs/4211004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* fix call integration on some Android 14 devices -* Introduce 'Invites from Strangers' setting diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/01.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/01.png index 41a06c6a6..edf446926 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/01.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/01.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/02.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/02.png index 36b614d72..a3ea7d690 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/02.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/02.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/03.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/03.png index 9e604b28a..b1847dae1 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/03.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/03.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/04.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/04.png index 9adbf06ff..76d112650 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/04.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/04.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/05.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/05.png index b7aa16649..bf13cd25d 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/05.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/05.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/06.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/06.png index b71d7c6f8..fc57ca922 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/06.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/06.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/07.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/07.png index 31ce4be97..44ce5f93b 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/07.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/07.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/08.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/08.png index ae7e452d9..94840e6c6 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/08.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/08.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/09.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/09.png index 4b4e9923c..0d18d8ce6 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/09.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/09.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/01.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/01.png index 686f945b5..d447c6b85 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/01.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/01.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/02.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/02.png index ab4247ff4..071008a45 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/02.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/02.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/03.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/03.png index c318c2f00..03b513ea4 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/03.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/03.png differ diff --git a/fastlane/metadata/android/en-US/images/tenInchScreenshots/04.png b/fastlane/metadata/android/en-US/images/tenInchScreenshots/04.png index c0dc00c13..3e154ea82 100644 Binary files a/fastlane/metadata/android/en-US/images/tenInchScreenshots/04.png and b/fastlane/metadata/android/en-US/images/tenInchScreenshots/04.png differ diff --git a/fastlane/metadata/android/es-ES/changelogs/4208804.txt b/fastlane/metadata/android/es-ES/changelogs/4208804.txt deleted file mode 100644 index 0a3ef27b1..000000000 --- a/fastlane/metadata/android/es-ES/changelogs/4208804.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Admite transferencia de archivos P2P a través del canal de datos WebRTC -* Solucionar problemas de interoperabilidad con Bind 2.0 en ejabberd -* Paquetes de certificado raíz Let's Encrypt para Android <= 7 diff --git a/fastlane/metadata/android/es-ES/changelogs/4209004.txt b/fastlane/metadata/android/es-ES/changelogs/4209004.txt deleted file mode 100644 index 700284fd2..000000000 --- a/fastlane/metadata/android/es-ES/changelogs/4209004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Correcciones de errores menores -* ligeras modificaciones en el flujo interno de Quicksy diff --git a/fastlane/metadata/android/es-ES/changelogs/4209204.txt b/fastlane/metadata/android/es-ES/changelogs/4209204.txt deleted file mode 100644 index 097d42728..000000000 --- a/fastlane/metadata/android/es-ES/changelogs/4209204.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Facilitar el acceso a la "Política de privacidad" en la versión de Play Store (Quicksy y Conversations). -* Eliminar la integración de la libreta de direcciones en la versión Play Store de Conversations diff --git a/fastlane/metadata/android/es-ES/changelogs/4209404.txt b/fastlane/metadata/android/es-ES/changelogs/4209404.txt deleted file mode 100644 index e6999f067..000000000 --- a/fastlane/metadata/android/es-ES/changelogs/4209404.txt +++ /dev/null @@ -1 +0,0 @@ -* Se corrigieron problemas menores introducidos en 2.13.1 diff --git a/fastlane/metadata/android/es-ES/changelogs/4210104.txt b/fastlane/metadata/android/es-ES/changelogs/4210104.txt deleted file mode 100644 index 4900383ba..000000000 --- a/fastlane/metadata/android/es-ES/changelogs/4210104.txt +++ /dev/null @@ -1 +0,0 @@ -* Mejorar la integración de las llamadas A/V en el sistema operativo diff --git a/fastlane/metadata/android/es-ES/changelogs/4210404.txt b/fastlane/metadata/android/es-ES/changelogs/4210404.txt deleted file mode 100644 index 369ede070..000000000 --- a/fastlane/metadata/android/es-ES/changelogs/4210404.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Reparar llamadas de audio/vídeo en Android 8 -* Se corrigió la condición de carrera en la integración de nuevas llamadas. -* Soluciona el problema de compresión de video diff --git a/fastlane/metadata/android/es-ES/changelogs/4210504.txt b/fastlane/metadata/android/es-ES/changelogs/4210504.txt deleted file mode 100644 index 1589d1ec1..000000000 --- a/fastlane/metadata/android/es-ES/changelogs/4210504.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Restaurar el acceso a Channel Discovery para Android 6+7 -* Mejorar el registro para la integración de llamadas fallidas diff --git a/fastlane/metadata/android/es-ES/changelogs/4210704.txt b/fastlane/metadata/android/es-ES/changelogs/4210704.txt deleted file mode 100644 index f010db04b..000000000 --- a/fastlane/metadata/android/es-ES/changelogs/4210704.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Usar el tema Material 3 -* Reorganizar la configuración -* Sincronizar el estado de lectura entre dispositivos diff --git a/fastlane/metadata/android/es-ES/changelogs/4210804.txt b/fastlane/metadata/android/es-ES/changelogs/4210804.txt deleted file mode 100644 index 1ece57245..000000000 --- a/fastlane/metadata/android/es-ES/changelogs/4210804.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Mostrar el estado de los mensajes como iconos -* Introducir la opción "Fuente grande" para las burbujas de mensajes diff --git a/fastlane/metadata/android/es-ES/changelogs/4210904.txt b/fastlane/metadata/android/es-ES/changelogs/4210904.txt deleted file mode 100644 index 8068bcd41..000000000 --- a/fastlane/metadata/android/es-ES/changelogs/4210904.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Arreglar el registro de Quicksy en Android 6/7 -* Reproducir el tono de llamada entrante en el canal de notificación diff --git a/fastlane/metadata/android/es-ES/changelogs/4211004.txt b/fastlane/metadata/android/es-ES/changelogs/4211004.txt deleted file mode 100644 index a87e7d85c..000000000 --- a/fastlane/metadata/android/es-ES/changelogs/4211004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* arreglar la integración de llamadas en algunos dispositivos con Android 14 -* Introducir la configuración 'Invitaciones de extraños' diff --git a/fastlane/metadata/android/gl-ES/changelogs/4208104.txt b/fastlane/metadata/android/gl-ES/changelogs/4208104.txt index ff912c254..f4532b679 100644 --- a/fastlane/metadata/android/gl-ES/changelogs/4208104.txt +++ b/fastlane/metadata/android/gl-ES/changelogs/4208104.txt @@ -1,4 +1,4 @@ -* Acceso mais rápido a 'Mostrar código QR' -* Soporte para PEP Marcadores Nativos +* Acceso mais rápido á 'Mostrar código QR' +* Soporte para a PEP Marcadores Nativos * Engadido soporte para SDP Offer / Answer Model (usado por pasarelas SIP) * Establecida a API de Android 14 como obxectivo diff --git a/fastlane/metadata/android/gl-ES/changelogs/4208804.txt b/fastlane/metadata/android/gl-ES/changelogs/4208804.txt deleted file mode 100644 index 03aa6966c..000000000 --- a/fastlane/metadata/android/gl-ES/changelogs/4208804.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Soporte para a transferencia de ficheiros P2P a través de canles de datos WebRTC -* Arranxo dos problemas de interoperabilidade con Bind 2.0 en ejabberd -* Paquete de certificados raiz Let's Encrypt para Android <=7 diff --git a/fastlane/metadata/android/gl-ES/changelogs/4209004.txt b/fastlane/metadata/android/gl-ES/changelogs/4209004.txt deleted file mode 100644 index d1f8b3e26..000000000 --- a/fastlane/metadata/android/gl-ES/changelogs/4209004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* arranxos menores -* pequenos cambios no primeiro incio de Quicksy diff --git a/fastlane/metadata/android/gl-ES/changelogs/4209204.txt b/fastlane/metadata/android/gl-ES/changelogs/4209204.txt deleted file mode 100644 index 4b7430123..000000000 --- a/fastlane/metadata/android/gl-ES/changelogs/4209204.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Acceso máis doado á 'Política de Privacidade' na versión da Play Store (Quicksy e Conversations) -* Retirada a integración coa libreta de enderezo na versión de Conversations da Play Store diff --git a/fastlane/metadata/android/gl-ES/changelogs/4209404.txt b/fastlane/metadata/android/gl-ES/changelogs/4209404.txt deleted file mode 100644 index fc1d02e69..000000000 --- a/fastlane/metadata/android/gl-ES/changelogs/4209404.txt +++ /dev/null @@ -1 +0,0 @@ -* Arranxo de regresións menores introducidas en 2.13.1 diff --git a/fastlane/metadata/android/gl-ES/changelogs/4210104.txt b/fastlane/metadata/android/gl-ES/changelogs/4210104.txt deleted file mode 100644 index 33f208375..000000000 --- a/fastlane/metadata/android/gl-ES/changelogs/4210104.txt +++ /dev/null @@ -1 +0,0 @@ -* Melloras na integración das chamadas de A/V co sistema operativo diff --git a/fastlane/metadata/android/gl-ES/changelogs/4210404.txt b/fastlane/metadata/android/gl-ES/changelogs/4210404.txt deleted file mode 100644 index b6957eae4..000000000 --- a/fastlane/metadata/android/gl-ES/changelogs/4210404.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Arranxo das chamadas de A/V en Android 8 -* Arranxo das prioridades na novas chamadas integradas -* Arranxo do antigo problema coa compresión do vídeo diff --git a/fastlane/metadata/android/gl-ES/changelogs/4210504.txt b/fastlane/metadata/android/gl-ES/changelogs/4210504.txt deleted file mode 100644 index 7867d88e2..000000000 --- a/fastlane/metadata/android/gl-ES/changelogs/4210504.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Restablecer o acceso ao Descubrimento de Canles para Android 6+7 -* Mellorar o acceso para a integración de chamadas que fallou diff --git a/fastlane/metadata/android/gl-ES/changelogs/4210704.txt b/fastlane/metadata/android/gl-ES/changelogs/4210704.txt deleted file mode 100644 index de5764b97..000000000 --- a/fastlane/metadata/android/gl-ES/changelogs/4210704.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Uso do decorado Material 3 -* Reorganización dos Axustes -* Sincronización entre dispositivos do estado de lectura diff --git a/fastlane/metadata/android/gl-ES/changelogs/4210804.txt b/fastlane/metadata/android/gl-ES/changelogs/4210804.txt deleted file mode 100644 index af0ad0fc0..000000000 --- a/fastlane/metadata/android/gl-ES/changelogs/4210804.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Mostrar estado das mensaxes como iconas -* Novo axuste para 'Tamaño de letra grande' nas mensaxes diff --git a/fastlane/metadata/android/gl-ES/changelogs/4210904.txt b/fastlane/metadata/android/gl-ES/changelogs/4210904.txt deleted file mode 100644 index 14ebde079..000000000 --- a/fastlane/metadata/android/gl-ES/changelogs/4210904.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Solución para crear conta con Quicksy en Android 6/7 -* Reproducir ton de chamada recibida na canle de notificación diff --git a/fastlane/metadata/android/gl-ES/changelogs/4211004.txt b/fastlane/metadata/android/gl-ES/changelogs/4211004.txt deleted file mode 100644 index 2244834aa..000000000 --- a/fastlane/metadata/android/gl-ES/changelogs/4211004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* arranxo da integración de chamadas nalgúns Android 14 -* novo axuste para 'Convites de Descoñecidas' diff --git a/fastlane/metadata/android/it-IT/changelogs/4208804.txt b/fastlane/metadata/android/it-IT/changelogs/4208804.txt deleted file mode 100644 index 7139e8caa..000000000 --- a/fastlane/metadata/android/it-IT/changelogs/4208804.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Supporto per trasferimenti P2P di file via canali di dati WebRTC -* Corretti problemi di interoperabilità con Bind 2.0 su ejabberd -* Integra certificati root di Let’s Encrypt su Android <= 7 diff --git a/fastlane/metadata/android/it-IT/changelogs/4209004.txt b/fastlane/metadata/android/it-IT/changelogs/4209004.txt deleted file mode 100644 index 6186e8210..000000000 --- a/fastlane/metadata/android/it-IT/changelogs/4209004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* correzioni minori -* piccole modifiche nel flusso di configurazione di Quicksy diff --git a/fastlane/metadata/android/it-IT/changelogs/4209204.txt b/fastlane/metadata/android/it-IT/changelogs/4209204.txt deleted file mode 100644 index 156846bd2..000000000 --- a/fastlane/metadata/android/it-IT/changelogs/4209204.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Accesso più facile alla 'Informativa sulla privacy' nella versione Play Store (Quicksy e Conversations) -* Rimossa l'integrazione alla rubrica nella versione Play Store di Conversations diff --git a/fastlane/metadata/android/it-IT/changelogs/4209404.txt b/fastlane/metadata/android/it-IT/changelogs/4209404.txt deleted file mode 100644 index bf3a2bcf7..000000000 --- a/fastlane/metadata/android/it-IT/changelogs/4209404.txt +++ /dev/null @@ -1 +0,0 @@ -* Corrette regressioni minori introdotte con la 2.13.1 diff --git a/fastlane/metadata/android/it-IT/changelogs/4210104.txt b/fastlane/metadata/android/it-IT/changelogs/4210104.txt deleted file mode 100644 index eb4727682..000000000 --- a/fastlane/metadata/android/it-IT/changelogs/4210104.txt +++ /dev/null @@ -1 +0,0 @@ -* Migliorata l'integrazione di chiamate A/V nel sistema operativo diff --git a/fastlane/metadata/android/it-IT/changelogs/4210404.txt b/fastlane/metadata/android/it-IT/changelogs/4210404.txt deleted file mode 100644 index 21cd18a6f..000000000 --- a/fastlane/metadata/android/it-IT/changelogs/4210404.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Corrette chiamate A/V su Android 8 -* Corretta race conditions nella nuova integrazione chiamate -* Correzioni sulla compressione video diff --git a/fastlane/metadata/android/it-IT/changelogs/4210504.txt b/fastlane/metadata/android/it-IT/changelogs/4210504.txt deleted file mode 100644 index e1da9eb0d..000000000 --- a/fastlane/metadata/android/it-IT/changelogs/4210504.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Ripristinato l'accesso alla scoperta dei canali su Android 6+7 -* Migliorati i log per integrazione fallita di chiamate diff --git a/fastlane/metadata/android/it-IT/changelogs/4210704.txt b/fastlane/metadata/android/it-IT/changelogs/4210704.txt deleted file mode 100644 index 76e3788b9..000000000 --- a/fastlane/metadata/android/it-IT/changelogs/4210704.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Utilizzo del tema Material 3 -* Riorganizzazione impostazioni -* Sincronizzazione stato di lettura tra dispositivi diff --git a/fastlane/metadata/android/it-IT/changelogs/4210804.txt b/fastlane/metadata/android/it-IT/changelogs/4210804.txt deleted file mode 100644 index 4a8100b23..000000000 --- a/fastlane/metadata/android/it-IT/changelogs/4210804.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Mostra lo stato dei messaggi come icone -* Introdotta impostazione 'Caratteri grandi' per i messaggi diff --git a/fastlane/metadata/android/it-IT/changelogs/4210904.txt b/fastlane/metadata/android/it-IT/changelogs/4210904.txt deleted file mode 100644 index 8e6d9c15b..000000000 --- a/fastlane/metadata/android/it-IT/changelogs/4210904.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Corretta registrazione a Quicksy su Android 6/7 -* Riproduci suoneria per chiamate in arrivo nel canale di notifica diff --git a/fastlane/metadata/android/it-IT/changelogs/4211004.txt b/fastlane/metadata/android/it-IT/changelogs/4211004.txt deleted file mode 100644 index 771eb3ba9..000000000 --- a/fastlane/metadata/android/it-IT/changelogs/4211004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* corretta l'integrazione delle chiamate su alcuni dispositivi con Android 14 -* Introdotta l'impostazione 'Inviti da estranei' diff --git a/fastlane/metadata/android/pl-PL/changelogs/4210704.txt b/fastlane/metadata/android/pl-PL/changelogs/4210704.txt deleted file mode 100644 index 3b80e52cf..000000000 --- a/fastlane/metadata/android/pl-PL/changelogs/4210704.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Używanie motywu Material 3 -* Reorganizacja ustawień -* Synchronizacja stanu przeczytania pomiędzy urządzeniami diff --git a/fastlane/metadata/android/pl-PL/changelogs/4210804.txt b/fastlane/metadata/android/pl-PL/changelogs/4210804.txt deleted file mode 100644 index 068bc9096..000000000 --- a/fastlane/metadata/android/pl-PL/changelogs/4210804.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Pokazywanie stanu wiadomości poprzez ikony -* Wprowadzenia ustawienia „Duża czcionka” dla baniek wiadomości diff --git a/fastlane/metadata/android/pl-PL/changelogs/4210904.txt b/fastlane/metadata/android/pl-PL/changelogs/4210904.txt deleted file mode 100644 index 7284d0dee..000000000 --- a/fastlane/metadata/android/pl-PL/changelogs/4210904.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Naprawienie rejestracji w Quicksy w Androidzie 6/7 -* Odtwarzanie dzwonka połączenia przychodzącego w kanale powiadomień diff --git a/fastlane/metadata/android/pl-PL/changelogs/4211004.txt b/fastlane/metadata/android/pl-PL/changelogs/4211004.txt deleted file mode 100644 index bd200026c..000000000 --- a/fastlane/metadata/android/pl-PL/changelogs/4211004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Naprawienie integracji rozmów na niektórych urządzeniach z Androidem 14 -* Wprowadzenie ustawienia „Zaproszenia od nieznajomych” diff --git a/fastlane/metadata/android/ru-RU/changelogs/4209004.txt b/fastlane/metadata/android/ru-RU/changelogs/4209004.txt deleted file mode 100644 index 1ceb3240a..000000000 --- a/fastlane/metadata/android/ru-RU/changelogs/4209004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* незначительные исправления -* значительные изменения приветствия Quicksy diff --git a/fastlane/metadata/android/ru-RU/changelogs/4209204.txt b/fastlane/metadata/android/ru-RU/changelogs/4209204.txt deleted file mode 100644 index fba3c9be5..000000000 --- a/fastlane/metadata/android/ru-RU/changelogs/4209204.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Упрощён доступ к Политике конфиденциальности в версии для Play Маркета (Quicksy и Conversations) -* Из версии Conversations для Play Маркета удалена интеграция с Контактами diff --git a/fastlane/metadata/android/ru-RU/changelogs/4209404.txt b/fastlane/metadata/android/ru-RU/changelogs/4209404.txt deleted file mode 100644 index 475ea3349..000000000 --- a/fastlane/metadata/android/ru-RU/changelogs/4209404.txt +++ /dev/null @@ -1 +0,0 @@ -* Исправлены незначительные ухудшения, появившиеся в версии 2.13.1 diff --git a/fastlane/metadata/android/ru-RU/changelogs/4210104.txt b/fastlane/metadata/android/ru-RU/changelogs/4210104.txt deleted file mode 100644 index 3b2e3069b..000000000 --- a/fastlane/metadata/android/ru-RU/changelogs/4210104.txt +++ /dev/null @@ -1 +0,0 @@ -* Улучшена интеграция вызовов A/V с операционной системой diff --git a/fastlane/metadata/android/sq/changelogs/42037.txt b/fastlane/metadata/android/sq/changelogs/42037.txt index dab12a7a6..35e334aad 100644 --- a/fastlane/metadata/android/sq/changelogs/42037.txt +++ b/fastlane/metadata/android/sq/changelogs/42037.txt @@ -1,8 +1,8 @@ Version 2.10.9 -* Kërko leje Bluetooth, kur bëhen thirrje A/V (Mund ta hidhni tej, nëse s’përdorni kufje Bluetooth me mikrofon) -* Ndreqje të mete, për thirrje në Movim -* Ndreqje shfaqjeje avatari të gabuar për fjalosje në grup +* Kërko leje Bluetooth, kur bëhen thirrje A/V (Mund ta hidhni tej këtë, nëse s’përdorni kufje Bluetooth me mikrofon) +* Ndreqje të mete, kur thirret dikush në Movim +* Ndreqje shfaqjeje avatari gabim për fjalosje në grup * Pyet përherë për lënie jashtë optimizimesh për baterinë * Vendosje flamurke “vetëm vendore” për njoftime “x llogari të lidhura” -* Ndreqje ndërveprimi me shtojcën Google Maps Share Location -* Heqje poshtëshënimi lidhur me tarifë shërbyesi +* Ndreqje ndërveprimi me shtojcën Google Maps Share Location Plugin +* Heqje poshtëshënimi lidhur me tarifa shërbyesi diff --git a/fastlane/metadata/android/sq/changelogs/42050.txt b/fastlane/metadata/android/sq/changelogs/42050.txt deleted file mode 100644 index 30e4121e3..000000000 --- a/fastlane/metadata/android/sq/changelogs/42050.txt +++ /dev/null @@ -1 +0,0 @@ -* Rritje rrezeje cepi për foto profilesh diff --git a/fastlane/metadata/android/sq/changelogs/42059.txt b/fastlane/metadata/android/sq/changelogs/42059.txt deleted file mode 100644 index 2896fb077..000000000 --- a/fastlane/metadata/android/sq/changelogs/42059.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Kalim i versionit për Target SDK sërish në 33 -* Ndreqje problemesh për shërbyes që mbulojnë SASL2 me/pa Administrim brendazi Rrjedhash diff --git a/fastlane/metadata/android/sq/changelogs/42060.txt b/fastlane/metadata/android/sq/changelogs/42060.txt deleted file mode 100644 index dcd9dfe36..000000000 --- a/fastlane/metadata/android/sq/changelogs/42060.txt +++ /dev/null @@ -1 +0,0 @@ -* Ndreqje e interpretimit gabimisht të 'q' si një shkronjë cirilike diff --git a/fastlane/metadata/android/sq/changelogs/42061.txt b/fastlane/metadata/android/sq/changelogs/42061.txt deleted file mode 100644 index bb3622e75..000000000 --- a/fastlane/metadata/android/sq/changelogs/42061.txt +++ /dev/null @@ -1 +0,0 @@ -* Heqje nga versioni në Google Play e veçorisë së pikasjes së kanaleve diff --git a/fastlane/metadata/android/sq/changelogs/42062.txt b/fastlane/metadata/android/sq/changelogs/42062.txt deleted file mode 100644 index c9b0cac5e..000000000 --- a/fastlane/metadata/android/sq/changelogs/42062.txt +++ /dev/null @@ -1 +0,0 @@ -* Çaktivizim i hapjes së kartelave kopjeruajtje (ceb) nga përgjegjës kartelash diff --git a/fastlane/metadata/android/sq/changelogs/42065.txt b/fastlane/metadata/android/sq/changelogs/42065.txt deleted file mode 100644 index a6a7fa9fc..000000000 --- a/fastlane/metadata/android/sq/changelogs/42065.txt +++ /dev/null @@ -1 +0,0 @@ -* Sjellje për herë të parë e formati të ri kartelash kopjeruajtje diff --git a/fastlane/metadata/android/sq/changelogs/42068.txt b/fastlane/metadata/android/sq/changelogs/42068.txt deleted file mode 100644 index 89ba9f52d..000000000 --- a/fastlane/metadata/android/sq/changelogs/42068.txt +++ /dev/null @@ -1,2 +0,0 @@ -* mbulim rregullimesh njoftimi bazuar në bisedë specifike -* përdorim opus-i për mesazhe zanorë në Android 10 diff --git a/fastlane/metadata/android/sq/changelogs/42072.txt b/fastlane/metadata/android/sq/changelogs/42072.txt deleted file mode 100644 index e836fb46c..000000000 --- a/fastlane/metadata/android/sq/changelogs/42072.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Kalim versioni për varësi libwebrtc në M117 dhe ndryshim edhe për libvpx -* Rikthim te AAC për mesazhe zanorë -* Mbulim rregullimesh gjuhe sipas aplikacioni diff --git a/fastlane/metadata/android/sq/changelogs/4207704.txt b/fastlane/metadata/android/sq/changelogs/4207704.txt deleted file mode 100644 index 9b77d5562..000000000 --- a/fastlane/metadata/android/sq/changelogs/4207704.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Mbulim për DNS Private (DNS përmes TLS) -* Mbulim për ikonë nisësi të përshtatur nga temë -* Ndreqje problemi të rrallë me leje, kur ndahen kartela në Android 11+ diff --git a/fastlane/metadata/android/sq/changelogs/4208104.txt b/fastlane/metadata/android/sq/changelogs/4208104.txt deleted file mode 100644 index 6905c9f74..000000000 --- a/fastlane/metadata/android/sq/changelogs/4208104.txt +++ /dev/null @@ -1,4 +0,0 @@ -* Përdorim më i lehtë i “Shfaq kod QR” -* Mbulim për Faqerojtës PEP të vetëm sistemit -* Shtim mbulimi për Ofertë SDP / Model Përgjigjesh (Përdorur nga kanale SIP) -* Ngritje e versioni të synuar API në Android 14 diff --git a/fastlane/metadata/android/sq/changelogs/4208804.txt b/fastlane/metadata/android/sq/changelogs/4208804.txt deleted file mode 100644 index 2a49661a0..000000000 --- a/fastlane/metadata/android/sq/changelogs/4208804.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Mbulim shpërnguljesh kartelash P2P përmes kanalesh WebRTC të dhënash -* Ndreqje problemesh shkalle ndërveprimi me Bind 2.0 në ejabberd -* Paketim dëshmish Let’s Encrypt rrënje për Android <= 7 diff --git a/fastlane/metadata/android/sq/changelogs/4209004.txt b/fastlane/metadata/android/sq/changelogs/4209004.txt deleted file mode 100644 index 1241fb7bb..000000000 --- a/fastlane/metadata/android/sq/changelogs/4209004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* ndreqje të metash të vockla -* ndryshime të vockla te hapat e mirëseardhjes në Quicksy diff --git a/fastlane/metadata/android/sq/changelogs/4209204.txt b/fastlane/metadata/android/sq/changelogs/4209204.txt deleted file mode 100644 index 08c5f1322..000000000 --- a/fastlane/metadata/android/sq/changelogs/4209204.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Furnizim hyrjeje më të lehtë te “Rregulla Privatësie” në versionin Play Store (Quicksy dhe Conversations) -* Heqje integrimi libri adresash te versioni në Play Store i Conversations diff --git a/fastlane/metadata/android/sq/changelogs/4209404.txt b/fastlane/metadata/android/sq/changelogs/4209404.txt deleted file mode 100644 index bd417916b..000000000 --- a/fastlane/metadata/android/sq/changelogs/4209404.txt +++ /dev/null @@ -1 +0,0 @@ -* Ndreqje prapakthimesh të vockla të sjella me 2.13.1 diff --git a/fastlane/metadata/android/sq/changelogs/4210104.txt b/fastlane/metadata/android/sq/changelogs/4210104.txt deleted file mode 100644 index d9ae9cd78..000000000 --- a/fastlane/metadata/android/sq/changelogs/4210104.txt +++ /dev/null @@ -1 +0,0 @@ -* Përmirësim integrimi thirrjesh A/V me sistemin operativ diff --git a/fastlane/metadata/android/sq/changelogs/4210404.txt b/fastlane/metadata/android/sq/changelogs/4210404.txt deleted file mode 100644 index 0c47aa05f..000000000 --- a/fastlane/metadata/android/sq/changelogs/4210404.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Ndreqje thirrjesh A/V në Android 8 -* Ndreqje “race conditions” në integrim thirrjeje të re -* Ndreqje ngjeshjeje videosh që mbetet diff --git a/fastlane/metadata/android/sq/changelogs/4210504.txt b/fastlane/metadata/android/sq/changelogs/4210504.txt deleted file mode 100644 index 18277fa08..000000000 --- a/fastlane/metadata/android/sq/changelogs/4210504.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Rikthim përdorimi i Pikasjes së Kanaleve për Android 6+7 -* Përmirësim regjistrimi për integrim thirrjesh të dështuara diff --git a/fastlane/metadata/android/sq/changelogs/4210704.txt b/fastlane/metadata/android/sq/changelogs/4210704.txt deleted file mode 100644 index a41f370ea..000000000 --- a/fastlane/metadata/android/sq/changelogs/4210704.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Përdorim teme Material 3 -* Risistemim rregullimesh -* Njëkohësim nëpër pajisje gjendjeje “i lexuar” diff --git a/fastlane/metadata/android/sq/changelogs/4210804.txt b/fastlane/metadata/android/sq/changelogs/4210804.txt deleted file mode 100644 index e77cdf026..000000000 --- a/fastlane/metadata/android/sq/changelogs/4210804.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Shfaqe gjendje mesazhesh si ikona -* Sjellje e rregullimit “Shkronja të mëdha” për flluska mesazhesh diff --git a/fastlane/metadata/android/sq/changelogs/4210904.txt b/fastlane/metadata/android/sq/changelogs/4210904.txt deleted file mode 100644 index 1a7c4e531..000000000 --- a/fastlane/metadata/android/sq/changelogs/4210904.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Ndreqje regjistrimi Quicksy në Android 6/7 -* Luajtje e ziles së thirrjes ardhëse në kanal njoftimi diff --git a/fastlane/metadata/android/sq/changelogs/4211004.txt b/fastlane/metadata/android/sq/changelogs/4211004.txt deleted file mode 100644 index 21be2d1b2..000000000 --- a/fastlane/metadata/android/sq/changelogs/4211004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* ndreqje integrimi thirrjesh në disa pajisje me Android 14 -* Sjellje për herë të parë e rregullimit “Ftesa nga të Panjohur” diff --git a/fastlane/metadata/android/uk/changelogs/4208804.txt b/fastlane/metadata/android/uk/changelogs/4208804.txt deleted file mode 100644 index 6aa707982..000000000 --- a/fastlane/metadata/android/uk/changelogs/4208804.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Підтримка передачі файлів P2P через канали даних WebRTC -* Виправлено проблеми сумісності з Bind 2.0 на ejabberd -* Пакет кореневих сертифікатів Let's Encrypt для версій Android до 7-ї включно diff --git a/fastlane/metadata/android/uk/changelogs/4209004.txt b/fastlane/metadata/android/uk/changelogs/4209004.txt deleted file mode 100644 index 2863414a6..000000000 --- a/fastlane/metadata/android/uk/changelogs/4209004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Незначні виправлення помилок -* Деякі зміни у процесі підключення до Quicksy diff --git a/fastlane/metadata/android/uk/changelogs/4209204.txt b/fastlane/metadata/android/uk/changelogs/4209204.txt deleted file mode 100644 index 652ea89d8..000000000 --- a/fastlane/metadata/android/uk/changelogs/4209204.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Простіший доступ до «Політики конфіденційності» у версії Play Store (Quicksy та Conversations) -* Видалено інтеграцію адресної книги у версії Conversations для Play Store diff --git a/fastlane/metadata/android/uk/changelogs/4209404.txt b/fastlane/metadata/android/uk/changelogs/4209404.txt deleted file mode 100644 index 90e81392d..000000000 --- a/fastlane/metadata/android/uk/changelogs/4209404.txt +++ /dev/null @@ -1 +0,0 @@ -* Виправлено незначні регресії, які з'явилися у версії 2.13.1 diff --git a/fastlane/metadata/android/uk/changelogs/4210104.txt b/fastlane/metadata/android/uk/changelogs/4210104.txt deleted file mode 100644 index 102af6b1b..000000000 --- a/fastlane/metadata/android/uk/changelogs/4210104.txt +++ /dev/null @@ -1 +0,0 @@ -* Покращено інтеграцію аудіо- та відеовикликів в операційну систему diff --git a/fastlane/metadata/android/uk/changelogs/4210404.txt b/fastlane/metadata/android/uk/changelogs/4210404.txt deleted file mode 100644 index 05688d8e9..000000000 --- a/fastlane/metadata/android/uk/changelogs/4210404.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Виправлення голосових та відеовикликів на Android 8 -* Виправлення проблем у новій інтеграції дзвінків -* Виправлення проблем зі стисненням відео diff --git a/fastlane/metadata/android/uk/changelogs/4210504.txt b/fastlane/metadata/android/uk/changelogs/4210504.txt deleted file mode 100644 index 653536f7a..000000000 --- a/fastlane/metadata/android/uk/changelogs/4210504.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Відновлено доступ до пошуку каналів на Android 6+7 -* Покращено ведення журналу для невдалої інтеграції викликів diff --git a/fastlane/metadata/android/uk/changelogs/4210704.txt b/fastlane/metadata/android/uk/changelogs/4210704.txt deleted file mode 100644 index c8eb8e946..000000000 --- a/fastlane/metadata/android/uk/changelogs/4210704.txt +++ /dev/null @@ -1,3 +0,0 @@ -* Використання теми Material 3 -* Реорганізація налаштувань -* Синхронізація стану «Прочитано» між пристроями diff --git a/fastlane/metadata/android/uk/changelogs/4210804.txt b/fastlane/metadata/android/uk/changelogs/4210804.txt deleted file mode 100644 index 402845d29..000000000 --- a/fastlane/metadata/android/uk/changelogs/4210804.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Показувати стан повідомлень у вигляді значків -* Додано налаштування «Великий шрифт» для повідомлень diff --git a/fastlane/metadata/android/uk/changelogs/4210904.txt b/fastlane/metadata/android/uk/changelogs/4210904.txt deleted file mode 100644 index 45c3122aa..000000000 --- a/fastlane/metadata/android/uk/changelogs/4210904.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Виправлено реєстрацію Quicksy на Android 6/7 -* Відтворення мелодії вхідних викликів у каналі сповіщень diff --git a/fastlane/metadata/android/uk/changelogs/4211004.txt b/fastlane/metadata/android/uk/changelogs/4211004.txt deleted file mode 100644 index 36b7f674e..000000000 --- a/fastlane/metadata/android/uk/changelogs/4211004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* Виправлено інтеграцію викликів на деяких пристроях Android 14 -* Додано налаштування «Запрошення від незнайомців» diff --git a/fastlane/metadata/android/zh-CN/changelogs/42018.txt b/fastlane/metadata/android/zh-CN/changelogs/42018.txt index 1a3b73176..974bd0292 100644 --- a/fastlane/metadata/android/zh-CN/changelogs/42018.txt +++ b/fastlane/metadata/android/zh-CN/changelogs/42018.txt @@ -1,3 +1,3 @@ * 当远程视频与屏幕宽高比不匹配时显示黑条 * 提高搜索性能 -* 添加防止截屏的设置 +* 添加防止截图的设置 diff --git a/fastlane/metadata/android/zh-CN/changelogs/42041.txt b/fastlane/metadata/android/zh-CN/changelogs/42041.txt index 78fa23928..b809c9854 100644 --- a/fastlane/metadata/android/zh-CN/changelogs/42041.txt +++ b/fastlane/metadata/android/zh-CN/changelogs/42041.txt @@ -1,5 +1,5 @@ * 实施可扩展 SASL Profile、Bind 2.0 和 Fast,以加快重新连接速度 -* 实现通道绑定 +* 实现频道绑定 * 增加从音频通话切换到视频通话的功能 * 增加删除自己头像的功能 * 增加未接来电通知功能 diff --git a/fastlane/metadata/android/zh-CN/changelogs/4208804.txt b/fastlane/metadata/android/zh-CN/changelogs/4208804.txt deleted file mode 100644 index b35be34f5..000000000 --- a/fastlane/metadata/android/zh-CN/changelogs/4208804.txt +++ /dev/null @@ -1,3 +0,0 @@ -* 支持通过 WebRTC 数据通道进行 P2P 文件传输 -* 修复 ejabberd 上 Bind 2.0 的互操作性问题 -* 捆绑适用于 Android <= 7 的 Let’s Encrypt 根证书 diff --git a/fastlane/metadata/android/zh-CN/changelogs/4209004.txt b/fastlane/metadata/android/zh-CN/changelogs/4209004.txt deleted file mode 100644 index da11d968f..000000000 --- a/fastlane/metadata/android/zh-CN/changelogs/4209004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 修正了一些小错误 -* Quicksy 板载流程略有修改 diff --git a/fastlane/metadata/android/zh-CN/changelogs/4209204.txt b/fastlane/metadata/android/zh-CN/changelogs/4209204.txt deleted file mode 100644 index 37c544ff2..000000000 --- a/fastlane/metadata/android/zh-CN/changelogs/4209204.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 在 Play 商店版本(Quicksy 和 Conversations)上提供对“隐私政策”的更轻松访问 -* 移除 Play 商店版本的 Conversations 上的通讯录集成 diff --git a/fastlane/metadata/android/zh-CN/changelogs/4209404.txt b/fastlane/metadata/android/zh-CN/changelogs/4209404.txt deleted file mode 100644 index e89631ebe..000000000 --- a/fastlane/metadata/android/zh-CN/changelogs/4209404.txt +++ /dev/null @@ -1 +0,0 @@ -* 修复 2.13.1 中出现的小问题 diff --git a/fastlane/metadata/android/zh-CN/changelogs/4210104.txt b/fastlane/metadata/android/zh-CN/changelogs/4210104.txt deleted file mode 100644 index 784da44bb..000000000 --- a/fastlane/metadata/android/zh-CN/changelogs/4210104.txt +++ /dev/null @@ -1 +0,0 @@ -* 改进音频/视频通话与操作系统的集成 diff --git a/fastlane/metadata/android/zh-CN/changelogs/4210404.txt b/fastlane/metadata/android/zh-CN/changelogs/4210404.txt deleted file mode 100644 index 5fc634f33..000000000 --- a/fastlane/metadata/android/zh-CN/changelogs/4210404.txt +++ /dev/null @@ -1,3 +0,0 @@ -* 修复安卓 8 上的音频/视频通话 -* 修复新呼叫集成中的竞态条件 -* 修复视频压缩问题 diff --git a/fastlane/metadata/android/zh-CN/changelogs/4210504.txt b/fastlane/metadata/android/zh-CN/changelogs/4210504.txt deleted file mode 100644 index 9aeaeabca..000000000 --- a/fastlane/metadata/android/zh-CN/changelogs/4210504.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 恢复对 Android 6 和 Android 7 频道发现的访问 -* 改进失败呼叫集成的日志记录 diff --git a/fastlane/metadata/android/zh-CN/changelogs/4210704.txt b/fastlane/metadata/android/zh-CN/changelogs/4210704.txt deleted file mode 100644 index 05dcc5934..000000000 --- a/fastlane/metadata/android/zh-CN/changelogs/4210704.txt +++ /dev/null @@ -1,3 +0,0 @@ -* 使用 Material 3 主题 -* 重组设置 -* 跨设备同步阅读状态 diff --git a/fastlane/metadata/android/zh-CN/changelogs/4210804.txt b/fastlane/metadata/android/zh-CN/changelogs/4210804.txt deleted file mode 100644 index 9d21986d9..000000000 --- a/fastlane/metadata/android/zh-CN/changelogs/4210804.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 以图标形式显示消息状态 -* 为消息气泡引入“大字体”设置 diff --git a/fastlane/metadata/android/zh-CN/changelogs/4210904.txt b/fastlane/metadata/android/zh-CN/changelogs/4210904.txt deleted file mode 100644 index f503dd304..000000000 --- a/fastlane/metadata/android/zh-CN/changelogs/4210904.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 修复 Android 6/7 上的 Quicksy 注册问题 -* 在通知通道上播放来电铃声 diff --git a/fastlane/metadata/android/zh-CN/changelogs/4211004.txt b/fastlane/metadata/android/zh-CN/changelogs/4211004.txt deleted file mode 100644 index 53e308fcb..000000000 --- a/fastlane/metadata/android/zh-CN/changelogs/4211004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 修复某些 Android 14 设备上的呼叫集成 -* 添加了“来自陌生人的邀请”设置 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42015.txt b/fastlane/metadata/android/zh-TW/changelogs/42015.txt deleted file mode 100644 index 004c1806f..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42015.txt +++ /dev/null @@ -1 +0,0 @@ -* 在音頻和視頻方面略有改善 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42018.txt b/fastlane/metadata/android/zh-TW/changelogs/42018.txt deleted file mode 100644 index 64603c144..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42018.txt +++ /dev/null @@ -1,3 +0,0 @@ -* 當遠程視頻與屏幕寬高比不匹配時顯示黑條 -* 提高搜索性能 -* 添加防止截屏的設置 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42022.txt b/fastlane/metadata/android/zh-TW/changelogs/42022.txt deleted file mode 100644 index f9269a5bd..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42022.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 修復某些視頻無法壓縮的問題 -* 修復打開通知時罕見的崩潰問題 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42023.txt b/fastlane/metadata/android/zh-TW/changelogs/42023.txt deleted file mode 100644 index b260e0cf9..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42023.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 修復渲染某些引用時的崩潰問題 -* 修復歡迎屏幕崩潰問題 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42037.txt b/fastlane/metadata/android/zh-TW/changelogs/42037.txt deleted file mode 100644 index 13e3ef2aa..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42037.txt +++ /dev/null @@ -1,11 +0,0 @@ -版本 2.10.9 -* 進行音視頻通話時請求藍牙權限(如果您不使用藍牙耳機可以拒絕) -* 修復呼叫 Movim 時的錯誤 -* 修復群組聊天的顯示錯誤頭像的問題 -* 始終要求選擇退出電池優化 -* 在“x 個已連接賬號”通知上設置僅本地標誌 -* 修復與 Google 地圖分享位置插件的交互 -* 移除有關服務器費用的腳註 -* 將文件存儲在適合 Android 11 的位置 -* 網絡切換後嘗試重新連接通話 -* 在來電屏幕中顯示來電者 JID 和帳戶 JID diff --git a/fastlane/metadata/android/zh-TW/changelogs/42038.txt b/fastlane/metadata/android/zh-TW/changelogs/42038.txt deleted file mode 100644 index ca9a447c3..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42038.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 修正了一些小錯誤 -* 恢復通過 JMP 和其他服務呼叫的能力(Playstore 版本) diff --git a/fastlane/metadata/android/zh-TW/changelogs/42041.txt b/fastlane/metadata/android/zh-TW/changelogs/42041.txt deleted file mode 100644 index f88ad5b51..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42041.txt +++ /dev/null @@ -1,5 +0,0 @@ -* 實現可擴展 SASL Profile、Bind 2.0 和 Fast,以加快重新連接速度 -* 實現通道綁定 -* 增加從音頻通話切換到視頻通話的功能 -* 增加刪除自己頭像的功能 -* 增加未接來電通知功能 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42042.txt b/fastlane/metadata/android/zh-TW/changelogs/42042.txt deleted file mode 100644 index 19e92ff86..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42042.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 修復僅支持 sm:2 的服務器上的重發循環 -* 僅當對方支持視頻時才顯示“切換到視頻” diff --git a/fastlane/metadata/android/zh-TW/changelogs/42043.txt b/fastlane/metadata/android/zh-TW/changelogs/42043.txt deleted file mode 100644 index 29ae668a1..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42043.txt +++ /dev/null @@ -1 +0,0 @@ -* 修復了 P2P 文件傳輸中的缺陷 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42044.txt b/fastlane/metadata/android/zh-TW/changelogs/42044.txt deleted file mode 100644 index 4d7ef7f82..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42044.txt +++ /dev/null @@ -1,3 +0,0 @@ -* 修復使用 SASL2 時重新發送消息的問題 -* 修復部分設備之間的黑屏問題 -* 修復空密碼崩潰問題 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42046.txt b/fastlane/metadata/android/zh-TW/changelogs/42046.txt deleted file mode 100644 index a302ae7ff..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42046.txt +++ /dev/null @@ -1 +0,0 @@ -* 整合 UnifiedPush 分發程序,以便將消息推送到其他支持 UnifiedPush 的應用程序,例如 Tusky 和 Fedilab diff --git a/fastlane/metadata/android/zh-TW/changelogs/42059.txt b/fastlane/metadata/android/zh-TW/changelogs/42059.txt deleted file mode 100644 index 32a329bd6..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42059.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 將 Target SDK 再次提升至 33 -* 修復支持 SASL2 且不支持內聯流管理的服務器上的問題 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42060.txt b/fastlane/metadata/android/zh-TW/changelogs/42060.txt deleted file mode 100644 index 16b5141f9..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42060.txt +++ /dev/null @@ -1 +0,0 @@ -* 修復“q”被錯誤識別爲西裏爾字母的問題 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42061.txt b/fastlane/metadata/android/zh-TW/changelogs/42061.txt deleted file mode 100644 index c35ffeb50..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42061.txt +++ /dev/null @@ -1 +0,0 @@ -* 從 Google Play 版本中移除頻道探索功能 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42062.txt b/fastlane/metadata/android/zh-TW/changelogs/42062.txt deleted file mode 100644 index 9c6025be5..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42062.txt +++ /dev/null @@ -1 +0,0 @@ -* 禁止從文件管理器打開備份文件(.ceb) diff --git a/fastlane/metadata/android/zh-TW/changelogs/42065.txt b/fastlane/metadata/android/zh-TW/changelogs/42065.txt deleted file mode 100644 index f6346f62a..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42065.txt +++ /dev/null @@ -1 +0,0 @@ -* 引入新的備份文件格式 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42068.txt b/fastlane/metadata/android/zh-TW/changelogs/42068.txt deleted file mode 100644 index 0d2fecdb3..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42068.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 支持對話個別通知設置 -* 在 Android 10 上使用 opus 發送語音消息 diff --git a/fastlane/metadata/android/zh-TW/changelogs/42072.txt b/fastlane/metadata/android/zh-TW/changelogs/42072.txt deleted file mode 100644 index 7f84a4d0a..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/42072.txt +++ /dev/null @@ -1,3 +0,0 @@ -* 將 libwebrtc 依賴項提升到 M117 並提升 libvpx -* 回到 AAC 語音消息 -* 支持應用程序個別語言設置 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4207704.txt b/fastlane/metadata/android/zh-TW/changelogs/4207704.txt deleted file mode 100644 index b455c5e14..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4207704.txt +++ /dev/null @@ -1,3 +0,0 @@ -* 支持私有 DNS(DNS over TLS) -* 支持主題啟動器圖標 -* 修復在 Android 11+ 上分享文件時罕見的權限問題 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4208104.txt b/fastlane/metadata/android/zh-TW/changelogs/4208104.txt deleted file mode 100644 index bfeabda61..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4208104.txt +++ /dev/null @@ -1,4 +0,0 @@ -* 更容易訪問「顯示二維碼」 -* 支持 PEP Native Bookmarks -* 添加對 SDP 請求/響應模型的支持(由 SIP 網關使用) -* 將目標 API 提升到 Android 14 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4208804.txt b/fastlane/metadata/android/zh-TW/changelogs/4208804.txt deleted file mode 100644 index e79d703fc..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4208804.txt +++ /dev/null @@ -1,3 +0,0 @@ -* 支持通過 WebRTC 數據通道進行 P2P 文件傳輸 -* 修復 ejabberd 上 Bind 2.0 的互操作性問題 -* 捆綁適用於 Android <= 7 的 Let’s Encrypt 根證書 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4209004.txt b/fastlane/metadata/android/zh-TW/changelogs/4209004.txt deleted file mode 100644 index 04c07d646..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4209004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 修正了一些小錯誤 -* Quicksy 嚮導流程略有修改 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4209204.txt b/fastlane/metadata/android/zh-TW/changelogs/4209204.txt deleted file mode 100644 index 792ee73cb..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4209204.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 在 Play 商店版本(Quicksy 和 Conversations)上提供對“隱私政策”的更輕鬆訪問 -* 移除 Play 商店版本的 Conversations 上的通訊錄整合功能 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4209404.txt b/fastlane/metadata/android/zh-TW/changelogs/4209404.txt deleted file mode 100644 index 22c860090..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4209404.txt +++ /dev/null @@ -1 +0,0 @@ -* 修復 2.13.1 中出現的小問題 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4210104.txt b/fastlane/metadata/android/zh-TW/changelogs/4210104.txt deleted file mode 100644 index 3e6d47b6d..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4210104.txt +++ /dev/null @@ -1 +0,0 @@ -* 改進音頻/視頻通話與操作系統的整合 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4210404.txt b/fastlane/metadata/android/zh-TW/changelogs/4210404.txt deleted file mode 100644 index 541a50230..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4210404.txt +++ /dev/null @@ -1,3 +0,0 @@ -* 修復安卓 8 上的音頻/視頻通話 -* 修復新通話整合中的競態條件 -* 修復視頻壓縮問題 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4210504.txt b/fastlane/metadata/android/zh-TW/changelogs/4210504.txt deleted file mode 100644 index 238c4b600..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4210504.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 恢復對 Android 6 和 Android 7 頻道探索的訪問 -* 改善失敗通話整合的日誌記錄 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4210704.txt b/fastlane/metadata/android/zh-TW/changelogs/4210704.txt deleted file mode 100644 index 30d613e89..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4210704.txt +++ /dev/null @@ -1,3 +0,0 @@ -* 使用 Material 3 主題 -* 重新組織設置介面 -* 跨設備同步閱讀狀態 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4210804.txt b/fastlane/metadata/android/zh-TW/changelogs/4210804.txt deleted file mode 100644 index 9c727b051..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4210804.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 以圖標形式顯示訊息狀態 -* 爲訊息氣泡引入「大字體」設置 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4210904.txt b/fastlane/metadata/android/zh-TW/changelogs/4210904.txt deleted file mode 100644 index 38b7f0ebc..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4210904.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 修復 Android 6/7 上的 Quicksy 註冊問題 -* 在通知通道上播放來電鈴聲 diff --git a/fastlane/metadata/android/zh-TW/changelogs/4211004.txt b/fastlane/metadata/android/zh-TW/changelogs/4211004.txt deleted file mode 100644 index 5381a3950..000000000 --- a/fastlane/metadata/android/zh-TW/changelogs/4211004.txt +++ /dev/null @@ -1,2 +0,0 @@ -* 修復某些 Android 14 設備上的通話整合 -* 添加了「來自陌生人的邀請」設置 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e6441136f..8c0fb64a8 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b82aa23a4..f3491507e 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,7 +1,6 @@ +#Sun Dec 17 21:30:13 CET 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip -networkTimeout=10000 -validateDistributionUrl=true +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 1aa94a426..91a7e269e 100755 --- a/gradlew +++ b/gradlew @@ -1,127 +1,79 @@ -#!/bin/sh - -# -# Copyright © 2015-2021 the original authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# +#!/usr/bin/env bash ############################################################################## -# -# Gradle start up script for POSIX generated by Gradle. -# -# Important for running: -# -# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is -# noncompliant, but you have some other compliant shell such as ksh or -# bash, then to run this script, type that shell name before the whole -# command line, like: -# -# ksh Gradle -# -# Busybox and similar reduced shells will NOT work, because this script -# requires all of these POSIX shell features: -# * functions; -# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», -# «${var#prefix}», «${var%suffix}», and «$( cmd )»; -# * compound commands having a testable exit status, especially «case»; -# * various built-in commands including «command», «set», and «ulimit». -# -# Important for patching: -# -# (2) This script targets any POSIX shell, so it avoids extensions provided -# by Bash, Ksh, etc; in particular arrays are avoided. -# -# The "traditional" practice of packing multiple parameters into a -# space-separated string is a well documented source of bugs and security -# problems, so this is (mostly) avoided, by progressively accumulating -# options in "$@", and eventually passing that to Java. -# -# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, -# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; -# see the in-line comments for details. -# -# There are tweaks for specific operating systems such as AIX, CygWin, -# Darwin, MinGW, and NonStop. -# -# (3) This script is generated from the Groovy template -# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt -# within the Gradle project. -# -# You can find Gradle at https://github.com/gradle/gradle/. -# +## +## Gradle start up script for UN*X +## ############################################################################## -# Attempt to set APP_HOME +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" -# Resolve links: $0 may be a link -app_path=$0 - -# Need this for daisy-chained symlinks. -while - APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path - [ -h "$app_path" ] -do - ls=$( ls -ld "$app_path" ) - link=${ls#*' -> '} - case $link in #( - /*) app_path=$link ;; #( - *) app_path=$APP_HOME$link ;; - esac -done - -# This is normally unused -# shellcheck disable=SC2034 -APP_BASE_NAME=${0##*/} -# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD=maximum +MAX_FD="maximum" -warn () { +warn ( ) { echo "$*" -} >&2 +} -die () { +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 ;; +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar +# For Cygwin, ensure paths are in UNIX format before anything is touched. +if $cygwin ; then + [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` +fi +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >&- +APP_HOME="`pwd -P`" +cd "$SAVED" >&- + +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 + JAVACMD="$JAVA_HOME/jre/sh/java" else - JAVACMD=$JAVA_HOME/bin/java + JAVACMD="$JAVA_HOME/bin/java" fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -130,120 +82,83 @@ 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. + JAVACMD="java" + which java >/dev/null 2>&1 || 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=SC2039,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=SC2039,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" ) +if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" 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 + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac fi +# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules +function splitJvmOpts() { + JVM_OPTS=("$@") +} +eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS +JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" -# 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, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, -# and any embedded shellness will be escaped. -# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be -# treated as '${Hostname}' itself on the command line. - -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" "$@" +exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" diff --git a/gradlew.bat b/gradlew.bat index 7101f8e46..aec99730b 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,20 +1,4 @@ -@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 +@if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -24,30 +8,26 @@ @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal +@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= + set DIRNAME=%~dp0 -if "%DIRNAME%"=="" set DIRNAME=. -@rem This is normally unused +if "%DIRNAME%" == "" set DIRNAME=. 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 +if "%ERRORLEVEL%" == "0" goto init -echo. 1>&2 -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +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 @@ -55,36 +35,54 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto execute +if exist "%JAVA_EXE%" goto init -echo. 1>&2 -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 -echo. 1>&2 -echo Please set the JAVA_HOME variable in your environment to match the 1>&2 -echo location of your Java installation. 1>&2 +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 +:init +@rem Get command-line arguments, handling Windowz variants + +if not "%OS%" == "Windows_NT" goto win9xME_args +if "%@eval[2+2]" == "4" goto 4NT_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* +goto execute + +:4NT_args +@rem Get arguments from the 4NT Shell from JP Software +set CMD_LINE_ARGS=%$ + :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 %* +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% :end @rem End local scope for the variables with windows NT shell -if %ERRORLEVEL% equ 0 goto mainEnd +if "%ERRORLEVEL%"=="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% +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/proguard-rules.pro b/proguard-rules.pro index 389e75904..03044d525 100644 --- a/proguard-rules.pro +++ b/proguard-rules.pro @@ -34,7 +34,6 @@ -dontwarn org.openjsse.javax.net.ssl.SSLParameters -dontwarn org.openjsse.javax.net.ssl.SSLSocket -dontwarn org.openjsse.net.ssl.OpenJSSE --dontwarn org.jetbrains.annotations.** -keepclassmembers class eu.siacs.conversations.http.services.** { !transient ; diff --git a/screenshots.png b/screenshots.png new file mode 100644 index 000000000..af411ba3e Binary files /dev/null and b/screenshots.png differ diff --git a/screenshots.xcf b/screenshots.xcf new file mode 100644 index 000000000..45f79ca5a Binary files /dev/null and b/screenshots.xcf differ diff --git a/src/conversations/AndroidManifest.xml b/src/conversations/AndroidManifest.xml index 5b111101e..87c925fe6 100644 --- a/src/conversations/AndroidManifest.xml +++ b/src/conversations/AndroidManifest.xml @@ -5,7 +5,6 @@ OMEMO ou OpenPGP -* Envoi et réception d'images -* Appels audio et vidéo chiffrés (DTLS-SRTP) -* Interface utilisateur intuitive qui suit les directives de conception d'Android -* Images / avatars pour vos contacts -* Synchronisation avec des clients de bureau -* Conférences (avec prise en charge des marque-pages) -* Intégration avec le carnet d'adresses -* Plusieurs comptes / boîte de réception unifiée -* Impact très faible sur l'autonomie de la batterie - -Conversations facilite la création de compte sur le serveur gratuit conversations.im. Cependant Conversations fonctionne également avec n'importe quel autre serveur XMPP. De nombreux serveurs XMPP sont gérés par des bénévoles et gratuits. - -Fonctionnalités de XMPP : - -Conversations fonctionne avec n'importe quel serveur XMPP. Cependant XMPP est un protocole extensible. Ces extensions sont aussi standardisées dans ce que l'on appelle les XEP. Conversations en prend en charge quelques-unes pour rendre l'expérience utilisateur meilleure dans l'ensemble. Il y a des chances que votre serveur XMPP actuel ne les prenne pas en charge. Ainsi, pour tirer le meilleur parti de Conversations, vous devriez envisager soit de passer à un serveur XMPP qui le fait, ou encore mieux, gérer votre propre serveur XMPP pour vous et vos amis. - -Ces XEP sont actuellement : - -* XEP-0065: SOCKS5 Bytestreams (ou mod_proxy65). Sera utilisé pour transférer des fichiers si les deux correspondants sont derrière un pare-feu (NAT). -* XEP-0163: Personal Eventing Protocol pour les avatars -* XEP-0191: Blocking Command vous permet de mettre des spammeurs sur liste noire ou bloquer des contacts sans les retirer de vos contacts. -* XEP-0198: Stream Management permet à XMPP de survivre à des petites pannes de réseau et aux changements de la connexion TCP sous-jacente. -* XEP-0280: Message Carbons qui synchronise automatiquement les messages que vous envoyez à votre client de bureau et vous permet ainsi de passer sans heurt de votre client mobile à votre client de bureau et inversement dans une conversation. -* XEP-0237: Roster Versioning principalement pour économiser de la bande passante sur les connexions mobiles de mauvaise qualité. -* XEP-0313: Message Archive Management synchronise l'historique des messages avec le serveur. Retrouvez des messages qui ont été envoyés pendant que Conversations était hors ligne. -* XEP-0352: Client State Indication fait savoir au serveur si Conversations est ou n'est pas en arrière-plan. Permet au serveur d'économiser de la bande passante en différant des paquets non importants. -* XEP-0363: HTTP File Upload vous permet de partager des fichiers dans les conférences et avec des contacts hors-ligne. Nécessite un composant supplémentaire sur votre serveur. diff --git a/src/conversations/fastlane/metadata/android/fr-FR/short_description.txt b/src/conversations/fastlane/metadata/android/fr-FR/short_description.txt deleted file mode 100644 index b4ae66d63..000000000 --- a/src/conversations/fastlane/metadata/android/fr-FR/short_description.txt +++ /dev/null @@ -1 +0,0 @@ -Messagerie instantanée XMPP chiffrée, facile à utiliser avec votre appareil mobile diff --git a/src/conversations/fastlane/metadata/android/ja-JP/short_description.txt b/src/conversations/fastlane/metadata/android/ja-JP/short_description.txt deleted file mode 100644 index ade292722..000000000 --- a/src/conversations/fastlane/metadata/android/ja-JP/short_description.txt +++ /dev/null @@ -1 +0,0 @@ -携帯端末で簡単に操作できるXMPP暗号化インスタント・メッセンジャー diff --git a/src/conversations/fastlane/metadata/android/ru-RU/full_description.txt b/src/conversations/fastlane/metadata/android/ru-RU/full_description.txt deleted file mode 100644 index 77c8edbb9..000000000 --- a/src/conversations/fastlane/metadata/android/ru-RU/full_description.txt +++ /dev/null @@ -1,39 +0,0 @@ -Простой в использовании, надежный, экономный для батареи. Со встроенной поддержкой изображений, групповых чатов и сквозным шифрованием. - -Принципы дизайна: - -* Быть максимально красивым и простым в использовании, не жертвуя при этом безопасностью и конфиденциальностью. -* Полагаться на существующие, хорошо зарекомендовавшие себя протоколы. -* Не требовать учетную запись Google или, в частности, Google Cloud Messaging (GCM). -* Требовать как можно меньше разрешений. - -Функции: - -* Сквозное шифрование с помощью OMEMO или OpenPGP. -* Отправка и получение изображений -* Зашифрованные аудио и видео звонки (DTLS-SRTP) -* Интуитивно понятный пользовательский интерфейс, соответствующий Рекомендациям по дизайну Android -* Картинки / аватары для ваших контактов -* Синхронизация с настольным клиентом -* Конференции (с поддержкой закладок) -* Интеграция с адресной книгой -* Несколько учетных записей / единый почтовый ящик -* Очень низкое влияние на время работы от батареи - -Conversations позволяет очень легко создать учетную запись на бесплатном сервере conversations.im. Однако Conversations также будет работать с любым другим сервером XMPP. Многие XMPP серверы управляются добровольцами и предоставляются бесплатно. - -Возможности XMPP: - -Conversations работает со всеми существующими XMPP-серверами. Однако XMPP - это расширяемый протокол. Эти расширения также стандартизированы в так называемых XEP-протоколах. Conversations поддерживает несколько из них, чтобы улучшить общее взаимодействие с пользователем. Есть вероятность, что ваш текущий XMPP-сервер не поддерживает какие либо расширения. Поэтому, чтобы получить максимальную отдачу от Conversations, вам следует либо перейти на XMPP-сервер который поддерживает эти расширения, либо, что еще лучше, запустить свой собственный XMPP-сервер для вас и ваших друзей. - -На данный момент эти XEP: - -* XEP-0065: SOCKS5 Bytestreams SOCKS5 (или mod_proxy65): будет использоваться для передачи файлов если обе стороны находятся за брандмауэром (или NAT). -* XEP-0163: Personal Eventing Protocol: для аватаров. -* XEP-0191: Blocking command: позволяет вносить спамеров в черный список или блокировать контакты, не удаляя их из своего списка. -* XEP-0198: Stream Management: позволяет XMPP справляться с небольшими перебоями в сети и изменениями нижележащего TCP-соединения. -* XEP-0280: Message Carbons: автоматически синхронизирует отправляемые вами сообщения с вашим клиентом на настольном компьютере и таким образом позволяет вам плавно переключаться с мобильного клиента на настольный клиент и обратно в рамках одного разговора. -* XEP-0237: Roster Versioning: в основном, для экономии полосы пропускания при плохом мобильном соединении. -* XEP-0313: Message Archive Management: синхронизирует историю сообщений с сервером. Отслеживание сообщений, отправленных во время разговоров в автономном режиме. -* XEP-0352: Client State Indication: позволяет серверу узнать ведутся ли разговоры в фоновом режиме. Позволяет серверу экономить пропускную способность, удерживая неважные пакеты. -* XEP-0363: HTTP File Upload: позволяет обмениваться файлами в конференциях и с контактами в автономном режиме. Требует дополнительный компонент на вашем сервере. diff --git a/src/conversations/fastlane/metadata/android/ru-RU/short_description.txt b/src/conversations/fastlane/metadata/android/ru-RU/short_description.txt deleted file mode 100644 index 059ec9eb7..000000000 --- a/src/conversations/fastlane/metadata/android/ru-RU/short_description.txt +++ /dev/null @@ -1 +0,0 @@ -Зашифрованный и простой в использовании XMPP мессенджер для вашего мобильного diff --git a/src/conversations/fastlane/metadata/android/tr-TR/full_description.txt b/src/conversations/fastlane/metadata/android/tr-TR/full_description.txt deleted file mode 100644 index 889d502e0..000000000 --- a/src/conversations/fastlane/metadata/android/tr-TR/full_description.txt +++ /dev/null @@ -1,39 +0,0 @@ -Kullanımı kolay, güvenilir, pil ömrü dostu. Resimler, gruplar ve uçtan uca şifreleme için yerleşik destek. - -Tasarım ilkeleri: - -* Gizlilik ve güvenlikten tasarruf etmeden olabildiğince iyi görünümlü ve kolay kullanımlı olmak -* Halihazırda var olan, köklü protokollere dayanmak -* Bir Google hesabına, özellikle Google Bulut Mesajlaşması (GCM)'e, gerek duymamak -* Olabildiğince az izine gerek duymak - -Özellikler: - -* OMEMO veya OpenPGP ile uçtan uca şifreleme -* Fotoğraf gönderme ve alma -* Şifrelenmiş görüntülü ve sesli aramalar (DTLS-SRTP) -* Android tasarım standartlarına uyan öğrenmesi kolay arayüz -* Kişileriniz için profil fotoğrafları / Avatarlar -* Masaüstü uygulamasıyla senkronizasyon -* Konferanslar (yer imi desteği ile) -* Kişiler listesiyle entegrasyon -* Birden fazla hesap / Birleşik gelen kutusu -* Pil ömrüne çok düşük etki - -Conversations, kolayca ve ücretsiz olarak conversations.im sunucusunda hesap oluşturmanıza olanak tanır. Conversations başka herhangi bir XMPP sunucusuyla da çalışır. Çoğu XMPP sunucusu gönüllüler tarafından işletilir ve ücretsizdir. - -XMPP Özellikleri: - -Conversations var olan bütün XMPP sunucularıyla kullanılabilir. Ancak XMPP, eklentiler ile genişletilebilen bir protokoldür. Bu eklentiler XEP'ler olarak standardize edilmiştir. Conversations kullanıcı deneyimini iyileştirmek için bu eklentilerden birkaçını destekler. Kullandığınız XMPP sunucusu bu eklentileri desteklemiyor olabilir. Bu yüzden Conversations'tan en iyi şekilde faydalanmak için bu eklentileri destekleyen bir sunucuya geçmeli veya, daha da iyisi, siz ve arkadaşlarınız için kendi XMPP sunucunuzu kurmalısınız. - -Şimdilik bu XEP'ler: - -* XEP-0065: SOCKS5 Bytestreams (mod_proxy65). İki taraf da bir güvenlik duvarı (NAT) arkasında ise dosya aktarımı için kullanılacaktır. -* XEP-0163: Avatarlar için Kişisel Olay Protokolü (Personal Eventing Protocol) -* XEP-0191: Engelleme komutu - Spam atanları ve kişilerinizi listenizden kaldırmadan engellemenizi sağlar. -* XEP-0198: Akış Kontrolü (Stream Management) - XMPP'yi ve altındaki TCP bağlantısını küçük çaplı bağlantı kopmalarına karşı korur. -* XEP-0280: Mesaj Karbonları - Mesajlarınızı masaüstü uygulamasıyla senkronize ederek cihazlarınız arasında kesintisiz geçiş yapmanızı sağlar. -* XEP-0237: Roster Versioning (Liste Sürüm Takibi) - Zayıf mobil ağlarda bant aralığından tasarruf etmek amacıyla. -* XEP-0313: Mesaj Arşivi Yönetimi - Çevrimdışı olduğunuzda bile mesaj almaya devam edebilmeniz için mesajlarınızı sunucuyla senkronize eder. -* XEP-0352: İstemci Durum Bildirimi - Conversations'un arkaplanda çalıştığını sunucuya bildir. Sunucunun önemsiz paketleri saklayarak veriden tasarruf etmesini sağlar. -* XEP-0363: HTTP Dosya Yükleme - Konferanslarla ve çevrimdışı kişilerle dosya paylaşabilmenizi sağlar. Sunucunuzda ek bileşen gerektirir. diff --git a/src/conversations/fastlane/metadata/android/tr-TR/short_description.txt b/src/conversations/fastlane/metadata/android/tr-TR/short_description.txt deleted file mode 100644 index 1eb74ef8f..000000000 --- a/src/conversations/fastlane/metadata/android/tr-TR/short_description.txt +++ /dev/null @@ -1 +0,0 @@ -Mobil cihazınız için şifrelenmiş, kullanımı kolay bir XMPP mesajlaşma uygulaması diff --git a/src/conversations/fastlane/metadata/android/zh-CN/full_description.txt b/src/conversations/fastlane/metadata/android/zh-CN/full_description.txt index 87d4ecea0..085d21191 100644 --- a/src/conversations/fastlane/metadata/android/zh-CN/full_description.txt +++ b/src/conversations/fastlane/metadata/android/zh-CN/full_description.txt @@ -1,4 +1,4 @@ -易用、可靠、省电。内置支持图片、群聊和端到端加密功能。 +易于使用、性能可靠、电池友好。内置支持图片、群聊和 e2e 加密功能。 设计原则: @@ -9,7 +9,7 @@ 特点: -* 使用 OMEMOOpenPGP 进行端到端加密 +* 使用 OMEMOOpenPGP 进行端对端加密 * 发送和接收图片 * 加密音视频通话(DTLS-SRTP) * 直观的用户界面,遵循 Android 设计准则 @@ -24,11 +24,11 @@ Conversations 使在免费的 conversations.im 服务器上创建账号变得非 XMPP 功能: -Conversations 适用于所有 XMPP 服务器。然而,XMPP 是一种可扩展的协议。这些扩展在所谓的 XMPP 扩展协议中也是标准化的。Conversations 支持其中的一些扩展,以使整体用户体验更好。有一种可能是您当前的 XMPP 服务器不支持这些扩展。因此,要想充分使用 Conversations 的功能,您应该考虑切换到支持这些扩展的 XMPP 服务器,甚至有更好的方式,或者为您和您的朋友运行自己的 XMPP 服务器。 +Conversations 适用于所有 XMPP 服务器。然而,XMPP 是一种可扩展的协议。这些扩展在所谓的 XEP 中也是标准化的。Conversations 支持其中的一些扩展,以使整体用户体验更好。有一种可能是您当前的 XMPP 服务器不支持这些扩展。因此,要想充分使用 Conversations 的功能,您应该考虑切换到支持这些扩展的 XMPP 服务器,甚至有更好的方式,或者为您和您的朋友运行自己的 XMPP 服务器。 -到目前为止,这些 XMPP 扩展协议是: +到目前为止,这些 XEP 是: -* XEP-0065:SOCKS5 字节流(或 mod_proxy65)。如果双方都在防火墙(NAT)后面,将用于传输文件。 +* XEP-0065:SOCKS5 字节流(or mod_proxy65)。如果双方都在防火墙(NAT)后面,将用于传输文件。 * XEP-0163:个人事件协议(头像) * XEP-0191:屏蔽命令可让您将垃圾消息发送者列入黑名单或屏蔽的联系人中,而不会将其从花名册中删除。 * XEP-0198:流管理允许 XMPP 在小规模网络中断和底层 TCP 连接发生变化时继续运行。 diff --git a/src/conversations/fastlane/metadata/android/zh-CN/short_description.txt b/src/conversations/fastlane/metadata/android/zh-CN/short_description.txt index 40275beb3..913d97480 100644 --- a/src/conversations/fastlane/metadata/android/zh-CN/short_description.txt +++ b/src/conversations/fastlane/metadata/android/zh-CN/short_description.txt @@ -1 +1 @@ -为您的移动设备提供加密、易用的 XMPP 即时通讯软件 +加密、易于使用的 XMPP 即时通讯软件,适用于您的移动设备 diff --git a/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java b/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java index 17c76d167..377070941 100644 --- a/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java +++ b/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java @@ -37,7 +37,6 @@ import eu.siacs.conversations.persistance.FileBackend; import eu.siacs.conversations.ui.ManageAccountActivity; import eu.siacs.conversations.utils.BackupFileHeader; import eu.siacs.conversations.utils.SerialSingleThreadExecutor; -import eu.siacs.conversations.worker.ExportBackupWorker; import eu.siacs.conversations.xmpp.Jid; import org.bouncycastle.crypto.engines.AESEngine; @@ -59,7 +58,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; -import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -190,7 +188,12 @@ public class ImportBackupService extends Service { } } Collections.sort( - backupFiles, Comparator.comparing(a -> a.header.getJid().toString())); + backupFiles, + (a, b) -> + a.header + .getJid() + .toString() + .compareTo(b.header.getJid().toString())); onBackupFilesLoaded.onBackupFilesLoaded(backupFiles); }); } @@ -222,7 +225,7 @@ public class ImportBackupService extends Service { NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(getBaseContext(), "backup"); mBuilder.setContentTitle(getString(R.string.restoring_backup)) - .setSmallIcon(R.drawable.ic_unarchive_24dp) + .setSmallIcon(R.drawable.ic_unarchive_white_24dp) .setProgress(max, progress, max == 1 && progress == 0); return mBuilder.build(); } @@ -274,7 +277,7 @@ public class ImportBackupService extends Service { return false; } - final byte[] key = ExportBackupWorker.getKey(password, backupFileHeader.getSalt()); + final byte[] key = ExportBackupService.getKey(password, backupFileHeader.getSalt()); final AEADBlockCipher cipher = new GCMBlockCipher(new AESEngine()); cipher.init( @@ -412,7 +415,7 @@ public class ImportBackupService extends Service { ? PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT : PendingIntent.FLAG_UPDATE_CURRENT)) - .setSmallIcon(R.drawable.ic_unarchive_24dp); + .setSmallIcon(R.drawable.ic_unarchive_white_24dp); notificationManager.notify(NOTIFICATION_ID, mBuilder.build()); } diff --git a/src/conversations/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java b/src/conversations/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java index 9228a5170..fea92401b 100644 --- a/src/conversations/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java +++ b/src/conversations/java/eu/siacs/conversations/ui/EasyOnboardingInviteActivity.java @@ -2,7 +2,6 @@ package eu.siacs.conversations.ui; import android.app.Activity; import android.content.Intent; -import android.content.res.Configuration; import android.graphics.Bitmap; import android.graphics.Point; import android.os.Bundle; @@ -12,10 +11,8 @@ import android.view.MenuItem; import android.view.View; import android.widget.Toast; -import androidx.annotation.NonNull; import androidx.databinding.DataBindingUtil; -import com.google.android.material.color.MaterialColors; import com.google.common.base.Strings; import eu.siacs.conversations.Config; @@ -26,20 +23,19 @@ import eu.siacs.conversations.services.BarcodeProvider; import eu.siacs.conversations.utils.EasyOnboardingInvite; import eu.siacs.conversations.xmpp.Jid; -public class EasyOnboardingInviteActivity extends XmppActivity - implements EasyOnboardingInvite.OnInviteRequested { +public class EasyOnboardingInviteActivity extends XmppActivity implements EasyOnboardingInvite.OnInviteRequested { private ActivityEasyInviteBinding binding; private EasyOnboardingInvite easyOnboardingInvite; + @Override public void onCreate(final Bundle bundle) { super.onCreate(bundle); this.binding = DataBindingUtil.setContentView(this, R.layout.activity_easy_invite); setSupportActionBar(binding.toolbar); configureActionBar(getSupportActionBar(), true); - Activities.setStatusAndNavigationBarColors(this, binding.getRoot()); this.binding.shareButton.setOnClickListener(v -> share()); if (bundle != null && bundle.containsKey("invite")) { this.easyOnboardingInvite = bundle.getParcelable("invite"); @@ -69,11 +65,11 @@ public class EasyOnboardingInviteActivity extends XmppActivity } private void share() { - final String shareText = - getString( - R.string.easy_invite_share_text, - easyOnboardingInvite.getDomain(), - easyOnboardingInvite.getShareableLink()); + final String shareText = getString( + R.string.easy_invite_share_text, + easyOnboardingInvite.getDomain(), + easyOnboardingInvite.getShareableLink() + ); final Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, shareText); @@ -99,47 +95,16 @@ public class EasyOnboardingInviteActivity extends XmppActivity private void showInvite(final EasyOnboardingInvite invite) { this.binding.inProgress.setVisibility(View.GONE); this.binding.invite.setVisibility(View.VISIBLE); - this.binding.tapToShare.setText( - getString(R.string.tap_share_button_send_invite, invite.getDomain())); + this.binding.tapToShare.setText(getString(R.string.tap_share_button_send_invite, invite.getDomain())); final Point size = new Point(); getWindowManager().getDefaultDisplay().getSize(size); final int width = Math.min(size.x, size.y); - final boolean nightMode = - (this.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) - == Configuration.UI_MODE_NIGHT_YES; - final int black; - final int white; - if (nightMode) { - black = - MaterialColors.getColor( - this, - com.google.android.material.R.attr.colorSurface, - "No surface color configured"); - white = - MaterialColors.getColor( - this, - com.google.android.material.R.attr.colorSurfaceInverse, - "No inverse surface color configured"); - } else { - black = - MaterialColors.getColor( - this, - com.google.android.material.R.attr.colorSurfaceInverse, - "No inverse surface color configured"); - white = - MaterialColors.getColor( - this, - com.google.android.material.R.attr.colorSurface, - "No surface color configured"); - } - final Bitmap bitmap = - BarcodeProvider.create2dBarcodeBitmap( - invite.getShareableLink(), width, black, white); + final Bitmap bitmap = BarcodeProvider.create2dBarcodeBitmap(invite.getShareableLink(), width); binding.qrCode.setImageBitmap(bitmap); } @Override - public void onSaveInstanceState(@NonNull Bundle bundle) { + public void onSaveInstanceState(Bundle bundle) { super.onSaveInstanceState(bundle); if (easyOnboardingInvite != null) { bundle.putParcelable("invite", easyOnboardingInvite); @@ -147,7 +112,7 @@ public class EasyOnboardingInviteActivity extends XmppActivity } @Override - protected void onBackendConnected() { + void onBackendConnected() { if (easyOnboardingInvite != null) { return; } @@ -176,12 +141,11 @@ public class EasyOnboardingInviteActivity extends XmppActivity @Override public void inviteRequestFailed(final String message) { - runOnUiThread( - () -> { - if (!Strings.isNullOrEmpty(message)) { - Toast.makeText(this, message, Toast.LENGTH_LONG).show(); - } - finish(); - }); + runOnUiThread(() -> { + if (!Strings.isNullOrEmpty(message)) { + Toast.makeText(this, message, Toast.LENGTH_LONG).show(); + } + finish(); + }); } } diff --git a/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java b/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java index 21b8fb237..342aa0144 100644 --- a/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java +++ b/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java @@ -1,14 +1,11 @@ package eu.siacs.conversations.ui; -import android.Manifest; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.ServiceConnection; -import android.content.pm.PackageManager; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.os.IBinder; import android.util.Log; @@ -17,15 +14,14 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; -import androidx.activity.result.ActivityResultLauncher; -import androidx.activity.result.contract.ActivityResultContracts; import androidx.appcompat.app.AlertDialog; import androidx.core.content.ContextCompat; import androidx.databinding.DataBindingUtil; import com.google.android.material.snackbar.Snackbar; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; + +import java.io.IOException; +import java.util.List; import eu.siacs.conversations.Config; import eu.siacs.conversations.R; @@ -33,18 +29,11 @@ import eu.siacs.conversations.databinding.ActivityImportBackupBinding; import eu.siacs.conversations.databinding.DialogEnterPasswordBinding; import eu.siacs.conversations.services.ImportBackupService; import eu.siacs.conversations.ui.adapter.BackupFileAdapter; +import eu.siacs.conversations.ui.util.SettingsUtils; import eu.siacs.conversations.utils.BackupFileHeader; +import eu.siacs.conversations.utils.ThemeHelper; -import java.io.IOException; -import java.util.Collections; -import java.util.List; -import java.util.Set; - -public class ImportBackupActivity extends ActionBarActivity - implements ServiceConnection, - ImportBackupService.OnBackupFilesLoaded, - BackupFileAdapter.OnItemClickedListener, - ImportBackupService.OnBackupProcessed { +public class ImportBackupActivity extends ActionBarActivity implements ServiceConnection, ImportBackupService.OnBackupFilesLoaded, BackupFileAdapter.OnItemClickedListener, ImportBackupService.OnBackupProcessed { private ActivityImportBackupBinding binding; @@ -52,18 +41,8 @@ public class ImportBackupActivity extends ActionBarActivity private ImportBackupService service; private boolean mLoadingState = false; - private final ActivityResultLauncher requestPermissions = - registerForActivityResult( - new ActivityResultContracts.RequestMultiplePermissions(), - results -> { - if (results.containsValue(Boolean.TRUE)) { - final var service = this.service; - if (service == null) { - return; - } - service.loadBackupFiles(this); - } - }); + + private int mTheme; @Override protected void onCreate(final Bundle savedInstanceState) { @@ -76,13 +55,17 @@ public class ImportBackupActivity extends ActionBarActivity super.onCreate(savedInstanceState); binding = DataBindingUtil.setContentView(this, R.layout.activity_import_backup); setSupportActionBar(binding.toolbar); - setLoadingState( - savedInstanceState != null - && savedInstanceState.getBoolean("loading_state", false)); + setLoadingState(savedInstanceState != null && savedInstanceState.getBoolean("loading_state", false)); this.backupFileAdapter = new BackupFileAdapter(); this.binding.list.setAdapter(this.backupFileAdapter); this.backupFileAdapter.setOnItemClickedListener(this); } + + @Override + protected void onResume(){ + super.onResume(); + SettingsUtils.applyScreenshotPreventionSetting(this); + } @Override public boolean onCreateOptionsMenu(final Menu menu) { @@ -108,51 +91,12 @@ public class ImportBackupActivity extends ActionBarActivity bindService(new Intent(this, ImportBackupService.class), this, Context.BIND_AUTO_CREATE); } final Intent intent = getIntent(); - if (intent != null - && Intent.ACTION_VIEW.equals(intent.getAction()) - && !this.mLoadingState) { + if (intent != null && Intent.ACTION_VIEW.equals(intent.getAction()) && !this.mLoadingState) { Uri uri = intent.getData(); if (uri != null) { openBackupFileFromUri(uri, true); - return; } } - final List desiredPermission; - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { - desiredPermission = - ImmutableList.of( - Manifest.permission.READ_MEDIA_IMAGES, - Manifest.permission.READ_MEDIA_VIDEO, - Manifest.permission.READ_MEDIA_AUDIO, - Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED); - } else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.TIRAMISU) { - desiredPermission = - ImmutableList.of( - Manifest.permission.READ_MEDIA_IMAGES, - Manifest.permission.READ_MEDIA_VIDEO, - Manifest.permission.READ_MEDIA_AUDIO); - } else { - desiredPermission = ImmutableList.of(Manifest.permission.READ_EXTERNAL_STORAGE); - } - final Set declaredPermission = getDeclaredPermission(); - if (declaredPermission.containsAll(desiredPermission)) { - requestPermissions.launch(desiredPermission.toArray(new String[0])); - } else { - Log.d(Config.LOGTAG, "Manifest is lacking some desired permission. not requesting"); - } - } - - private Set getDeclaredPermission() { - final String[] permissions; - try { - permissions = - getPackageManager() - .getPackageInfo(getPackageName(), PackageManager.GET_PERMISSIONS) - .requestedPermissions; - } catch (final PackageManager.NameNotFoundException e) { - return Collections.emptySet(); - } - return ImmutableSet.copyOf(permissions); } @Override @@ -166,8 +110,7 @@ public class ImportBackupActivity extends ActionBarActivity @Override public void onServiceConnected(ComponentName name, IBinder service) { - ImportBackupService.ImportBackupServiceBinder binder = - (ImportBackupService.ImportBackupServiceBinder) service; + ImportBackupService.ImportBackupServiceBinder binder = (ImportBackupService.ImportBackupServiceBinder) service; this.service = binder.getService(); this.service.addOnBackupProcessedListener(this); setLoadingState(this.service.getLoadingState()); @@ -191,78 +134,55 @@ public class ImportBackupActivity extends ActionBarActivity private void openBackupFileFromUri(final Uri uri, final boolean finishOnCancel) { try { - final ImportBackupService.BackupFile backupFile = - ImportBackupService.BackupFile.read(this, uri); + final ImportBackupService.BackupFile backupFile = ImportBackupService.BackupFile.read(this, uri); showEnterPasswordDialog(backupFile, finishOnCancel); } catch (final BackupFileHeader.OutdatedBackupFileVersion e) { - Snackbar.make( - binding.coordinator, - R.string.outdated_backup_file_format, - Snackbar.LENGTH_LONG) - .show(); + Snackbar.make(binding.coordinator, R.string.outdated_backup_file_format, Snackbar.LENGTH_LONG).show(); } catch (final IOException | IllegalArgumentException e) { Log.d(Config.LOGTAG, "unable to open backup file " + uri, e); - Snackbar.make(binding.coordinator, R.string.not_a_backup_file, Snackbar.LENGTH_LONG) - .show(); + Snackbar.make(binding.coordinator, R.string.not_a_backup_file, Snackbar.LENGTH_LONG).show(); } catch (final SecurityException e) { - Snackbar.make( - binding.coordinator, - R.string.sharing_application_not_grant_permission, - Snackbar.LENGTH_LONG) - .show(); + Snackbar.make(binding.coordinator, R.string.sharing_application_not_grant_permission, Snackbar.LENGTH_LONG).show(); } } - private void showEnterPasswordDialog( - final ImportBackupService.BackupFile backupFile, final boolean finishOnCancel) { - final DialogEnterPasswordBinding enterPasswordBinding = - DataBindingUtil.inflate( - LayoutInflater.from(this), R.layout.dialog_enter_password, null, false); + private void showEnterPasswordDialog(final ImportBackupService.BackupFile backupFile, final boolean finishOnCancel) { + final DialogEnterPasswordBinding enterPasswordBinding = DataBindingUtil.inflate(LayoutInflater.from(this), R.layout.dialog_enter_password, null, false); Log.d(Config.LOGTAG, "attempting to import " + backupFile.getUri()); enterPasswordBinding.explain.setText(getString(R.string.enter_password_to_restore, backupFile.getHeader().getJid().toString())); AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setView(enterPasswordBinding.getRoot()); builder.setTitle(R.string.enter_password); - builder.setNegativeButton( - R.string.cancel, - (dialog, which) -> { - if (finishOnCancel) { - finish(); - } - }); + builder.setNegativeButton(R.string.cancel, (dialog, which) -> { + if (finishOnCancel) { + finish(); + } + }); builder.setPositiveButton(R.string.restore, null); builder.setCancelable(false); final AlertDialog dialog = builder.create(); - dialog.setOnShowListener( - (d) -> { - dialog.getButton(DialogInterface.BUTTON_POSITIVE) - .setOnClickListener( - v -> { - final String password = - enterPasswordBinding - .accountPassword - .getEditableText() - .toString(); - if (password.isEmpty()) { - enterPasswordBinding.accountPasswordLayout.setError( - getString(R.string.please_enter_password)); - return; - } - final Uri uri = backupFile.getUri(); - Intent intent = new Intent(this, ImportBackupService.class); - intent.setAction(Intent.ACTION_SEND); - intent.putExtra("password", password); - if ("file".equals(uri.getScheme())) { - intent.putExtra("file", uri.getPath()); - } else { - intent.setData(uri); - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - } - setLoadingState(true); - ContextCompat.startForegroundService(this, intent); - d.dismiss(); - }); - }); + dialog.setOnShowListener((d) -> { + dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(v -> { + final String password = enterPasswordBinding.accountPassword.getEditableText().toString(); + if (password.isEmpty()) { + enterPasswordBinding.accountPasswordLayout.setError(getString(R.string.please_enter_password)); + return; + } + final Uri uri = backupFile.getUri(); + Intent intent = new Intent(this, ImportBackupService.class); + intent.setAction(Intent.ACTION_SEND); + intent.putExtra("password", password); + if ("file".equals(uri.getScheme())) { + intent.putExtra("file", uri.getPath()); + } else { + intent.setData(uri); + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + } + setLoadingState(true); + ContextCompat.startForegroundService(this, intent); + d.dismiss(); + }); + }); dialog.show(); } @@ -287,55 +207,36 @@ public class ImportBackupActivity extends ActionBarActivity @Override public void onAccountAlreadySetup() { - runOnUiThread( - () -> { - setLoadingState(false); - Snackbar.make( - binding.coordinator, - R.string.account_already_setup, - Snackbar.LENGTH_LONG) - .show(); - }); + runOnUiThread(() -> { + setLoadingState(false); + Snackbar.make(binding.coordinator, R.string.account_already_setup, Snackbar.LENGTH_LONG).show(); + }); } @Override public void onBackupRestored() { - runOnUiThread( - () -> { - Intent intent = new Intent(this, ConversationActivity.class); - intent.addFlags( - Intent.FLAG_ACTIVITY_CLEAR_TOP - | Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_CLEAR_TASK); - startActivity(intent); - finish(); - }); + runOnUiThread(() -> { + Intent intent = new Intent(this, ConversationActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + startActivity(intent); + finish(); + }); } @Override public void onBackupDecryptionFailed() { - runOnUiThread( - () -> { - setLoadingState(false); - Snackbar.make( - binding.coordinator, - R.string.unable_to_decrypt_backup, - Snackbar.LENGTH_LONG) - .show(); - }); + runOnUiThread(() -> { + setLoadingState(false); + Snackbar.make(binding.coordinator, R.string.unable_to_decrypt_backup, Snackbar.LENGTH_LONG).show(); + }); } @Override public void onBackupRestoreFailed() { - runOnUiThread( - () -> { - setLoadingState(false); - Snackbar.make( - binding.coordinator, - R.string.unable_to_restore_backup, - Snackbar.LENGTH_LONG) - .show(); - }); + runOnUiThread(() -> { + setLoadingState(false); + Snackbar.make(binding.coordinator, R.string.unable_to_restore_backup, Snackbar.LENGTH_LONG).show(); + }); } @Override @@ -352,7 +253,6 @@ public class ImportBackupActivity extends ActionBarActivity intent.setType("*/*"); intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, false); intent.addCategory(Intent.CATEGORY_OPENABLE); - startActivityForResult( - Intent.createChooser(intent, getString(R.string.open_backup)), 0xbac); + startActivityForResult(Intent.createChooser(intent, getString(R.string.open_backup)), 0xbac); } } diff --git a/src/conversations/java/eu/siacs/conversations/ui/MagicCreateActivity.java b/src/conversations/java/eu/siacs/conversations/ui/MagicCreateActivity.java index b6d4d452e..38761befd 100644 --- a/src/conversations/java/eu/siacs/conversations/ui/MagicCreateActivity.java +++ b/src/conversations/java/eu/siacs/conversations/ui/MagicCreateActivity.java @@ -10,32 +10,45 @@ import android.widget.Toast; import androidx.databinding.DataBindingUtil; +import java.security.SecureRandom; + import eu.siacs.conversations.Config; import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.ActivityMagicCreateBinding; +import eu.siacs.conversations.databinding.MagicCreateBinding; import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.utils.CryptoHelper; import eu.siacs.conversations.utils.InstallReferrerUtils; import eu.siacs.conversations.xmpp.Jid; -import java.security.SecureRandom; - public class MagicCreateActivity extends XmppActivity implements TextWatcher { public static final String EXTRA_DOMAIN = "domain"; public static final String EXTRA_PRE_AUTH = "pre_auth"; public static final String EXTRA_USERNAME = "username"; - private ActivityMagicCreateBinding binding; + private MagicCreateBinding binding; private String domain; private String username; private String preAuth; @Override - protected void refreshUiReal() {} + protected void refreshUiReal() { + + } @Override - protected void onBackendConnected() {} + void onBackendConnected() { + + } + + @Override + public void onStart() { + super.onStart(); + final int theme = findTheme(); + if (this.mTheme != theme) { + recreate(); + } + } @Override protected void onCreate(final Bundle savedInstanceState) { @@ -47,8 +60,7 @@ public class MagicCreateActivity extends XmppActivity implements TextWatcher { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } super.onCreate(savedInstanceState); - this.binding = DataBindingUtil.setContentView(this, R.layout.activity_magic_create); - Activities.setStatusAndNavigationBarColors(this, binding.getRoot()); + this.binding = DataBindingUtil.setContentView(this, R.layout.magic_create); setSupportActionBar(this.binding.toolbar); configureActionBar(getSupportActionBar(), this.domain == null); if (username != null && domain != null) { @@ -60,64 +72,51 @@ public class MagicCreateActivity extends XmppActivity implements TextWatcher { } else if (domain != null) { binding.instructions.setText(getString(R.string.magic_create_text_on_x, domain)); } - binding.createAccount.setOnClickListener( - v -> { - try { - final String username = binding.username.getText().toString(); - final Jid jid; - final boolean fixedUsername; - if (this.domain != null && this.username != null) { - fixedUsername = true; - jid = Jid.ofLocalAndDomainEscaped(this.username, this.domain); - } else if (this.domain != null) { - fixedUsername = false; - jid = Jid.ofLocalAndDomainEscaped(username, this.domain); - } else { - fixedUsername = false; - jid = Jid.ofLocalAndDomainEscaped(username, Config.MAGIC_CREATE_DOMAIN); + binding.createAccount.setOnClickListener(v -> { + try { + final String username = binding.username.getText().toString(); + final Jid jid; + final boolean fixedUsername; + if (this.domain != null && this.username != null) { + fixedUsername = true; + jid = Jid.ofLocalAndDomainEscaped(this.username, this.domain); + } else if (this.domain != null) { + fixedUsername = false; + jid = Jid.ofLocalAndDomainEscaped(username, this.domain); + } else { + fixedUsername = false; + jid = Jid.ofLocalAndDomainEscaped(username, Config.MAGIC_CREATE_DOMAIN); + } + if (!jid.getEscapedLocal().equals(jid.getLocal()) || (this.username == null && username.length() < 3)) { + binding.username.setError(getString(R.string.invalid_username)); + binding.username.requestFocus(); + } else { + binding.username.setError(null); + Account account = xmppConnectionService.findAccountByJid(jid); + if (account == null) { + account = new Account(jid, CryptoHelper.createPassword(new SecureRandom())); + account.setOption(Account.OPTION_REGISTER, true); + account.setOption(Account.OPTION_DISABLED, true); + account.setOption(Account.OPTION_MAGIC_CREATE, true); + account.setOption(Account.OPTION_FIXED_USERNAME, fixedUsername); + if (this.preAuth != null) { + account.setKey(Account.KEY_PRE_AUTH_REGISTRATION_TOKEN, this.preAuth); } - if (!jid.getEscapedLocal().equals(jid.getLocal()) - || (this.username == null && username.length() < 3)) { - binding.usernameLayout.setError(getString(R.string.invalid_username)); - binding.username.requestFocus(); - } else { - binding.usernameLayout.setError(null); - Account account = xmppConnectionService.findAccountByJid(jid); - if (account == null) { - account = - new Account( - jid, - CryptoHelper.createPassword(new SecureRandom())); - account.setOption(Account.OPTION_REGISTER, true); - account.setOption(Account.OPTION_DISABLED, true); - account.setOption(Account.OPTION_MAGIC_CREATE, true); - account.setOption(Account.OPTION_FIXED_USERNAME, fixedUsername); - if (this.preAuth != null) { - account.setKey( - Account.KEY_PRE_AUTH_REGISTRATION_TOKEN, this.preAuth); - } - xmppConnectionService.createAccount(account); - } - Intent intent = - new Intent(MagicCreateActivity.this, EditAccountActivity.class); - intent.putExtra("jid", account.getJid().asBareJid().toString()); - intent.putExtra("init", true); - intent.setFlags( - Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_CLEAR_TASK); - Toast.makeText( - MagicCreateActivity.this, - R.string.secure_password_generated, - Toast.LENGTH_SHORT) - .show(); - StartConversationActivity.addInviteUri(intent, getIntent()); - startActivity(intent); - } - } catch (final IllegalArgumentException e) { - binding.usernameLayout.setError(getString(R.string.invalid_username)); - binding.username.requestFocus(); + xmppConnectionService.createAccount(account); } - }); + Intent intent = new Intent(MagicCreateActivity.this, EditAccountActivity.class); + intent.putExtra("jid", account.getJid().asBareJid().toString()); + intent.putExtra("init", true); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); + Toast.makeText(MagicCreateActivity.this, R.string.secure_password_generated, Toast.LENGTH_SHORT).show(); + StartConversationActivity.addInviteUri(intent, getIntent()); + startActivity(intent); + } + } catch (IllegalArgumentException e) { + binding.username.setError(getString(R.string.invalid_username)); + binding.username.requestFocus(); + } + }); binding.username.addTextChangedListener(this); } @@ -128,10 +127,14 @@ public class MagicCreateActivity extends XmppActivity implements TextWatcher { } @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) {} + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } @Override - public void onTextChanged(CharSequence s, int start, int before, int count) {} + public void onTextChanged(CharSequence s, int start, int before, int count) { + + } @Override public void afterTextChanged(final Editable s) { @@ -150,10 +153,8 @@ public class MagicCreateActivity extends XmppActivity implements TextWatcher { } else { jid = Jid.ofLocalAndDomainEscaped(username, this.domain); } - binding.fullJid.setText( - getString(R.string.your_full_jid_will_be, jid.toEscapedString())); - binding.usernameLayout.setError(null); - } catch (final IllegalArgumentException e) { + binding.fullJid.setText(getString(R.string.your_full_jid_will_be, jid.toEscapedString())); + } catch (IllegalArgumentException e) { binding.fullJid.setVisibility(View.INVISIBLE); } } diff --git a/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java b/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java index 427a2527f..22e208b90 100644 --- a/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java +++ b/src/conversations/java/eu/siacs/conversations/ui/ManageAccountActivity.java @@ -1,14 +1,10 @@ package eu.siacs.conversations.ui; -import static eu.siacs.conversations.utils.PermissionUtils.allGranted; -import static eu.siacs.conversations.utils.PermissionUtils.writeGranted; - import android.content.ActivityNotFoundException; import android.content.Intent; import android.os.Bundle; import android.security.KeyChain; import android.security.KeyChainAliasCallback; -import android.util.Log; import android.util.Pair; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; @@ -16,17 +12,23 @@ import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView.AdapterContextMenuInfo; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.ListView; import android.widget.Toast; import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBar; -import androidx.databinding.DataBindingUtil; +import androidx.appcompat.app.AlertDialog; -import com.google.common.base.Strings; +import org.openintents.openpgp.util.OpenPgpApi; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; import eu.siacs.conversations.Config; import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.ActivityManageAccountsBinding; import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.services.XmppConnectionService; import eu.siacs.conversations.services.XmppConnectionService.OnAccountUpdate; @@ -35,17 +37,10 @@ import eu.siacs.conversations.ui.util.MenuDoubleTabUtil; import eu.siacs.conversations.xmpp.Jid; import eu.siacs.conversations.xmpp.XmppConnection; -import org.openintents.openpgp.util.OpenPgpApi; +import static eu.siacs.conversations.utils.PermissionUtils.allGranted; +import static eu.siacs.conversations.utils.PermissionUtils.writeGranted; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.atomic.AtomicBoolean; - -public class ManageAccountActivity extends XmppActivity - implements OnAccountUpdate, - KeyChainAliasCallback, - XmppConnectionService.OnAccountCreated, - AccountAdapter.OnTglAccountState { +public class ManageAccountActivity extends XmppActivity implements OnAccountUpdate, KeyChainAliasCallback, XmppConnectionService.OnAccountCreated, AccountAdapter.OnTglAccountState { private final String STATE_SELECTED_ACCOUNT = "selected_account"; @@ -55,6 +50,7 @@ public class ManageAccountActivity extends XmppActivity protected Jid selectedAccountJid = null; protected final List accountList = new ArrayList<>(); + protected ListView accountListView; protected AccountAdapter mAccountAdapter; protected AtomicBoolean mInvokedAddAccount = new AtomicBoolean(false); @@ -71,7 +67,7 @@ public class ManageAccountActivity extends XmppActivity accountList.clear(); accountList.addAll(xmppConnectionService.getAccounts()); } - final ActionBar actionBar = getSupportActionBar(); + ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setHomeButtonEnabled(this.accountList.size() > 0); actionBar.setDisplayHomeAsUpEnabled(this.accountList.size() > 0); @@ -85,10 +81,8 @@ public class ManageAccountActivity extends XmppActivity super.onCreate(savedInstanceState); - ActivityManageAccountsBinding binding = - DataBindingUtil.setContentView(this, R.layout.activity_manage_accounts); - - setSupportActionBar(binding.toolbar); + setContentView(R.layout.activity_manage_accounts); + setSupportActionBar(findViewById(R.id.toolbar)); configureActionBar(getSupportActionBar()); if (savedInstanceState != null) { String jid = savedInstanceState.getString(STATE_SELECTED_ACCOUNT); @@ -101,11 +95,11 @@ public class ManageAccountActivity extends XmppActivity } } + accountListView = findViewById(R.id.account_list); this.mAccountAdapter = new AccountAdapter(this, accountList); - binding.accountList.setAdapter(this.mAccountAdapter); - binding.accountList.setOnItemClickListener( - (arg0, view, position, arg3) -> switchToAccount(accountList.get(position))); - registerForContextMenu(binding.accountList); + accountListView.setAdapter(this.mAccountAdapter); + accountListView.setOnItemClickListener((arg0, view, position, arg3) -> switchToAccount(accountList.get(position))); + registerForContextMenu(accountListView); } @Override @@ -118,10 +112,9 @@ public class ManageAccountActivity extends XmppActivity } @Override - public void onSaveInstanceState(@NonNull final Bundle savedInstanceState) { + public void onSaveInstanceState(final Bundle savedInstanceState) { if (selectedAccount != null) { - savedInstanceState.putString( - STATE_SELECTED_ACCOUNT, selectedAccount.getJid().asBareJid().toEscapedString()); + savedInstanceState.putString(STATE_SELECTED_ACCOUNT, selectedAccount.getJid().asBareJid().toEscapedString()); } super.onSaveInstanceState(savedInstanceState); } @@ -129,7 +122,8 @@ public class ManageAccountActivity extends XmppActivity @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); - ManageAccountActivity.this.getMenuInflater().inflate(R.menu.manageaccounts_context, menu); + ManageAccountActivity.this.getMenuInflater().inflate( + R.menu.manageaccounts_context, menu); AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo; this.selectedAccount = accountList.get(acmi.position); @@ -154,16 +148,15 @@ public class ManageAccountActivity extends XmppActivity } @Override - protected void onBackendConnected() { + void onBackendConnected() { if (selectedAccountJid != null) { this.selectedAccount = xmppConnectionService.findAccountByJid(selectedAccountJid); } refreshUiReal(); if (this.mPostponedActivityResult != null) { - this.onActivityResult( - mPostponedActivityResult.first, RESULT_OK, mPostponedActivityResult.second); + this.onActivityResult(mPostponedActivityResult.first, RESULT_OK, mPostponedActivityResult.second); } - if (Config.X509_VERIFICATION && this.accountList.isEmpty()) { + if (Config.X509_VERIFICATION && this.accountList.size() == 0) { if (mInvokedAddAccount.compareAndSet(false, true)) { addAccountFromKey(); } @@ -253,9 +246,9 @@ public class ManageAccountActivity extends XmppActivity return super.onOptionsItemSelected(item); } + @Override - public void onRequestPermissionsResult( - int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (grantResults.length > 0) { if (allGranted(grantResults)) { @@ -278,14 +271,13 @@ public class ManageAccountActivity extends XmppActivity @Override public boolean onNavigateUp() { if (xmppConnectionService.getConversations().size() == 0) { - Intent contactsIntent = new Intent(this, StartConversationActivity.class); + Intent contactsIntent = new Intent(this, + StartConversationActivity.class); contactsIntent.setFlags( // if activity exists in stack, pop the stack and go back to it - Intent.FLAG_ACTIVITY_CLEAR_TOP - | + Intent.FLAG_ACTIVITY_CLEAR_TOP | // otherwise, make a new task for it - Intent.FLAG_ACTIVITY_NEW_TASK - | + Intent.FLAG_ACTIVITY_NEW_TASK | // don't use the new activity animation; finish // animation runs instead Intent.FLAG_ACTIVITY_NO_ANIMATION); @@ -307,17 +299,16 @@ public class ManageAccountActivity extends XmppActivity } private void addAccountFromKey() { - Log.d(Config.LOGTAG, "add account from key"); try { KeyChain.choosePrivateKeyAlias(this, this, null, null, null, -1, null); - } catch (final ActivityNotFoundException e) { - Toast.makeText(this, R.string.device_does_not_support_certificates, Toast.LENGTH_LONG) - .show(); + } catch (ActivityNotFoundException e) { + Toast.makeText(this, R.string.device_does_not_support_certificates, Toast.LENGTH_LONG).show(); } } private void publishAvatar(Account account) { - Intent intent = new Intent(getApplicationContext(), PublishProfilePictureActivity.class); + Intent intent = new Intent(getApplicationContext(), + PublishProfilePictureActivity.class); intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toEscapedString()); startActivity(intent); } @@ -412,8 +403,7 @@ public class ManageAccountActivity extends XmppActivity if (xmppConnectionServiceBound) { if (requestCode == REQUEST_CHOOSE_PGP_ID) { if (data.getExtras().containsKey(OpenPgpApi.EXTRA_SIGN_KEY_ID)) { - selectedAccount.setPgpSignId( - data.getExtras().getLong(OpenPgpApi.EXTRA_SIGN_KEY_ID)); + selectedAccount.setPgpSignId(data.getExtras().getLong(OpenPgpApi.EXTRA_SIGN_KEY_ID)); announcePgp(selectedAccount, null, null, onOpenPGPKeyPublished); } else { choosePgpSignId(selectedAccount); @@ -430,17 +420,9 @@ public class ManageAccountActivity extends XmppActivity @Override public void alias(final String alias) { - if (Strings.isNullOrEmpty(alias)) { - runOnUiThread( - () -> - Toast.makeText( - this, - R.string.no_certificate_selected, - Toast.LENGTH_LONG) - .show()); - return; + if (alias != null) { + xmppConnectionService.createAccountFromKey(alias, this); } - xmppConnectionService.createAccountFromKey(alias, this); } @Override @@ -453,7 +435,6 @@ public class ManageAccountActivity extends XmppActivity @Override public void informUser(final int r) { - runOnUiThread( - () -> Toast.makeText(ManageAccountActivity.this, r, Toast.LENGTH_LONG).show()); + runOnUiThread(() -> Toast.makeText(ManageAccountActivity.this, r, Toast.LENGTH_LONG).show()); } } diff --git a/src/conversations/java/eu/siacs/conversations/ui/PickServerActivity.java b/src/conversations/java/eu/siacs/conversations/ui/PickServerActivity.java index f96a17ffc..06320d33d 100644 --- a/src/conversations/java/eu/siacs/conversations/ui/PickServerActivity.java +++ b/src/conversations/java/eu/siacs/conversations/ui/PickServerActivity.java @@ -22,10 +22,19 @@ public class PickServerActivity extends XmppActivity { } @Override - protected void onBackendConnected() { + void onBackendConnected() { } + @Override + public void onStart() { + super.onStart(); + final int theme = findTheme(); + if (this.mTheme != theme) { + recreate(); + } + } + @Override public boolean onOptionsItemSelected(final MenuItem item) { @@ -44,8 +53,7 @@ public class PickServerActivity extends XmppActivity { } @Override - public void onNewIntent(final Intent intent) { - super.onNewIntent(intent); + public void onNewIntent(Intent intent) { if (intent != null) { setIntent(intent); } @@ -58,7 +66,6 @@ public class PickServerActivity extends XmppActivity { } super.onCreate(savedInstanceState); ActivityPickServerBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_pick_server); - Activities.setStatusAndNavigationBarColors(this, binding.getRoot()); setSupportActionBar(binding.toolbar); configureActionBar(getSupportActionBar()); binding.useCim.setOnClickListener(v -> { @@ -74,7 +81,7 @@ public class PickServerActivity extends XmppActivity { if (accounts.size() == 1) { intent.putExtra("jid", accounts.get(0).getJid().asBareJid().toString()); intent.putExtra("init", true); - } else if (!accounts.isEmpty()) { + } else if (accounts.size() >= 1) { intent = new Intent(this, ManageAccountActivity.class); } addInviteUri(intent); diff --git a/src/conversations/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java b/src/conversations/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java index 73609635c..8b0f22eb8 100644 --- a/src/conversations/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java +++ b/src/conversations/java/eu/siacs/conversations/ui/ShareViaAccountActivity.java @@ -57,7 +57,16 @@ public class ShareViaAccountActivity extends XmppActivity { } @Override - protected void onBackendConnected() { + protected void onStart() { + super.onStart(); + final int theme = findTheme(); + if (this.mTheme != theme) { + recreate(); + } + } + + @Override + void onBackendConnected() { final int numAccounts = xmppConnectionService.getAccounts().size(); if (numAccounts == 1) { diff --git a/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java b/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java index b2a40976c..d61c64a9c 100644 --- a/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java +++ b/src/conversations/java/eu/siacs/conversations/ui/WelcomeActivity.java @@ -34,10 +34,7 @@ import eu.siacs.conversations.xmpp.Jid; import static eu.siacs.conversations.utils.PermissionUtils.allGranted; import static eu.siacs.conversations.utils.PermissionUtils.writeGranted; -import com.google.common.base.Strings; - -public class WelcomeActivity extends XmppActivity - implements XmppConnectionService.OnAccountCreated, KeyChainAliasCallback { +public class WelcomeActivity extends XmppActivity implements XmppConnectionService.OnAccountCreated, KeyChainAliasCallback { private static final int REQUEST_IMPORT_BACKUP = 0x63fb; @@ -69,8 +66,7 @@ public class WelcomeActivity extends XmppActivity final Intent intent; if (xmppUri.isAction(XmppUri.ACTION_REGISTER)) { intent = SignupUtils.getTokenRegistrationIntent(this, jid, preAuth); - } else if (xmppUri.isAction(XmppUri.ACTION_ROSTER) - && "y".equals(xmppUri.getParameter(XmppUri.PARAMETER_IBR))) { + } else if (xmppUri.isAction(XmppUri.ACTION_ROSTER) && "y".equals(xmppUri.getParameter(XmppUri.PARAMETER_IBR))) { intent = SignupUtils.getTokenRegistrationIntent(this, jid.getDomain(), preAuth); intent.putExtra(StartConversationActivity.EXTRA_INVITE_URI, xmppUri.toString()); } else { @@ -85,14 +81,22 @@ public class WelcomeActivity extends XmppActivity } @Override - protected void refreshUiReal() {} + protected void refreshUiReal() { + + } @Override - protected void onBackendConnected() {} + void onBackendConnected() { + + } @Override public void onStart() { super.onStart(); + final int theme = findTheme(); + if (this.mTheme != theme) { + recreate(); + } new InstallReferrerUtils(this); } @@ -115,44 +119,42 @@ public class WelcomeActivity extends XmppActivity setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); } super.onCreate(savedInstanceState); - ActivityWelcomeBinding binding = - DataBindingUtil.setContentView(this, R.layout.activity_welcome); - Activities.setStatusAndNavigationBarColors(this, binding.getRoot()); + ActivityWelcomeBinding binding = DataBindingUtil.setContentView(this, R.layout.activity_welcome); setSupportActionBar(binding.toolbar); configureActionBar(getSupportActionBar(), false); - setTitle(null); - binding.registerNewAccount.setOnClickListener( - v -> { - final Intent intent = new Intent(this, PickServerActivity.class); - addInviteUri(intent); - startActivity(intent); - }); - binding.useExisting.setOnClickListener( - v -> { - final List accounts = xmppConnectionService.getAccounts(); - Intent intent = new Intent(this, EditAccountActivity.class); - intent.putExtra(EditAccountActivity.EXTRA_FORCE_REGISTER, false); - if (accounts.size() == 1) { - intent.putExtra("jid", accounts.get(0).getJid().asBareJid().toString()); - intent.putExtra("init", true); - } else if (!accounts.isEmpty()) { - intent = new Intent(this, ManageAccountActivity.class); - } - addInviteUri(intent); - startActivity(intent); - }); + binding.registerNewAccount.setOnClickListener(v -> { + final Intent intent = new Intent(this, PickServerActivity.class); + addInviteUri(intent); + startActivity(intent); + }); + binding.useExisting.setOnClickListener(v -> { + final List accounts = xmppConnectionService.getAccounts(); + Intent intent = new Intent(WelcomeActivity.this, EditAccountActivity.class); + intent.putExtra(EditAccountActivity.EXTRA_FORCE_REGISTER, false); + if (accounts.size() == 1) { + intent.putExtra("jid", accounts.get(0).getJid().asBareJid().toString()); + intent.putExtra("init", true); + } else if (accounts.size() >= 1) { + intent = new Intent(WelcomeActivity.this, ManageAccountActivity.class); + } + addInviteUri(intent); + startActivity(intent); + }); + } @Override - public boolean onCreateOptionsMenu(final Menu menu) { + public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.welcome_menu, menu); final MenuItem scan = menu.findItem(R.id.action_scan_qr_code); scan.setVisible(Compatibility.hasFeatureCamera(this)); return super.onCreateOptionsMenu(menu); } + + @Override - public boolean onOptionsItemSelected(final MenuItem item) { + public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_import_backup: if (hasStoragePermission(REQUEST_IMPORT_BACKUP)) { @@ -172,25 +174,16 @@ public class WelcomeActivity extends XmppActivity private void addAccountFromKey() { try { KeyChain.choosePrivateKeyAlias(this, this, null, null, null, -1, null); - } catch (final ActivityNotFoundException e) { - Toast.makeText(this, R.string.device_does_not_support_certificates, Toast.LENGTH_LONG) - .show(); + } catch (ActivityNotFoundException e) { + Toast.makeText(this, R.string.device_does_not_support_certificates, Toast.LENGTH_LONG).show(); } } @Override public void alias(final String alias) { - if (Strings.isNullOrEmpty(alias)) { - runOnUiThread( - () -> - Toast.makeText( - this, - R.string.no_certificate_selected, - Toast.LENGTH_LONG) - .show()); - return; + if (alias != null) { + xmppConnectionService.createAccountFromKey(alias, this); } - xmppConnectionService.createAccountFromKey(alias, this); } @Override @@ -208,8 +201,7 @@ public class WelcomeActivity extends XmppActivity } @Override - public void onRequestPermissionsResult( - int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); UriHandlerActivity.onRequestPermissionResult(this, requestCode, grantResults); if (grantResults.length > 0) { @@ -219,8 +211,7 @@ public class WelcomeActivity extends XmppActivity startActivity(new Intent(this, ImportBackupActivity.class)); break; } - } else if (Arrays.asList(permissions) - .contains(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { + } else if (Arrays.asList(permissions).contains(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { Toast.makeText(this, R.string.no_storage_permission, Toast.LENGTH_SHORT).show(); } } @@ -241,4 +232,5 @@ public class WelcomeActivity extends XmppActivity to.putExtra(StartConversationActivity.EXTRA_INVITE_URI, this.inviteUri.toString()); } } + } diff --git a/src/conversations/java/eu/siacs/conversations/ui/adapter/BackupFileAdapter.java b/src/conversations/java/eu/siacs/conversations/ui/adapter/BackupFileAdapter.java index 9f32352ee..9857dcd8a 100644 --- a/src/conversations/java/eu/siacs/conversations/ui/adapter/BackupFileAdapter.java +++ b/src/conversations/java/eu/siacs/conversations/ui/adapter/BackupFileAdapter.java @@ -22,7 +22,7 @@ import java.util.List; import java.util.concurrent.RejectedExecutionException; import eu.siacs.conversations.R; -import eu.siacs.conversations.databinding.ItemAccountBinding; +import eu.siacs.conversations.databinding.AccountRowBinding; import eu.siacs.conversations.services.AvatarService; import eu.siacs.conversations.services.ImportBackupService; import eu.siacs.conversations.utils.BackupFileHeader; @@ -39,7 +39,7 @@ public class BackupFileAdapter extends RecyclerView.Adapter(imageView); DisplayMetrics metrics = imageView.getContext().getResources().getDisplayMetrics(); this.size = ((int) (48 * metrics.density)); @@ -146,7 +146,8 @@ public class BackupFileAdapter extends RecyclerView.Adapter - - - - diff --git a/src/conversations/res/layout/activity_easy_invite.xml b/src/conversations/res/layout/activity_easy_invite.xml index 6f1c8fc57..8bbf11c03 100644 --- a/src/conversations/res/layout/activity_easy_invite.xml +++ b/src/conversations/res/layout/activity_easy_invite.xml @@ -1,23 +1,17 @@ - + - - - - - + + android:textAppearance="@style/TextAppearance.Conversations.Body1" /> + android:textAppearance="@style/TextAppearance.Conversations.Body1" />