mirror of
https://github.com/SchildiChat/SchildiChat-android.git
synced 2024-11-22 17:35:54 +03:00
Merge branch 'develop' into suspend_functions_1
# Conflicts: # matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomService.kt # matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/DefaultRoomService.kt # vector/src/main/java/im/vector/app/features/home/room/list/RoomListViewModel.kt
This commit is contained in:
commit
7ee87a0d4b
323 changed files with 6071 additions and 2366 deletions
44
CHANGES.md
44
CHANGES.md
|
@ -1,9 +1,33 @@
|
||||||
Changes in Element 1.1.4 (2021-XX-XX)
|
Changes in Element 1.1.5 (2021-XX-XX)
|
||||||
===================================================
|
===================================================
|
||||||
|
|
||||||
Features ✨:
|
Features ✨:
|
||||||
-
|
-
|
||||||
|
|
||||||
|
Improvements 🙌:
|
||||||
|
-
|
||||||
|
|
||||||
|
Bugfix 🐛:
|
||||||
|
-
|
||||||
|
|
||||||
|
Translations 🗣:
|
||||||
|
-
|
||||||
|
|
||||||
|
SDK API changes ⚠️:
|
||||||
|
-
|
||||||
|
|
||||||
|
Build 🧱:
|
||||||
|
-
|
||||||
|
|
||||||
|
Test:
|
||||||
|
-
|
||||||
|
|
||||||
|
Other changes:
|
||||||
|
-
|
||||||
|
|
||||||
|
Changes in Element 1.1.4 (2021-04-09)
|
||||||
|
===================================================
|
||||||
|
|
||||||
Improvements 🙌:
|
Improvements 🙌:
|
||||||
- Split network request `/keys/query` into smaller requests (250 users max) (#2925)
|
- Split network request `/keys/query` into smaller requests (250 users max) (#2925)
|
||||||
- Crypto improvement | Bulk send NO_OLM withheld code
|
- Crypto improvement | Bulk send NO_OLM withheld code
|
||||||
|
@ -14,28 +38,32 @@ Improvements 🙌:
|
||||||
- Update reactions to Unicode 13.1 (#2998)
|
- Update reactions to Unicode 13.1 (#2998)
|
||||||
- Be more robust when parsing some enums
|
- Be more robust when parsing some enums
|
||||||
- Improve timeline filtering (dissociate membership and profile events, display hidden events when highlighted, fix hidden item/read receipts behavior)
|
- Improve timeline filtering (dissociate membership and profile events, display hidden events when highlighted, fix hidden item/read receipts behavior)
|
||||||
|
- Add better support for empty room name fallback (#3106)
|
||||||
|
- Room list improvements (paging)
|
||||||
|
- Fix quick click action (#3127)
|
||||||
|
- Get Event after a Push for a faster notification display in some conditions
|
||||||
|
- Always try to retry Http requests in case of 429 (#1300)
|
||||||
|
- registration availability endpoint added to matrix-sdk
|
||||||
|
|
||||||
Bugfix 🐛:
|
Bugfix 🐛:
|
||||||
- Fix bad theme change for the MainActivity
|
- Fix bad theme change for the MainActivity
|
||||||
- Handle encrypted reactions (#2509)
|
- Handle encrypted reactions (#2509)
|
||||||
- Disable URL preview for some domains (#2995)
|
- Disable URL preview for some domains (#2995)
|
||||||
- Fix avatar rendering for DMs, after initial sync (#2693)
|
- Fix avatar rendering for DMs, after initial sync (#2693)
|
||||||
|
- Fix mandatory parameter in API (#3065)
|
||||||
Translations 🗣:
|
- If signout request fails, do not start LoginActivity, but restart the app (#3099)
|
||||||
-
|
- Retain keyword order in emoji import script, and update the generated file (#3147)
|
||||||
|
|
||||||
SDK API changes ⚠️:
|
SDK API changes ⚠️:
|
||||||
- Several Services have been migrated to coroutines (#2449)
|
- Several Services have been migrated to coroutines (#2449)
|
||||||
- Removes filtering options on Timeline.
|
- Removes filtering options on Timeline.
|
||||||
|
|
||||||
Build 🧱:
|
Build 🧱:
|
||||||
-
|
- Properly exclude gms dependencies in fdroid build flavour which were pulled in through the jitsi SDK (#3125)
|
||||||
|
|
||||||
Test:
|
|
||||||
-
|
|
||||||
|
|
||||||
Other changes:
|
Other changes:
|
||||||
- Add version details on the login screen, in debug or developer mode
|
- Add version details on the login screen, in debug or developer mode
|
||||||
|
- Migrate Retrofit interface to coroutine calls
|
||||||
|
|
||||||
Changes in Element 1.1.3 (2021-03-18)
|
Changes in Element 1.1.3 (2021-03-18)
|
||||||
===================================================
|
===================================================
|
||||||
|
|
|
@ -69,7 +69,7 @@ dependencies {
|
||||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
||||||
implementation 'androidx.core:core-ktx:1.3.2'
|
implementation 'androidx.core:core-ktx:1.3.2'
|
||||||
implementation 'androidx.appcompat:appcompat:1.2.0'
|
implementation 'androidx.appcompat:appcompat:1.2.0'
|
||||||
implementation "androidx.recyclerview:recyclerview:1.2.0-rc01"
|
implementation "androidx.recyclerview:recyclerview:1.2.0"
|
||||||
|
|
||||||
implementation 'com.google.android.material:material:1.3.0'
|
implementation 'com.google.android.material:material:1.3.0'
|
||||||
}
|
}
|
|
@ -16,7 +16,7 @@ buildscript {
|
||||||
classpath 'com.google.gms:google-services:4.3.5'
|
classpath 'com.google.gms:google-services:4.3.5'
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.1.1'
|
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.1.1'
|
||||||
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.2'
|
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.3'
|
||||||
classpath "com.likethesalad.android:string-reference:1.2.1"
|
classpath "com.likethesalad.android:string-reference:1.2.1"
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
|
|
2
fastlane/metadata/android/ar/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/ar/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
التغييرات الرئيسة في هذه النسخة: تحسينات على الأداء وإصلاح للعلل!
|
||||||
|
اطّلع على سجل التغييرات الكامل هنا: https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
|
@ -1 +1 @@
|
||||||
Element (سابقاً Riot.im)
|
Element (Riot.im سابقًا)
|
||||||
|
|
2
fastlane/metadata/android/ca/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/ca/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Canvis principals d'aquesta versió: millora de rendiment i correcció d'errors!
|
||||||
|
Registre de canvis complet: https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
2
fastlane/metadata/android/cs/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/cs/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Hlavní změny v této verzi: vylepšení výkonnosti a opravy chyb!
|
||||||
|
Úplný záznam změn: https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
|
@ -1,2 +1,2 @@
|
||||||
Diese neue Version enthält hauptsächlich Verbesserungen der Benutzer*innenoberfläche und der Handhabung. Du kannst jetzt ganz schnell Freund*innen einladen und DMs erstellen, indem du schlicht einen QR-Code scannst.
|
Diese neue Version enthält hauptsächlich Verbesserungen der Benutzeroberfläche und der Handhabung. Du kannst jetzt ganz schnell Freund*innen einladen und DMs erstellen, indem du schlicht einen QR-Code scannst.
|
||||||
Vollständige Versionshinweise: https://github.com/vector-im/element-android/releases/tag/v1.0.11
|
Vollständige Versionshinweise: https://github.com/vector-im/element-android/releases/tag/v1.0.11
|
||||||
|
|
2
fastlane/metadata/android/de/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/de/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Hauptänderungen in dieser Version: Leistungsverbesserungen und Fehlerbehebungen!
|
||||||
|
Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
|
@ -3,7 +3,7 @@ Element ist eine neuartige Messaging- und Kollaborationsapp:
|
||||||
1. Volle Kontrolle über deine Privatssphäre
|
1. Volle Kontrolle über deine Privatssphäre
|
||||||
2. Kommuniziere mit jedem aus dem Matrix-Netzwerk und mit der Integration von z.B. Slack sogar über Matrix hinaus
|
2. Kommuniziere mit jedem aus dem Matrix-Netzwerk und mit der Integration von z.B. Slack sogar über Matrix hinaus
|
||||||
3. Schutz vor Werbung, Datamining und geschlossenen Platformen
|
3. Schutz vor Werbung, Datamining und geschlossenen Platformen
|
||||||
4. Absicherung durch Ende-zu-Ende-Verschlüsselung, und Cross Signing um andere zu verifizieren
|
4. Absicherung durch Ende-zu-Ende-Verschlüsselung, und Cross-Signing um andere zu verifizieren
|
||||||
|
|
||||||
Element unterscheidet sich durch Dezentralität und Open Source deutlich von anderen Messaging- und Kollaborationsapps.
|
Element unterscheidet sich durch Dezentralität und Open Source deutlich von anderen Messaging- und Kollaborationsapps.
|
||||||
|
|
||||||
|
@ -11,11 +11,11 @@ Element ermöglicht es einen eigenen Server zu betreiben - oder einen beliebigen
|
||||||
|
|
||||||
Element ist zu all diesem in der Lage, weil es Matrix nutzt - einen Standard für offene, dezentrale Kommunikation.
|
Element ist zu all diesem in der Lage, weil es Matrix nutzt - einen Standard für offene, dezentrale Kommunikation.
|
||||||
|
|
||||||
Element gibt dir die Kontrolle, indem es dir die Wahl darüber lässt, wer deine Konversationen hostet. In der Element App kannst du zwischen verschiedenen Möglichkeiten auswählen:
|
Element gibt dir die Kontrolle, indem es dir die Wahl darüber lässt, wer deine Konversationen hostet. In der Element-App kannst du zwischen verschiedenen Möglichkeiten auswählen:
|
||||||
|
|
||||||
1. Kostenlos auf dem öffentlichen matrix.org Server registrieren, der von den Matrix-Entwicklern gehostet wird, oder wähle aus Tausenden von öffentlichen Servern, die von Freiwilligen gehostet werden
|
1. Kostenlos auf dem öffentlichen matrix.org Server registrieren, der von den Matrix-Entwicklern gehostet wird, oder wähle aus Tausenden von öffentlichen Servern, die von Freiwilligen gehostet werden
|
||||||
2. Einen Account auf einem eigenen Server auf eigener Hardware betreiben
|
2. Einen Konto auf einem eigenen Server auf eigener Hardware betreiben
|
||||||
3. Einen Account auf einem benutzerdefinierten Server erstellen, zum Beispiel durch ein Abonnment bei der Element Matrix Services Hosting-Platform
|
3. Einen Konto auf einem benutzerdefinierten Server erstellen, zum Beispiel durch ein Abonnement bei Element Matrix Services (kurz EMS)
|
||||||
|
|
||||||
<b>Wieso Element nutzen?</b>
|
<b>Wieso Element nutzen?</b>
|
||||||
|
|
||||||
|
@ -23,8 +23,8 @@ Element gibt dir die Kontrolle, indem es dir die Wahl darüber lässt, wer deine
|
||||||
|
|
||||||
<b>OFFENE KOMMUNIKATION UND KOLLABORATION</b>: Du kannst mit jedem im Matrix-Netzwerk schreiben, ob sie nun Element oder eine andere Matrix-App nutzen, oder gar ein anderes Kommunikationssystem wie z.B. Slack, IRC oder XMPP.
|
<b>OFFENE KOMMUNIKATION UND KOLLABORATION</b>: Du kannst mit jedem im Matrix-Netzwerk schreiben, ob sie nun Element oder eine andere Matrix-App nutzen, oder gar ein anderes Kommunikationssystem wie z.B. Slack, IRC oder XMPP.
|
||||||
|
|
||||||
<b>SUPER SICHER</b>: Echte Ende-zu-Ende-Verschlüsselung (nur Personen in der Konversation können die Nachrichten entschlüsseln), und Cross Signing um die Geräte der anderen Personen zu verifizieren.
|
<b>SUPER SICHER</b>: Echte Ende-zu-Ende-Verschlüsselung (nur Personen in der Konversation können die Nachrichten entschlüsseln), und Cross-Signing um die Geräte der anderen Personen zu verifizieren.
|
||||||
|
|
||||||
<b>VOLLSTÄNDIGE KOMMUNIKATION</b>: Nachrichten, Telefonate und Videoanrufe, Teilen von Dateien oder dem eigenen Bildschirm und viele andere Integrationen, Bots und Widgets. Erstelle Räume, Communities, bleib in Kontakt und sei produktiv.
|
<b>VOLLSTÄNDIGE KOMMUNIKATION</b>: Nachrichten, Telefonate und Videoanrufe, Teilen von Dateien oder dem eigenen Bildschirm und viele andere Integrationen, Bots und Widgets. Erstelle Räume, Communities, bleib in Kontakt und sei produktiv.
|
||||||
|
|
||||||
<b>ÜBERALL WO DU BIST</b>: Bleib in Kontakt wo auch immer du bist - mit einem vollständig synchronisierten Nachrichtenverlauf über alle Geräte und im Web auf https://app.element.io.
|
<b>ÜBERALL WO DU BIST</b>: Bleib in Kontakt wo auch immer du bist - mit einem vollständig synchronisierten Nachrichtenverlauf über alle Geräte und im Netz auf https://app.element.io.
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Sicherer dezentraler Chat & Telefonie. Schütze deine Daten vor Dritten.
|
Sicherer dezentraler Chat und Telefonie. Schütze deine Daten vor Dritten.
|
||||||
|
|
2
fastlane/metadata/android/en-US/changelogs/40101040.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/40101040.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Main changes in this version: performance improvement and bug fixes!
|
||||||
|
Full changelog: https://github.com/vector-im/element-android/releases/tag/v1.1.4
|
2
fastlane/metadata/android/et/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/et/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Põhilised muutused selles versioonis: jõudluse parandused ja pisikohendused.
|
||||||
|
Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
2
fastlane/metadata/android/fa/changelogs/40100120.txt
Normal file
2
fastlane/metadata/android/fa/changelogs/40100120.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
تغییرات اصلی در این نگارش: پیشنمایش نشانی، صفحهکلید اموجی جدید، تنظیمهای اتاق جدید و برف برای کریسمس!
|
||||||
|
گزارش تغییر کامل: https://github.com/vector-im/element-android/releases/tag/v1.0.12
|
2
fastlane/metadata/android/fa/changelogs/40100130.txt
Normal file
2
fastlane/metadata/android/fa/changelogs/40100130.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
تغییرات اصلی در این نگارش: پیشنمایش نشانی، صفحهکلید اموجی جدید، تنظیمهای اتاق جدید و برف برای کریسمس!
|
||||||
|
گزارش تغییر کامل: https://github.com/vector-im/element-android/releases/tag/v1.0.13
|
2
fastlane/metadata/android/fa/changelogs/40100140.txt
Normal file
2
fastlane/metadata/android/fa/changelogs/40100140.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
تغییرات اصلی در این نگارش: ویرایش اجازههای اتاق، زمینهٔ تاریک/روشن خودکار و رفع دستهای از مشکلها.
|
||||||
|
گزارش تغییر کامل: https://github.com/vector-im/element-android/releases/tag/v1.0.14
|
2
fastlane/metadata/android/fa/changelogs/40100150.txt
Normal file
2
fastlane/metadata/android/fa/changelogs/40100150.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
تغییرات اصلی در این نگارش: پشتیبانی از ورود اجتماعی.
|
||||||
|
گزارش تغییر کامل: https://github.com/vector-im/element-android/releases/tag/v1.0.15
|
2
fastlane/metadata/android/fa/changelogs/40100160.txt
Normal file
2
fastlane/metadata/android/fa/changelogs/40100160.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
تغییرات اصلی در این نگارش: پشتیبانی از ورود اجتماعی.
|
||||||
|
گزارش تغییر کامل: https://github.com/vector-im/element-android/releases/tag/v1.0.15 و https://github.com/vector-im/element-android/releases/tag/v1.0.16
|
2
fastlane/metadata/android/fa/changelogs/40100170.txt
Normal file
2
fastlane/metadata/android/fa/changelogs/40100170.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
تغییرات اصلی در این نگارش: رفع مشکلها!
|
||||||
|
گزارش تغییر کامل: https://github.com/vector-im/element-android/releases/tag/v1.0.17
|
2
fastlane/metadata/android/fa/changelogs/40101000.txt
Normal file
2
fastlane/metadata/android/fa/changelogs/40101000.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
تغییرات اصلی در این نگارش: بهبود ویپ (تماسهای صوتی و تصویری در پیامهای مستقیم) و رفع مشکلها!
|
||||||
|
گزارش تغییر کامل: https://github.com/vector-im/element-android/releases/tag/v1.1.0
|
2
fastlane/metadata/android/fa/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/fa/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
تغییرات اصلی در این نگارش: بهبود عملکرد و رفع مشکلها!
|
||||||
|
گزارش تغییر کامل: https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
2
fastlane/metadata/android/fi/changelogs/40101000.txt
Normal file
2
fastlane/metadata/android/fi/changelogs/40101000.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Suurimmat muutokset tässä versiossa: VoIP-parannuksia ja korjauksia (ääni- ja videopuhelut yksityiskeskusteluissa)
|
||||||
|
Täysi muutosloki: https://github.com/vector-im/element-android/releases/tag/v1.1.0
|
2
fastlane/metadata/android/fi/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/fi/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Suurimmat muutokset tässä versiossa: suorituskykyparannuksia ja bugikorjauksia!
|
||||||
|
Täysi muutosloki: https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
|
@ -1,2 +1,2 @@
|
||||||
Principaux changements apportés par cette version : aperçu des URL, nouveau clavier Emoji, nouvelles options de configuration pour le salon et neige pour Noël.
|
Principaux changements apportés par cette version : aperçu des URL, nouveau clavier Emoji, nouvelles options de configuration pour le salon et neige pour Noël.
|
||||||
Liste complète des changements : https://github.com/vector-im/element-android/releases/tag/v1.0.12
|
Liste complète des changements : https://github.com/vector-im/element-android/releases/tag/v1.0.13
|
||||||
|
|
2
fastlane/metadata/android/fr/changelogs/40100140.txt
Normal file
2
fastlane/metadata/android/fr/changelogs/40100140.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Principaux changements pour cette version : modification des permissions dans les salons, thème lumineux/sombre automatique, et plein de corrections de bugs.
|
||||||
|
Intégralité des changements : https://github.com/vector-im/element-android/releases/tag/v1.0.14
|
2
fastlane/metadata/android/fr/changelogs/40100150.txt
Normal file
2
fastlane/metadata/android/fr/changelogs/40100150.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Principaux changements pour cette version : prise en charge de l’authentification avec les réseaux sociaux.
|
||||||
|
Intégralité des changements : https://github.com/vector-im/element-android/releases/tag/v1.0.15
|
2
fastlane/metadata/android/fr/changelogs/40100160.txt
Normal file
2
fastlane/metadata/android/fr/changelogs/40100160.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Principaux changements pour cette version : prise en charge de l’authentification avec les réseaux sociaux !
|
||||||
|
Intégralité des changements : https://github.com/vector-im/element-android/releases/tag/v1.0.15 et https://github.com/vector-im/element-android/releases/tag/v1.0.16
|
2
fastlane/metadata/android/fr/changelogs/40100170.txt
Normal file
2
fastlane/metadata/android/fr/changelogs/40100170.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Principaux changements pour cette version : corrections de bugs !
|
||||||
|
Intégralité des changements : https://github.com/vector-im/element-android/releases/tag/v1..017
|
2
fastlane/metadata/android/fr/changelogs/40101000.txt
Normal file
2
fastlane/metadata/android/fr/changelogs/40101000.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Principaux changements pour cette version : améliorations de la VoIP (appels audio et vidéo dans les conversations primées) et corrections de bugs !
|
||||||
|
Intégralité des changements : https://github.com/vector-im/element-android/releases/tag/v1.1.0
|
2
fastlane/metadata/android/fr/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/fr/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Principaux changements pour cette version : amélioration des performances et corrections de bugs !
|
||||||
|
Intégralité des changements : https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
1
fastlane/metadata/android/ga/title.txt
Normal file
1
fastlane/metadata/android/ga/title.txt
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Element (Riot.im roimhe sin)
|
2
fastlane/metadata/android/it/changelogs/40101000.txt
Normal file
2
fastlane/metadata/android/it/changelogs/40101000.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Modifiche principali in questa versione: migliorato il VoIP (chiamate audio e video in MD) e correzione di errori!
|
||||||
|
Cronologia completa: https://github.com/vector-im/element-android/releases/tag/v1.1.0
|
2
fastlane/metadata/android/it/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/it/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Modifiche principali in questa versione: prestazioni migliorate e correzione di errori!
|
||||||
|
Cronologia completa: https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
|
@ -1 +1 @@
|
||||||
Adiwenni aɣellsan ur nelli aslammas & VoIP. Ḥrez isefra-k•m seg tama tis tlata.
|
Adiwenni aɣellsan ur nelli d aslammas & VoIP. Ḥrez isefra-k•m seg wis tlata.
|
||||||
|
|
2
fastlane/metadata/android/pt-BR/changelogs/40101000.txt
Normal file
2
fastlane/metadata/android/pt-BR/changelogs/40101000.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Principais mudanças nesta versão: Melhoria de VoIP (chamadas de áudio e vídeo em conversas) e correção de erros!
|
||||||
|
Registro de alterações completo: https://github.com/vector-im/element-android/releases/tag/v1.1.0
|
2
fastlane/metadata/android/pt-BR/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/pt-BR/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Principais mudanças nesta versão: melhoria de desempenho e correção de erros!
|
||||||
|
Registro de alterações completo: https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
2
fastlane/metadata/android/ru/changelogs/40101000.txt
Normal file
2
fastlane/metadata/android/ru/changelogs/40101000.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Основные изменения в этой версии: VoIP (аудио и видео звонки в ЛС) Улучшение и исправления ошибок!
|
||||||
|
Полный список изменений: https://github.com/vector-im/element-android/release/tag/v1.1.0
|
2
fastlane/metadata/android/ru/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/ru/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Основные изменения в этой версии: улучшение производительности и исправления ошибок!
|
||||||
|
Полный список изменений: https://github.com/vector-im/element-android/release/tag/v1.1.1
|
2
fastlane/metadata/android/sv/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/sv/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Huvudsakliga ändringar i den här versionen: Förbättringar och buggfixar!
|
||||||
|
Full ändringslogg: https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
2
fastlane/metadata/android/tr/changelogs/40100140.txt
Normal file
2
fastlane/metadata/android/tr/changelogs/40100140.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Bu sürümdeki başlıca değişiklikler: Oda izinlerini düzenleme, otomatik koyu/açık tema ve bir avuç hata düzeltmeleri.
|
||||||
|
Değişim günlüğünün tamamı: https://github.com/vector-im/element-android/releases/tag/v1.0.14
|
2
fastlane/metadata/android/tr/changelogs/40100170.txt
Normal file
2
fastlane/metadata/android/tr/changelogs/40100170.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Bu sürümdeki başlıca değişiklikler: Hata düzeltmeleri!
|
||||||
|
değişim günlüğünün tamamı: https://github.com/vector-im/element-android/releases/tag/v1.0.17
|
2
fastlane/metadata/android/tr/changelogs/40101000.txt
Normal file
2
fastlane/metadata/android/tr/changelogs/40101000.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Bu sürümdeki ana değişiklikler: VoIP (DM'de sesli ve görüntülü aramalar) geliştirmeleri ve hata düzeltmeleri!
|
||||||
|
Değişim günlüğünün tamamı: https://github.com/vector-im/element-android/releases/tag/v1.1.0
|
2
fastlane/metadata/android/tr/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/tr/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Bu sürümdeki ana değişiklikler: performans iyileştirme ve hata düzeltmeleri!
|
||||||
|
Değişim günlüğünün tamamı: https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
2
fastlane/metadata/android/uk/changelogs/40101010.txt
Normal file
2
fastlane/metadata/android/uk/changelogs/40101010.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Основні зміни в цій версії: поліпшення продуктивності та виправлення помилок!
|
||||||
|
Повний журнал змін: https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
|
@ -1,2 +1,2 @@
|
||||||
此新版本主要包含错误修复和改进。现在,发送消息要快得多。
|
此新版本主要包含错误修复和改进。现在,发送消息比以前快多了。
|
||||||
完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.0.10
|
完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.0.10
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
此版本的主要变化:链接预览,全新 Emoji 键盘,全新聊天室设置功能,以及圣诞节雪花!
|
||||||
|
完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.0.12
|
|
@ -0,0 +1,2 @@
|
||||||
|
此版本的主要变化:链接预览,全新 Emoji 键盘,全新聊天室设置功能,以及圣诞节雪花!
|
||||||
|
完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.0.13
|
|
@ -0,0 +1,2 @@
|
||||||
|
此版本的主要变化:支持编辑聊天室权限,自动切换浅色/深色主题,修复大量错误。
|
||||||
|
完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.0.14
|
|
@ -0,0 +1,2 @@
|
||||||
|
此版本的主要变化:支持通过社交网络登录。
|
||||||
|
完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.0.15
|
|
@ -0,0 +1,2 @@
|
||||||
|
此版本的主要变化:支持通过社交网络登录。
|
||||||
|
完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.0.15 和 https://github.com/vector-im/element-android/releases/tag/v1.0.16
|
|
@ -0,0 +1,2 @@
|
||||||
|
此版本的主要变化:修复错误!
|
||||||
|
完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.0.17
|
|
@ -0,0 +1,2 @@
|
||||||
|
此版本的主要变化:改进 VoIP(私聊中的音频与视频通话)以及修复错误!
|
||||||
|
完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.1.0
|
|
@ -0,0 +1,2 @@
|
||||||
|
此版本的主要变化:改进性能以及修复错误!
|
||||||
|
完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
|
@ -1,30 +1,30 @@
|
||||||
Element 是一种新型消息和协作应用:
|
Element 是一种新型的通讯与协作应用:
|
||||||
|
|
||||||
1. 使您可以掌控您的隐私
|
1. 使您可以掌控您的隐私
|
||||||
2. 使您与 Matrix 网络中的任何人交流,甚至可以通过与其他应用如 Slack 集成
|
2. 使您与 Matrix 网络中的任何人交流,甚至可以通过集成功能与如 Slack 之类的其他应用通讯
|
||||||
3. 保护您远离广告,数据挖掘和围墙花园
|
3. 保护您免受广告,大数据挖掘和封闭服务的侵害
|
||||||
4. 通过端到端加密保护您,通过交叉签名验证其他人
|
4. 通过端到端加密保证安全,通过交叉签名验证其他人
|
||||||
|
|
||||||
Element 与其他消息和协作应用完全不同,因为它是去中心化且开源的。
|
Element 与其他通讯与协作应用完全不同,因为它是去中心化且开源的。
|
||||||
|
|
||||||
Element 使您可以自托管 - 或选择托管商 - 因此您拥有您的数据和会话的隐私权,所有权和控制权。它使您可以访问开放网络;因此您可以不仅仅与其他 Element 用户交流。并且它非常安全。
|
Element 允许您自托管——或者选择托管商——因此,您能拥有数据和会话的隐私权,所有权和控制权。它允许您访问开放网络;因此,您可以与 Element 用户以外的人交流。并且它非常安全。
|
||||||
|
|
||||||
Element 可以做到这些因为它在 Matrix 上运行 - 开放,去中心化通信标准。
|
Element 之所以可以做到这些,是因为它在 Matrix 上运行——开放,去中心化通讯的标准。
|
||||||
|
|
||||||
Element 通过让您选择谁来托管您的会话使您掌控一切。在 Element 应用中,您可以选择不同的托管方式:
|
通过让您选择由谁来托管您的会话,Element 让您掌控一切。在 Element 应用中,您可以选择不同的托管方式:
|
||||||
|
|
||||||
1. 在由 Matrix 开发者托管的 matrix.org 公共服务器上获取免费帐户,或从志愿者托管的几千个公共服务器中选择
|
1. 在由 Matrix 开发者托管的 matrix.org 公共服务器上获取免费帐户,或从志愿者托管的上千个公共服务器中选择
|
||||||
2. 在您自己的硬件上运行服务器自托管您的会话
|
2. 在您自己的硬件上运行服务器,自托管您的会话
|
||||||
3. 通过简单地订阅 Element Matrix Services 托管平台在自定义服务器上注册账户
|
3. 通过订阅 Element Matrix Services 托管平台,简单地在自定义服务器上注册账户
|
||||||
|
|
||||||
<b>为什么选择 Element?</b>
|
<b>为什么选择 Element?</b>
|
||||||
|
|
||||||
<b>拥有您的数据</b>:您来决定存放您的数据和消息的位置。拥有并控制它的是您,而不是挖掘您的数据或与第三方分享的巨型企业。
|
<b>掌控您的数据</b>:您来决定存放您的数据和消息的位置。拥有并控制它的是您,而不是挖掘您的数据或与第三方分享的巨型企业。
|
||||||
|
|
||||||
<b>开放消息与协作</b>:您可以与 Matrix 网络中的任何人聊天,不论他们使用 Element 还是其他 Matrix 应用,甚至即使他们在使用不同的消息系统例如 Slack,IRC 或 XMPP。
|
<b>开放通讯与协作</b>:您可以与 Matrix 网络中的任何人聊天,不论他们使用 Element 还是其他 Matrix 应用,甚至/即使他们在使用不同的通讯系统,例如 Slack,IRC 或 XMPP。
|
||||||
|
|
||||||
<b>超级安全</b>:真正的端到端加密(仅有会话中的人可以解密消息),及用于验证会话参与方的设备的交叉签名。
|
<b>超级安全</b>:支持真正的端到端加密(仅有会话中的人可以解密消息),还有能够验证会话参与方的设备的交叉签名。
|
||||||
|
|
||||||
<b>丰富的通信方式</b>:消息,语音和视频通话,文件分享,屏幕分享和大量集成,机器人和小部件。建立房间,社区,保持联系并做好工作。
|
<b>完善的通讯方式</b>:消息,语音和视频通话,文件共享,屏幕共享和大量集成功能,机器人和小挂件。建立房间与社区,保持联系并完成工作。
|
||||||
|
|
||||||
<b>随时随地</b>:通过在您的全部设备和 https://app.element.io 网页上完全同步的消息历史,无论您在哪里都可以保持联系。
|
<b>随时随地</b>:消息历史可在您的全部设备和 https://app.element.io 网页端之间完全同步,无论您在哪里,都可以保持联系。
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
安全去中心化的聊天和 VoIP。保护您的数据不受第三方的影响。
|
安全、去中心化的聊天与 VoIP 通话。保护您的数据不被第三方窃取。
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
此版本的主要變更:效能改進與錯誤修復!
|
||||||
|
完整變更紀錄:https://github.com/vector-im/element-android/releases/tag/v1.1.1
|
|
@ -108,11 +108,11 @@ static def gitRevisionDate() {
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
||||||
def arrow_version = "0.8.2"
|
def arrow_version = "0.8.2"
|
||||||
def moshi_version = '1.11.0'
|
def moshi_version = '1.12.0'
|
||||||
def lifecycle_version = '2.2.0'
|
def lifecycle_version = '2.2.0'
|
||||||
def arch_version = '2.1.0'
|
def arch_version = '2.1.0'
|
||||||
def markwon_version = '3.1.0'
|
def markwon_version = '3.1.0'
|
||||||
def daggerVersion = '2.33'
|
def daggerVersion = '2.34'
|
||||||
def work_version = '2.5.0'
|
def work_version = '2.5.0'
|
||||||
def retrofit_version = '2.9.0'
|
def retrofit_version = '2.9.0'
|
||||||
|
|
||||||
|
@ -166,7 +166,7 @@ dependencies {
|
||||||
implementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
|
implementation 'com.facebook.stetho:stetho-okhttp3:1.6.0'
|
||||||
|
|
||||||
// Phone number https://github.com/google/libphonenumber
|
// Phone number https://github.com/google/libphonenumber
|
||||||
implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.20'
|
implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.21'
|
||||||
|
|
||||||
testImplementation 'junit:junit:4.13.2'
|
testImplementation 'junit:junit:4.13.2'
|
||||||
testImplementation 'org.robolectric:robolectric:4.5.1'
|
testImplementation 'org.robolectric:robolectric:4.5.1'
|
||||||
|
|
|
@ -18,23 +18,26 @@ package org.matrix.android.sdk.common
|
||||||
|
|
||||||
import org.matrix.android.sdk.api.RoomDisplayNameFallbackProvider
|
import org.matrix.android.sdk.api.RoomDisplayNameFallbackProvider
|
||||||
|
|
||||||
class TestRoomDisplayNameFallbackProvider() : RoomDisplayNameFallbackProvider {
|
class TestRoomDisplayNameFallbackProvider : RoomDisplayNameFallbackProvider {
|
||||||
|
|
||||||
override fun getNameForRoomInvite() =
|
override fun getNameForRoomInvite() =
|
||||||
"Room invite"
|
"Room invite"
|
||||||
|
|
||||||
override fun getNameForEmptyRoom() =
|
override fun getNameForEmptyRoom(isDirect: Boolean, leftMemberNames: List<String>) =
|
||||||
"Empty room"
|
"Empty room"
|
||||||
|
|
||||||
override fun getNameFor2members(name1: String?, name2: String?) =
|
override fun getNameFor1member(name: String) =
|
||||||
|
name
|
||||||
|
|
||||||
|
override fun getNameFor2members(name1: String, name2: String) =
|
||||||
"$name1 and $name2"
|
"$name1 and $name2"
|
||||||
|
|
||||||
override fun getNameFor3members(name1: String?, name2: String?, name3: String?) =
|
override fun getNameFor3members(name1: String, name2: String, name3: String) =
|
||||||
"$name1, $name2 and $name3"
|
"$name1, $name2 and $name3"
|
||||||
|
|
||||||
override fun getNameFor4members(name1: String?, name2: String?, name3: String?, name4: String?) =
|
override fun getNameFor4members(name1: String, name2: String, name3: String, name4: String) =
|
||||||
"$name1, $name2, $name3 and $name4"
|
"$name1, $name2, $name3 and $name4"
|
||||||
|
|
||||||
override fun getNameFor4membersAndMore(name1: String?, name2: String?, name3: String?, remainingCount: Int) =
|
override fun getNameFor4membersAndMore(name1: String, name2: String, name3: String, remainingCount: Int) =
|
||||||
"$name1, $name2, $name3 and $remainingCount others"
|
"$name1, $name2, $name3 and $remainingCount others"
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,9 +18,10 @@ package org.matrix.android.sdk.api
|
||||||
|
|
||||||
interface RoomDisplayNameFallbackProvider {
|
interface RoomDisplayNameFallbackProvider {
|
||||||
fun getNameForRoomInvite(): String
|
fun getNameForRoomInvite(): String
|
||||||
fun getNameForEmptyRoom(): String
|
fun getNameForEmptyRoom(isDirect: Boolean, leftMemberNames: List<String>): String
|
||||||
fun getNameFor2members(name1: String?, name2: String?): String
|
fun getNameFor1member(name: String): String
|
||||||
fun getNameFor3members(name1: String?, name2: String?, name3: String?): String
|
fun getNameFor2members(name1: String, name2: String): String
|
||||||
fun getNameFor4members(name1: String?, name2: String?, name3: String?, name4: String?): String
|
fun getNameFor3members(name1: String, name2: String, name3: String): String
|
||||||
fun getNameFor4membersAndMore(name1: String?, name2: String?, name3: String?, remainingCount: Int): String
|
fun getNameFor4members(name1: String, name2: String, name3: String, name4: String): String
|
||||||
|
fun getNameFor4membersAndMore(name1: String, name2: String, name3: String, remainingCount: Int): String
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2021 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.api.auth.registration
|
||||||
|
|
||||||
|
import org.matrix.android.sdk.api.failure.Failure
|
||||||
|
|
||||||
|
sealed class RegistrationAvailability {
|
||||||
|
object Available : RegistrationAvailability()
|
||||||
|
data class NotAvailable(val failure: Failure.ServerError) : RegistrationAvailability()
|
||||||
|
}
|
|
@ -36,6 +36,8 @@ interface RegistrationWizard {
|
||||||
|
|
||||||
suspend fun checkIfEmailHasBeenValidated(delayMillis: Long): RegistrationResult
|
suspend fun checkIfEmailHasBeenValidated(delayMillis: Long): RegistrationResult
|
||||||
|
|
||||||
|
suspend fun registrationAvailable(userName: String): RegistrationAvailability
|
||||||
|
|
||||||
val currentThreePid: String?
|
val currentThreePid: String?
|
||||||
|
|
||||||
// True when login and password has been sent with success to the homeserver
|
// True when login and password has been sent with success to the homeserver
|
||||||
|
|
|
@ -37,6 +37,18 @@ fun Throwable.shouldBeRetried(): Boolean {
|
||||||
|| (this is Failure.ServerError && error.code == MatrixError.M_LIMIT_EXCEEDED)
|
|| (this is Failure.ServerError && error.code == MatrixError.M_LIMIT_EXCEEDED)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the retry delay in case of rate limit exceeded error, adding 100 ms, of defaultValue otherwise
|
||||||
|
*/
|
||||||
|
fun Throwable.getRetryDelay(defaultValue: Long): Long {
|
||||||
|
return (this as? Failure.ServerError)
|
||||||
|
?.error
|
||||||
|
?.takeIf { it.code == MatrixError.M_LIMIT_EXCEEDED }
|
||||||
|
?.retryAfterMillis
|
||||||
|
?.plus(100L)
|
||||||
|
?: defaultValue
|
||||||
|
}
|
||||||
|
|
||||||
fun Throwable.isInvalidPassword(): Boolean {
|
fun Throwable.isInvalidPassword(): Boolean {
|
||||||
return this is Failure.ServerError
|
return this is Failure.ServerError
|
||||||
&& error.code == MatrixError.M_FORBIDDEN
|
&& error.code == MatrixError.M_FORBIDDEN
|
||||||
|
@ -53,13 +65,16 @@ fun Throwable.isInvalidUIAAuth(): Boolean {
|
||||||
* Try to convert to a RegistrationFlowResponse. Return null in the cases it's not possible
|
* Try to convert to a RegistrationFlowResponse. Return null in the cases it's not possible
|
||||||
*/
|
*/
|
||||||
fun Throwable.toRegistrationFlowResponse(): RegistrationFlowResponse? {
|
fun Throwable.toRegistrationFlowResponse(): RegistrationFlowResponse? {
|
||||||
return if (this is Failure.OtherServerError && httpCode == 401) {
|
return if (this is Failure.OtherServerError
|
||||||
|
&& httpCode == HttpsURLConnection.HTTP_UNAUTHORIZED /* 401 */) {
|
||||||
tryOrNull {
|
tryOrNull {
|
||||||
MoshiProvider.providesMoshi()
|
MoshiProvider.providesMoshi()
|
||||||
.adapter(RegistrationFlowResponse::class.java)
|
.adapter(RegistrationFlowResponse::class.java)
|
||||||
.fromJson(errorBody)
|
.fromJson(errorBody)
|
||||||
}
|
}
|
||||||
} else if (this is Failure.ServerError && httpCode == 401 && error.code == MatrixError.M_FORBIDDEN) {
|
} else if (this is Failure.ServerError
|
||||||
|
&& httpCode == HttpsURLConnection.HTTP_UNAUTHORIZED /* 401 */
|
||||||
|
&& error.code == MatrixError.M_FORBIDDEN) {
|
||||||
// This happens when the submission for this stage was bad (like bad password)
|
// This happens when the submission for this stage was bad (like bad password)
|
||||||
if (error.session != null && error.flows != null) {
|
if (error.session != null && error.flows != null) {
|
||||||
RegistrationFlowResponse(
|
RegistrationFlowResponse(
|
||||||
|
@ -75,3 +90,11 @@ fun Throwable.toRegistrationFlowResponse(): RegistrationFlowResponse? {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Throwable.isRegistrationAvailabilityError(): Boolean {
|
||||||
|
return this is Failure.ServerError
|
||||||
|
&& httpCode == HttpsURLConnection.HTTP_BAD_REQUEST /* 400 */
|
||||||
|
&& (error.code == MatrixError.M_USER_IN_USE
|
||||||
|
|| error.code == MatrixError.M_INVALID_USERNAME
|
||||||
|
|| error.code == MatrixError.M_EXCLUSIVE)
|
||||||
|
}
|
||||||
|
|
|
@ -39,6 +39,8 @@ interface PushRuleService {
|
||||||
|
|
||||||
fun removePushRuleListener(listener: PushRuleListener)
|
fun removePushRuleListener(listener: PushRuleListener)
|
||||||
|
|
||||||
|
fun getActions(event: Event): List<Action>
|
||||||
|
|
||||||
// fun fulfilledBingRule(event: Event, rules: List<PushRule>): PushRule?
|
// fun fulfilledBingRule(event: Event, rules: List<PushRule>): PushRule?
|
||||||
|
|
||||||
interface PushRuleListener {
|
interface PushRuleListener {
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021 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.api.query
|
||||||
|
|
||||||
|
enum class RoomCategoryFilter {
|
||||||
|
ONLY_DM,
|
||||||
|
ONLY_ROOMS,
|
||||||
|
ONLY_WITH_NOTIFICATIONS,
|
||||||
|
ALL
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2021 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.api.query
|
||||||
|
|
||||||
|
data class RoomTagQueryFilter(
|
||||||
|
val isFavorite: Boolean?,
|
||||||
|
val isLowPriority: Boolean?,
|
||||||
|
val isServerNotice: Boolean?
|
||||||
|
)
|
|
@ -30,6 +30,7 @@ import org.matrix.android.sdk.api.session.call.CallSignalingService
|
||||||
import org.matrix.android.sdk.api.session.content.ContentUploadStateTracker
|
import org.matrix.android.sdk.api.session.content.ContentUploadStateTracker
|
||||||
import org.matrix.android.sdk.api.session.content.ContentUrlResolver
|
import org.matrix.android.sdk.api.session.content.ContentUrlResolver
|
||||||
import org.matrix.android.sdk.api.session.crypto.CryptoService
|
import org.matrix.android.sdk.api.session.crypto.CryptoService
|
||||||
|
import org.matrix.android.sdk.api.session.events.EventService
|
||||||
import org.matrix.android.sdk.api.session.file.ContentDownloadStateTracker
|
import org.matrix.android.sdk.api.session.file.ContentDownloadStateTracker
|
||||||
import org.matrix.android.sdk.api.session.file.FileService
|
import org.matrix.android.sdk.api.session.file.FileService
|
||||||
import org.matrix.android.sdk.api.session.group.GroupService
|
import org.matrix.android.sdk.api.session.group.GroupService
|
||||||
|
@ -68,6 +69,7 @@ interface Session :
|
||||||
SignOutService,
|
SignOutService,
|
||||||
FilterService,
|
FilterService,
|
||||||
TermsService,
|
TermsService,
|
||||||
|
EventService,
|
||||||
ProfileService,
|
ProfileService,
|
||||||
PushRuleService,
|
PushRuleService,
|
||||||
PushersService,
|
PushersService,
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2021 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.api.session.events
|
||||||
|
|
||||||
|
import org.matrix.android.sdk.api.session.events.model.Event
|
||||||
|
|
||||||
|
interface EventService {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ask the homeserver for an event content. The SDK will try to decrypt it if it is possible
|
||||||
|
* The result will not be stored into cache
|
||||||
|
*/
|
||||||
|
suspend fun getEvent(roomId: String,
|
||||||
|
eventId: String): Event
|
||||||
|
}
|
|
@ -289,3 +289,7 @@ fun Event.getRelationContent(): RelationDefaultContent? {
|
||||||
fun Event.isReply(): Boolean {
|
fun Event.isReply(): Boolean {
|
||||||
return getRelationContent()?.inReplyTo?.eventId != null
|
return getRelationContent()?.inReplyTo?.eventId != null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Event.isEdition(): Boolean {
|
||||||
|
return getRelationContent()?.takeIf { it.type == RelationType.REPLACE }?.eventId != null
|
||||||
|
}
|
||||||
|
|
|
@ -17,12 +17,14 @@
|
||||||
package org.matrix.android.sdk.api.session.room
|
package org.matrix.android.sdk.api.session.room
|
||||||
|
|
||||||
import androidx.lifecycle.LiveData
|
import androidx.lifecycle.LiveData
|
||||||
|
import androidx.paging.PagedList
|
||||||
import org.matrix.android.sdk.api.session.events.model.Event
|
import org.matrix.android.sdk.api.session.events.model.Event
|
||||||
import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState
|
import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState
|
||||||
import org.matrix.android.sdk.api.session.room.model.RoomMemberSummary
|
import org.matrix.android.sdk.api.session.room.model.RoomMemberSummary
|
||||||
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||||
import org.matrix.android.sdk.api.session.room.model.create.CreateRoomParams
|
import org.matrix.android.sdk.api.session.room.model.create.CreateRoomParams
|
||||||
import org.matrix.android.sdk.api.session.room.peeking.PeekResult
|
import org.matrix.android.sdk.api.session.room.peeking.PeekResult
|
||||||
|
import org.matrix.android.sdk.api.session.room.summary.RoomAggregateNotificationCount
|
||||||
import org.matrix.android.sdk.api.util.Optional
|
import org.matrix.android.sdk.api.util.Optional
|
||||||
import org.matrix.android.sdk.internal.session.room.alias.RoomAliasDescription
|
import org.matrix.android.sdk.internal.session.room.alias.RoomAliasDescription
|
||||||
|
|
||||||
|
@ -170,4 +172,29 @@ interface RoomService {
|
||||||
* This call will try to gather some information on this room, but it could fail and get nothing more
|
* This call will try to gather some information on this room, but it could fail and get nothing more
|
||||||
*/
|
*/
|
||||||
suspend fun peekRoom(roomIdOrAlias: String): PeekResult
|
suspend fun peekRoom(roomIdOrAlias: String): PeekResult
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO Doc
|
||||||
|
*/
|
||||||
|
fun getPagedRoomSummariesLive(queryParams: RoomSummaryQueryParams,
|
||||||
|
pagedListConfig: PagedList.Config = defaultPagedListConfig): LiveData<PagedList<RoomSummary>>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO Doc
|
||||||
|
*/
|
||||||
|
fun getFilteredPagedRoomSummariesLive(queryParams: RoomSummaryQueryParams,
|
||||||
|
pagedListConfig: PagedList.Config = defaultPagedListConfig): UpdatableFilterLivePageResult
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO Doc
|
||||||
|
*/
|
||||||
|
fun getNotificationCountForRooms(queryParams: RoomSummaryQueryParams): RoomAggregateNotificationCount
|
||||||
|
|
||||||
|
private val defaultPagedListConfig
|
||||||
|
get() = PagedList.Config.Builder()
|
||||||
|
.setPageSize(10)
|
||||||
|
.setInitialLoadSizeHint(20)
|
||||||
|
.setEnablePlaceholders(false)
|
||||||
|
.setPrefetchDistance(10)
|
||||||
|
.build()
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
package org.matrix.android.sdk.api.session.room
|
package org.matrix.android.sdk.api.session.room
|
||||||
|
|
||||||
import org.matrix.android.sdk.api.query.QueryStringValue
|
import org.matrix.android.sdk.api.query.QueryStringValue
|
||||||
|
import org.matrix.android.sdk.api.query.RoomCategoryFilter
|
||||||
|
import org.matrix.android.sdk.api.query.RoomTagQueryFilter
|
||||||
import org.matrix.android.sdk.api.session.room.model.Membership
|
import org.matrix.android.sdk.api.session.room.model.Membership
|
||||||
|
|
||||||
fun roomSummaryQueryParams(init: (RoomSummaryQueryParams.Builder.() -> Unit) = {}): RoomSummaryQueryParams {
|
fun roomSummaryQueryParams(init: (RoomSummaryQueryParams.Builder.() -> Unit) = {}): RoomSummaryQueryParams {
|
||||||
|
@ -31,7 +33,9 @@ data class RoomSummaryQueryParams(
|
||||||
val roomId: QueryStringValue,
|
val roomId: QueryStringValue,
|
||||||
val displayName: QueryStringValue,
|
val displayName: QueryStringValue,
|
||||||
val canonicalAlias: QueryStringValue,
|
val canonicalAlias: QueryStringValue,
|
||||||
val memberships: List<Membership>
|
val memberships: List<Membership>,
|
||||||
|
val roomCategoryFilter: RoomCategoryFilter?,
|
||||||
|
val roomTagQueryFilter: RoomTagQueryFilter?
|
||||||
) {
|
) {
|
||||||
|
|
||||||
class Builder {
|
class Builder {
|
||||||
|
@ -40,12 +44,16 @@ data class RoomSummaryQueryParams(
|
||||||
var displayName: QueryStringValue = QueryStringValue.IsNotEmpty
|
var displayName: QueryStringValue = QueryStringValue.IsNotEmpty
|
||||||
var canonicalAlias: QueryStringValue = QueryStringValue.NoCondition
|
var canonicalAlias: QueryStringValue = QueryStringValue.NoCondition
|
||||||
var memberships: List<Membership> = Membership.all()
|
var memberships: List<Membership> = Membership.all()
|
||||||
|
var roomCategoryFilter: RoomCategoryFilter? = RoomCategoryFilter.ALL
|
||||||
|
var roomTagQueryFilter: RoomTagQueryFilter? = null
|
||||||
|
|
||||||
fun build() = RoomSummaryQueryParams(
|
fun build() = RoomSummaryQueryParams(
|
||||||
roomId = roomId,
|
roomId = roomId,
|
||||||
displayName = displayName,
|
displayName = displayName,
|
||||||
canonicalAlias = canonicalAlias,
|
canonicalAlias = canonicalAlias,
|
||||||
memberships = memberships
|
memberships = memberships,
|
||||||
|
roomCategoryFilter = roomCategoryFilter,
|
||||||
|
roomTagQueryFilter = roomTagQueryFilter
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2019 New Vector Ltd
|
* Copyright (c) 2021 The Matrix.org Foundation C.I.C.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
@ -14,12 +14,14 @@
|
||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package im.vector.app.features.home
|
package org.matrix.android.sdk.api.session.room
|
||||||
|
|
||||||
import im.vector.app.core.utils.BehaviorDataSource
|
import androidx.lifecycle.LiveData
|
||||||
|
import androidx.paging.PagedList
|
||||||
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||||
import javax.inject.Inject
|
|
||||||
import javax.inject.Singleton
|
|
||||||
|
|
||||||
@Singleton
|
interface UpdatableFilterLivePageResult {
|
||||||
class HomeRoomListDataSource @Inject constructor() : BehaviorDataSource<List<RoomSummary>>()
|
val livePagedList: LiveData<PagedList<RoomSummary>>
|
||||||
|
|
||||||
|
fun updateQuery(queryParams: RoomSummaryQueryParams)
|
||||||
|
}
|
|
@ -35,5 +35,5 @@ object MessageType {
|
||||||
const val MSGTYPE_STICKER_LOCAL = "org.matrix.android.sdk.sticker"
|
const val MSGTYPE_STICKER_LOCAL = "org.matrix.android.sdk.sticker"
|
||||||
|
|
||||||
const val MSGTYPE_CONFETTI = "nic.custom.confetti"
|
const val MSGTYPE_CONFETTI = "nic.custom.confetti"
|
||||||
const val MSGTYPE_SNOW = "nic.custom.snow"
|
const val MSGTYPE_SNOW = "io.element.effect.snowfall"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2021 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.api.session.room.summary
|
||||||
|
|
||||||
|
data class RoomAggregateNotificationCount(
|
||||||
|
val notificationCount: Int,
|
||||||
|
val highlightCount: Int
|
||||||
|
) {
|
||||||
|
val totalCount = notificationCount + highlightCount
|
||||||
|
val isHighlight = highlightCount > 0
|
||||||
|
}
|
|
@ -17,6 +17,7 @@
|
||||||
package org.matrix.android.sdk.internal.auth
|
package org.matrix.android.sdk.internal.auth
|
||||||
|
|
||||||
import org.matrix.android.sdk.api.auth.data.Credentials
|
import org.matrix.android.sdk.api.auth.data.Credentials
|
||||||
|
import org.matrix.android.sdk.internal.auth.data.Availability
|
||||||
import org.matrix.android.sdk.internal.auth.data.LoginFlowResponse
|
import org.matrix.android.sdk.internal.auth.data.LoginFlowResponse
|
||||||
import org.matrix.android.sdk.internal.auth.data.PasswordLoginParams
|
import org.matrix.android.sdk.internal.auth.data.PasswordLoginParams
|
||||||
import org.matrix.android.sdk.internal.auth.data.RiotConfig
|
import org.matrix.android.sdk.internal.auth.data.RiotConfig
|
||||||
|
@ -29,12 +30,12 @@ import org.matrix.android.sdk.internal.auth.registration.SuccessResult
|
||||||
import org.matrix.android.sdk.internal.auth.registration.ValidationCodeBody
|
import org.matrix.android.sdk.internal.auth.registration.ValidationCodeBody
|
||||||
import org.matrix.android.sdk.internal.auth.version.Versions
|
import org.matrix.android.sdk.internal.auth.version.Versions
|
||||||
import org.matrix.android.sdk.internal.network.NetworkConstants
|
import org.matrix.android.sdk.internal.network.NetworkConstants
|
||||||
import retrofit2.Call
|
|
||||||
import retrofit2.http.Body
|
import retrofit2.http.Body
|
||||||
import retrofit2.http.GET
|
import retrofit2.http.GET
|
||||||
import retrofit2.http.Headers
|
import retrofit2.http.Headers
|
||||||
import retrofit2.http.POST
|
import retrofit2.http.POST
|
||||||
import retrofit2.http.Path
|
import retrofit2.http.Path
|
||||||
|
import retrofit2.http.Query
|
||||||
import retrofit2.http.Url
|
import retrofit2.http.Url
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -45,26 +46,32 @@ internal interface AuthAPI {
|
||||||
* Get a Riot config file, using the name including the domain
|
* Get a Riot config file, using the name including the domain
|
||||||
*/
|
*/
|
||||||
@GET("config.{domain}.json")
|
@GET("config.{domain}.json")
|
||||||
fun getRiotConfigDomain(@Path("domain") domain: String): Call<RiotConfig>
|
suspend fun getRiotConfigDomain(@Path("domain") domain: String): RiotConfig
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get a Riot config file
|
* Get a Riot config file
|
||||||
*/
|
*/
|
||||||
@GET("config.json")
|
@GET("config.json")
|
||||||
fun getRiotConfig(): Call<RiotConfig>
|
suspend fun getRiotConfig(): RiotConfig
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the version information of the homeserver
|
* Get the version information of the homeserver
|
||||||
*/
|
*/
|
||||||
@GET(NetworkConstants.URI_API_PREFIX_PATH_ + "versions")
|
@GET(NetworkConstants.URI_API_PREFIX_PATH_ + "versions")
|
||||||
fun versions(): Call<Versions>
|
suspend fun versions(): Versions
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register to the homeserver, or get error 401 with a RegistrationFlowResponse object if registration is incomplete
|
* Register to the homeserver, or get error 401 with a RegistrationFlowResponse object if registration is incomplete
|
||||||
* Ref: https://matrix.org/docs/spec/client_server/latest#account-registration-and-management
|
* Ref: https://matrix.org/docs/spec/client_server/latest#account-registration-and-management
|
||||||
*/
|
*/
|
||||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "register")
|
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "register")
|
||||||
fun register(@Body registrationParams: RegistrationParams): Call<Credentials>
|
suspend fun register(@Body registrationParams: RegistrationParams): Credentials
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks to see if a username is available, and valid, for the server.
|
||||||
|
*/
|
||||||
|
@GET(NetworkConstants.URI_API_PREFIX_PATH_R0 + "register/available")
|
||||||
|
suspend fun registerAvailable(@Query("username") username: String): Availability
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add 3Pid during registration
|
* Add 3Pid during registration
|
||||||
|
@ -72,22 +79,22 @@ internal interface AuthAPI {
|
||||||
* https://github.com/matrix-org/matrix-doc/pull/2290
|
* https://github.com/matrix-org/matrix-doc/pull/2290
|
||||||
*/
|
*/
|
||||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "register/{threePid}/requestToken")
|
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "register/{threePid}/requestToken")
|
||||||
fun add3Pid(@Path("threePid") threePid: String,
|
suspend fun add3Pid(@Path("threePid") threePid: String,
|
||||||
@Body params: AddThreePidRegistrationParams): Call<AddThreePidRegistrationResponse>
|
@Body params: AddThreePidRegistrationParams): AddThreePidRegistrationResponse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Validate 3pid
|
* Validate 3pid
|
||||||
*/
|
*/
|
||||||
@POST
|
@POST
|
||||||
fun validate3Pid(@Url url: String,
|
suspend fun validate3Pid(@Url url: String,
|
||||||
@Body params: ValidationCodeBody): Call<SuccessResult>
|
@Body params: ValidationCodeBody): SuccessResult
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the supported login flow
|
* Get the supported login flow
|
||||||
* Ref: https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-login
|
* Ref: https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-login
|
||||||
*/
|
*/
|
||||||
@GET(NetworkConstants.URI_API_PREFIX_PATH_R0 + "login")
|
@GET(NetworkConstants.URI_API_PREFIX_PATH_R0 + "login")
|
||||||
fun getLoginFlows(): Call<LoginFlowResponse>
|
suspend fun getLoginFlows(): LoginFlowResponse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Pass params to the server for the current login phase.
|
* Pass params to the server for the current login phase.
|
||||||
|
@ -97,22 +104,22 @@ internal interface AuthAPI {
|
||||||
*/
|
*/
|
||||||
@Headers("CONNECT_TIMEOUT:60000", "READ_TIMEOUT:60000", "WRITE_TIMEOUT:60000")
|
@Headers("CONNECT_TIMEOUT:60000", "READ_TIMEOUT:60000", "WRITE_TIMEOUT:60000")
|
||||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "login")
|
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "login")
|
||||||
fun login(@Body loginParams: PasswordLoginParams): Call<Credentials>
|
suspend fun login(@Body loginParams: PasswordLoginParams): Credentials
|
||||||
|
|
||||||
// Unfortunately we cannot use interface for @Body parameter, so I duplicate the method for the type TokenLoginParams
|
// Unfortunately we cannot use interface for @Body parameter, so I duplicate the method for the type TokenLoginParams
|
||||||
@Headers("CONNECT_TIMEOUT:60000", "READ_TIMEOUT:60000", "WRITE_TIMEOUT:60000")
|
@Headers("CONNECT_TIMEOUT:60000", "READ_TIMEOUT:60000", "WRITE_TIMEOUT:60000")
|
||||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "login")
|
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "login")
|
||||||
fun login(@Body loginParams: TokenLoginParams): Call<Credentials>
|
suspend fun login(@Body loginParams: TokenLoginParams): Credentials
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ask the homeserver to reset the password associated with the provided email.
|
* Ask the homeserver to reset the password associated with the provided email.
|
||||||
*/
|
*/
|
||||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "account/password/email/requestToken")
|
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "account/password/email/requestToken")
|
||||||
fun resetPassword(@Body params: AddThreePidRegistrationParams): Call<AddThreePidRegistrationResponse>
|
suspend fun resetPassword(@Body params: AddThreePidRegistrationParams): AddThreePidRegistrationResponse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ask the homeserver to reset the password with the provided new password once the email is validated.
|
* Ask the homeserver to reset the password with the provided new password once the email is validated.
|
||||||
*/
|
*/
|
||||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "account/password")
|
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "account/password")
|
||||||
fun resetPasswordMailConfirmed(@Body params: ResetPasswordMailConfirmed): Call<Unit>
|
suspend fun resetPasswordMailConfirmed(@Body params: ResetPasswordMailConfirmed)
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,6 @@ import org.matrix.android.sdk.api.failure.Failure
|
||||||
import org.matrix.android.sdk.api.session.Session
|
import org.matrix.android.sdk.api.session.Session
|
||||||
import org.matrix.android.sdk.api.util.appendParamToUrl
|
import org.matrix.android.sdk.api.util.appendParamToUrl
|
||||||
import org.matrix.android.sdk.internal.SessionManager
|
import org.matrix.android.sdk.internal.SessionManager
|
||||||
import org.matrix.android.sdk.internal.auth.data.LoginFlowResponse
|
|
||||||
import org.matrix.android.sdk.internal.auth.data.RiotConfig
|
import org.matrix.android.sdk.internal.auth.data.RiotConfig
|
||||||
import org.matrix.android.sdk.internal.auth.db.PendingSessionData
|
import org.matrix.android.sdk.internal.auth.db.PendingSessionData
|
||||||
import org.matrix.android.sdk.internal.auth.login.DefaultLoginWizard
|
import org.matrix.android.sdk.internal.auth.login.DefaultLoginWizard
|
||||||
|
@ -172,8 +171,8 @@ internal class DefaultAuthenticationService @Inject constructor(
|
||||||
|
|
||||||
// First check the homeserver version
|
// First check the homeserver version
|
||||||
return runCatching {
|
return runCatching {
|
||||||
executeRequest<Versions>(null) {
|
executeRequest(null) {
|
||||||
apiCall = authAPI.versions()
|
authAPI.versions()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.map { versions ->
|
.map { versions ->
|
||||||
|
@ -204,8 +203,8 @@ internal class DefaultAuthenticationService @Inject constructor(
|
||||||
|
|
||||||
// Ok, try to get the config.domain.json file of a RiotWeb client
|
// Ok, try to get the config.domain.json file of a RiotWeb client
|
||||||
return runCatching {
|
return runCatching {
|
||||||
executeRequest<RiotConfig>(null) {
|
executeRequest(null) {
|
||||||
apiCall = authAPI.getRiotConfigDomain(domain)
|
authAPI.getRiotConfigDomain(domain)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.map { riotConfig ->
|
.map { riotConfig ->
|
||||||
|
@ -232,8 +231,8 @@ internal class DefaultAuthenticationService @Inject constructor(
|
||||||
|
|
||||||
// Ok, try to get the config.json file of a RiotWeb client
|
// Ok, try to get the config.json file of a RiotWeb client
|
||||||
return runCatching {
|
return runCatching {
|
||||||
executeRequest<RiotConfig>(null) {
|
executeRequest(null) {
|
||||||
apiCall = authAPI.getRiotConfig()
|
authAPI.getRiotConfig()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.map { riotConfig ->
|
.map { riotConfig ->
|
||||||
|
@ -265,8 +264,8 @@ internal class DefaultAuthenticationService @Inject constructor(
|
||||||
|
|
||||||
val newAuthAPI = buildAuthAPI(newHomeServerConnectionConfig)
|
val newAuthAPI = buildAuthAPI(newHomeServerConnectionConfig)
|
||||||
|
|
||||||
val versions = executeRequest<Versions>(null) {
|
val versions = executeRequest(null) {
|
||||||
apiCall = newAuthAPI.versions()
|
newAuthAPI.versions()
|
||||||
}
|
}
|
||||||
|
|
||||||
return getLoginFlowResult(newAuthAPI, versions, defaultHomeServerUrl)
|
return getLoginFlowResult(newAuthAPI, versions, defaultHomeServerUrl)
|
||||||
|
@ -293,8 +292,8 @@ internal class DefaultAuthenticationService @Inject constructor(
|
||||||
|
|
||||||
val newAuthAPI = buildAuthAPI(newHomeServerConnectionConfig)
|
val newAuthAPI = buildAuthAPI(newHomeServerConnectionConfig)
|
||||||
|
|
||||||
val versions = executeRequest<Versions>(null) {
|
val versions = executeRequest(null) {
|
||||||
apiCall = newAuthAPI.versions()
|
newAuthAPI.versions()
|
||||||
}
|
}
|
||||||
|
|
||||||
getLoginFlowResult(newAuthAPI, versions, wellknownResult.homeServerUrl)
|
getLoginFlowResult(newAuthAPI, versions, wellknownResult.homeServerUrl)
|
||||||
|
@ -305,8 +304,8 @@ internal class DefaultAuthenticationService @Inject constructor(
|
||||||
|
|
||||||
private suspend fun getLoginFlowResult(authAPI: AuthAPI, versions: Versions, homeServerUrl: String): LoginFlowResult {
|
private suspend fun getLoginFlowResult(authAPI: AuthAPI, versions: Versions, homeServerUrl: String): LoginFlowResult {
|
||||||
// Get the login flow
|
// Get the login flow
|
||||||
val loginFlowResponse = executeRequest<LoginFlowResponse>(null) {
|
val loginFlowResponse = executeRequest(null) {
|
||||||
apiCall = authAPI.getLoginFlows()
|
authAPI.getLoginFlows()
|
||||||
}
|
}
|
||||||
return LoginFlowResult.Success(
|
return LoginFlowResult.Success(
|
||||||
loginFlowResponse.flows.orEmpty().mapNotNull { it.type },
|
loginFlowResponse.flows.orEmpty().mapNotNull { it.type },
|
||||||
|
|
|
@ -20,7 +20,6 @@ import dagger.Lazy
|
||||||
import okhttp3.OkHttpClient
|
import okhttp3.OkHttpClient
|
||||||
import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig
|
import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig
|
||||||
import org.matrix.android.sdk.api.failure.Failure
|
import org.matrix.android.sdk.api.failure.Failure
|
||||||
import org.matrix.android.sdk.internal.auth.data.LoginFlowResponse
|
|
||||||
import org.matrix.android.sdk.internal.di.Unauthenticated
|
import org.matrix.android.sdk.internal.di.Unauthenticated
|
||||||
import org.matrix.android.sdk.internal.network.RetrofitFactory
|
import org.matrix.android.sdk.internal.network.RetrofitFactory
|
||||||
import org.matrix.android.sdk.internal.network.executeRequest
|
import org.matrix.android.sdk.internal.network.executeRequest
|
||||||
|
@ -49,8 +48,8 @@ internal class DefaultIsValidClientServerApiTask @Inject constructor(
|
||||||
.create(AuthAPI::class.java)
|
.create(AuthAPI::class.java)
|
||||||
|
|
||||||
return try {
|
return try {
|
||||||
executeRequest<LoginFlowResponse>(null) {
|
executeRequest(null) {
|
||||||
apiCall = authAPI.getLoginFlows()
|
authAPI.getLoginFlows()
|
||||||
}
|
}
|
||||||
// We get a response, so the API is valid
|
// We get a response, so the API is valid
|
||||||
true
|
true
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2021 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.auth.data
|
||||||
|
|
||||||
|
import com.squareup.moshi.Json
|
||||||
|
import com.squareup.moshi.JsonClass
|
||||||
|
|
||||||
|
@JsonClass(generateAdapter = true)
|
||||||
|
internal data class Availability(
|
||||||
|
/**
|
||||||
|
* A flag to indicate that the username is available. This should always be true when the server replies with 200 OK.
|
||||||
|
*/
|
||||||
|
@Json(name = "available")
|
||||||
|
val available: Boolean? = null
|
||||||
|
)
|
|
@ -17,7 +17,6 @@
|
||||||
package org.matrix.android.sdk.internal.auth.login
|
package org.matrix.android.sdk.internal.auth.login
|
||||||
|
|
||||||
import android.util.Patterns
|
import android.util.Patterns
|
||||||
import org.matrix.android.sdk.api.auth.data.Credentials
|
|
||||||
import org.matrix.android.sdk.api.auth.login.LoginWizard
|
import org.matrix.android.sdk.api.auth.login.LoginWizard
|
||||||
import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
|
import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
|
||||||
import org.matrix.android.sdk.api.session.Session
|
import org.matrix.android.sdk.api.session.Session
|
||||||
|
@ -29,7 +28,6 @@ import org.matrix.android.sdk.internal.auth.data.ThreePidMedium
|
||||||
import org.matrix.android.sdk.internal.auth.data.TokenLoginParams
|
import org.matrix.android.sdk.internal.auth.data.TokenLoginParams
|
||||||
import org.matrix.android.sdk.internal.auth.db.PendingSessionData
|
import org.matrix.android.sdk.internal.auth.db.PendingSessionData
|
||||||
import org.matrix.android.sdk.internal.auth.registration.AddThreePidRegistrationParams
|
import org.matrix.android.sdk.internal.auth.registration.AddThreePidRegistrationParams
|
||||||
import org.matrix.android.sdk.internal.auth.registration.AddThreePidRegistrationResponse
|
|
||||||
import org.matrix.android.sdk.internal.auth.registration.RegisterAddThreePidTask
|
import org.matrix.android.sdk.internal.auth.registration.RegisterAddThreePidTask
|
||||||
import org.matrix.android.sdk.internal.network.executeRequest
|
import org.matrix.android.sdk.internal.network.executeRequest
|
||||||
|
|
||||||
|
@ -49,8 +47,8 @@ internal class DefaultLoginWizard(
|
||||||
} else {
|
} else {
|
||||||
PasswordLoginParams.userIdentifier(login, password, deviceName)
|
PasswordLoginParams.userIdentifier(login, password, deviceName)
|
||||||
}
|
}
|
||||||
val credentials = executeRequest<Credentials>(null) {
|
val credentials = executeRequest(null) {
|
||||||
apiCall = authAPI.login(loginParams)
|
authAPI.login(loginParams)
|
||||||
}
|
}
|
||||||
|
|
||||||
return sessionCreator.createSession(credentials, pendingSessionData.homeServerConnectionConfig)
|
return sessionCreator.createSession(credentials, pendingSessionData.homeServerConnectionConfig)
|
||||||
|
@ -63,8 +61,8 @@ internal class DefaultLoginWizard(
|
||||||
val loginParams = TokenLoginParams(
|
val loginParams = TokenLoginParams(
|
||||||
token = loginToken
|
token = loginToken
|
||||||
)
|
)
|
||||||
val credentials = executeRequest<Credentials>(null) {
|
val credentials = executeRequest(null) {
|
||||||
apiCall = authAPI.login(loginParams)
|
authAPI.login(loginParams)
|
||||||
}
|
}
|
||||||
|
|
||||||
return sessionCreator.createSession(credentials, pendingSessionData.homeServerConnectionConfig)
|
return sessionCreator.createSession(credentials, pendingSessionData.homeServerConnectionConfig)
|
||||||
|
@ -80,8 +78,8 @@ internal class DefaultLoginWizard(
|
||||||
pendingSessionData = pendingSessionData.copy(sendAttempt = pendingSessionData.sendAttempt + 1)
|
pendingSessionData = pendingSessionData.copy(sendAttempt = pendingSessionData.sendAttempt + 1)
|
||||||
.also { pendingSessionStore.savePendingSessionData(it) }
|
.also { pendingSessionStore.savePendingSessionData(it) }
|
||||||
|
|
||||||
val result = executeRequest<AddThreePidRegistrationResponse>(null) {
|
val result = executeRequest(null) {
|
||||||
apiCall = authAPI.resetPassword(AddThreePidRegistrationParams.from(param))
|
authAPI.resetPassword(AddThreePidRegistrationParams.from(param))
|
||||||
}
|
}
|
||||||
|
|
||||||
pendingSessionData = pendingSessionData.copy(resetPasswordData = ResetPasswordData(newPassword, result))
|
pendingSessionData = pendingSessionData.copy(resetPasswordData = ResetPasswordData(newPassword, result))
|
||||||
|
@ -98,8 +96,8 @@ internal class DefaultLoginWizard(
|
||||||
safeResetPasswordData.newPassword
|
safeResetPasswordData.newPassword
|
||||||
)
|
)
|
||||||
|
|
||||||
executeRequest<Unit>(null) {
|
executeRequest(null) {
|
||||||
apiCall = authAPI.resetPasswordMailConfirmed(param)
|
authAPI.resetPasswordMailConfirmed(param)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set to null?
|
// Set to null?
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
package org.matrix.android.sdk.internal.auth.login
|
package org.matrix.android.sdk.internal.auth.login
|
||||||
|
|
||||||
import dagger.Lazy
|
import dagger.Lazy
|
||||||
import org.matrix.android.sdk.api.auth.data.Credentials
|
|
||||||
import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig
|
import org.matrix.android.sdk.api.auth.data.HomeServerConnectionConfig
|
||||||
import org.matrix.android.sdk.api.failure.Failure
|
import org.matrix.android.sdk.api.failure.Failure
|
||||||
import org.matrix.android.sdk.api.session.Session
|
import org.matrix.android.sdk.api.session.Session
|
||||||
|
@ -59,19 +58,16 @@ internal class DefaultDirectLoginTask @Inject constructor(
|
||||||
val loginParams = PasswordLoginParams.userIdentifier(params.userId, params.password, params.deviceName)
|
val loginParams = PasswordLoginParams.userIdentifier(params.userId, params.password, params.deviceName)
|
||||||
|
|
||||||
val credentials = try {
|
val credentials = try {
|
||||||
executeRequest<Credentials>(null) {
|
executeRequest(null) {
|
||||||
apiCall = authAPI.login(loginParams)
|
authAPI.login(loginParams)
|
||||||
}
|
}
|
||||||
} catch (throwable: Throwable) {
|
} catch (throwable: Throwable) {
|
||||||
when (throwable) {
|
throw when (throwable) {
|
||||||
is UnrecognizedCertificateException -> {
|
is UnrecognizedCertificateException -> Failure.UnrecognizedCertificateFailure(
|
||||||
throw Failure.UnrecognizedCertificateFailure(
|
homeServerUrl,
|
||||||
homeServerUrl,
|
throwable.fingerprint
|
||||||
throwable.fingerprint
|
)
|
||||||
)
|
else -> throwable
|
||||||
}
|
|
||||||
else ->
|
|
||||||
throw throwable
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ package org.matrix.android.sdk.internal.auth.registration
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import org.matrix.android.sdk.api.auth.data.LoginFlowTypes
|
import org.matrix.android.sdk.api.auth.data.LoginFlowTypes
|
||||||
import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
|
import org.matrix.android.sdk.api.auth.registration.RegisterThreePid
|
||||||
|
import org.matrix.android.sdk.api.auth.registration.RegistrationAvailability
|
||||||
import org.matrix.android.sdk.api.auth.registration.RegistrationResult
|
import org.matrix.android.sdk.api.auth.registration.RegistrationResult
|
||||||
import org.matrix.android.sdk.api.auth.registration.RegistrationWizard
|
import org.matrix.android.sdk.api.auth.registration.RegistrationWizard
|
||||||
import org.matrix.android.sdk.api.auth.registration.toFlowResult
|
import org.matrix.android.sdk.api.auth.registration.toFlowResult
|
||||||
|
@ -40,9 +41,10 @@ internal class DefaultRegistrationWizard(
|
||||||
|
|
||||||
private var pendingSessionData: PendingSessionData = pendingSessionStore.getPendingSessionData() ?: error("Pending session data should exist here")
|
private var pendingSessionData: PendingSessionData = pendingSessionStore.getPendingSessionData() ?: error("Pending session data should exist here")
|
||||||
|
|
||||||
private val registerTask = DefaultRegisterTask(authAPI)
|
private val registerTask: RegisterTask = DefaultRegisterTask(authAPI)
|
||||||
private val registerAddThreePidTask = DefaultRegisterAddThreePidTask(authAPI)
|
private val registerAvailableTask: RegisterAvailableTask = DefaultRegisterAvailableTask(authAPI)
|
||||||
private val validateCodeTask = DefaultValidateCodeTask(authAPI)
|
private val registerAddThreePidTask: RegisterAddThreePidTask = DefaultRegisterAddThreePidTask(authAPI)
|
||||||
|
private val validateCodeTask: ValidateCodeTask = DefaultValidateCodeTask(authAPI)
|
||||||
|
|
||||||
override val currentThreePid: String?
|
override val currentThreePid: String?
|
||||||
get() {
|
get() {
|
||||||
|
@ -203,4 +205,8 @@ internal class DefaultRegistrationWizard(
|
||||||
val session = sessionCreator.createSession(credentials, pendingSessionData.homeServerConnectionConfig)
|
val session = sessionCreator.createSession(credentials, pendingSessionData.homeServerConnectionConfig)
|
||||||
return RegistrationResult.Success(session)
|
return RegistrationResult.Success(session)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override suspend fun registrationAvailable(userName: String): RegistrationAvailability {
|
||||||
|
return registerAvailableTask.execute(RegisterAvailableTask.Params(userName))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ internal class DefaultRegisterAddThreePidTask(
|
||||||
|
|
||||||
override suspend fun execute(params: RegisterAddThreePidTask.Params): AddThreePidRegistrationResponse {
|
override suspend fun execute(params: RegisterAddThreePidTask.Params): AddThreePidRegistrationResponse {
|
||||||
return executeRequest(null) {
|
return executeRequest(null) {
|
||||||
apiCall = authAPI.add3Pid(params.threePid.toPath(), AddThreePidRegistrationParams.from(params))
|
authAPI.add3Pid(params.threePid.toPath(), AddThreePidRegistrationParams.from(params))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,47 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2021 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.auth.registration
|
||||||
|
|
||||||
|
import org.matrix.android.sdk.api.auth.registration.RegistrationAvailability
|
||||||
|
import org.matrix.android.sdk.api.failure.Failure
|
||||||
|
import org.matrix.android.sdk.api.failure.isRegistrationAvailabilityError
|
||||||
|
import org.matrix.android.sdk.internal.auth.AuthAPI
|
||||||
|
import org.matrix.android.sdk.internal.network.executeRequest
|
||||||
|
import org.matrix.android.sdk.internal.task.Task
|
||||||
|
|
||||||
|
internal interface RegisterAvailableTask : Task<RegisterAvailableTask.Params, RegistrationAvailability> {
|
||||||
|
data class Params(
|
||||||
|
val userName: String
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
internal class DefaultRegisterAvailableTask(private val authAPI: AuthAPI) : RegisterAvailableTask {
|
||||||
|
override suspend fun execute(params: RegisterAvailableTask.Params): RegistrationAvailability {
|
||||||
|
return try {
|
||||||
|
executeRequest(null) {
|
||||||
|
authAPI.registerAvailable(params.userName)
|
||||||
|
}
|
||||||
|
RegistrationAvailability.Available
|
||||||
|
} catch (exception: Throwable) {
|
||||||
|
if (exception.isRegistrationAvailabilityError()) {
|
||||||
|
RegistrationAvailability.NotAvailable(exception as Failure.ServerError)
|
||||||
|
} else {
|
||||||
|
throw exception
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -36,7 +36,7 @@ internal class DefaultRegisterTask(
|
||||||
override suspend fun execute(params: RegisterTask.Params): Credentials {
|
override suspend fun execute(params: RegisterTask.Params): Credentials {
|
||||||
try {
|
try {
|
||||||
return executeRequest(null) {
|
return executeRequest(null) {
|
||||||
apiCall = authAPI.register(params.registrationParams)
|
authAPI.register(params.registrationParams)
|
||||||
}
|
}
|
||||||
} catch (throwable: Throwable) {
|
} catch (throwable: Throwable) {
|
||||||
throw throwable.toRegistrationFlowResponse()
|
throw throwable.toRegistrationFlowResponse()
|
||||||
|
|
|
@ -33,7 +33,7 @@ internal class DefaultValidateCodeTask(
|
||||||
|
|
||||||
override suspend fun execute(params: ValidateCodeTask.Params): SuccessResult {
|
override suspend fun execute(params: ValidateCodeTask.Params): SuccessResult {
|
||||||
return executeRequest(null) {
|
return executeRequest(null) {
|
||||||
apiCall = authAPI.validate3Pid(params.url, params.body)
|
authAPI.validate3Pid(params.url, params.body)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,6 @@ import org.matrix.android.sdk.internal.crypto.model.rest.SignatureUploadResponse
|
||||||
import org.matrix.android.sdk.internal.crypto.model.rest.UpdateDeviceInfoBody
|
import org.matrix.android.sdk.internal.crypto.model.rest.UpdateDeviceInfoBody
|
||||||
import org.matrix.android.sdk.internal.crypto.model.rest.UploadSigningKeysBody
|
import org.matrix.android.sdk.internal.crypto.model.rest.UploadSigningKeysBody
|
||||||
import org.matrix.android.sdk.internal.network.NetworkConstants
|
import org.matrix.android.sdk.internal.network.NetworkConstants
|
||||||
import retrofit2.Call
|
|
||||||
import retrofit2.http.Body
|
import retrofit2.http.Body
|
||||||
import retrofit2.http.GET
|
import retrofit2.http.GET
|
||||||
import retrofit2.http.HTTP
|
import retrofit2.http.HTTP
|
||||||
|
@ -46,14 +45,14 @@ internal interface CryptoApi {
|
||||||
* Doc: https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-devices
|
* Doc: https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-devices
|
||||||
*/
|
*/
|
||||||
@GET(NetworkConstants.URI_API_PREFIX_PATH_R0 + "devices")
|
@GET(NetworkConstants.URI_API_PREFIX_PATH_R0 + "devices")
|
||||||
fun getDevices(): Call<DevicesListResponse>
|
suspend fun getDevices(): DevicesListResponse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the device info by id
|
* Get the device info by id
|
||||||
* Doc: https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-devices-deviceid
|
* Doc: https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-devices-deviceid
|
||||||
*/
|
*/
|
||||||
@GET(NetworkConstants.URI_API_PREFIX_PATH_R0 + "devices/{deviceId}")
|
@GET(NetworkConstants.URI_API_PREFIX_PATH_R0 + "devices/{deviceId}")
|
||||||
fun getDeviceInfo(@Path("deviceId") deviceId: String): Call<DeviceInfo>
|
suspend fun getDeviceInfo(@Path("deviceId") deviceId: String): DeviceInfo
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Upload device and/or one-time keys.
|
* Upload device and/or one-time keys.
|
||||||
|
@ -62,7 +61,7 @@ internal interface CryptoApi {
|
||||||
* @param body the keys to be sent.
|
* @param body the keys to be sent.
|
||||||
*/
|
*/
|
||||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "keys/upload")
|
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "keys/upload")
|
||||||
fun uploadKeys(@Body body: KeysUploadBody): Call<KeysUploadResponse>
|
suspend fun uploadKeys(@Body body: KeysUploadBody): KeysUploadResponse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Download device keys.
|
* Download device keys.
|
||||||
|
@ -71,7 +70,7 @@ internal interface CryptoApi {
|
||||||
* @param params the params.
|
* @param params the params.
|
||||||
*/
|
*/
|
||||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "keys/query")
|
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "keys/query")
|
||||||
fun downloadKeysForUsers(@Body params: KeysQueryBody): Call<KeysQueryResponse>
|
suspend fun downloadKeysForUsers(@Body params: KeysQueryBody): KeysQueryResponse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CrossSigning - Uploading signing keys
|
* CrossSigning - Uploading signing keys
|
||||||
|
@ -79,7 +78,7 @@ internal interface CryptoApi {
|
||||||
* This endpoint requires UI Auth.
|
* This endpoint requires UI Auth.
|
||||||
*/
|
*/
|
||||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "keys/device_signing/upload")
|
@POST(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "keys/device_signing/upload")
|
||||||
fun uploadSigningKeys(@Body params: UploadSigningKeysBody): Call<KeysQueryResponse>
|
suspend fun uploadSigningKeys(@Body params: UploadSigningKeysBody): KeysQueryResponse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* CrossSigning - Uploading signatures
|
* CrossSigning - Uploading signatures
|
||||||
|
@ -98,7 +97,7 @@ internal interface CryptoApi {
|
||||||
* However, signatures made for other users' keys, made by her user-signing key, will not be included.
|
* However, signatures made for other users' keys, made by her user-signing key, will not be included.
|
||||||
*/
|
*/
|
||||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "keys/signatures/upload")
|
@POST(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "keys/signatures/upload")
|
||||||
fun uploadSignatures(@Body params: Map<String, @JvmSuppressWildcards Any>?): Call<SignatureUploadResponse>
|
suspend fun uploadSignatures(@Body params: Map<String, @JvmSuppressWildcards Any>?): SignatureUploadResponse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Claim one-time keys.
|
* Claim one-time keys.
|
||||||
|
@ -107,7 +106,7 @@ internal interface CryptoApi {
|
||||||
* @param params the params.
|
* @param params the params.
|
||||||
*/
|
*/
|
||||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "keys/claim")
|
@POST(NetworkConstants.URI_API_PREFIX_PATH_R0 + "keys/claim")
|
||||||
fun claimOneTimeKeysForUsersDevices(@Body body: KeysClaimBody): Call<KeysClaimResponse>
|
suspend fun claimOneTimeKeysForUsersDevices(@Body body: KeysClaimBody): KeysClaimResponse
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send an event to a specific list of devices
|
* Send an event to a specific list of devices
|
||||||
|
@ -118,9 +117,9 @@ internal interface CryptoApi {
|
||||||
* @param body the body
|
* @param body the body
|
||||||
*/
|
*/
|
||||||
@PUT(NetworkConstants.URI_API_PREFIX_PATH_R0 + "sendToDevice/{eventType}/{txnId}")
|
@PUT(NetworkConstants.URI_API_PREFIX_PATH_R0 + "sendToDevice/{eventType}/{txnId}")
|
||||||
fun sendToDevice(@Path("eventType") eventType: String,
|
suspend fun sendToDevice(@Path("eventType") eventType: String,
|
||||||
@Path("txnId") transactionId: String,
|
@Path("txnId") transactionId: String,
|
||||||
@Body body: SendToDeviceBody): Call<Unit>
|
@Body body: SendToDeviceBody)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete a device.
|
* Delete a device.
|
||||||
|
@ -130,8 +129,8 @@ internal interface CryptoApi {
|
||||||
* @param params the deletion parameters
|
* @param params the deletion parameters
|
||||||
*/
|
*/
|
||||||
@HTTP(path = NetworkConstants.URI_API_PREFIX_PATH_R0 + "devices/{device_id}", method = "DELETE", hasBody = true)
|
@HTTP(path = NetworkConstants.URI_API_PREFIX_PATH_R0 + "devices/{device_id}", method = "DELETE", hasBody = true)
|
||||||
fun deleteDevice(@Path("device_id") deviceId: String,
|
suspend fun deleteDevice(@Path("device_id") deviceId: String,
|
||||||
@Body params: DeleteDeviceParams): Call<Unit>
|
@Body params: DeleteDeviceParams)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the device information.
|
* Update the device information.
|
||||||
|
@ -141,8 +140,8 @@ internal interface CryptoApi {
|
||||||
* @param params the params
|
* @param params the params
|
||||||
*/
|
*/
|
||||||
@PUT(NetworkConstants.URI_API_PREFIX_PATH_R0 + "devices/{device_id}")
|
@PUT(NetworkConstants.URI_API_PREFIX_PATH_R0 + "devices/{device_id}")
|
||||||
fun updateDeviceInfo(@Path("device_id") deviceId: String,
|
suspend fun updateDeviceInfo(@Path("device_id") deviceId: String,
|
||||||
@Body params: UpdateDeviceInfoBody): Call<Unit>
|
@Body params: UpdateDeviceInfoBody)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the update devices list from two sync token.
|
* Get the update devices list from two sync token.
|
||||||
|
@ -152,6 +151,6 @@ internal interface CryptoApi {
|
||||||
* @param newToken the up-to token.
|
* @param newToken the up-to token.
|
||||||
*/
|
*/
|
||||||
@GET(NetworkConstants.URI_API_PREFIX_PATH_R0 + "keys/changes")
|
@GET(NetworkConstants.URI_API_PREFIX_PATH_R0 + "keys/changes")
|
||||||
fun getKeyChanges(@Query("from") oldToken: String,
|
suspend fun getKeyChanges(@Query("from") oldToken: String,
|
||||||
@Query("to") newToken: String): Call<KeyChangesResponse>
|
@Query("to") newToken: String): KeyChangesResponse
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,6 @@ import org.matrix.android.sdk.internal.crypto.keysbackup.model.rest.KeysVersionR
|
||||||
import org.matrix.android.sdk.internal.crypto.keysbackup.model.rest.RoomKeysBackupData
|
import org.matrix.android.sdk.internal.crypto.keysbackup.model.rest.RoomKeysBackupData
|
||||||
import org.matrix.android.sdk.internal.crypto.keysbackup.model.rest.UpdateKeysBackupVersionBody
|
import org.matrix.android.sdk.internal.crypto.keysbackup.model.rest.UpdateKeysBackupVersionBody
|
||||||
import org.matrix.android.sdk.internal.network.NetworkConstants
|
import org.matrix.android.sdk.internal.network.NetworkConstants
|
||||||
import retrofit2.Call
|
|
||||||
import retrofit2.http.Body
|
import retrofit2.http.Body
|
||||||
import retrofit2.http.DELETE
|
import retrofit2.http.DELETE
|
||||||
import retrofit2.http.GET
|
import retrofit2.http.GET
|
||||||
|
@ -48,14 +47,14 @@ internal interface RoomKeysApi {
|
||||||
* @param createKeysBackupVersionBody the body
|
* @param createKeysBackupVersionBody the body
|
||||||
*/
|
*/
|
||||||
@POST(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/version")
|
@POST(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/version")
|
||||||
fun createKeysBackupVersion(@Body createKeysBackupVersionBody: CreateKeysBackupVersionBody): Call<KeysVersion>
|
suspend fun createKeysBackupVersion(@Body createKeysBackupVersionBody: CreateKeysBackupVersionBody): KeysVersion
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the key backup last version
|
* Get the key backup last version
|
||||||
* If not supported by the server, an error is returned: {"errcode":"M_NOT_FOUND","error":"No backup found"}
|
* If not supported by the server, an error is returned: {"errcode":"M_NOT_FOUND","error":"No backup found"}
|
||||||
*/
|
*/
|
||||||
@GET(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/version")
|
@GET(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/version")
|
||||||
fun getKeysBackupLastVersion(): Call<KeysVersionResult>
|
suspend fun getKeysBackupLastVersion(): KeysVersionResult
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get information about the given version.
|
* Get information about the given version.
|
||||||
|
@ -64,7 +63,7 @@ internal interface RoomKeysApi {
|
||||||
* @param version version
|
* @param version version
|
||||||
*/
|
*/
|
||||||
@GET(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/version/{version}")
|
@GET(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/version/{version}")
|
||||||
fun getKeysBackupVersion(@Path("version") version: String): Call<KeysVersionResult>
|
suspend fun getKeysBackupVersion(@Path("version") version: String): KeysVersionResult
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update information about the given version.
|
* Update information about the given version.
|
||||||
|
@ -72,8 +71,8 @@ internal interface RoomKeysApi {
|
||||||
* @param updateKeysBackupVersionBody the body
|
* @param updateKeysBackupVersionBody the body
|
||||||
*/
|
*/
|
||||||
@PUT(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/version/{version}")
|
@PUT(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/version/{version}")
|
||||||
fun updateKeysBackupVersion(@Path("version") version: String,
|
suspend fun updateKeysBackupVersion(@Path("version") version: String,
|
||||||
@Body keysBackupVersionBody: UpdateKeysBackupVersionBody): Call<Unit>
|
@Body keysBackupVersionBody: UpdateKeysBackupVersionBody)
|
||||||
|
|
||||||
/* ==========================================================================================
|
/* ==========================================================================================
|
||||||
* Storing keys
|
* Storing keys
|
||||||
|
@ -94,10 +93,10 @@ internal interface RoomKeysApi {
|
||||||
* @param keyBackupData the data to send
|
* @param keyBackupData the data to send
|
||||||
*/
|
*/
|
||||||
@PUT(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys/{roomId}/{sessionId}")
|
@PUT(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys/{roomId}/{sessionId}")
|
||||||
fun storeRoomSessionData(@Path("roomId") roomId: String,
|
suspend fun storeRoomSessionData(@Path("roomId") roomId: String,
|
||||||
@Path("sessionId") sessionId: String,
|
@Path("sessionId") sessionId: String,
|
||||||
@Query("version") version: String,
|
@Query("version") version: String,
|
||||||
@Body keyBackupData: KeyBackupData): Call<BackupKeysResult>
|
@Body keyBackupData: KeyBackupData): BackupKeysResult
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store several keys for the given room, using the given backup version.
|
* Store several keys for the given room, using the given backup version.
|
||||||
|
@ -107,9 +106,9 @@ internal interface RoomKeysApi {
|
||||||
* @param roomKeysBackupData the data to send
|
* @param roomKeysBackupData the data to send
|
||||||
*/
|
*/
|
||||||
@PUT(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys/{roomId}")
|
@PUT(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys/{roomId}")
|
||||||
fun storeRoomSessionsData(@Path("roomId") roomId: String,
|
suspend fun storeRoomSessionsData(@Path("roomId") roomId: String,
|
||||||
@Query("version") version: String,
|
@Query("version") version: String,
|
||||||
@Body roomKeysBackupData: RoomKeysBackupData): Call<BackupKeysResult>
|
@Body roomKeysBackupData: RoomKeysBackupData): BackupKeysResult
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Store several keys, using the given backup version.
|
* Store several keys, using the given backup version.
|
||||||
|
@ -118,8 +117,8 @@ internal interface RoomKeysApi {
|
||||||
* @param keysBackupData the data to send
|
* @param keysBackupData the data to send
|
||||||
*/
|
*/
|
||||||
@PUT(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys")
|
@PUT(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys")
|
||||||
fun storeSessionsData(@Query("version") version: String,
|
suspend fun storeSessionsData(@Query("version") version: String,
|
||||||
@Body keysBackupData: KeysBackupData): Call<BackupKeysResult>
|
@Body keysBackupData: KeysBackupData): BackupKeysResult
|
||||||
|
|
||||||
/* ==========================================================================================
|
/* ==========================================================================================
|
||||||
* Retrieving keys
|
* Retrieving keys
|
||||||
|
@ -133,9 +132,9 @@ internal interface RoomKeysApi {
|
||||||
* @param version the version of the backup, or empty String to retrieve the last version
|
* @param version the version of the backup, or empty String to retrieve the last version
|
||||||
*/
|
*/
|
||||||
@GET(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys/{roomId}/{sessionId}")
|
@GET(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys/{roomId}/{sessionId}")
|
||||||
fun getRoomSessionData(@Path("roomId") roomId: String,
|
suspend fun getRoomSessionData(@Path("roomId") roomId: String,
|
||||||
@Path("sessionId") sessionId: String,
|
@Path("sessionId") sessionId: String,
|
||||||
@Query("version") version: String): Call<KeyBackupData>
|
@Query("version") version: String): KeyBackupData
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve all the keys for the given room from the backup.
|
* Retrieve all the keys for the given room from the backup.
|
||||||
|
@ -144,8 +143,8 @@ internal interface RoomKeysApi {
|
||||||
* @param version the version of the backup, or empty String to retrieve the last version
|
* @param version the version of the backup, or empty String to retrieve the last version
|
||||||
*/
|
*/
|
||||||
@GET(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys/{roomId}")
|
@GET(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys/{roomId}")
|
||||||
fun getRoomSessionsData(@Path("roomId") roomId: String,
|
suspend fun getRoomSessionsData(@Path("roomId") roomId: String,
|
||||||
@Query("version") version: String): Call<RoomKeysBackupData>
|
@Query("version") version: String): RoomKeysBackupData
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve all the keys from the backup.
|
* Retrieve all the keys from the backup.
|
||||||
|
@ -153,7 +152,7 @@ internal interface RoomKeysApi {
|
||||||
* @param version the version of the backup, or empty String to retrieve the last version
|
* @param version the version of the backup, or empty String to retrieve the last version
|
||||||
*/
|
*/
|
||||||
@GET(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys")
|
@GET(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys")
|
||||||
fun getSessionsData(@Query("version") version: String): Call<KeysBackupData>
|
suspend fun getSessionsData(@Query("version") version: String): KeysBackupData
|
||||||
|
|
||||||
/* ==========================================================================================
|
/* ==========================================================================================
|
||||||
* Deleting keys
|
* Deleting keys
|
||||||
|
@ -163,22 +162,22 @@ internal interface RoomKeysApi {
|
||||||
* Deletes keys from the backup.
|
* Deletes keys from the backup.
|
||||||
*/
|
*/
|
||||||
@DELETE(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys/{roomId}/{sessionId}")
|
@DELETE(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys/{roomId}/{sessionId}")
|
||||||
fun deleteRoomSessionData(@Path("roomId") roomId: String,
|
suspend fun deleteRoomSessionData(@Path("roomId") roomId: String,
|
||||||
@Path("sessionId") sessionId: String,
|
@Path("sessionId") sessionId: String,
|
||||||
@Query("version") version: String): Call<Unit>
|
@Query("version") version: String)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes keys from the backup.
|
* Deletes keys from the backup.
|
||||||
*/
|
*/
|
||||||
@DELETE(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys/{roomId}")
|
@DELETE(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys/{roomId}")
|
||||||
fun deleteRoomSessionsData(@Path("roomId") roomId: String,
|
suspend fun deleteRoomSessionsData(@Path("roomId") roomId: String,
|
||||||
@Query("version") version: String): Call<Unit>
|
@Query("version") version: String)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes keys from the backup.
|
* Deletes keys from the backup.
|
||||||
*/
|
*/
|
||||||
@DELETE(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys")
|
@DELETE(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/keys")
|
||||||
fun deleteSessionsData(@Query("version") version: String): Call<Unit>
|
suspend fun deleteSessionsData(@Query("version") version: String)
|
||||||
|
|
||||||
/* ==========================================================================================
|
/* ==========================================================================================
|
||||||
* Deleting backup
|
* Deleting backup
|
||||||
|
@ -188,5 +187,5 @@ internal interface RoomKeysApi {
|
||||||
* Deletes a backup.
|
* Deletes a backup.
|
||||||
*/
|
*/
|
||||||
@DELETE(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/version/{version}")
|
@DELETE(NetworkConstants.URI_API_PREFIX_PATH_UNSTABLE + "room_keys/version/{version}")
|
||||||
fun deleteBackup(@Path("version") version: String): Call<Unit>
|
suspend fun deleteBackup(@Path("version") version: String)
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ internal class DefaultCreateKeysBackupVersionTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: CreateKeysBackupVersionBody): KeysVersion {
|
override suspend fun execute(params: CreateKeysBackupVersionBody): KeysVersion {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.createKeysBackupVersion(params)
|
roomKeysApi.createKeysBackupVersion(params)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ internal class DefaultDeleteBackupTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: DeleteBackupTask.Params) {
|
override suspend fun execute(params: DeleteBackupTask.Params) {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.deleteBackup(params.version)
|
roomKeysApi.deleteBackup(params.version)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ internal class DefaultDeleteRoomSessionDataTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: DeleteRoomSessionDataTask.Params) {
|
override suspend fun execute(params: DeleteRoomSessionDataTask.Params) {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.deleteRoomSessionData(
|
roomKeysApi.deleteRoomSessionData(
|
||||||
params.roomId,
|
params.roomId,
|
||||||
params.sessionId,
|
params.sessionId,
|
||||||
params.version)
|
params.version)
|
||||||
|
|
|
@ -36,7 +36,7 @@ internal class DefaultDeleteRoomSessionsDataTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: DeleteRoomSessionsDataTask.Params) {
|
override suspend fun execute(params: DeleteRoomSessionsDataTask.Params) {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.deleteRoomSessionsData(
|
roomKeysApi.deleteRoomSessionsData(
|
||||||
params.roomId,
|
params.roomId,
|
||||||
params.version)
|
params.version)
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ internal class DefaultDeleteSessionsDataTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: DeleteSessionsDataTask.Params) {
|
override suspend fun execute(params: DeleteSessionsDataTask.Params) {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.deleteSessionsData(params.version)
|
roomKeysApi.deleteSessionsData(params.version)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ internal class DefaultGetKeysBackupLastVersionTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: Unit): KeysVersionResult {
|
override suspend fun execute(params: Unit): KeysVersionResult {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.getKeysBackupLastVersion()
|
roomKeysApi.getKeysBackupLastVersion()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ internal class DefaultGetKeysBackupVersionTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: String): KeysVersionResult {
|
override suspend fun execute(params: String): KeysVersionResult {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.getKeysBackupVersion(params)
|
roomKeysApi.getKeysBackupVersion(params)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ internal class DefaultGetRoomSessionDataTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: GetRoomSessionDataTask.Params): KeyBackupData {
|
override suspend fun execute(params: GetRoomSessionDataTask.Params): KeyBackupData {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.getRoomSessionData(
|
roomKeysApi.getRoomSessionData(
|
||||||
params.roomId,
|
params.roomId,
|
||||||
params.sessionId,
|
params.sessionId,
|
||||||
params.version)
|
params.version)
|
||||||
|
|
|
@ -37,7 +37,7 @@ internal class DefaultGetRoomSessionsDataTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: GetRoomSessionsDataTask.Params): RoomKeysBackupData {
|
override suspend fun execute(params: GetRoomSessionsDataTask.Params): RoomKeysBackupData {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.getRoomSessionsData(
|
roomKeysApi.getRoomSessionsData(
|
||||||
params.roomId,
|
params.roomId,
|
||||||
params.version)
|
params.version)
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ internal class DefaultGetSessionsDataTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: GetSessionsDataTask.Params): KeysBackupData {
|
override suspend fun execute(params: GetSessionsDataTask.Params): KeysBackupData {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.getSessionsData(params.version)
|
roomKeysApi.getSessionsData(params.version)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ internal class DefaultStoreRoomSessionDataTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: StoreRoomSessionDataTask.Params): BackupKeysResult {
|
override suspend fun execute(params: StoreRoomSessionDataTask.Params): BackupKeysResult {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.storeRoomSessionData(
|
roomKeysApi.storeRoomSessionData(
|
||||||
params.roomId,
|
params.roomId,
|
||||||
params.sessionId,
|
params.sessionId,
|
||||||
params.version,
|
params.version,
|
||||||
|
|
|
@ -39,7 +39,7 @@ internal class DefaultStoreRoomSessionsDataTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: StoreRoomSessionsDataTask.Params): BackupKeysResult {
|
override suspend fun execute(params: StoreRoomSessionsDataTask.Params): BackupKeysResult {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.storeRoomSessionsData(
|
roomKeysApi.storeRoomSessionsData(
|
||||||
params.roomId,
|
params.roomId,
|
||||||
params.version,
|
params.version,
|
||||||
params.roomKeysBackupData)
|
params.roomKeysBackupData)
|
||||||
|
|
|
@ -38,7 +38,7 @@ internal class DefaultStoreSessionsDataTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: StoreSessionsDataTask.Params): BackupKeysResult {
|
override suspend fun execute(params: StoreSessionsDataTask.Params): BackupKeysResult {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.storeSessionsData(
|
roomKeysApi.storeSessionsData(
|
||||||
params.version,
|
params.version,
|
||||||
params.keysBackupData)
|
params.keysBackupData)
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ internal class DefaultUpdateKeysBackupVersionTask @Inject constructor(
|
||||||
|
|
||||||
override suspend fun execute(params: UpdateKeysBackupVersionTask.Params) {
|
override suspend fun execute(params: UpdateKeysBackupVersionTask.Params) {
|
||||||
return executeRequest(globalErrorReceiver) {
|
return executeRequest(globalErrorReceiver) {
|
||||||
apiCall = roomKeysApi.updateKeysBackupVersion(params.version, params.keysBackupVersionBody)
|
roomKeysApi.updateKeysBackupVersion(params.version, params.keysBackupVersionBody)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue