From 8784b7d3b7484fe346acf509bd0be148b7b3ced3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Jan 2023 18:18:15 +0000 Subject: [PATCH 01/16] Bump wysiwyg from 0.13.0 to 0.14.0 (#7902) Bumps [wysiwyg](https://github.com/matrix-org/matrix-wysiwyg) from 0.13.0 to 0.14.0. - [Release notes](https://github.com/matrix-org/matrix-wysiwyg/releases) - [Changelog](https://github.com/matrix-org/matrix-rich-text-editor/blob/main/CHANGELOG.md) - [Commits](https://github.com/matrix-org/matrix-wysiwyg/compare/0.13.0...0.14.0) --- updated-dependencies: - dependency-name: io.element.android:wysiwyg dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 76ff9b0c6f..e970457e7c 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -101,7 +101,7 @@ ext.libs = [ ], element : [ 'opusencoder' : "io.element.android:opusencoder:1.1.0", - 'wysiwyg' : "io.element.android:wysiwyg:0.13.0" + 'wysiwyg' : "io.element.android:wysiwyg:0.14.0" ], squareup : [ 'moshi' : "com.squareup.moshi:moshi:$moshi", From d0880095eab859a60dcfb9d33b9a4942d8fe009b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Jan 2023 23:03:28 +0000 Subject: [PATCH 02/16] Bump dependency-check-gradle from 7.4.3 to 7.4.4 Bumps dependency-check-gradle from 7.4.3 to 7.4.4. --- updated-dependencies: - dependency-name: org.owasp:dependency-check-gradle dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 7e5d659c8b..cdbfcc44b7 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ buildscript { classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.5.0.2730' classpath 'com.google.android.gms:oss-licenses-plugin:0.10.5' classpath "com.likethesalad.android:stem-plugin:2.2.3" - classpath 'org.owasp:dependency-check-gradle:7.4.3' + classpath 'org.owasp:dependency-check-gradle:7.4.4' classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.7.20" classpath "org.jetbrains.kotlinx:kotlinx-knit:0.4.0" classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3' From c2c8df9e8eb95c360f27dde0cdffbb7898394804 Mon Sep 17 00:00:00 2001 From: Vri Date: Fri, 6 Jan 2023 17:22:57 +0000 Subject: [PATCH 03/16] Translated using Weblate (German) Currently translated at 100.0% (2585 of 2585 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/de/ --- library/ui-strings/src/main/res/values-de/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/ui-strings/src/main/res/values-de/strings.xml b/library/ui-strings/src/main/res/values-de/strings.xml index 3f2ea694ca..52b8f0c716 100644 --- a/library/ui-strings/src/main/res/values-de/strings.xml +++ b/library/ui-strings/src/main/res/values-de/strings.xml @@ -2889,4 +2889,13 @@ Link erstellen Link Text + Dein Zugriffstoken gewährt vollen Zugriff auf dein Konto. Teile ihn mit niemandem. + Zugriffstoken + Unsortierte Liste umschalten + Nummerierte Liste umschalten + In diesem Raum gibt es noch keine abgeschlossenen Umfragen + Vergangene Umfragen + In diesem Raum gibt es keine aktiven Umfragen + Aktive Umfragen + Umfrageverlauf \ No newline at end of file From c0010140a3e8909132ebad7252d5e7532a2dad04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Sat, 7 Jan 2023 03:09:19 +0000 Subject: [PATCH 04/16] Translated using Weblate (Estonian) Currently translated at 99.6% (2577 of 2585 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/et/ --- library/ui-strings/src/main/res/values-et/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/ui-strings/src/main/res/values-et/strings.xml b/library/ui-strings/src/main/res/values-et/strings.xml index 490145b5cc..1e8e2b989e 100644 --- a/library/ui-strings/src/main/res/values-et/strings.xml +++ b/library/ui-strings/src/main/res/values-et/strings.xml @@ -2881,4 +2881,13 @@ Link Loo link Muuda linki + Küsitluste ajalugu + Käimasolevad küsitlused + Selles jututoas pole käimasolevaid küsitlusi + Varasemad küsitlused + Selles jututoas pole varasemaid küsitlusi + Lülita nummerdatud loend sisse/välja + Lülita täpploend sisse/välja + Pääsuluba + Sinu pääsuluba annab täismahulise ligipääsu sinu kasutajakontole. Palun ära jaga seda teistega. \ No newline at end of file From 8c3fcf989ea8d483b46af7e91ffd6d7c2d947f39 Mon Sep 17 00:00:00 2001 From: Danial Behzadi Date: Sat, 7 Jan 2023 00:08:56 +0000 Subject: [PATCH 05/16] Translated using Weblate (Persian) Currently translated at 100.0% (2585 of 2585 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/fa/ --- library/ui-strings/src/main/res/values-fa/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/ui-strings/src/main/res/values-fa/strings.xml b/library/ui-strings/src/main/res/values-fa/strings.xml index 56dbe912c1..4db3812237 100644 --- a/library/ui-strings/src/main/res/values-fa/strings.xml +++ b/library/ui-strings/src/main/res/values-fa/strings.xml @@ -2890,4 +2890,13 @@ پیوند متن تنظیم پیوند + ژتون دسترسیتان، دسترسی کامل به حسابتان را می‌دهد. با هیچ‌کس هم‌رسانیش نکنید. + ژتون دسترسی + تغییر وضعیت سیاههٔ گلوله‌ای + تغییر وضعیت سیاههٔ شماره‌دار + هیچ‌ نظرسنجی قدیمی‌ای در این اتاق وجود ندارد + نظرسنجی‌های گذشته + هیچ نظرسنجی فعّالی در این اتاق وجود ندارد + نظرسنجی‌های فعّال + تاریخچهٔ نظرسنجی‌ها \ No newline at end of file From 6840e52d30b2dc23de26faa9b142ac9efe0ff541 Mon Sep 17 00:00:00 2001 From: Glandos Date: Sat, 7 Jan 2023 13:34:15 +0000 Subject: [PATCH 06/16] Translated using Weblate (French) Currently translated at 100.0% (2585 of 2585 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/fr/ --- library/ui-strings/src/main/res/values-fr/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/ui-strings/src/main/res/values-fr/strings.xml b/library/ui-strings/src/main/res/values-fr/strings.xml index 33f1410502..cb1684f834 100644 --- a/library/ui-strings/src/main/res/values-fr/strings.xml +++ b/library/ui-strings/src/main/res/values-fr/strings.xml @@ -2890,4 +2890,13 @@ Lien Texte Définir un lien + Votre jeton d’accès donne un accès intégral à votre compte. Ne le partagez avec personne. + Jeton d’accès + (Dés)activer la liste à puce + (Dés)activer la liste numérotée + Il n’y a aucun ancien sondage dans ce salon + Anciens sondages + Il n’y a aucun sondage en cours dans ce salon + Sondages actifs + Historique des sondages \ No newline at end of file From 1deceaecdb068ed9c5a7b76e0b0b0d6dc0f51c22 Mon Sep 17 00:00:00 2001 From: Linerly Date: Fri, 6 Jan 2023 17:52:08 +0000 Subject: [PATCH 07/16] Translated using Weblate (Indonesian) Currently translated at 100.0% (2585 of 2585 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/id/ --- library/ui-strings/src/main/res/values-in/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/ui-strings/src/main/res/values-in/strings.xml b/library/ui-strings/src/main/res/values-in/strings.xml index 8715aa84e0..8896037037 100644 --- a/library/ui-strings/src/main/res/values-in/strings.xml +++ b/library/ui-strings/src/main/res/values-in/strings.xml @@ -2836,4 +2836,13 @@ Di masa mendatang proses verifikasi ini akan dimutakhirkan. Tautan Teks Atur tautan + Token akses Anda memberikan akses penuh ke akun Anda. Jangan bagikan dengan siapa pun. + Token Akses + Saklar daftar bulat + Saklar daftar bernomor + Tidak ada pemungutan suara sebelumnya di ruangan ini + Pemungutan suara sebelumnya + Tidak ada pemungutan suara yang aktif di ruangan ini + Pemungutan suara aktif + Riwayat pemungutan suara \ No newline at end of file From f5c489e5f70e692ac071b6b67ccb72f4b2463eff Mon Sep 17 00:00:00 2001 From: random Date: Fri, 6 Jan 2023 17:12:48 +0000 Subject: [PATCH 08/16] Translated using Weblate (Italian) Currently translated at 100.0% (2585 of 2585 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/it/ --- library/ui-strings/src/main/res/values-it/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/ui-strings/src/main/res/values-it/strings.xml b/library/ui-strings/src/main/res/values-it/strings.xml index b1721449ad..729b826982 100644 --- a/library/ui-strings/src/main/res/values-it/strings.xml +++ b/library/ui-strings/src/main/res/values-it/strings.xml @@ -2881,4 +2881,13 @@ Collegamento Testo Imposta collegamento + Il tuo token di accesso ti dà l\'accesso al tuo account. Non condividerlo con nessuno. + Token di accesso + Attiva/disattiva elenco numerato + Attiva/disattiva elenco puntato + In questa stanza non ci sono sondaggi passati + Sondaggi passati + In questa stanza non ci sono sondaggi attivi + Sondaggi attivi + Cronologia sondaggi \ No newline at end of file From e7e8e485a05a5f61f70ec7d6e708cd16c42d16f5 Mon Sep 17 00:00:00 2001 From: Jozef Gaal Date: Fri, 6 Jan 2023 17:55:33 +0000 Subject: [PATCH 09/16] Translated using Weblate (Slovak) Currently translated at 100.0% (2585 of 2585 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/sk/ --- library/ui-strings/src/main/res/values-sk/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/ui-strings/src/main/res/values-sk/strings.xml b/library/ui-strings/src/main/res/values-sk/strings.xml index d46b4e8898..34155ba6a5 100644 --- a/library/ui-strings/src/main/res/values-sk/strings.xml +++ b/library/ui-strings/src/main/res/values-sk/strings.xml @@ -2946,4 +2946,13 @@ Odkaz Text Nastaviť odkaz + Váš prístupový token poskytuje úplný prístup k vášmu účtu. S nikým ho nezdieľajte. + Prístupový token + Prepnúť na číslovaný zoznam + Prepnúť zoznam s odrážkami + V tejto miestnosti nie sú žiadne predchádzajúce ankety + Predchádzajúce ankety + V tejto miestnosti nie sú žiadne aktívne ankety + Aktívne ankety + História ankety \ No newline at end of file From dd148443b28eb65ad4671c2df1018128ef3a7e6a Mon Sep 17 00:00:00 2001 From: Besnik Bleta Date: Fri, 6 Jan 2023 16:53:23 +0000 Subject: [PATCH 10/16] Translated using Weblate (Albanian) Currently translated at 99.2% (2566 of 2585 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/sq/ --- library/ui-strings/src/main/res/values-sq/strings.xml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/library/ui-strings/src/main/res/values-sq/strings.xml b/library/ui-strings/src/main/res/values-sq/strings.xml index b170d306e4..c3f9d53c99 100644 --- a/library/ui-strings/src/main/res/values-sq/strings.xml +++ b/library/ui-strings/src/main/res/values-sq/strings.xml @@ -2504,7 +2504,7 @@ %s \nduket paksa si i zbrazët. Jini në gjendje të incizoni dhe dërgoni transmetim zanor në rrjedhën kohore të dhomës. - Aktivizoni transmetim zanor (nën zhvillim aktiv) + Aktivizoni transmetim zanor Aktivizo regjistrim hollësish klienti Shihini më qartë dhe kontrolloni më mirë krejt sesionet tuaj. Aktivizo përgjegjës të ri sesionesh @@ -2874,4 +2874,12 @@ Krijoni një lidhje Lidhje Tekst + Tokeni juaj i hyrjeve jep hyrje të plotë në llogarinë tuaj. Mos ia jepni kujt. + Token Hyrjesh + S’ka pyetësorë të kaluar në këtë dhomë + Pyetësorë të kaluar + S’ka pyetësorë aktivë në këtë dhomë + Pyetësorë aktivë + mundësia fituese + Historik pyetësorësh \ No newline at end of file From 9ae418ddeaa0d0e1705073bfecf160cf9c98d956 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Fri, 6 Jan 2023 17:47:53 +0000 Subject: [PATCH 11/16] Translated using Weblate (Ukrainian) Currently translated at 100.0% (2585 of 2585 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/uk/ --- library/ui-strings/src/main/res/values-uk/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/ui-strings/src/main/res/values-uk/strings.xml b/library/ui-strings/src/main/res/values-uk/strings.xml index ebe2dcaf4d..2ee9685c76 100644 --- a/library/ui-strings/src/main/res/values-uk/strings.xml +++ b/library/ui-strings/src/main/res/values-uk/strings.xml @@ -3002,4 +3002,13 @@ Посилання Текст Налаштувати посилання + Ваш токен доступу надає повний доступ до вашого облікового запису. Не передавайте його нікому. + Токен доступу + Перемкнути на маркований список + Перемкнути на нумерований список + У цій кімнаті ще не проводилися опитування + Минулі опитування + У цій кімнаті немає активних опитувань + Активні опитування + Історія опитувань \ No newline at end of file From 1dec87356f1ff4c628527f1a1a28dc4240d4453c Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Sat, 7 Jan 2023 01:31:47 +0000 Subject: [PATCH 12/16] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (2585 of 2585 strings) Translation: Element Android/Element Android App Translate-URL: https://translate.element.io/projects/element-android/element-app/zh_Hant/ --- .../ui-strings/src/main/res/values-zh-rTW/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/library/ui-strings/src/main/res/values-zh-rTW/strings.xml b/library/ui-strings/src/main/res/values-zh-rTW/strings.xml index 934f5aa47b..14729c5b44 100644 --- a/library/ui-strings/src/main/res/values-zh-rTW/strings.xml +++ b/library/ui-strings/src/main/res/values-zh-rTW/strings.xml @@ -2834,4 +2834,13 @@ 連結 文字 設定連結 + 您的存取權杖可以完整存取您的帳號。不要將其與其他人分享。 + 存取權杖 + 切換項目符號清單 + 切換編號清單 + 此聊天室沒有過去的投票 + 過去的投票 + 此聊天室沒有正在進行的投票 + 進行中的投票 + 投票歷史紀錄 \ No newline at end of file From 096a8fdd3db894d16fc7297c129cbe0cb83c163b Mon Sep 17 00:00:00 2001 From: random Date: Fri, 6 Jan 2023 17:13:09 +0000 Subject: [PATCH 13/16] Translated using Weblate (Italian) Currently translated at 100.0% (89 of 89 strings) Translation: Element Android/Element Android Store Translate-URL: https://translate.element.io/projects/element-android/element-store/it/ --- fastlane/metadata/android/it-IT/changelogs/40105160.txt | 2 ++ fastlane/metadata/android/it-IT/changelogs/40105180.txt | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 fastlane/metadata/android/it-IT/changelogs/40105160.txt create mode 100644 fastlane/metadata/android/it-IT/changelogs/40105180.txt diff --git a/fastlane/metadata/android/it-IT/changelogs/40105160.txt b/fastlane/metadata/android/it-IT/changelogs/40105160.txt new file mode 100644 index 0000000000..ab24842e82 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/40105160.txt @@ -0,0 +1,2 @@ +Modifiche principali in questa versione: i messaggi in conversazioni sono attivi in modo predefinito. +Cronologia completa: https://github.com/vector-im/element-android/releases diff --git a/fastlane/metadata/android/it-IT/changelogs/40105180.txt b/fastlane/metadata/android/it-IT/changelogs/40105180.txt new file mode 100644 index 0000000000..ab24842e82 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/40105180.txt @@ -0,0 +1,2 @@ +Modifiche principali in questa versione: i messaggi in conversazioni sono attivi in modo predefinito. +Cronologia completa: https://github.com/vector-im/element-android/releases From ce0c514daef9b1b68ab59c0599c5d3a9a799a823 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 9 Jan 2023 11:55:42 +0100 Subject: [PATCH 14/16] Fix link on doc. --- .../android/sdk/api/session/room/threads/ThreadsService.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/threads/ThreadsService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/threads/ThreadsService.kt index bb6f6b51d3..dfa6cdeec1 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/threads/ThreadsService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/threads/ThreadsService.kt @@ -23,7 +23,7 @@ import org.matrix.android.sdk.api.session.room.threads.model.ThreadSummary * This interface defines methods to interact with thread related features. * It's the dynamic threads implementation and the homeserver must return * a capability entry for threads. If the server do not support m.thread - * then [ThreadsLocalService] should be used instead + * then [org.matrix.android.sdk.api.session.room.threads.local.ThreadsLocalService] should be used instead */ interface ThreadsService { From ca3d441de03015dd0039a97741c2c5bf95228bb0 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 9 Jan 2023 14:06:12 +0100 Subject: [PATCH 15/16] Handle error in the thread list request. --- .../src/main/res/values/strings.xml | 1 + .../android/sdk/api/failure/Extensions.kt | 3 ++ .../room/threads/FetchThreadsResult.kt | 1 - .../list/viewmodel/ThreadListViewActions.kt | 23 ++++++++++ .../list/viewmodel/ThreadListViewEvents.kt | 23 ++++++++++ .../list/viewmodel/ThreadListViewModel.kt | 44 ++++++++++++------- .../threads/list/views/ThreadListFragment.kt | 39 ++++++++++++++++ 7 files changed, 116 insertions(+), 18 deletions(-) create mode 100644 vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewActions.kt create mode 100644 vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewEvents.kt diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml index 7c75f36a3b..d9f94ba27b 100644 --- a/library/ui-strings/src/main/res/values/strings.xml +++ b/library/ui-strings/src/main/res/values/strings.xml @@ -794,6 +794,7 @@ Shows all threads you’ve participated in Keep discussions organized with threads Threads help keep your conversations on-topic and easy to track. + You\'re homeserver does not support listing threads yet. Tip: Long tap a message and use “%s”. From a Thread diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/failure/Extensions.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/failure/Extensions.kt index 5b41ddaaec..165dcf079e 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/failure/Extensions.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/failure/Extensions.kt @@ -25,6 +25,9 @@ import java.io.IOException import java.net.UnknownHostException import javax.net.ssl.HttpsURLConnection +fun Throwable.is400() = this is Failure.ServerError && + httpCode == HttpsURLConnection.HTTP_BAD_REQUEST + fun Throwable.is401() = this is Failure.ServerError && httpCode == HttpsURLConnection.HTTP_UNAUTHORIZED && /* 401 */ error.code == MatrixError.M_UNAUTHORIZED diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/threads/FetchThreadsResult.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/threads/FetchThreadsResult.kt index 5d4d67a65e..e3c5deeee7 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/threads/FetchThreadsResult.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/threads/FetchThreadsResult.kt @@ -19,5 +19,4 @@ package org.matrix.android.sdk.api.session.room.threads sealed class FetchThreadsResult { data class ShouldFetchMore(val nextBatch: String) : FetchThreadsResult() object ReachedEnd : FetchThreadsResult() - object Failed : FetchThreadsResult() } diff --git a/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewActions.kt b/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewActions.kt new file mode 100644 index 0000000000..7dda460a5e --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewActions.kt @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023 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.features.home.room.threads.list.viewmodel + +import im.vector.app.core.platform.VectorViewModelAction + +sealed interface ThreadListViewActions : VectorViewModelAction { + object TryAgain : ThreadListViewActions +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewEvents.kt b/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewEvents.kt new file mode 100644 index 0000000000..3e9af034f4 --- /dev/null +++ b/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewEvents.kt @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023 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.features.home.room.threads.list.viewmodel + +import im.vector.app.core.platform.VectorViewEvents + +sealed interface ThreadListViewEvents : VectorViewEvents { + data class ShowError(val throwable: Throwable) : ThreadListViewEvents +} diff --git a/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewModel.kt index 7124727bb7..f31f19849c 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/threads/list/viewmodel/ThreadListViewModel.kt @@ -27,8 +27,6 @@ import com.airbnb.mvrx.ViewModelContext import dagger.assisted.Assisted import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject -import im.vector.app.core.platform.EmptyAction -import im.vector.app.core.platform.EmptyViewEvents import im.vector.app.core.platform.VectorViewModel import im.vector.app.features.analytics.AnalyticsTracker import im.vector.app.features.analytics.extensions.toAnalyticsInteraction @@ -52,7 +50,7 @@ class ThreadListViewModel @AssistedInject constructor( @Assisted val initialState: ThreadListViewState, private val analyticsTracker: AnalyticsTracker, private val session: Session, -) : VectorViewModel(initialState) { +) : VectorViewModel(initialState) { private val room = session.getRoom(initialState.roomId) @@ -93,7 +91,17 @@ class ThreadListViewModel @AssistedInject constructor( fetchAndObserveThreads() } - override fun handle(action: EmptyAction) {} + override fun handle(action: ThreadListViewActions) { + when (action) { + ThreadListViewActions.TryAgain -> handleTryAgain() + } + } + + private fun handleTryAgain() { + viewModelScope.launch { + fetchNextPage() + } + } /** * Observing thread list with respect to homeserver capabilities. @@ -181,21 +189,23 @@ class ThreadListViewModel @AssistedInject constructor( true -> ThreadFilter.PARTICIPATED false -> ThreadFilter.ALL } - room?.threadsService()?.fetchThreadList( - nextBatchId = nextBatchId, - limit = defaultPagedListConfig.pageSize, - filter = filter, - ).let { result -> - when (result) { - is FetchThreadsResult.ReachedEnd -> { - hasReachedEnd = true - } - is FetchThreadsResult.ShouldFetchMore -> { - nextBatchId = result.nextBatch - } - else -> { + try { + room?.threadsService()?.fetchThreadList( + nextBatchId = nextBatchId, + limit = defaultPagedListConfig.pageSize, + filter = filter, + )?.let { result -> + when (result) { + is FetchThreadsResult.ReachedEnd -> { + hasReachedEnd = true + } + is FetchThreadsResult.ShouldFetchMore -> { + nextBatchId = result.nextBatch + } } } + } catch (throwable: Throwable) { + _viewEvents.post(ThreadListViewEvents.ShowError(throwable)) } } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/threads/list/views/ThreadListFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/threads/list/views/ThreadListFragment.kt index 318c250906..1e67941856 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/threads/list/views/ThreadListFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/threads/list/views/ThreadListFragment.kt @@ -26,6 +26,7 @@ import androidx.core.view.isVisible import com.airbnb.mvrx.args import com.airbnb.mvrx.fragmentViewModel import com.airbnb.mvrx.withState +import com.google.android.material.dialog.MaterialAlertDialogBuilder import dagger.hilt.android.AndroidEntryPoint import im.vector.app.R import im.vector.app.core.extensions.cleanup @@ -41,10 +42,14 @@ import im.vector.app.features.home.room.threads.arguments.ThreadListArgs import im.vector.app.features.home.room.threads.arguments.ThreadTimelineArgs import im.vector.app.features.home.room.threads.list.viewmodel.ThreadListController import im.vector.app.features.home.room.threads.list.viewmodel.ThreadListPagedController +import im.vector.app.features.home.room.threads.list.viewmodel.ThreadListViewActions +import im.vector.app.features.home.room.threads.list.viewmodel.ThreadListViewEvents import im.vector.app.features.home.room.threads.list.viewmodel.ThreadListViewModel import im.vector.app.features.home.room.threads.list.viewmodel.ThreadListViewState import im.vector.app.features.rageshake.BugReporter import im.vector.app.features.rageshake.ReportType +import org.matrix.android.sdk.api.failure.is400 +import org.matrix.android.sdk.api.failure.is404 import org.matrix.android.sdk.api.session.room.threads.model.ThreadSummary import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent import org.matrix.android.sdk.api.util.MatrixItem @@ -126,11 +131,45 @@ class ThreadListFragment : views.threadListRecyclerView.configureWith(legacyThreadListController, TimelineItemAnimator(), hasFixedSize = false) legacyThreadListController.listener = this } + observeViewEvents() + } + + private fun observeViewEvents() { + threadListViewModel.observeViewEvents { + when (it) { + is ThreadListViewEvents.ShowError -> handleShowError(it) + } + } + } + + private fun handleShowError(event: ThreadListViewEvents.ShowError) { + val error = event.throwable + MaterialAlertDialogBuilder(requireActivity()) + .setTitle(R.string.dialog_title_error) + .also { + if (error.is400() || error.is404()) { + // Outdated Homeserver + it.setMessage(R.string.thread_list_not_available) + it.setPositiveButton(R.string.ok) { _, _ -> + requireActivity().finish() + } + } else { + // Other error, can retry + // (Can happen on first request or on pagination request) + it.setMessage(errorFormatter.toHumanReadable(error)) + it.setPositiveButton(R.string.ok, null) + it.setNegativeButton(R.string.global_retry) { _, _ -> + threadListViewModel.handle(ThreadListViewActions.TryAgain) + } + } + } + .show() } override fun onDestroyView() { views.threadListRecyclerView.cleanup() threadListController.listener = null + legacyThreadListController.listener = null super.onDestroyView() } From 81234b3a5bc94a3a5ee9011f92f76044856cad71 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 9 Jan 2023 14:37:35 +0100 Subject: [PATCH 16/16] Changelog --- changelog.d/7913.bugfix | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/7913.bugfix diff --git a/changelog.d/7913.bugfix b/changelog.d/7913.bugfix new file mode 100644 index 0000000000..32b821f14d --- /dev/null +++ b/changelog.d/7913.bugfix @@ -0,0 +1 @@ +Handle network error on API `rooms/{roomId}/threads`