From 7c9c4ecf5fd7665d9f35a006577511a5e1506599 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 20 Oct 2021 10:49:40 +0200 Subject: [PATCH 01/26] Version++ --- matrix-sdk-android/build.gradle | 2 +- vector/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/matrix-sdk-android/build.gradle b/matrix-sdk-android/build.gradle index b547ae037a..c92d735fac 100644 --- a/matrix-sdk-android/build.gradle +++ b/matrix-sdk-android/build.gradle @@ -31,7 +31,7 @@ android { // that the app's state is completely cleared between tests. testInstrumentationRunnerArguments clearPackageData: 'true' - buildConfigField "String", "SDK_VERSION", "\"1.3.4\"" + buildConfigField "String", "SDK_VERSION", "\"1.3.5\"" buildConfigField "String", "GIT_SDK_REVISION", "\"${gitRevision()}\"" resValue "string", "git_sdk_revision", "\"${gitRevision()}\"" diff --git a/vector/build.gradle b/vector/build.gradle index 31a4f1639c..636ae5c884 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -14,7 +14,7 @@ kapt { // Note: 2 digits max for each value ext.versionMajor = 1 ext.versionMinor = 3 -ext.versionPatch = 4 +ext.versionPatch = 5 static def getGitTimestamp() { def cmd = 'git show -s --format=%ct' From b3f6b5e14257a841bc5b06755d040839c504946e Mon Sep 17 00:00:00 2001 From: ariskotsomitopoulos Date: Thu, 21 Oct 2021 01:44:08 +0300 Subject: [PATCH 02/26] Fix Broken EditText when using FromEditTextItem --- changelog.d/4276.bugfix | 1 + .../im/vector/app/features/form/FormEditTextItem.kt | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 changelog.d/4276.bugfix diff --git a/changelog.d/4276.bugfix b/changelog.d/4276.bugfix new file mode 100644 index 0000000000..8cb2ed6977 --- /dev/null +++ b/changelog.d/4276.bugfix @@ -0,0 +1 @@ +Fix Broken EditText when using FromEditTextItem diff --git a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt index cda1623c88..c9a640e51a 100644 --- a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt +++ b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt @@ -18,6 +18,7 @@ package im.vector.app.features.form import android.text.Editable import android.text.InputFilter +import android.text.InputType import android.view.View import android.view.inputmethod.EditorInfo import android.widget.TextView @@ -107,8 +108,13 @@ abstract class FormEditTextItem : VectorEpoxyModel() { holder.textInputEditText.isEnabled = enabled inputType?.let { holder.textInputEditText.inputType = it } - holder.textInputEditText.isSingleLine = singleLine - holder.textInputEditText.imeOptions = imeOptions ?: EditorInfo.IME_ACTION_NONE + + if (singleLine) { + holder.textInputEditText.maxLines = 1 + holder.textInputEditText.minLines = 1 + imeOptions ?: run { holder.textInputEditText.imeOptions = EditorInfo.IME_ACTION_NEXT } + inputType ?: run { holder.textInputEditText.setRawInputType(InputType.TYPE_CLASS_TEXT) } + } holder.textInputEditText.addTextChangedListenerOnce(onTextChangeListener) holder.textInputEditText.setOnEditorActionListener(editorActionListener) From 3ea7b37df30ff8ee7093d301d1a20c3f571f29ca Mon Sep 17 00:00:00 2001 From: ariskotsomitopoulos Date: Thu, 21 Oct 2021 01:54:45 +0300 Subject: [PATCH 03/26] Improve imeOptions --- .../main/java/im/vector/app/features/form/FormEditTextItem.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt index c9a640e51a..328385049b 100644 --- a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt +++ b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt @@ -108,6 +108,7 @@ abstract class FormEditTextItem : VectorEpoxyModel() { holder.textInputEditText.isEnabled = enabled inputType?.let { holder.textInputEditText.inputType = it } + imeOptions?.let { holder.textInputEditText.imeOptions = it } if (singleLine) { holder.textInputEditText.maxLines = 1 From d33daaf799071434613d9a5e6a44497c48641ac4 Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 21 Oct 2021 11:35:08 +0200 Subject: [PATCH 04/26] Fix voice message record button wrong visibility #4283 --- changelog.d/4283.bugfix | 1 + .../app/features/home/room/detail/RoomDetailFragment.kt | 2 +- .../home/room/detail/composer/TextComposerViewState.kt | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 changelog.d/4283.bugfix diff --git a/changelog.d/4283.bugfix b/changelog.d/4283.bugfix new file mode 100644 index 0000000000..030418c405 --- /dev/null +++ b/changelog.d/4283.bugfix @@ -0,0 +1 @@ +Fix voice message record button wrong visibility \ No newline at end of file diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt index 7461b89001..fa0ca24289 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt @@ -1390,7 +1390,7 @@ class RoomDetailFragment @Inject constructor( lazyLoadedViews.inviteView(false)?.isVisible = false if (mainState.tombstoneEvent == null) { views.composerLayout.isInvisible = !textComposerState.isComposerVisible - views.voiceMessageRecorderView.isVisible = !textComposerState.isSendButtonVisible + views.voiceMessageRecorderView.isVisible = textComposerState.isVoiceMessageRecorderVisible views.composerLayout.views.sendButton.isInvisible = !textComposerState.isSendButtonVisible views.composerLayout.setRoomEncrypted(summary.isEncrypted) // views.composerLayout.alwaysShowSendButton = false diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/TextComposerViewState.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/TextComposerViewState.kt index 3110aa8dc3..199fb1b82d 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/TextComposerViewState.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/TextComposerViewState.kt @@ -49,8 +49,8 @@ data class TextComposerViewState( val sendMode: SendMode = SendMode.REGULAR("", false) ) : MavericksState { - val isComposerVisible: Boolean - get() = canSendMessage && !isVoiceRecording + val isComposerVisible = canSendMessage && !isVoiceRecording + val isVoiceMessageRecorderVisible = canSendMessage && !isSendButtonVisible constructor(args: RoomDetailArgs) : this(roomId = args.roomId) } From dc230f1c300102ac9ad5ead77d694651228ba4e4 Mon Sep 17 00:00:00 2001 From: ariskotsomitopoulos Date: Thu, 21 Oct 2021 14:31:50 +0300 Subject: [PATCH 05/26] Refactor to handle more cases --- .../app/features/form/FormEditTextItem.kt | 36 ++++++++++++++----- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt index 328385049b..e23a076485 100644 --- a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt +++ b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt @@ -107,15 +107,9 @@ abstract class FormEditTextItem : VectorEpoxyModel() { } holder.textInputEditText.isEnabled = enabled - inputType?.let { holder.textInputEditText.inputType = it } - imeOptions?.let { holder.textInputEditText.imeOptions = it } - if (singleLine) { - holder.textInputEditText.maxLines = 1 - holder.textInputEditText.minLines = 1 - imeOptions ?: run { holder.textInputEditText.imeOptions = EditorInfo.IME_ACTION_NEXT } - inputType ?: run { holder.textInputEditText.setRawInputType(InputType.TYPE_CLASS_TEXT) } - } + configureInputType(holder) + configureImeOptions(holder) holder.textInputEditText.addTextChangedListenerOnce(onTextChangeListener) holder.textInputEditText.setOnEditorActionListener(editorActionListener) @@ -131,6 +125,32 @@ abstract class FormEditTextItem : VectorEpoxyModel() { } } + /** + * Configure the inputType of the EditText, input type should be always defined + * especially when we want to use a single line, we set the InputType to InputType.TYPE_CLASS_TEXT + * while the default for the EditText is InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE + */ + private fun configureInputType(holder: Holder) = + inputType?.let { + holder.textInputEditText.setRawInputType(it) + } ?: when (singleLine) { + true -> holder.textInputEditText.setRawInputType(InputType.TYPE_CLASS_TEXT) + false -> holder.textInputEditText.setRawInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE) + } + + /** + * Configure the imeOptions of the EditText, when imeOptions are not defined by user + * EditorInfo.IME_ACTION_NEXT will be used for singleLine EditTexts to disable "new line" + * while EditorInfo.IME_ACTION_NONE will be used for all the other cases + */ + private fun configureImeOptions(holder: Holder) = + imeOptions?.let { + holder.textInputEditText.imeOptions = it + } ?: when (singleLine) { + true -> holder.textInputEditText.imeOptions = EditorInfo.IME_ACTION_NEXT + false -> holder.textInputEditText.imeOptions = EditorInfo.IME_ACTION_NONE + } + override fun shouldSaveViewState(): Boolean { return false } From d41ff5009721afdc1c7a9941979a84f24e1013dc Mon Sep 17 00:00:00 2001 From: ganfra Date: Thu, 21 Oct 2021 16:34:20 +0200 Subject: [PATCH 06/26] Fix crash when clicking on ViewEvent source actions #4279 --- changelog.d/4279.bugfix | 1 + vector/build.gradle | 5 +---- 2 files changed, 2 insertions(+), 4 deletions(-) create mode 100644 changelog.d/4279.bugfix diff --git a/changelog.d/4279.bugfix b/changelog.d/4279.bugfix new file mode 100644 index 0000000000..1b0ea424fa --- /dev/null +++ b/changelog.d/4279.bugfix @@ -0,0 +1 @@ +Fix crash when clicking on ViewEvent source actions \ No newline at end of file diff --git a/vector/build.gradle b/vector/build.gradle index 636ae5c884..254bf3873c 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -470,10 +470,7 @@ dependencies { gplayImplementation 'com.google.android.gms:play-services-oss-licenses:17.0.0' implementation "androidx.emoji:emoji-appcompat:1.1.0" - - implementation ('com.github.BillCarsonFr:JsonViewer:0.6'){ - exclude group: 'com.airbnb.android' - } + implementation ('com.github.BillCarsonFr:JsonViewer:0.7') // WebRTC // org.webrtc:google-webrtc is for development purposes only From beab9ab8f197812eb422f952b9fb7b95feb86149 Mon Sep 17 00:00:00 2001 From: ariskotsomitopoulos Date: Thu, 21 Oct 2021 17:43:01 +0300 Subject: [PATCH 07/26] Refactored for clarity --- .../app/features/form/FormEditTextItem.kt | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt index e23a076485..93973c1bdf 100644 --- a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt +++ b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt @@ -130,26 +130,25 @@ abstract class FormEditTextItem : VectorEpoxyModel() { * especially when we want to use a single line, we set the InputType to InputType.TYPE_CLASS_TEXT * while the default for the EditText is InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE */ - private fun configureInputType(holder: Holder) = - inputType?.let { - holder.textInputEditText.setRawInputType(it) - } ?: when (singleLine) { - true -> holder.textInputEditText.setRawInputType(InputType.TYPE_CLASS_TEXT) - false -> holder.textInputEditText.setRawInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE) + private fun configureInputType(holder: Holder) = holder.textInputEditText.setRawInputType( + inputType ?: when (singleLine) { + true -> InputType.TYPE_CLASS_TEXT + false -> InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE } + ) /** - * Configure the imeOptions of the EditText, when imeOptions are not defined by user + * Configure the imeOptions of the EditText, when imeOptions are not defined by the developer * EditorInfo.IME_ACTION_NEXT will be used for singleLine EditTexts to disable "new line" * while EditorInfo.IME_ACTION_NONE will be used for all the other cases */ - private fun configureImeOptions(holder: Holder) = - imeOptions?.let { - holder.textInputEditText.imeOptions = it - } ?: when (singleLine) { - true -> holder.textInputEditText.imeOptions = EditorInfo.IME_ACTION_NEXT - false -> holder.textInputEditText.imeOptions = EditorInfo.IME_ACTION_NONE - } + private fun configureImeOptions(holder: Holder) { + holder.textInputEditText.imeOptions = + imeOptions ?: when (singleLine) { + true -> EditorInfo.IME_ACTION_NEXT + false -> EditorInfo.IME_ACTION_NONE + } + } override fun shouldSaveViewState(): Boolean { return false From d6d46d1c21b36c4dbe6cab27852ddfaee49f2cc5 Mon Sep 17 00:00:00 2001 From: ariskotsomitopoulos Date: Thu, 21 Oct 2021 19:41:35 +0300 Subject: [PATCH 08/26] Avoid using setRawInputType --- .../app/features/form/FormEditTextItem.kt | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt index 93973c1bdf..657c4c1b94 100644 --- a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt +++ b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt @@ -130,12 +130,18 @@ abstract class FormEditTextItem : VectorEpoxyModel() { * especially when we want to use a single line, we set the InputType to InputType.TYPE_CLASS_TEXT * while the default for the EditText is InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE */ - private fun configureInputType(holder: Holder) = holder.textInputEditText.setRawInputType( - inputType ?: when (singleLine) { - true -> InputType.TYPE_CLASS_TEXT - false -> InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE - } - ) + private fun configureInputType(holder: Holder) { + val newInputType = + inputType ?: when (singleLine) { + true -> InputType.TYPE_CLASS_TEXT + false -> InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE + } + + // This is a must in order to avoid extreme lag in some devices, on fast typing + if(holder.textInputEditText.inputType != newInputType){ + holder.textInputEditText.inputType = newInputType + } + } /** * Configure the imeOptions of the EditText, when imeOptions are not defined by the developer From 9d5f84b86aa7c4f528edb5aea8e6f42f104f515e Mon Sep 17 00:00:00 2001 From: ariskotsomitopoulos Date: Thu, 21 Oct 2021 20:02:21 +0300 Subject: [PATCH 09/26] Linter fixes --- .../main/java/im/vector/app/features/form/FormEditTextItem.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt index 657c4c1b94..7b7896316b 100644 --- a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt +++ b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt @@ -138,7 +138,7 @@ abstract class FormEditTextItem : VectorEpoxyModel() { } // This is a must in order to avoid extreme lag in some devices, on fast typing - if(holder.textInputEditText.inputType != newInputType){ + if (holder.textInputEditText.inputType != newInputType) { holder.textInputEditText.inputType = newInputType } } From bc137af0e203fde904d01ef6f04523e5a75c5963 Mon Sep 17 00:00:00 2001 From: waclaw66 Date: Wed, 20 Oct 2021 13:06:56 +0000 Subject: [PATCH 10/26] Translated using Weblate (Czech) Currently translated at 100.0% (2672 of 2672 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/cs/ --- vector/src/main/res/values-cs/strings.xml | 54 +++++++++++------------ 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/vector/src/main/res/values-cs/strings.xml b/vector/src/main/res/values-cs/strings.xml index c6b57e47ff..42e1e3963f 100644 --- a/vector/src/main/res/values-cs/strings.xml +++ b/vector/src/main/res/values-cs/strings.xml @@ -335,7 +335,7 @@ Vyřadit Potvrzení Varování - Domů + Úvod Oblíbené Lidé Místnosti @@ -1297,7 +1297,7 @@ Zruší zákaz uživateli s daným id Určit úroveň pokročilosti uživatele Pozve uživatele s daným id do této místnosti - Vstoupí do místnosti s daným aliasem + Vstoupí do místnosti s danou adresou Opustit místnost Určit téma místnosti Nakopne uživatele s daným id @@ -1316,7 +1316,7 @@ Příklad Id komunity příklad - Doma + Úvod Lidé Místnosti Žádní uživatelé @@ -2725,16 +2725,16 @@ Zpráva odeslána Neoznačeno Experimentální, prostor - omezená místnost. - Spaces představují nový způsob seskupování místností a osob. + Prostory představují nový způsob seskupování místností a osob. Založme pro každé místnost. Později můžete přidat i další, včetně již existujících. Na jakých tématech pracujete\? Založíme pro ně místnosti. Můžete přidat další později. Doplňte nějaké podrobnosti, aby jej lidé mohli identifikovat. Můžete je kdykoli změnit. - Spaces jsou nový způsob organizace místností a lidí - Spaces + Prostory jsou nový způsob organizace místností a lidí + Prostory Varování, nutná podpora serveru a experimentální verze místnosti Jste zváni - Vítejte ve Spaces! + Vítejte v prostorech! Přidat existující místnosti a prostor Opustit prostor Přidat místnosti @@ -2764,7 +2764,7 @@ Pozvat lidi Pozvěte do svého prostoru lidi Popis - Zakládám Space… + Vytvářím prostor… Nahodilé Obecné Jaké diskuse si přejete vést v %s\? @@ -2775,15 +2775,15 @@ Privátní Otevřený pro všechny, nejlepší pro komunity Veřejný - Privátní Space pro Vás a Vaše kolegy + Privátní prostor pro Vás a Vaše kolegy Já a kolegové - Privátní Space k organizaci Vašich místností + Privátní prostor k organizaci Vašich místností Jen já Ujistěte se, že ti správní lidé mají přístup do %s. Můžete změnit později. S kým pracujete\? - K vstupu do existujícího Space potřebujete pozvání. + Ke vstupu do existujícího prostoru potřebujete pozvání. Můžete změnit později - Jaký typ Space chcete založit\? + Jaký typ prostoru chcete založit\? Váš privátní prostor Váš veřejný prostor Přidat prostor @@ -2802,7 +2802,7 @@ Dovolit hostům vstoupit Pozvání Doporučené místnosti - Správa místností a Spaces + Správa místností a prostorů Označit za nikoli doporučené Označit za doporučené Doporučeno @@ -2827,9 +2827,9 @@ \nK přidávání místností nemáte oprávnění. Tento prostor nemá žádné místnosti Další informace získáte od správce domovského serveru - Vypadá to, že váš domovský server zatím Spaces nepodporuje + Vypadá to, že váš domovský server zatím Prostory nepodporuje Chcete experimentovat\? -\nDo Spaceu můžete přidat existující Spaces. +\nDo prostoru můžete přidat existující prostory. Přidat místnosti Jste jediným správcem tohoto prostoru. Jeho opuštění bude znamenat, že nad ním nebude mít nikdo kontrolu. Pokud nebudete znovu pozváni, nebudete se moci připojit. @@ -2840,9 +2840,9 @@ Zpětnou vazbu se nepodařilo odeslat (%s) Děkujeme, vaše zpětná vazba byla úspěšně odeslána V případě dalších dotazů se na mě můžete obrátit - Používáte beta verzi Spaces. Váš feedback pomůže při tvorbě dalších verzí. Vaše platforma a uživatelské jméno budou zaznamenány, abychom mohli Váš feedback co nejlépe využít. + Používáte beta verzi prostorů. Vaše zpětná vazba pomůže při tvorbě dalších verzí. Vaše platforma a uživatelské jméno budou zaznamenány, abychom mohli vaši zpětnou vazbu co nejlépe využít. Zpětná vazba - Feedback na Spaces + Zpětná vazba prostorů Omlouváme se, při pokusu o připojení ke konferenci došlo k chybě Nepojmenovaná místnost Soukromý prostor @@ -2860,7 +2860,7 @@ V současné době se lidé nemohou připojit k soukromým místnostem, které jste vytvořili. \n \nV rámci beta verze to zlepšíme, ale jen jsme vás chtěli informovat. - Spaces pro spolupracovníky nejsou ještě zcela připravené, ale přesto je můžete vyzkoušet + Prostory pro spolupracovníky nejsou ještě zcela připravené, ale přesto je můžete vyzkoušet Omlouváme se, došlo k chybě během pokusu o přistoupení: %s Adresa prostoru Prohlédnout a spravovat adresy tohoto prostoru. @@ -2900,17 +2900,17 @@ %d zmeškané hlasové hovory %d zmeškaných hlasových hovorů - Rozhodněte, které Spaces mají přístup do této místnosti. Pokud je vybrán prostor, jeho členové budou moci najít název místnosti a připojit se k ní. - Další Spaces nebo místnosti, které možná neznáte + Rozhodněte, které prostory mají přístup do této místnosti. Pokud je vybrán prostor, jeho členové budou moci najít název místnosti a připojit se k ní. + Další prostory nebo místnosti, které možná neznáte Prostor, o kterém víte, že obsahuje tuto místnost Rozhodněte, kdo může tuto místnost najít a připojit se k ní. - Klepnutím upravíte Spaces - Povolit vyhledání a přístup komukoli v %s. Můžete vybrat i další Spaces. + Klepnutím upravíte prostory + Povolit vyhledání a přístup komukoli v %s. Můžete vybrat i další prostory. Vyžadována aktualizace Každý, kdo se nachází v nadřazeném prostoru, bude moci tuto místnost najít a připojit se k ní - není třeba všechny zvát ručně. Tuto možnost budete moci kdykoli změnit v nastavení místnosti. Kdokoli v %s bude moci tuto místnost najít a připojit se k ní - není třeba všechny zvát ručně. Toto nastavení budete moci kdykoli změnit v nastavení místnosti. Klepnutím na nahrávku ji zastavíte nebo posloucháte - Vybrat Spaces + Vybrat prostory Upozorňujeme, že aktualizací vznikne nová verze místnosti. Všechny aktuální zprávy zůstanou v této archivované místnosti. Hlasová zpráva (%1$s) Nelze odpovídat ani upravovat, když je hlasová zpráva aktivní @@ -2927,7 +2927,7 @@ Posunutím zrušíte Nahrát hlasovou zprávu Hlasová zpráva - Spaces, které mají přístup + Prostory, které mají přístup Umožněte členům prostoru ho najít a zpřístupnit. Členové prostoru %s mohou vyhledávat, prohlížet a připojovat se. Soukromé (pouze pro pozvané) @@ -2952,8 +2952,8 @@ Chcete-li členům prostoru pomoci najít soukromou místnost a připojit se k ní, přejděte do nastavení dané místnosti klepnutím na avatar. Pomozte členům prostoru najít soukromé místnosti Díky tomu mohou místnosti zůstat soukromé a zároveň je mohou lidé v prostoru najít a připojit se k nim. Všechny nové místnosti v prostoru budou mít tuto možnost k dispozici. - Pomozte lidem ve Spaces, aby sami našli soukromé místnosti a připojili se k nim, není třeba všechny zvát ručně. - Novinka: Nechat lidi v Spaces vyhledat a připojit se k soukromým místnostem + Pomozte lidem v prostorech, aby sami našli soukromé místnosti a připojili se k nim, není třeba všechny zvát ručně. + Novinka: Nechat lidi v prostorech vyhledat a připojit se k soukromým místnostem Skupinový hovor zahájen Všechny místnosti, ve kterých se nacházíte, se zobrazí v domovském zobrazení. Zobrazit všechny místnosti v domovském zobrazení @@ -2998,7 +2998,7 @@ Hlasový hovor s %s Videohovor s %s Vyzvánění… - Spaces + Prostory Dozvědět se více Přidejte prostor do jakéhokoli prostoru, který spravujete. Přidat stávající prostory From b83566c1c05c3da4d158c2d5f0381efdfff096da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Wed, 20 Oct 2021 14:22:02 +0000 Subject: [PATCH 11/26] Translated using Weblate (Estonian) Currently translated at 100.0% (2672 of 2672 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/et/ --- vector/src/main/res/values-et/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/res/values-et/strings.xml b/vector/src/main/res/values-et/strings.xml index 27c332b605..2585eaa15a 100644 --- a/vector/src/main/res/values-et/strings.xml +++ b/vector/src/main/res/values-et/strings.xml @@ -1556,7 +1556,7 @@ Määra kasutaja õigused Eemalda antud tunnusega kasutajalt haldusõigused selles jututoas Kutsub nimetatud kasutajatunnusega kasutaja sellesse jututuppa - Liitu antud aadressiga jututoaga + Liitu sellise aadressiga jututoaga Lahku jututoast Määra jututoa teema Müksa selle tunnusega kasutaja jututoast välja From 3993a45825455800b220948fcc40f9cb0ec658a7 Mon Sep 17 00:00:00 2001 From: Glandos Date: Thu, 21 Oct 2021 11:16:30 +0000 Subject: [PATCH 12/26] Translated using Weblate (French) Currently translated at 100.0% (2672 of 2672 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/fr/ --- vector/src/main/res/values-fr/strings.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vector/src/main/res/values-fr/strings.xml b/vector/src/main/res/values-fr/strings.xml index 483b433ecc..12eca6b823 100644 --- a/vector/src/main/res/values-fr/strings.xml +++ b/vector/src/main/res/values-fr/strings.xml @@ -984,7 +984,7 @@ Définit le rang d’un utilisateur Rétrograde l’utilisateur avec l’identifiant fourni Invite l’utilisateur avec l’identifiant fourni dans le salon actuel - Rejoint le salon avec l’alias fourni + Rejoint le salon avec l’adresse fournie Quitte le salon Définit le sujet du salon Expulse l’utilisateur avec l’identifiant fourni @@ -3009,4 +3009,7 @@ L’expulsion des utilisateurs va les supprimer de cet espace \n \nPour les empêcher de revenir, vous devriez les exclure. + Indisponible + Hors ligne + En ligne \ No newline at end of file From 2b0933139a3b42da7176a9025ef5d0382eac0294 Mon Sep 17 00:00:00 2001 From: Szimszon Date: Thu, 21 Oct 2021 18:34:47 +0000 Subject: [PATCH 13/26] Translated using Weblate (Hungarian) Currently translated at 100.0% (2672 of 2672 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/hu/ --- vector/src/main/res/values-hu/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/res/values-hu/strings.xml b/vector/src/main/res/values-hu/strings.xml index 1926a40115..1d9214f926 100644 --- a/vector/src/main/res/values-hu/strings.xml +++ b/vector/src/main/res/values-hu/strings.xml @@ -942,7 +942,7 @@ Matrixban az üzenetek láthatósága hasonlít az e-mailre. Az üzenet törlés Felhasználó hozzáférési szintjének meghatározása Meghatározott azonosítójú felhasználó hozzáférési szintjének visszaállítása Megadott azonosítójú felhasználó meghívása a szobába - Megadott becenévvel csatlakozik a szobához + Megadott címmel csatlakozik a szobához Kilépés a szobából A szoba témájának beállítása Megadott azonosítójú felhasználó kirúgása From df5c05fc1f958333653f7efed929b595d9298655 Mon Sep 17 00:00:00 2001 From: Linerly Date: Thu, 21 Oct 2021 02:42:11 +0000 Subject: [PATCH 14/26] Translated using Weblate (Indonesian) Currently translated at 100.0% (2672 of 2672 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/id/ --- vector/src/main/res/values-in/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/res/values-in/strings.xml b/vector/src/main/res/values-in/strings.xml index f899be6bff..8b9016b6c3 100644 --- a/vector/src/main/res/values-in/strings.xml +++ b/vector/src/main/res/values-in/strings.xml @@ -525,7 +525,7 @@ Ijinkan akses lewat halaman selanjutnya untuk menemukan pengguna ${app_name} yan Cabut larangan pengguna dengan id berikut Tentukan tingkat kuasa seorang pengguna Undang pengguna dengan id berikut bergabung ke ruang ini - Gabung ke ruang dengan alias berikut + Gabung ke ruangan dengan alamat berikut Tinggalkan ruang Tentukan topik ruang Keluarkan pengguna dengan id berikut From 2ddedf49d46b67528a2520378ccaab2d73ebe56e Mon Sep 17 00:00:00 2001 From: lvre <7uu3qrbvm@relay.firefox.com> Date: Wed, 20 Oct 2021 11:06:14 +0000 Subject: [PATCH 15/26] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (2672 of 2672 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/pt_BR/ --- vector/src/main/res/values-pt-rBR/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/res/values-pt-rBR/strings.xml b/vector/src/main/res/values-pt-rBR/strings.xml index ff824445eb..8ef17a33d9 100644 --- a/vector/src/main/res/values-pt-rBR/strings.xml +++ b/vector/src/main/res/values-pt-rBR/strings.xml @@ -1094,7 +1094,7 @@ Define nível de poder de um/uma usuário(a) Desopa usuária(o) com id dada Convida usuária(o) com id dada para esta sala - Junta-se a sala com alias dado + Junta-se a sala com endereço dado Sair de sala Definir o tópico da sala Expulsa a(o) usuária(o) com id dada From 5a3d1fb7ec4585fc2a2678f2acd77563abe0c6a5 Mon Sep 17 00:00:00 2001 From: LinAGKar Date: Wed, 20 Oct 2021 18:43:54 +0000 Subject: [PATCH 16/26] Translated using Weblate (Swedish) Currently translated at 100.0% (2672 of 2672 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/sv/ --- vector/src/main/res/values-sv/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/res/values-sv/strings.xml b/vector/src/main/res/values-sv/strings.xml index 5ff62fa1eb..0ec5b0d820 100644 --- a/vector/src/main/res/values-sv/strings.xml +++ b/vector/src/main/res/values-sv/strings.xml @@ -1785,7 +1785,7 @@ Definiera behörighetsnivå för en användare Avoppar användaren med det angivna ID:t Bjuder in användaren med det angivna ID:t till det nuvarande rummet - Går med i rummet med det angivna aliaset + Går med i rummet med den angivna adressen Sätt ett rumsämne Sparkar ut användaren med det angivna ID:t Ändrar ditt visningsnamn From de320e671e5e9f92ac1dd70c8e7d4b7dea7b7d75 Mon Sep 17 00:00:00 2001 From: sr093906 Date: Wed, 20 Oct 2021 13:12:29 +0000 Subject: [PATCH 17/26] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (2672 of 2672 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/zh_Hans/ --- vector/src/main/res/values-zh-rCN/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/res/values-zh-rCN/strings.xml b/vector/src/main/res/values-zh-rCN/strings.xml index 28d2c8e250..feff737e27 100644 --- a/vector/src/main/res/values-zh-rCN/strings.xml +++ b/vector/src/main/res/values-zh-rCN/strings.xml @@ -948,7 +948,7 @@ 设置用户的权限等级 按照 ID 取消用户管理员权限 按照 ID 邀请用户进入当前聊天室 - 按照别名加入聊天室 + 用给定地址加入聊天室 离开聊天室 设置聊天室主题 按照 ID 踢出用户 From dcda43fc93b6f9311d798609ab4d08124c3de83e Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Thu, 21 Oct 2021 02:14:18 +0000 Subject: [PATCH 18/26] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2672 of 2672 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/zh_Hant/ --- vector/src/main/res/values-zh-rTW/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/res/values-zh-rTW/strings.xml b/vector/src/main/res/values-zh-rTW/strings.xml index 66120d9429..df611eceb7 100644 --- a/vector/src/main/res/values-zh-rTW/strings.xml +++ b/vector/src/main/res/values-zh-rTW/strings.xml @@ -988,7 +988,7 @@ 定義使用者的權限等級 取消指定 id 的使用者的管理權 邀請指定 id 的使用者到目前的聊天室 - 加入指定別名的聊天室 + 加入指定地址的聊天室 離開聊天室 設定聊天室主題 踢除指定 id 的使用者 From 7aa860b1fa7048c1c54f64dff22d2e8b228aca44 Mon Sep 17 00:00:00 2001 From: Glandos Date: Thu, 21 Oct 2021 11:15:53 +0000 Subject: [PATCH 19/26] Translated using Weblate (French) Currently translated at 100.0% (34 of 34 strings) Translation: Element Android/Element Android Store Translate-URL: https://translate.element.io/projects/element-android/element-store/fr/ --- fastlane/metadata/android/fr-FR/changelogs/40103030.txt | 2 ++ fastlane/metadata/android/fr-FR/full_description.txt | 3 +++ 2 files changed, 5 insertions(+) create mode 100644 fastlane/metadata/android/fr-FR/changelogs/40103030.txt diff --git a/fastlane/metadata/android/fr-FR/changelogs/40103030.txt b/fastlane/metadata/android/fr-FR/changelogs/40103030.txt new file mode 100644 index 0000000000..0130080ca7 --- /dev/null +++ b/fastlane/metadata/android/fr-FR/changelogs/40103030.txt @@ -0,0 +1,2 @@ +Principaux changements pour cette version : Affiche le(s) politique(s) des serveurs d’identité dans les réglages. Retrait temporaire du support d’Android Auto +Liste de tous les changements : https ://github.com/vector-im/element-android/releases/tag/v1.3.3 diff --git a/fastlane/metadata/android/fr-FR/full_description.txt b/fastlane/metadata/android/fr-FR/full_description.txt index 78fcdf5617..7ffdb6cb9d 100644 --- a/fastlane/metadata/android/fr-FR/full_description.txt +++ b/fastlane/metadata/android/fr-FR/full_description.txt @@ -37,3 +37,6 @@ Messagerie instantannée, appels audio et vidéo, partage de fichier, partage d Reprenez où vous vous êtes arrêté Restez en contact où que vous soyez grâce à l’historique des messages synchronisé entre tous vos appareils et sur le web sur https://app.element.io + +Open source +Element Adroid est un projet libre, hébergé par GitHub. Veuillez signaler tous les problèmes et / ou contribuer à son développement sur https://github.com/vector-im/element-android From a82a5c9b32e0e22d76c7336f041e2d8156194694 Mon Sep 17 00:00:00 2001 From: ganfra Date: Fri, 22 Oct 2021 15:19:39 +0200 Subject: [PATCH 20/26] Fix unread marker not showing #4313 --- changelog.d/4313.bugfix | 1 + .../features/home/room/detail/RoomDetailViewModel.kt | 12 +++++++----- .../workers/signout/ServerBackupStatusViewModel.kt | 11 ++++++++--- 3 files changed, 16 insertions(+), 8 deletions(-) create mode 100644 changelog.d/4313.bugfix diff --git a/changelog.d/4313.bugfix b/changelog.d/4313.bugfix new file mode 100644 index 0000000000..da28469ed0 --- /dev/null +++ b/changelog.d/4313.bugfix @@ -0,0 +1 @@ +Fix unread marker not showing \ No newline at end of file diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt index 0c0e5ee6cd..f4f2def028 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt @@ -529,9 +529,9 @@ class RoomDetailViewModel @AssistedInject constructor( val isAllowed = action.userJustAccepted || if (widget.type == WidgetType.Jitsi) { widget.senderInfo?.userId == session.myUserId || session.integrationManagerService().isNativeWidgetDomainAllowed( - action.widget.type.preferred, - domain - ) + action.widget.type.preferred, + domain + ) } else false if (isAllowed) { @@ -1092,8 +1092,10 @@ class RoomDetailViewModel @AssistedInject constructor( } override fun onTimelineUpdated(snapshot: List) { - timelineEvents.tryEmit(snapshot) - + viewModelScope.launch { + // tryEmit doesn't work with SharedFlow without cache + timelineEvents.emit(snapshot) + } // PreviewUrl if (vectorPreferences.showUrlPreviews()) { withState { state -> diff --git a/vector/src/main/java/im/vector/app/features/workers/signout/ServerBackupStatusViewModel.kt b/vector/src/main/java/im/vector/app/features/workers/signout/ServerBackupStatusViewModel.kt index 9b9f3fe490..92af25994a 100644 --- a/vector/src/main/java/im/vector/app/features/workers/signout/ServerBackupStatusViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/workers/signout/ServerBackupStatusViewModel.kt @@ -34,6 +34,7 @@ import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.sample +import kotlinx.coroutines.launch import org.matrix.android.sdk.api.extensions.orFalse import org.matrix.android.sdk.api.session.Session import org.matrix.android.sdk.api.session.crypto.crosssigning.MASTER_KEY_SSSS_NAME @@ -110,7 +111,7 @@ class ServerBackupStatusViewModel @AssistedInject constructor(@Assisted initialS if ( crossSigningInfo.getOrNull() == null || (crossSigningInfo.getOrNull()?.isTrusted() == true && - pInfo.getOrNull()?.allKnown().orFalse()) + pInfo.getOrNull()?.allKnown().orFalse()) ) { // So 4S is not setup and we have local secrets, return@combine BannerState.Setup(numberOfKeys = getNumberOfKeysToBackup()) @@ -125,7 +126,9 @@ class ServerBackupStatusViewModel @AssistedInject constructor(@Assisted initialS ) } - keyBackupFlow.tryEmit(session.cryptoService().keysBackupService().state) + viewModelScope.launch { + keyBackupFlow.tryEmit(session.cryptoService().keysBackupService().state) + } } /** @@ -155,7 +158,9 @@ class ServerBackupStatusViewModel @AssistedInject constructor(@Assisted initialS } override fun onStateChange(newState: KeysBackupState) { - keyBackupFlow.tryEmit(session.cryptoService().keysBackupService().state) + viewModelScope.launch { + keyBackupFlow.tryEmit(session.cryptoService().keysBackupService().state) + } keysBackupState.value = newState } From 06b3cc3f4b10cfa80271f2bda22e6d961bd7406a Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Fri, 22 Oct 2021 18:29:53 +0100 Subject: [PATCH 21/26] filters the unique notification uris from the link handling - fixes malformed url errors appearing for uri we only create to force uniqueness in the notifications --- .../app/core/extensions/UriExtensions.kt | 25 +++++++++++++++++++ .../notifications/NotificationUtils.kt | 25 ++++++++++--------- .../features/permalink/PermalinkHandler.kt | 25 +++++++++++-------- 3 files changed, 53 insertions(+), 22 deletions(-) create mode 100644 vector/src/main/java/im/vector/app/core/extensions/UriExtensions.kt diff --git a/vector/src/main/java/im/vector/app/core/extensions/UriExtensions.kt b/vector/src/main/java/im/vector/app/core/extensions/UriExtensions.kt new file mode 100644 index 0000000000..ec7a03bdbb --- /dev/null +++ b/vector/src/main/java/im/vector/app/core/extensions/UriExtensions.kt @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2021 New Vector Ltd + * + * 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 + * + * http://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. + */ + +package im.vector.app.core.extensions + +import android.net.Uri + +const val IGNORED_SCHEMA = "ignored" + +fun Uri.isIgnored() = scheme == IGNORED_SCHEMA + +fun createIgnoredUri(path: String): Uri = Uri.parse("$IGNORED_SCHEMA://$path") diff --git a/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt b/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt index 92feb3d038..89db5e7d8f 100755 --- a/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt +++ b/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt @@ -47,6 +47,7 @@ import androidx.core.graphics.drawable.IconCompat import androidx.fragment.app.Fragment import im.vector.app.BuildConfig import im.vector.app.R +import im.vector.app.core.extensions.createIgnoredUri import im.vector.app.core.resources.StringProvider import im.vector.app.core.services.CallService import im.vector.app.core.utils.startNotificationChannelSettingsIntent @@ -317,7 +318,7 @@ class NotificationUtils @Inject constructor(private val context: Context, mode = VectorCallActivity.INCOMING_RINGING ).apply { flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP - data = Uri.parse("foobar://${call.callId}") + data = createIgnoredUri(call.callId) } val contentPendingIntent = PendingIntent.getActivity(context, System.currentTimeMillis().toInt(), contentIntent, 0) @@ -378,7 +379,7 @@ class NotificationUtils @Inject constructor(private val context: Context, call = call, mode = null).apply { flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP - data = Uri.parse("foobar://$call.callId") + data = createIgnoredUri(call.callId) } val contentPendingIntent = PendingIntent.getActivity(context, System.currentTimeMillis().toInt(), contentIntent, 0) @@ -584,7 +585,7 @@ class NotificationUtils @Inject constructor(private val context: Context, // Mark room as read val markRoomReadIntent = Intent(context, NotificationBroadcastReceiver::class.java) markRoomReadIntent.action = MARK_ROOM_READ_ACTION - markRoomReadIntent.data = Uri.parse("foobar://${roomInfo.roomId}") + markRoomReadIntent.data = createIgnoredUri(roomInfo.roomId) markRoomReadIntent.putExtra(NotificationBroadcastReceiver.KEY_ROOM_ID, roomInfo.roomId) val markRoomReadPendingIntent = PendingIntent.getBroadcast(context, System.currentTimeMillis().toInt(), markRoomReadIntent, PendingIntent.FLAG_UPDATE_CURRENT) @@ -652,7 +653,7 @@ class NotificationUtils @Inject constructor(private val context: Context, // offer to type a quick reject button val rejectIntent = Intent(context, NotificationBroadcastReceiver::class.java) rejectIntent.action = REJECT_ACTION - rejectIntent.data = Uri.parse("foobar://$roomId&$matrixId") + rejectIntent.data = createIgnoredUri("$roomId&$matrixId") rejectIntent.putExtra(NotificationBroadcastReceiver.KEY_ROOM_ID, roomId) val rejectIntentPendingIntent = PendingIntent.getBroadcast(context, System.currentTimeMillis().toInt(), rejectIntent, PendingIntent.FLAG_UPDATE_CURRENT) @@ -665,7 +666,7 @@ class NotificationUtils @Inject constructor(private val context: Context, // offer to type a quick accept button val joinIntent = Intent(context, NotificationBroadcastReceiver::class.java) joinIntent.action = JOIN_ACTION - joinIntent.data = Uri.parse("foobar://$roomId&$matrixId") + joinIntent.data = createIgnoredUri("$roomId&$matrixId") joinIntent.putExtra(NotificationBroadcastReceiver.KEY_ROOM_ID, roomId) val joinIntentPendingIntent = PendingIntent.getBroadcast(context, System.currentTimeMillis().toInt(), joinIntent, PendingIntent.FLAG_UPDATE_CURRENT) @@ -677,7 +678,7 @@ class NotificationUtils @Inject constructor(private val context: Context, val contentIntent = HomeActivity.newIntent(context, inviteNotificationRoomId = inviteNotifiableEvent.roomId) contentIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP // pending intent get reused by system, this will mess up the extra params, so put unique info to avoid that - contentIntent.data = Uri.parse("foobar://" + inviteNotifiableEvent.eventId) + contentIntent.data = createIgnoredUri(inviteNotifiableEvent.eventId) setContentIntent(PendingIntent.getActivity(context, 0, contentIntent, 0)) if (inviteNotifiableEvent.noisy) { @@ -716,7 +717,7 @@ class NotificationUtils @Inject constructor(private val context: Context, val contentIntent = HomeActivity.newIntent(context) contentIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP // pending intent get reused by system, this will mess up the extra params, so put unique info to avoid that - contentIntent.data = Uri.parse("foobar://" + simpleNotifiableEvent.eventId) + contentIntent.data = createIgnoredUri(simpleNotifiableEvent.eventId) setContentIntent(PendingIntent.getActivity(context, 0, contentIntent, 0)) if (simpleNotifiableEvent.noisy) { @@ -738,7 +739,7 @@ class NotificationUtils @Inject constructor(private val context: Context, val roomIntentTap = RoomDetailActivity.newIntent(context, RoomDetailArgs(roomId)) roomIntentTap.action = TAP_TO_VIEW_ACTION // pending intent get reused by system, this will mess up the extra params, so put unique info to avoid that - roomIntentTap.data = Uri.parse("foobar://openRoom?$roomId") + roomIntentTap.data = createIgnoredUri("openRoom?$roomId") // Recreate the back stack return TaskStackBuilder.create(context) @@ -750,7 +751,7 @@ class NotificationUtils @Inject constructor(private val context: Context, private fun buildOpenHomePendingIntentForSummary(): PendingIntent { val intent = HomeActivity.newIntent(context, clearNotification = true) intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP - intent.data = Uri.parse("foobar://tapSummary") + intent.data = createIgnoredUri("tapSummary") return PendingIntent.getActivity(context, Random.nextInt(1000), intent, PendingIntent.FLAG_UPDATE_CURRENT) } @@ -766,7 +767,7 @@ class NotificationUtils @Inject constructor(private val context: Context, if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { intent = Intent(context, NotificationBroadcastReceiver::class.java) intent.action = SMART_REPLY_ACTION - intent.data = Uri.parse("foobar://$roomId") + intent.data = createIgnoredUri(roomId) intent.putExtra(NotificationBroadcastReceiver.KEY_ROOM_ID, roomId) return PendingIntent.getBroadcast(context, System.currentTimeMillis().toInt(), intent, PendingIntent.FLAG_UPDATE_CURRENT) @@ -781,7 +782,7 @@ class NotificationUtils @Inject constructor(private val context: Context, // the action must be unique else the parameters are ignored quickReplyIntent.action = QUICK_LAUNCH_ACTION - quickReplyIntent.data = Uri.parse("foobar://$roomId") + quickReplyIntent.data = _root_ide_package_.im.vector.app.core.extensions.createIgnoredUri($roomId") return PendingIntent.getActivity(context, 0, quickReplyIntent, 0) } */ @@ -835,7 +836,7 @@ class NotificationUtils @Inject constructor(private val context: Context, private fun getDismissSummaryPendingIntent(): PendingIntent { val intent = Intent(context, NotificationBroadcastReceiver::class.java) intent.action = DISMISS_SUMMARY_ACTION - intent.data = Uri.parse("foobar://deleteSummary") + intent.data = createIgnoredUri("deleteSummary") return PendingIntent.getBroadcast(context.applicationContext, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT) } diff --git a/vector/src/main/java/im/vector/app/features/permalink/PermalinkHandler.kt b/vector/src/main/java/im/vector/app/features/permalink/PermalinkHandler.kt index a02cfe7517..90bcee3d04 100644 --- a/vector/src/main/java/im/vector/app/features/permalink/PermalinkHandler.kt +++ b/vector/src/main/java/im/vector/app/features/permalink/PermalinkHandler.kt @@ -20,6 +20,7 @@ import android.content.Context import android.net.Uri import im.vector.app.R import im.vector.app.core.di.ActiveSessionHolder +import im.vector.app.core.extensions.isIgnored import im.vector.app.core.utils.toast import im.vector.app.features.navigation.Navigator import im.vector.app.features.roomdirectory.roompreview.RoomPreviewData @@ -53,15 +54,19 @@ class PermalinkHandler @Inject constructor(private val activeSessionHolder: Acti navigationInterceptor: NavigationInterceptor? = null, buildTask: Boolean = false ): Boolean { - if (deepLink == null || !isPermalinkSupported(context, deepLink.toString())) { - return false - } - return tryOrNull { - withContext(Dispatchers.Default) { - val permalinkData = PermalinkParser.parse(deepLink) - handlePermalink(permalinkData, deepLink, context, navigationInterceptor, buildTask) + return when { + deepLink == null -> false + deepLink.isIgnored() -> true + !isPermalinkSupported(context, deepLink.toString()) -> false + else -> { + tryOrNull { + withContext(Dispatchers.Default) { + val permalinkData = PermalinkParser.parse(deepLink) + handlePermalink(permalinkData, deepLink, context, navigationInterceptor, buildTask) + } + } ?: false } - } ?: false + } } private suspend fun handlePermalink( @@ -115,8 +120,8 @@ class PermalinkHandler @Inject constructor(private val activeSessionHolder: Acti private fun isPermalinkSupported(context: Context, url: String): Boolean { return url.startsWith(PermalinkService.MATRIX_TO_URL_BASE) || context.resources.getStringArray(R.array.permalink_supported_hosts).any { - url.startsWith(it) - } + url.startsWith(it) + } } private suspend fun PermalinkData.RoomLink.getRoomId(): String? { From 325e78106e99212c79921bd0af4dd427d89dd7fb Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Mon, 25 Oct 2021 10:51:40 +0100 Subject: [PATCH 22/26] fixing strange ide extract --- .../im/vector/app/features/notifications/NotificationUtils.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt b/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt index 89db5e7d8f..f3b34e1269 100755 --- a/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt +++ b/vector/src/main/java/im/vector/app/features/notifications/NotificationUtils.kt @@ -782,7 +782,7 @@ class NotificationUtils @Inject constructor(private val context: Context, // the action must be unique else the parameters are ignored quickReplyIntent.action = QUICK_LAUNCH_ACTION - quickReplyIntent.data = _root_ide_package_.im.vector.app.core.extensions.createIgnoredUri($roomId") + quickReplyIntent.data = createIgnoredUri($roomId") return PendingIntent.getActivity(context, 0, quickReplyIntent, 0) } */ From 55c00a09750a062697252f868f2d05e28a47870e Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Mon, 25 Oct 2021 10:56:15 +0100 Subject: [PATCH 23/26] adding changelog entry --- changelog.d/4267.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/4267.bugfix diff --git a/changelog.d/4267.bugfix b/changelog.d/4267.bugfix new file mode 100644 index 0000000000..08aabd1e83 --- /dev/null +++ b/changelog.d/4267.bugfix @@ -0,0 +1 @@ +Fixing malformed link pop up when tapping on notifications \ No newline at end of file From b892331e42bda14a3cd1dbe4c59a2dc3bb280af1 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 25 Oct 2021 12:35:11 +0200 Subject: [PATCH 24/26] Towncrier --- CHANGES.md | 12 ++++++++++++ changelog.d/4267.bugfix | 1 - changelog.d/4276.bugfix | 1 - changelog.d/4279.bugfix | 1 - changelog.d/4283.bugfix | 1 - changelog.d/4313.bugfix | 1 - 6 files changed, 12 insertions(+), 5 deletions(-) delete mode 100644 changelog.d/4267.bugfix delete mode 100644 changelog.d/4276.bugfix delete mode 100644 changelog.d/4279.bugfix delete mode 100644 changelog.d/4283.bugfix delete mode 100644 changelog.d/4313.bugfix diff --git a/CHANGES.md b/CHANGES.md index 8de71eae62..bf855d66f9 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,15 @@ +Changes in Element v1.3.5 (2021-10-25) +====================================== + +Bugfixes 🐛 +---------- + - Fixing malformed link pop up when tapping on notifications ([#4267](https://github.com/vector-im/element-android/issues/4267)) + - Fix Broken EditText when using FromEditTextItem ([#4276](https://github.com/vector-im/element-android/issues/4276)) + - Fix crash when clicking on ViewEvent source actions ([#4279](https://github.com/vector-im/element-android/issues/4279)) + - Fix voice message record button wrong visibility ([#4283](https://github.com/vector-im/element-android/issues/4283)) + - Fix unread marker not showing ([#4313](https://github.com/vector-im/element-android/issues/4313)) + + Changes in Element v1.3.4 (2021-10-20) ====================================== diff --git a/changelog.d/4267.bugfix b/changelog.d/4267.bugfix deleted file mode 100644 index 08aabd1e83..0000000000 --- a/changelog.d/4267.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fixing malformed link pop up when tapping on notifications \ No newline at end of file diff --git a/changelog.d/4276.bugfix b/changelog.d/4276.bugfix deleted file mode 100644 index 8cb2ed6977..0000000000 --- a/changelog.d/4276.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix Broken EditText when using FromEditTextItem diff --git a/changelog.d/4279.bugfix b/changelog.d/4279.bugfix deleted file mode 100644 index 1b0ea424fa..0000000000 --- a/changelog.d/4279.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix crash when clicking on ViewEvent source actions \ No newline at end of file diff --git a/changelog.d/4283.bugfix b/changelog.d/4283.bugfix deleted file mode 100644 index 030418c405..0000000000 --- a/changelog.d/4283.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix voice message record button wrong visibility \ No newline at end of file diff --git a/changelog.d/4313.bugfix b/changelog.d/4313.bugfix deleted file mode 100644 index da28469ed0..0000000000 --- a/changelog.d/4313.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix unread marker not showing \ No newline at end of file From 201d558925bb5ed395a8b93555108dd52990f3ad Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 25 Oct 2021 12:37:41 +0200 Subject: [PATCH 25/26] Update previous Changelog (the file was not in the correct folder) --- CHANGES.md | 1 + newsfragment/3313.feature | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 newsfragment/3313.feature diff --git a/CHANGES.md b/CHANGES.md index bf855d66f9..d3bc0cc414 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,6 +17,7 @@ Features ✨ ---------- - Implement /part command, with or without parameter ([#2909](https://github.com/vector-im/element-android/issues/2909)) - Handle Presence support, for Direct Message room ([#4090](https://github.com/vector-im/element-android/issues/4090)) + - Priority conversations for Android 11+ ([#3313](https://github.com/vector-im/element-android/issues/3313)) Bugfixes 🐛 ---------- diff --git a/newsfragment/3313.feature b/newsfragment/3313.feature deleted file mode 100644 index 3d243fa1ef..0000000000 --- a/newsfragment/3313.feature +++ /dev/null @@ -1 +0,0 @@ -Priority conversations for Android 11+ From f877965550edf2db874555ad23eb0b19519459ce Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 25 Oct 2021 12:38:53 +0200 Subject: [PATCH 26/26] Fastlane files --- fastlane/metadata/android/en-US/changelogs/40103040.txt | 2 +- fastlane/metadata/android/en-US/changelogs/40103050.txt | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/40103050.txt diff --git a/fastlane/metadata/android/en-US/changelogs/40103040.txt b/fastlane/metadata/android/en-US/changelogs/40103040.txt index 06b32c8dff..a6af2efe00 100644 --- a/fastlane/metadata/android/en-US/changelogs/40103040.txt +++ b/fastlane/metadata/android/en-US/changelogs/40103040.txt @@ -1,2 +1,2 @@ -Main changes in this version: Add Presence support, for Direct Message room (note: presence is disabled on matrix.org. Add again Android Auto support. +Main changes in this version: Add Presence support, for Direct Message room (note: presence is disabled on matrix.org). Add again Android Auto support. Full changelog: https://github.com/vector-im/element-android/releases/tag/v1.3.4 \ No newline at end of file diff --git a/fastlane/metadata/android/en-US/changelogs/40103050.txt b/fastlane/metadata/android/en-US/changelogs/40103050.txt new file mode 100644 index 0000000000..93227f1a6d --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/40103050.txt @@ -0,0 +1,2 @@ +Main changes in this version: Add Presence support, for Direct Message room (note: presence is disabled on matrix.org). Add again Android Auto support. +Full changelog: https://github.com/vector-im/element-android/releases/tag/v1.3.5 \ No newline at end of file