diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index f6f331a4b8..e74dcbf00c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -43,7 +43,7 @@ jobs:
- name: Assemble ${{ matrix.target }} debug apk
run: ./gradlew assemble${{ matrix.target }}Debug $CI_GRADLE_ARG_PROPERTIES
- name: Upload ${{ matrix.target }} debug APKs
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: ${{ matrix.target }}-debug
path: |
@@ -81,7 +81,7 @@ jobs:
- name: Assemble ${{ matrix.target }} unsigned apk
run: ./gradlew clean assemble${{ matrix.target }}Release $CI_GRADLE_ARG_PROPERTIES
- name: Upload ${{ matrix.target }} unsigned APKs
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: ${{ matrix.target }}-release-unsigned
path: |
@@ -97,7 +97,7 @@ jobs:
steps:
- name: Obtain apk from artifact
id: download
- uses: actions/download-artifact@v3
+ uses: actions/download-artifact@v4
with:
name: ${{ env.TARGET_NAME }}-release-unsigned
- name: Show apks in artifact
@@ -112,7 +112,7 @@ jobs:
# Don't fail when finding trackers so they can be reported later
args: /github/workspace/${{ env.TARGET_FOLDER }}/release/${{ steps.list-apks.outputs.FIRST_APK_NAME }} -j -o /github/workspace/exodus.json -e 0
- name: Upload exodus json report
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: exodus.json
path: |
diff --git a/.github/workflows/post-pr.yml b/.github/workflows/post-pr.yml
index 413352d542..1de3cb8972 100644
--- a/.github/workflows/post-pr.yml
+++ b/.github/workflows/post-pr.yml
@@ -79,7 +79,7 @@ jobs:
adb logcat >> emulator.log &
./gradlew $CI_GRADLE_ARG_PROPERTIES connectedGplayRustCryptoDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=im.vector.app.ui.UiAllScreensSanityTest || (adb pull storage/emulated/0/Pictures/failure_screenshots && exit 1 )
- name: Upload Test Report Log
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
if: always()
with:
name: uitest-error-results
diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml
index 491748c53f..d2d8c21380 100644
--- a/.github/workflows/quality.yml
+++ b/.github/workflows/quality.yml
@@ -77,7 +77,7 @@ jobs:
./gradlew vector-app:lintFdroidBtchapWithdmvoipWithoutpinningRelease $CI_GRADLE_ARG_PROPERTIES
- name: Upload reports
if: always()
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: linting-report
path: |
@@ -120,7 +120,7 @@ jobs:
run: ./gradlew dependencyCheckAnalyze $CI_GRADLE_ARG_PROPERTIES
- name: Upload dependency analysis
if: always()
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: dependency-analysis
path: build/reports/dependency-check-report.html
diff --git a/.github/workflows/tests-rust.yml b/.github/workflows/tests-rust.yml
index ef7dc0fb5f..367d4574e5 100644
--- a/.github/workflows/tests-rust.yml
+++ b/.github/workflows/tests-rust.yml
@@ -25,11 +25,11 @@ jobs:
group: ${{ github.ref == 'refs/heads/main' && format('unit-tests-main-rust-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('unit-tests-develop-rust-{0}', github.sha) || format('unit-tests-rust-{0}', github.ref) }}
cancel-in-progress: true
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
with:
lfs: true
fetch-depth: 0
- - uses: actions/setup-java@v3
+ - uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: '11'
@@ -78,7 +78,7 @@ jobs:
### # ./gradlew generateCoverageReport $CI_GRADLE_ARG_PROPERTIES
- name: Upload Rust Integration Test Report Log
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
if: always()
with:
name: integration-test-rust-error-results
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
index ea12a2f170..986def8362 100644
--- a/.github/workflows/tests.yml
+++ b/.github/workflows/tests.yml
@@ -46,7 +46,7 @@ jobs:
#- name: Archive Screenshot Results on Error
# if: failure()
- # uses: actions/upload-artifact@v3
+ # uses: actions/upload-artifact@v4
# with:
# name: screenshot-results
# path: |
@@ -99,7 +99,7 @@ jobs:
### ./gradlew generateCoverageReport $CI_GRADLE_ARG_PROPERTIES
- name: Upload Integration Test Report Log
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
if: always()
with:
name: integration-test-error-results
diff --git a/ELEMENT_CHANGES.md b/ELEMENT_CHANGES.md
index a7dd26bb9a..195008a0c2 100644
--- a/ELEMENT_CHANGES.md
+++ b/ELEMENT_CHANGES.md
@@ -1,3 +1,11 @@
+Changes in Element v1.6.32 (2025-02-18)
+=======================================
+
+Other changes
+-------------
+ - Add action to report room. ([#8998](https://github.com/element-hq/element-android/issues/8998))
+
+
Changes in Element v1.6.30 (2025-02-04)
=======================================
diff --git a/build.gradle b/build.gradle
index 6f6635d303..0d5e1493a2 100644
--- a/build.gradle
+++ b/build.gradle
@@ -29,9 +29,9 @@ buildscript {
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:4.0.0.2929'
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.6'
classpath "com.likethesalad.android:stem-plugin:2.9.0"
- classpath 'org.owasp:dependency-check-gradle:11.1.0'
+ classpath 'org.owasp:dependency-check-gradle:12.1.0'
classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.8.10"
- classpath "org.jetbrains.kotlinx:kotlinx-knit:0.4.0"
+ classpath "org.jetbrains.kotlinx:kotlinx-knit:0.5.0"
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3'
classpath libs.squareup.paparazziPlugin
// NOTE: Do not place your application dependencies here; they belong
diff --git a/changelog.d/1150.improvements b/changelog.d/1150.improvements
new file mode 100644
index 0000000000..269f5fe825
--- /dev/null
+++ b/changelog.d/1150.improvements
@@ -0,0 +1 @@
+Rebase against Element-Android v1.6.32
\ No newline at end of file
diff --git a/docs/identity_server.md b/docs/identity_server.md
index a1ee86cb19..eb833d9472 100644
--- a/docs/identity_server.md
+++ b/docs/identity_server.md
@@ -10,7 +10,7 @@
* [Settings](#settings)
* [Discovery screen](#discovery-screen)
* [Set identity server screen](#set-identity-server-screen)
-* [Ref:](#ref:)
+* [Ref:](#ref)
diff --git a/docs/integration_tests.md b/docs/integration_tests.md
index b5a830e7ff..dbd3ce2b68 100644
--- a/docs/integration_tests.md
+++ b/docs/integration_tests.md
@@ -8,7 +8,7 @@
* [Stop Synapse](#stop-synapse)
* [Troubleshoot](#troubleshoot)
* [Android Emulator does cannot reach the homeserver](#android-emulator-does-cannot-reach-the-homeserver)
- * [Tests partially run but some fail with "Unable to contact localhost:8080"](#tests-partially-run-but-some-fail-with-"unable-to-contact-localhost:8080")
+ * [Tests partially run but some fail with "Unable to contact localhost:8080"](#tests-partially-run-but-some-fail-with-"unable-to-contact-localhost8080")
* [virtualenv command fails](#virtualenv-command-fails)
diff --git a/docs/signin.md b/docs/signin.md
index 65e305389f..901e32becc 100644
--- a/docs/signin.md
+++ b/docs/signin.md
@@ -8,7 +8,7 @@ This document describes the flow of signin to a homeserver, and also the flow wh
* [Get the flow](#get-the-flow)
* [Login with username](#login-with-username)
* [Incorrect password](#incorrect-password)
- * [Correct password:](#correct-password:)
+ * [Correct password](#correct-password)
* [Login with email](#login-with-email)
* [Unknown email](#unknown-email)
* [Known email, wrong password](#known-email-wrong-password)
@@ -76,7 +76,7 @@ curl -X POST --data $'{"identifier":{"type":"m.id.user","user":"alice"},"passwor
}
```
-#### Correct password:
+#### Correct password
We get credential (200)
diff --git a/docs/signup.md b/docs/signup.md
index 0b01338965..1fae477523 100644
--- a/docs/signup.md
+++ b/docs/signup.md
@@ -8,13 +8,13 @@ This document describes the flow of registration to a homeserver. Examples come
* [Sign up flows](#sign-up-flows)
* [First step](#first-step)
- * [Step 1: entering user name and password](#step-1:-entering-user-name-and-password)
+ * [Step 1: entering user name and password](#step-1-entering-user-name-and-password)
* [If username already exists](#if-username-already-exists)
- * [Step 2: entering email](#step-2:-entering-email)
- * [Step 2 bis: user enters an email](#step-2-bis:-user-enters-an-email)
- * [Step 3: Accepting T&C](#step-3:-accepting-t&c)
- * [Step 4: Captcha](#step-4:-captcha)
- * [Step 5: MSISDN](#step-5:-msisdn)
+ * [Step 2: entering email](#step-2-entering-email)
+ * [Step 2 bis: user enters an email](#step-2-bis-user-enters-an-email)
+ * [Step 3: Accepting T&C](#step-3-accepting-t&c)
+ * [Step 4: Captcha](#step-4-captcha)
+ * [Step 5: MSISDN](#step-5-msisdn)
diff --git a/docs/ui-tests.md b/docs/ui-tests.md
index f0bcf68ecf..bf5b1a37e2 100644
--- a/docs/ui-tests.md
+++ b/docs/ui-tests.md
@@ -12,7 +12,7 @@ Currently the test are covering a small set of application flows:
-* [Prerequisites:](#prerequisites:)
+* [Prerequisites:](#prerequisites)
* [Run the tests](#run-the-tests)
* [From the source code](#from-the-source-code)
* [From command line](#from-command-line)
diff --git a/fastlane/metadata/android/cs-CZ/changelogs/40106280.txt b/fastlane/metadata/android/cs-CZ/changelogs/40106280.txt
new file mode 100644
index 0000000000..d830a1417e
--- /dev/null
+++ b/fastlane/metadata/android/cs-CZ/changelogs/40106280.txt
@@ -0,0 +1,2 @@
+Hlavní změny v této verzi: Přesměrování uživatele na Element X, když chce vytvořit účty na serveru s podporou MAS.
+Úplný seznam změn: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/cs-CZ/changelogs/40106300.txt b/fastlane/metadata/android/cs-CZ/changelogs/40106300.txt
new file mode 100644
index 0000000000..d17dcc20d4
--- /dev/null
+++ b/fastlane/metadata/android/cs-CZ/changelogs/40106300.txt
@@ -0,0 +1,2 @@
+Hlavní změny v této verzi: Oprava pádu příchozího hovoru na Androidu 14+.
+Úplný seznam změn: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/en-US/changelogs/40106320.txt b/fastlane/metadata/android/en-US/changelogs/40106320.txt
new file mode 100644
index 0000000000..022db853cf
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/40106320.txt
@@ -0,0 +1,2 @@
+Main changes in this version: Add action to report room.
+Full changelog: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/es-ES/changelogs/40103120.txt b/fastlane/metadata/android/es-ES/changelogs/40103120.txt
new file mode 100644
index 0000000000..9d36b62d3e
--- /dev/null
+++ b/fastlane/metadata/android/es-ES/changelogs/40103120.txt
@@ -0,0 +1,2 @@
+Principales cambios en esta versión: mejora del rendimiento y corrección de errores.
+Registro de cambios completo: https://github.com/element-hq/element-android/releases/tag/v1.1.1
diff --git a/fastlane/metadata/android/et/changelogs/40106280.txt b/fastlane/metadata/android/et/changelogs/40106280.txt
new file mode 100644
index 0000000000..82cf1afbe0
--- /dev/null
+++ b/fastlane/metadata/android/et/changelogs/40106280.txt
@@ -0,0 +1,2 @@
+Põhilised muutused selles versioonis: kui kasutaja soovib lisada kontot MASi toega serverisse, siis suuname ta Element Xi juurde.
+Kogu ingliskeelne muudatuste logi: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/et/changelogs/40106300.txt b/fastlane/metadata/android/et/changelogs/40106300.txt
new file mode 100644
index 0000000000..131920c593
--- /dev/null
+++ b/fastlane/metadata/android/et/changelogs/40106300.txt
@@ -0,0 +1,2 @@
+Põhilised muutused selles versioonis: vastuvõetava kõne kokkujooksmine Androidi versioonis 14 ja uuemas.
+Kogu ingliskeelne muudatuste logi: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/fa/changelogs/40106280.txt b/fastlane/metadata/android/fa/changelogs/40106280.txt
new file mode 100644
index 0000000000..8e1b11f5a2
--- /dev/null
+++ b/fastlane/metadata/android/fa/changelogs/40106280.txt
@@ -0,0 +1,2 @@
+تغییرات عمده در این نگارش: هدایت کاربران به المنت اکس هنگام تلاش برای ساختن حساب روی کارسازی با پشتیبانی از MAS.
+گزارش دگرگونی کامل: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/fa/changelogs/40106300.txt b/fastlane/metadata/android/fa/changelogs/40106300.txt
new file mode 100644
index 0000000000..c83779027b
--- /dev/null
+++ b/fastlane/metadata/android/fa/changelogs/40106300.txt
@@ -0,0 +1,2 @@
+تغییرات عمده در این نگارش: تعمیر فروپاشی تماس ورودی روی اندروید ۱۴+.
+گزارش دگرگونی کامل: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/fr-FR/changelogs/40106300.txt b/fastlane/metadata/android/fr-FR/changelogs/40106300.txt
new file mode 100644
index 0000000000..108cef0661
--- /dev/null
+++ b/fastlane/metadata/android/fr-FR/changelogs/40106300.txt
@@ -0,0 +1,2 @@
+Principaux changements pour cette version : Correction du plantage lors des appels entrants sur Android 14+.
+Intégralité des changements : https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/id/changelogs/40106280.txt b/fastlane/metadata/android/id/changelogs/40106280.txt
new file mode 100644
index 0000000000..84f05c1a79
--- /dev/null
+++ b/fastlane/metadata/android/id/changelogs/40106280.txt
@@ -0,0 +1,2 @@
+Perubahan utama dalam versi ini: Alihkan pengguna ke Element X ketika ingin membuat akun di server dengan dukungan MAS.
+Catatan perubahan lanjutan: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/id/changelogs/40106300.txt b/fastlane/metadata/android/id/changelogs/40106300.txt
new file mode 100644
index 0000000000..2eca870fa8
--- /dev/null
+++ b/fastlane/metadata/android/id/changelogs/40106300.txt
@@ -0,0 +1,2 @@
+Perubahan utama dalam versi ini: Perbaikan kemogokan panggilan masuk di Android 14+.
+Catatan perubahan lanjutan: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/sk/changelogs/40106260.txt b/fastlane/metadata/android/sk/changelogs/40106260.txt
new file mode 100644
index 0000000000..18d36fe1f7
--- /dev/null
+++ b/fastlane/metadata/android/sk/changelogs/40106260.txt
@@ -0,0 +1,2 @@
+Hlavné zmeny v tejto verzii: aktualizácia crypto sdk.
+Úplný zoznam zmien: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/sk/changelogs/40106280.txt b/fastlane/metadata/android/sk/changelogs/40106280.txt
new file mode 100644
index 0000000000..f3620f3a05
--- /dev/null
+++ b/fastlane/metadata/android/sk/changelogs/40106280.txt
@@ -0,0 +1,2 @@
+Hlavné zmeny v tejto verzii: Presmerovanie používateľa na Element X, keď chce vytvoriť účty na serveri s podporou MAS.
+Úplný zoznam zmien: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/sk/changelogs/40106300.txt b/fastlane/metadata/android/sk/changelogs/40106300.txt
new file mode 100644
index 0000000000..174b03accf
--- /dev/null
+++ b/fastlane/metadata/android/sk/changelogs/40106300.txt
@@ -0,0 +1,2 @@
+Hlavné zmeny v tejto verzii: Oprava pádu prichádzajúceho hovoru v systéme Android 14+.
+Úplný zoznam zmien: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/sq/changelogs/40106280.txt b/fastlane/metadata/android/sq/changelogs/40106280.txt
new file mode 100644
index 0000000000..09d3e6d03b
--- /dev/null
+++ b/fastlane/metadata/android/sq/changelogs/40106280.txt
@@ -0,0 +1,2 @@
+Ndryshimet kryesore në këtë version: Ridrejto përdoruesit te Element X, kur duan të krijojnë llogari në shërbyes që mbulojnë MAS.
+Regjistër i plotë ndryshimesh: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/sv-SE/changelogs/40106280.txt b/fastlane/metadata/android/sv-SE/changelogs/40106280.txt
new file mode 100644
index 0000000000..bda6849891
--- /dev/null
+++ b/fastlane/metadata/android/sv-SE/changelogs/40106280.txt
@@ -0,0 +1,2 @@
+Huvudsakliga ändringar i den här versionen: Omdirigera användare till Element X när de vill skapa konton på server med MAS-stöd.
+Full ändringslogg: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/sv-SE/changelogs/40106300.txt b/fastlane/metadata/android/sv-SE/changelogs/40106300.txt
new file mode 100644
index 0000000000..7249c0ccae
--- /dev/null
+++ b/fastlane/metadata/android/sv-SE/changelogs/40106300.txt
@@ -0,0 +1,2 @@
+Huvudsakliga ändringar i den här versionen: Fixa crash vid inkommande samtal på Android 14+
+Full ändringslogg: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/uk/changelogs/40106280.txt b/fastlane/metadata/android/uk/changelogs/40106280.txt
new file mode 100644
index 0000000000..ac33502e85
--- /dev/null
+++ b/fastlane/metadata/android/uk/changelogs/40106280.txt
@@ -0,0 +1,2 @@
+Основні зміни в цій версії: Переспрямування користувачів до Element X, коли вони хочуть створити облікові записи на сервері з підтримкою MAS.
+Список усіх змін: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/uk/changelogs/40106300.txt b/fastlane/metadata/android/uk/changelogs/40106300.txt
new file mode 100644
index 0000000000..6d559e5525
--- /dev/null
+++ b/fastlane/metadata/android/uk/changelogs/40106300.txt
@@ -0,0 +1,2 @@
+Основні зміни в цій версії: Виправлено збій вхідних викликів на Android 14+.
+Перелік усіх змін: https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/zh-TW/changelogs/40106220.txt b/fastlane/metadata/android/zh-TW/changelogs/40106220.txt
new file mode 100644
index 0000000000..ee25082a4b
--- /dev/null
+++ b/fastlane/metadata/android/zh-TW/changelogs/40106220.txt
@@ -0,0 +1,2 @@
+此版本中的主要變動:crypto SDK 更新。
+完整的變更紀錄:https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/zh-TW/changelogs/40106240.txt b/fastlane/metadata/android/zh-TW/changelogs/40106240.txt
new file mode 100644
index 0000000000..a509b096cc
--- /dev/null
+++ b/fastlane/metadata/android/zh-TW/changelogs/40106240.txt
@@ -0,0 +1,2 @@
+此版本中的主要變動:通知使用者不支援 Element Call。
+完整的變更紀錄:https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/zh-TW/changelogs/40106260.txt b/fastlane/metadata/android/zh-TW/changelogs/40106260.txt
new file mode 100644
index 0000000000..ee25082a4b
--- /dev/null
+++ b/fastlane/metadata/android/zh-TW/changelogs/40106260.txt
@@ -0,0 +1,2 @@
+此版本中的主要變動:crypto SDK 更新。
+完整的變更紀錄:https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/zh-TW/changelogs/40106280.txt b/fastlane/metadata/android/zh-TW/changelogs/40106280.txt
new file mode 100644
index 0000000000..ed52bbfe02
--- /dev/null
+++ b/fastlane/metadata/android/zh-TW/changelogs/40106280.txt
@@ -0,0 +1,2 @@
+此版本中的主要變動:當使用者想要在有 MAS 支援的伺服器上建立帳號時,將使用者重新導向到 Element X。
+完整的變更紀錄:https://github.com/element-hq/element-android/releases
diff --git a/fastlane/metadata/android/zh-TW/changelogs/40106300.txt b/fastlane/metadata/android/zh-TW/changelogs/40106300.txt
new file mode 100644
index 0000000000..bc02971682
--- /dev/null
+++ b/fastlane/metadata/android/zh-TW/changelogs/40106300.txt
@@ -0,0 +1,2 @@
+此版本中的主要變動:修復 Android 14 或更新版本上的來電當機問題。
+完整的變更紀錄:https://github.com/element-hq/element-android/releases
diff --git a/library/ui-strings/src/main/res/values-cs/strings.xml b/library/ui-strings/src/main/res/values-cs/strings.xml
index f17e0bec1e..488b3017e5 100644
--- a/library/ui-strings/src/main/res/values-cs/strings.xml
+++ b/library/ui-strings/src/main/res/values-cs/strings.xml
@@ -3035,4 +3035,8 @@
Nepodporované voláníNepodporované volání. Pro připojení k tomuto volání je nutná nová aplikace Element X.Mikrofon se používá
+ Stáhněte si %1$s a používejte %2$s se svým účetem nebo si vyberte jiný domovský server.
+ Stáhnout %1$s
+ Pomocí této aplikace již nelze vytvořit účet na %1$s
+ Rychlejší, bezpečnější a s výkonnými nástroji pro spolupráci.
\ No newline at end of file
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 d00895765e..80fd7474c4 100644
--- a/library/ui-strings/src/main/res/values-et/strings.xml
+++ b/library/ui-strings/src/main/res/values-et/strings.xml
@@ -2975,4 +2975,10 @@
Mikrofon on kasutuselSee kõne pole toetatudSee kõne pole toetatud. Kõnega liitumiseks palun kasuta uut Element X rakendust.
+ Laadi alla %1$s
+ Kiirem, turvalisem ja sisaldab palju võimsaid ühistöövahendeid.
+ Selle rakendusega enam ei saa luua kasutajakontot teenuses %1$s
+ %2$s teenuse kasutamiseks võta kasutusele %1$s või vali mõni muu koduserver.
+ Teata jututoast
+ Jututoast teatamine õnnestus.
\ No newline at end of file
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 8ba6d2a2ec..f98270dd6c 100644
--- a/library/ui-strings/src/main/res/values-fa/strings.xml
+++ b/library/ui-strings/src/main/res/values-fa/strings.xml
@@ -2975,4 +2975,10 @@
تماس پشتیبانی نشده. برای پیوستن به این تماس نیاز به کارهٔ جدید المنت اکس است.صدابَر در حال استفادهتماس پشتیبانی نشده
+ برای استفاده از %2$s برای حسابتان %1$s را گرفته یا کارساز خانگی دیگری را برگزینید.
+ بارگیری %1$s
+ دیگر نمیتوانید با این کاره حسابی روی %1$s بسازید
+ سریعتر، امنتر و دارای ابزارهای همکاری قدرتمند.
+ گزارش اتاق
+ اتاق با موفّقیت گزارش شد.
\ No newline at end of file
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 4c0aa90827..bc51ac5549 100644
--- a/library/ui-strings/src/main/res/values-fr/strings.xml
+++ b/library/ui-strings/src/main/res/values-fr/strings.xml
@@ -2977,4 +2977,8 @@
Appel non pris en chargeAppel non pris en charge.Microphone en service
+ Vous ne pouvez plus créer de compte sur %1$s avec cette application
+ Téléchargez %1$s pour utiliser %2$s avec votre compte, ou choisissez un autre serveur d’accueil.
+ Télécharger %1$s
+ Plus rapide, plus sécurisé et fourni avec des outils de collaboration efficaces.
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 9426589abe..ba3667b66c 100644
--- a/library/ui-strings/src/main/res/values-in/strings.xml
+++ b/library/ui-strings/src/main/res/values-in/strings.xml
@@ -2917,4 +2917,8 @@ Di masa mendatang proses verifikasi ini akan dimutakhirkan.
Mikrofon digunakanPanggilan tidak didukungPanggilan tidak didukung. Aplikasi Element X yang baru diperlukan untuk bergabung ke panggilan ini.
+ Unduh %1$s
+ Lebih cepat, lebih aman, dan lengkap dengan peralatan kolaborasi yang lebih berdaya.
+ Anda sudah tidak bisa lagi membuat akun dengan %1$s menggunakan aplikasi ini
+ Unduh %1$s untuk menggunakan %2$s untuk Akun Anda atau pilih homeserver yang lain.
\ No newline at end of file
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 f3b5ef1dfa..6bb12dde1d 100644
--- a/library/ui-strings/src/main/res/values-sk/strings.xml
+++ b/library/ui-strings/src/main/res/values-sk/strings.xml
@@ -3035,4 +3035,8 @@
Mikrofón v prevádzkeNepodporovaný hovorNepodporovaný hovor. Na pripojenie k tomuto hovoru je potrebná nová aplikácia Element X.
+ Stiahnite si %1$s a používajte %2$s pre svoje konto alebo si vyberte iný domovský server.
+ Stiahnuť %1$s
+ Pomocou tejto aplikácie si už nemôžete vytvoriť účet %1$s
+ Rýchlejší, bezpečnejší a vybavený výkonnými nástrojmi na spoluprácu.
\ No newline at end of file
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 0c7f74b2ff..b85c60d37e 100644
--- a/library/ui-strings/src/main/res/values-sq/strings.xml
+++ b/library/ui-strings/src/main/res/values-sq/strings.xml
@@ -2963,4 +2963,10 @@
Mikrofon në përdorimThirrje që s’mbulohet. Për të marrë pjesë në këtë thirrje lypset aplikacioni i ri Element X.Thirrje që s’mbulohet
+ Shkarkoni %1$s, që të përdorni %2$s për llogarinë tuaj, ose zgjidhni një tjetër shërbyes Home.
+ Shkarko %1$s
+ S’mund të krijoni më një llogari te %1$s duke përdorur këtë aplikacion
+ I shpejtë, më i siguruar dhe plot mjete të fuqishme bashkëpunimi.
+ Raportojeni Dhomën
+ Dhoma u raportua me sukses.
\ No newline at end of file
diff --git a/library/ui-strings/src/main/res/values-sv/strings.xml b/library/ui-strings/src/main/res/values-sv/strings.xml
index 6358aedf7a..6352c01e76 100644
--- a/library/ui-strings/src/main/res/values-sv/strings.xml
+++ b/library/ui-strings/src/main/res/values-sv/strings.xml
@@ -2975,4 +2975,8 @@
Mikrofon användsSamtal stöds inteSamtal stöds inte. Nya Element X-appen behövs för att gå med i det här samtalet.
+ Ladda ner %1$s
+ Snabbare, säkrare och fullproppad med kraftfulla samarbetsverktyg.
+ Du kan inte längre skapa ett konto med %1$s med den här appen
+ Ladda ner %1$s för att använda %2$s för ditt konto eller välj en annan hemserver.
\ No newline at end of file
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 839251523f..f5cad9e016 100644
--- a/library/ui-strings/src/main/res/values-uk/strings.xml
+++ b/library/ui-strings/src/main/res/values-uk/strings.xml
@@ -3095,4 +3095,8 @@
Мікрофон використовуєтьсяНепідтримуваний викликНепідтримуваний виклик. Потрібен застосунок Element X, щоб приєднатися до цього виклику.
+ Ви більше не можете створити обліковий запис з %1$s за допомогою цього застосунку
+ Завантажте %1$s, щоб використовувати %2$s для свого облікового запису або виберіть інший домашній сервер.
+ Завантажити %1$s
+ Швидший, безпечніший і з потужними інструментами для спільної роботи.
\ No newline at end of file
diff --git a/library/ui-strings/src/main/res/values-zh-rCN/strings.xml b/library/ui-strings/src/main/res/values-zh-rCN/strings.xml
index 6d2752b2e5..61f5a8ead2 100644
--- a/library/ui-strings/src/main/res/values-zh-rCN/strings.xml
+++ b/library/ui-strings/src/main/res/values-zh-rCN/strings.xml
@@ -1889,7 +1889,7 @@
暂且略过加入我的空间 %1$s %2$s他们不会成为 %s 的一部分
- 刚到此房间
+ 仅到此房间他们将可以探索 %s邀请至 %s共享链接
@@ -2915,4 +2915,8 @@
麦克风正在使用不支持的通话不支持的通话。需要新的Element X应用来加入此通话。
+ 下载%1$s
+ 更快、更安全,并配备了强大的协作工具。
+ 下载%1$s以将%2$s用于您的帐户或选择不同的主服务器。
+ 您无法再使用此应用程序创建%1$s的帐户
\ No newline at end of file
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 79257f87ff..f1b00f2613 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
@@ -2912,4 +2912,13 @@
\n
\n若您不想要看到來自此使用者的任何內容,您可以忽略他們以隱藏他們的訊息。
回報使用者
+ 下載 %1$s
+ 麥克風使用中
+ 不支援的通話。需要新的 Element X 應用程式才能加入此通話。
+ 不支援的通話
+ 您無法再使用此應用程式建立 %1$s 的帳號
+ 下載 %1$s 以將 %2$s 用於您的帳號或選擇其他家伺服器。
+ 更快、更安全,並配備了強大的協作工具。
+ 回報聊天室
+ 已成功回報聊天室。
\ No newline at end of file
diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml
index 5acc316172..5679ddf2f4 100644
--- a/library/ui-strings/src/main/res/values/strings.xml
+++ b/library/ui-strings/src/main/res/values/strings.xml
@@ -2370,6 +2370,8 @@
Poll historyUploads
+ Report Room
+ The room has been successfully reported.Leave RoomLeave"Leaving the room…"
diff --git a/matrix-sdk-android/build.gradle b/matrix-sdk-android/build.gradle
index 738247152d..60f755a395 100644
--- a/matrix-sdk-android/build.gradle
+++ b/matrix-sdk-android/build.gradle
@@ -62,7 +62,7 @@ android {
// that the app's state is completely cleared between tests.
testInstrumentationRunnerArguments clearPackageData: 'true'
- buildConfigField "String", "SDK_VERSION", "\"1.6.30\""
+ buildConfigField "String", "SDK_VERSION", "\"1.6.32\""
buildConfigField "String", "GIT_SDK_REVISION", "\"${gitRevision()}\""
buildConfigField "String", "GIT_SDK_REVISION_UNIX_DATE", "\"${gitRevisionUnixDate()}\""
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/reporting/ReportingService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/reporting/ReportingService.kt
index a444e2346e..c3ee5d75c1 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/reporting/ReportingService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/reporting/ReportingService.kt
@@ -26,4 +26,9 @@ interface ReportingService {
* Ref: https://matrix.org/docs/spec/client_server/latest#post-matrix-client-r0-rooms-roomid-report-eventid
*/
suspend fun reportContent(eventId: String, score: Int, reason: String)
+
+ /**
+ * Report a room.
+ */
+ suspend fun reportRoom(reason: String)
}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomAPI.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomAPI.kt
index aa4bdb1dd4..33fa1d8ce0 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomAPI.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomAPI.kt
@@ -36,6 +36,7 @@ import org.matrix.android.sdk.internal.session.room.read.ReadBody
import org.matrix.android.sdk.internal.session.room.relation.RelationsResponse
import org.matrix.android.sdk.internal.session.room.relation.threads.ThreadSummariesResponse
import org.matrix.android.sdk.internal.session.room.reporting.ReportContentBody
+import org.matrix.android.sdk.internal.session.room.reporting.ReportRoomBody
import org.matrix.android.sdk.internal.session.room.send.SendResponse
import org.matrix.android.sdk.internal.session.room.send.model.EventRedactBody
import org.matrix.android.sdk.internal.session.room.tags.TagBody
@@ -375,6 +376,18 @@ internal interface RoomAPI {
@Body body: ReportContentBody,
)
+ /**
+ * Reports a room as inappropriate to the server, which may then notify the appropriate people.
+ *
+ * @param roomId the room id
+ * @param body body containing the reason
+ */
+ @POST(NetworkConstants.URI_API_PREFIX_PATH_V3 + "rooms/{roomId}/report")
+ suspend fun reportRoom(
+ @Path("roomId") roomId: String,
+ @Body body: ReportRoomBody,
+ )
+
/**
* Get a list of aliases maintained by the local server for the given room.
* Ref: https://matrix.org/docs/spec/client_server/r0.6.1#get-matrix-client-r0-rooms-roomid-aliases
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomModule.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomModule.kt
index edea32523d..4d77ef5a7d 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomModule.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/RoomModule.kt
@@ -115,7 +115,9 @@ import org.matrix.android.sdk.internal.session.room.relation.threads.DefaultFetc
import org.matrix.android.sdk.internal.session.room.relation.threads.FetchThreadSummariesTask
import org.matrix.android.sdk.internal.session.room.relation.threads.FetchThreadTimelineTask
import org.matrix.android.sdk.internal.session.room.reporting.DefaultReportContentTask
+import org.matrix.android.sdk.internal.session.room.reporting.DefaultReportRoomTask
import org.matrix.android.sdk.internal.session.room.reporting.ReportContentTask
+import org.matrix.android.sdk.internal.session.room.reporting.ReportRoomTask
import org.matrix.android.sdk.internal.session.room.state.DefaultSendStateTask
import org.matrix.android.sdk.internal.session.room.state.SendStateTask
import org.matrix.android.sdk.internal.session.room.tags.AddTagToRoomTask
@@ -282,6 +284,9 @@ internal abstract class RoomModule {
@Binds
abstract fun bindReportContentTask(task: DefaultReportContentTask): ReportContentTask
+ @Binds
+ abstract fun bindReportRoomTask(task: DefaultReportRoomTask): ReportRoomTask
+
@Binds
abstract fun bindGetContextOfEventTask(task: DefaultGetContextOfEventTask): GetContextOfEventTask
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/reporting/DefaultReportingService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/reporting/DefaultReportingService.kt
index 1e32bf5e16..ba8a6cb453 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/reporting/DefaultReportingService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/reporting/DefaultReportingService.kt
@@ -23,7 +23,8 @@ import org.matrix.android.sdk.api.session.room.reporting.ReportingService
internal class DefaultReportingService @AssistedInject constructor(
@Assisted private val roomId: String,
- private val reportContentTask: ReportContentTask
+ private val reportContentTask: ReportContentTask,
+ private val reportRoomTask: ReportRoomTask,
) : ReportingService {
@AssistedFactory
@@ -35,4 +36,9 @@ internal class DefaultReportingService @AssistedInject constructor(
val params = ReportContentTask.Params(roomId, eventId, score, reason)
reportContentTask.execute(params)
}
+
+ override suspend fun reportRoom(reason: String) {
+ val params = ReportRoomTask.Params(roomId, reason)
+ reportRoomTask.execute(params)
+ }
}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/reporting/ReportRoomBody.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/reporting/ReportRoomBody.kt
new file mode 100644
index 0000000000..8e21132063
--- /dev/null
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/reporting/ReportRoomBody.kt
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2025 The Matrix.org Foundation C.I.C.
+ *
+ * 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 org.matrix.android.sdk.internal.session.room.reporting
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+@JsonClass(generateAdapter = true)
+internal data class ReportRoomBody(
+ /**
+ * Required. The reason the content is being reported. May be blank.
+ */
+ @Json(name = "reason") val reason: String
+)
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/reporting/ReportRoomTask.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/reporting/ReportRoomTask.kt
new file mode 100644
index 0000000000..54b0efd207
--- /dev/null
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/reporting/ReportRoomTask.kt
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2025 The Matrix.org Foundation C.I.C.
+ *
+ * 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 org.matrix.android.sdk.internal.session.room.reporting
+
+import org.matrix.android.sdk.internal.network.GlobalErrorReceiver
+import org.matrix.android.sdk.internal.network.executeRequest
+import org.matrix.android.sdk.internal.session.room.RoomAPI
+import org.matrix.android.sdk.internal.task.Task
+import javax.inject.Inject
+
+internal interface ReportRoomTask : Task {
+ data class Params(
+ val roomId: String,
+ val reason: String,
+ )
+}
+
+internal class DefaultReportRoomTask @Inject constructor(
+ private val roomAPI: RoomAPI,
+ private val globalErrorReceiver: GlobalErrorReceiver
+) : ReportRoomTask {
+
+ override suspend fun execute(params: ReportRoomTask.Params) {
+ return executeRequest(globalErrorReceiver) {
+ roomAPI.reportRoom(params.roomId, ReportRoomBody(params.reason))
+ }
+ }
+}
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthLoginFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthLoginFragment.kt
index 5830468fcf..ce8131d94b 100644
--- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthLoginFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthLoginFragment.kt
@@ -7,6 +7,7 @@
package im.vector.app.features.onboarding.ftueauth
+import android.annotation.SuppressLint
import android.os.Build
import android.os.Bundle
import android.view.LayoutInflater
@@ -14,6 +15,7 @@ import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import androidx.autofill.HintConstants
+import androidx.core.content.ContextCompat
import androidx.core.text.isDigitsOnly
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
@@ -23,7 +25,6 @@ import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R
import im.vector.app.core.extensions.hideKeyboard
import im.vector.app.core.extensions.hidePassword
-import im.vector.app.core.extensions.setLeftDrawable
import im.vector.app.core.extensions.toReducedUrl
import im.vector.app.core.resources.BuildMeta
import im.vector.app.core.utils.openUrlInExternalBrowser
@@ -355,6 +356,8 @@ class FtueAuthLoginFragment :
private inner class Tchap {
+ // TCHAP Add SuppressLint to fix a false positive
+ @SuppressLint("StringFormatInvalid")
fun setupUi(state: OnboardingViewState) {
this@FtueAuthLoginFragment.setupUi(state) // call "super" method
@@ -364,7 +367,7 @@ class FtueAuthLoginFragment :
views.tchapPasswordConfirmationFieldTil.isVisible = isSignUpMode
views.loginSocialLoginContainer.isVisible = isSignUpMode && vectorFeatures.tchapIsSSOEnabled()
- when(state.signMode) {
+ when (state.signMode) {
SignMode.TchapSignUp -> {
views.loginSSOSubmit.text = getString(CommonStrings.login_signin_sso, TCHAP_SSO_PROVIDER)
views.loginSSOSubmit.debouncedClicks {
@@ -376,7 +379,9 @@ class FtueAuthLoginFragment :
}
}
SignMode.TchapSignInWithSSO -> {
- views.loginSubmit.setLeftDrawable(im.vector.lib.ui.styles.R.drawable.ic_tchap_proconnect)
+ views.loginSubmit.setCompoundDrawablesWithIntrinsicBounds(
+ ContextCompat.getDrawable(requireContext(), im.vector.lib.ui.styles.R.drawable.ic_tchap_proconnect), null, null, null
+ )
views.loginSSOHelp.text = getString(CommonStrings.tchap_connection_sso_help, TCHAP_SSO_PROVIDER)
views.loginSSODescription.text = getString(CommonStrings.tchap_connection_sso_description, TCHAP_SSO_PROVIDER)
views.loginSSOHelp.debouncedClicks { openUrlInExternalBrowser(requireContext(), TCHAP_SSO_URL) }
diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashFragment.kt
index a6c5158a0e..9b39d53ad6 100644
--- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthSplashFragment.kt
@@ -16,6 +16,7 @@ import android.text.style.StyleSpan
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.resources.BuildMeta
@@ -57,6 +58,9 @@ class FtueAuthSplashFragment :
text = spannable
isVisible = isAlreadyHaveAccountEnabled && vectorFeatures.tchapIsSSOEnabled()
+ setCompoundDrawablesWithIntrinsicBounds(
+ ContextCompat.getDrawable(requireContext(), im.vector.lib.ui.styles.R.drawable.ic_tchap_proconnect), null, null, null
+ )
debouncedClicks { alreadyHaveAnAccountWithSSO() }
}
views.loginSplashSSOHelp.apply {
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileAction.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileAction.kt
index 9ac76f6d1e..b0ced12706 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileAction.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileAction.kt
@@ -17,6 +17,8 @@ sealed class RoomProfileAction : VectorViewModelAction {
object ShareRoomProfile : RoomProfileAction()
object CreateShortcut : RoomProfileAction()
object RestoreEncryptionState : RoomProfileAction()
+
// TCHAP force to false to deactivate "Never send messages to unverified devices in room"
// data class SetEncryptToVerifiedDeviceOnly(val enabled: Boolean) : RoomProfileAction()
+ data class ReportRoom(val reason: String) : RoomProfileAction()
}
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileController.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileController.kt
index 44f819b1fc..22378b10c1 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileController.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileController.kt
@@ -53,6 +53,7 @@ class RoomProfileController @Inject constructor(
fun onUploadsClicked()
fun createShortcut()
fun onSettingsClicked()
+ fun onReportRoomClicked()
fun onLeaveRoomClicked(isLastAdmin: Boolean)
fun onRoomAliasesClicked()
fun onRoomPermissionsClicked()
@@ -293,6 +294,15 @@ class RoomProfileController @Inject constructor(
action = { callback?.createShortcut() }
)
}
+
+ // TCHAP Hidden in Tchap
+// buildProfileAction(
+// id = "Report",
+// title = stringProvider.getString(CommonStrings.room_profile_section_more_report),
+// icon = R.drawable.ic_report_spam,
+// editable = false,
+// action = { callback?.onReportRoomClicked() }
+// )
buildProfileAction(
id = "leave",
title = stringProvider.getString(
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt
index 609ffea0bc..241269e1f2 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileFragment.kt
@@ -32,6 +32,7 @@ import im.vector.app.core.platform.VectorBaseFragment
import im.vector.app.core.platform.VectorMenuProvider
import im.vector.app.core.utils.copyToClipboard
import im.vector.app.core.utils.startSharePlainTextIntent
+import im.vector.app.databinding.DialogReportContentBinding
import im.vector.app.databinding.FragmentMatrixProfileBinding
import im.vector.app.databinding.ViewStubRoomProfileHeaderBinding
import im.vector.app.features.analytics.plan.Interaction
@@ -122,6 +123,7 @@ class RoomProfileFragment :
is RoomProfileViewEvents.ShareRoomProfile -> onShareRoomProfile(it.permalink)
is RoomProfileViewEvents.OnShortcutReady -> addShortcut(it)
RoomProfileViewEvents.DismissLoading -> dismissLoadingDialog()
+ is RoomProfileViewEvents.Success -> dismissSuccessDialog(it.message)
}
}
roomListQuickActionsSharedActionViewModel
@@ -132,6 +134,17 @@ class RoomProfileFragment :
setupLongClicks()
}
+ private fun dismissSuccessDialog(message: CharSequence) {
+ MaterialAlertDialogBuilder(
+ requireActivity(),
+ im.vector.lib.ui.styles.R.style.ThemeOverlay_Vector_MaterialAlertDialog_NegativeDestructive
+ )
+ .setTitle(CommonStrings.room_profile_section_more_report)
+ .setMessage(message)
+ .setPositiveButton(CommonStrings.ok, null)
+ .show()
+ }
+
private fun setupWaitingView() {
views.waitingView.waitingStatusText.setText(CommonStrings.please_wait)
views.waitingView.waitingStatusText.isVisible = true
@@ -288,6 +301,26 @@ class RoomProfileFragment :
ShortcutManagerCompat.requestPinShortcut(requireContext(), onShortcutReady.shortcutInfo, null)
}
+ override fun onReportRoomClicked() {
+ promptReasonToReportRoom()
+ }
+
+ private fun promptReasonToReportRoom() {
+ val inflater = requireActivity().layoutInflater
+ val layout = inflater.inflate(R.layout.dialog_report_content, null)
+ val views = DialogReportContentBinding.bind(layout)
+
+ MaterialAlertDialogBuilder(requireActivity())
+ .setTitle(CommonStrings.room_profile_section_more_report)
+ .setView(layout)
+ .setPositiveButton(CommonStrings.report_content_custom_submit) { _, _ ->
+ val reason = views.dialogReportContentInput.text.toString()
+ roomProfileViewModel.handle(RoomProfileAction.ReportRoom(reason))
+ }
+ .setNegativeButton(CommonStrings.action_cancel, null)
+ .show()
+ }
+
override fun onLeaveRoomClicked(isLastAdmin: Boolean) {
val isPublicRoom = roomProfileViewModel.isPublicRoom()
val message = buildString {
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileViewEvents.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileViewEvents.kt
index 12a0b327d2..1b12085663 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileViewEvents.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileViewEvents.kt
@@ -17,6 +17,7 @@ sealed class RoomProfileViewEvents : VectorViewEvents {
data class Loading(val message: CharSequence? = null) : RoomProfileViewEvents()
object DismissLoading : RoomProfileViewEvents()
data class Failure(val throwable: Throwable) : RoomProfileViewEvents()
+ data class Success(val message: CharSequence) : RoomProfileViewEvents()
data class ShareRoomProfile(val permalink: String) : RoomProfileViewEvents()
data class OnShortcutReady(val shortcutInfo: ShortcutInfoCompat) : RoomProfileViewEvents()
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileViewModel.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileViewModel.kt
index 35945132b1..7e2b468781 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileViewModel.kt
@@ -210,6 +210,26 @@ class RoomProfileViewModel @AssistedInject constructor(
RoomProfileAction.RestoreEncryptionState -> restoreEncryptionState()
// TCHAP force to false to deactivate "Never send messages to unverified devices in room"
// is RoomProfileAction.SetEncryptToVerifiedDeviceOnly -> setEncryptToVerifiedDeviceOnly(action.enabled)
+ is RoomProfileAction.ReportRoom -> handleReportRoom(action.reason)
+ }
+ }
+
+ private fun handleReportRoom(reason: String) {
+ _viewEvents.post(RoomProfileViewEvents.Loading())
+ session.coroutineScope.launch {
+ try {
+ room.reportingService().reportRoom(reason = reason)
+ _viewEvents.post(
+ RoomProfileViewEvents.Success(
+ stringProvider.getString(CommonStrings.room_profile_section_more_report_success_content)
+ )
+ )
+ } catch (failure: Throwable) {
+ Timber.e(failure, "Failed to report room ${room.roomId}")
+ _viewEvents.post(RoomProfileViewEvents.Failure(failure))
+ } finally {
+ _viewEvents.post(RoomProfileViewEvents.DismissLoading)
+ }
}
}
diff --git a/vector/src/main/res/layout/fragment_login.xml b/vector/src/main/res/layout/fragment_login.xml
index 600a121391..bef7929520 100644
--- a/vector/src/main/res/layout/fragment_login.xml
+++ b/vector/src/main/res/layout/fragment_login.xml
@@ -57,11 +57,11 @@
diff --git a/vector/src/main/res/layout/fragment_tchap_welcome.xml b/vector/src/main/res/layout/fragment_tchap_welcome.xml
index 395f64e958..6c39e20be8 100644
--- a/vector/src/main/res/layout/fragment_tchap_welcome.xml
+++ b/vector/src/main/res/layout/fragment_tchap_welcome.xml
@@ -47,7 +47,6 @@
style="@style/Widget.Vector.Button.Login"
android:layout_width="240dp"
android:layout_height="wrap_content"
- android:drawableLeft="@drawable/ic_tchap_proconnect"
android:gravity="start|center_vertical"
android:paddingHorizontal="25dp"
android:paddingVertical="10dp"
@@ -57,6 +56,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/fragment_tchap_welcome_subtitle"
app:layout_constraintVertical_bias="0.492"
+ tools:drawableLeft="@drawable/ic_tchap_proconnect"
tools:text="@string/login_social_signin_with" />