diff --git a/.github/ISSUE_TEMPLATE/release.md b/.github/ISSUE_TEMPLATE/release.md index af6bbe2190..154e93286c 100644 --- a/.github/ISSUE_TEMPLATE/release.md +++ b/.github/ISSUE_TEMPLATE/release.md @@ -7,24 +7,24 @@ assignees: bmarty --- -For the example, we are releasing the version 1.1.10 +For the example, we are releasing the version 1.1.10. Delete this line and replace 1.1.10 with the version in the issue content. ### Before the release - [ ] Weblate sync, fix lint issue if any (in a dedicated PR) - [ ] Check the update of the store descriptions (using Google Translate if necessary) to ensure that the changes are acceptable to be published to the stores. +- [ ] Run the script `./tools/release/pushPlayStoreMetaData.sh`. You can check in the GooglePlay console the Activity log to check the effect. ### Do the release - [ ] Create release with gitflow, branch name `release/1.1.10` -- [ ] Run the script `./tools/release/pushPlayStoreMetaData.sh`. You can check in the GooglePlay console the Activity log to check the effect. - [ ] Run `./tools/import_emojis.py` and commit the change if any. - [ ] Run `./tools/import_sas_strings.py` and commit the change if any. If there is no change since a while, ping Travis - [ ] Check the crashes from the PlayStore -- [ ] Check the rageshake with the current dev version. For instance https://github.com/matrix-org/element-android-rageshakes/labels/1.1.10-dev +- [ ] Check the rageshake with the current dev version: https://github.com/matrix-org/element-android-rageshakes/labels/1.1.10-dev - [ ] Run the integration test, and especially `UiAllScreensSanityTest.allScreensTest()` - [ ] Create an account on matrix.org -- [ ] Run towncrier: `./towncrier --version v1.1.10` (add `--draft` for a preview) +- [ ] Run towncrier: `towncrier --version v1.1.10 --draft` (remove `--draft` do write the file CHANGES.md) - [ ] Add file for fastlane under ./fastlane/metadata/android/en-US/changelogs - [ ] Push the branch and start a draft PR (will not be merged), to check that the CI is happy with all the changes. - [ ] Finish release with gitflow, delete the draft PR diff --git a/CHANGES.md b/CHANGES.md index e9a990f1b2..79e1e07520 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,27 @@ +Changes in Element v1.1.13 (2021-07-19) +======================================= + +Features ✨ +---------- + - Remove redundant mimetype (vector-im/element-web#2547) ([#3273](https://github.com/vector-im/element-android/issues/3273)) + - Room version capabilities and room upgrade support, better error feedback ([#3551](https://github.com/vector-im/element-android/issues/3551)) + - Add retry support in room addresses screen ([#3635](https://github.com/vector-im/element-android/issues/3635)) + - Better management of permission requests ([#3667](https://github.com/vector-im/element-android/issues/3667)) + +Bugfixes 🐛 +---------- + - Standardise spelling and casing of homeserver, identity server, and integration manager. ([#491](https://github.com/vector-im/element-android/issues/491)) + - Perform .well-known request first, even if the entered URL is a valid homeserver base url ([#2843](https://github.com/vector-im/element-android/issues/2843)) + - Use different copy for self verification. ([#3624](https://github.com/vector-im/element-android/issues/3624)) + - Crash when opening room addresses screen with no internet connection ([#3634](https://github.com/vector-im/element-android/issues/3634)) + - Fix unread messages marker being hidden in collapsed membership item ([#3655](https://github.com/vector-im/element-android/issues/3655)) + - Ensure reaction emoji picker tabs look fine on small displays ([#3661](https://github.com/vector-im/element-android/issues/3661)) + +SDK API changes ⚠️ +------------------ + - RawService.getWellknown() now takes a domain instead of a matrixId as parameter ([#3572](https://github.com/vector-im/element-android/issues/3572)) + + Changes in Element 1.1.12 (2021-07-05) ====================================== diff --git a/Gemfile.lock b/Gemfile.lock index 6045f55496..345b4c1502 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,25 +2,25 @@ GEM remote: https://rubygems.org/ specs: CFPropertyList (3.0.3) - addressable (2.7.0) + addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.1.1) - aws-partitions (1.462.0) - aws-sdk-core (3.114.0) + aws-partitions (1.479.0) + aws-sdk-core (3.117.0) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.239.0) aws-sigv4 (~> 1.1) jmespath (~> 1.0) - aws-sdk-kms (1.43.0) + aws-sdk-kms (1.44.0) aws-sdk-core (~> 3, >= 3.112.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.95.1) + aws-sdk-s3 (1.96.1) aws-sdk-core (~> 3, >= 3.112.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.1) - aws-sigv4 (1.2.3) + aws-sigv4 (1.2.4) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) claide (1.0.3) @@ -35,13 +35,15 @@ GEM unf (>= 0.0.5, < 1.0.0) dotenv (2.7.6) emoji_regex (3.2.2) - excon (0.81.0) - faraday (1.4.2) + excon (0.85.0) + faraday (1.5.1) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) + faraday-httpclient (~> 1.0.1) faraday-net_http (~> 1.0) faraday-net_http_persistent (~> 1.1) + faraday-patron (~> 1.0) multipart-post (>= 1.2, < 3) ruby2_keywords (>= 0.0.4) faraday-cookie_jar (0.0.7) @@ -50,12 +52,14 @@ GEM faraday-em_http (1.0.0) faraday-em_synchrony (1.0.0) faraday-excon (1.1.0) + faraday-httpclient (1.0.1) faraday-net_http (1.0.1) - faraday-net_http_persistent (1.1.0) + faraday-net_http_persistent (1.2.0) + faraday-patron (1.0.0) faraday_middleware (1.0.0) faraday (~> 1.0) - fastimage (2.2.3) - fastlane (2.184.0) + fastimage (2.2.4) + fastlane (2.187.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.3, < 3.0.0) artifactory (~> 3.0) @@ -94,37 +98,36 @@ GEM xcpretty (~> 0.3.0) xcpretty-travis-formatter (>= 0.0.3) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.4.0) - google-apis-core (~> 0.1) - google-apis-core (0.3.0) + google-apis-androidpublisher_v3 (0.8.0) + google-apis-core (>= 0.4, < 2.a) + google-apis-core (0.4.0) addressable (~> 2.5, >= 2.5.1) - googleauth (~> 0.14) - httpclient (>= 2.8.1, < 3.0) + googleauth (>= 0.16.2, < 2.a) + httpclient (>= 2.8.1, < 3.a) mini_mime (~> 1.0) representable (~> 3.0) - retriable (>= 2.0, < 4.0) + retriable (>= 2.0, < 4.a) rexml - signet (~> 0.14) webrick - google-apis-iamcredentials_v1 (0.4.0) - google-apis-core (~> 0.1) - google-apis-playcustomapp_v1 (0.3.0) - google-apis-core (~> 0.1) - google-apis-storage_v1 (0.4.0) - google-apis-core (~> 0.1) + google-apis-iamcredentials_v1 (0.6.0) + google-apis-core (>= 0.4, < 2.a) + google-apis-playcustomapp_v1 (0.5.0) + google-apis-core (>= 0.4, < 2.a) + google-apis-storage_v1 (0.6.0) + google-apis-core (>= 0.4, < 2.a) google-cloud-core (1.6.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) google-cloud-env (1.5.0) faraday (>= 0.17.3, < 2.0) google-cloud-errors (1.1.0) - google-cloud-storage (1.31.1) + google-cloud-storage (1.34.1) addressable (~> 2.5) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) google-apis-storage_v1 (~> 0.1) - google-cloud-core (~> 1.2) - googleauth (~> 0.9) + google-cloud-core (~> 1.6) + googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) googleauth (0.16.2) faraday (>= 0.17.3, < 2.0) @@ -134,7 +137,7 @@ GEM os (>= 0.9, < 2.0) signet (~> 0.14) highline (2.0.3) - http-cookie (1.0.3) + http-cookie (1.0.4) domain_name (~> 0.5) httpclient (2.8.3) jmespath (1.4.0) @@ -150,7 +153,7 @@ GEM os (1.1.1) plist (3.6.0) public_suffix (4.0.6) - rake (13.0.3) + rake (13.0.6) representable (3.1.1) declarative (< 0.1.0) trailblazer-option (>= 0.1.1, < 0.2.0) @@ -158,8 +161,8 @@ GEM retriable (3.1.2) rexml (3.2.5) rouge (2.0.7) - ruby2_keywords (0.0.4) - rubyzip (2.3.0) + ruby2_keywords (0.0.5) + rubyzip (2.3.2) security (0.1.3) signet (0.15.0) addressable (~> 2.3) @@ -184,12 +187,13 @@ GEM unicode-display_width (1.7.0) webrick (1.7.0) word_wrap (1.0.0) - xcodeproj (1.19.0) + xcodeproj (1.20.0) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) nanaimo (~> 0.3.0) + rexml (~> 3.2.4) xcpretty (0.3.0) rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.1) diff --git a/build.gradle b/build.gradle index c4f3dfd3c2..bbb6b343cf 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ buildscript { // Ref: https://kotlinlang.org/releases.html - ext.kotlin_version = '1.5.20' + ext.kotlin_version = '1.5.21' ext.kotlin_coroutines_version = "1.5.0" repositories { google() diff --git a/changelog.d/2843.bugfix b/changelog.d/2843.bugfix deleted file mode 100644 index 881d6d4f90..0000000000 --- a/changelog.d/2843.bugfix +++ /dev/null @@ -1 +0,0 @@ -Perform .well-known request first, even if the entered URL is a valid homeserver base url \ No newline at end of file diff --git a/changelog.d/3273.feature b/changelog.d/3273.feature deleted file mode 100644 index 0edc81796b..0000000000 --- a/changelog.d/3273.feature +++ /dev/null @@ -1 +0,0 @@ -Remove redundant mimetype (vector-im/element-web#2547) \ No newline at end of file diff --git a/changelog.d/3551.feature b/changelog.d/3551.feature deleted file mode 100644 index 5575c6fb53..0000000000 --- a/changelog.d/3551.feature +++ /dev/null @@ -1 +0,0 @@ -Room version capabilities and room upgrade support, better error feedback \ No newline at end of file diff --git a/changelog.d/3572.misc b/changelog.d/3572.misc deleted file mode 100644 index 384b8e69c7..0000000000 --- a/changelog.d/3572.misc +++ /dev/null @@ -1 +0,0 @@ -RawService.getWellknown() now takes a domain instead of a matrixId as parameter \ No newline at end of file diff --git a/changelog.d/3624.bugfix b/changelog.d/3624.bugfix deleted file mode 100644 index 31f0844d15..0000000000 --- a/changelog.d/3624.bugfix +++ /dev/null @@ -1 +0,0 @@ -Use different copy for self verification. diff --git a/changelog.d/3634.bugfix b/changelog.d/3634.bugfix deleted file mode 100644 index 0b1f007030..0000000000 --- a/changelog.d/3634.bugfix +++ /dev/null @@ -1 +0,0 @@ -Crash when opening room addresses screen with no internet connection \ No newline at end of file diff --git a/changelog.d/3635.feature b/changelog.d/3635.feature deleted file mode 100644 index 30d2cc64b4..0000000000 --- a/changelog.d/3635.feature +++ /dev/null @@ -1 +0,0 @@ -Add retry support in room addresses screen \ No newline at end of file diff --git a/changelog.d/3655.bugfix b/changelog.d/3655.bugfix deleted file mode 100644 index c7e805ab84..0000000000 --- a/changelog.d/3655.bugfix +++ /dev/null @@ -1 +0,0 @@ -Fix unread messages marker being hidden in collapsed membership item diff --git a/changelog.d/3656.bugfix b/changelog.d/3656.bugfix new file mode 100644 index 0000000000..30d451558f --- /dev/null +++ b/changelog.d/3656.bugfix @@ -0,0 +1 @@ +Avoid incomplete downloads in cache diff --git a/changelog.d/3661.bugfix b/changelog.d/3661.bugfix deleted file mode 100644 index 9ca6b7d188..0000000000 --- a/changelog.d/3661.bugfix +++ /dev/null @@ -1 +0,0 @@ -Ensure reaction emoji picker tabs look fine on small displays diff --git a/changelog.d/3667.feature b/changelog.d/3667.feature deleted file mode 100644 index 439a890dd0..0000000000 --- a/changelog.d/3667.feature +++ /dev/null @@ -1 +0,0 @@ -Better management of permission requests \ No newline at end of file diff --git a/docs/identity_server.md b/docs/identity_server.md index 0d75108dd3..e765ae3949 100644 --- a/docs/identity_server.md +++ b/docs/identity_server.md @@ -4,7 +4,7 @@ Issue: #607 PR: #1354 ## Introduction -Identity Servers support contact discovery on Matrix by letting people look up Third Party Identifiers to see if the owner has publicly linked them with their Matrix ID. +Identity servers support contact discovery on Matrix by letting people look up Third Party Identifiers to see if the owner has publicly linked them with their Matrix ID. ## Implementation @@ -87,6 +87,6 @@ This screen displays the identity server configuration and the binding of the us This screen is a form to set a new identity server URL ## Ref: -- https://matrix.org/blog/2019/09/27/privacy-improvements-in-synapse-1-4-and-riot-1-4 is a good summary of the role of an Identity server and the proper way to configure and use it in respect to the privacy and the consent of the user. +- https://matrix.org/blog/2019/09/27/privacy-improvements-in-synapse-1-4-and-riot-1-4 is a good summary of the role of an identity server and the proper way to configure and use it in respect to the privacy and the consent of the user. - API documentation: https://matrix.org/docs/spec/identity_service/latest - vector.im TOS: https://vector.im/identity-server-privacy-notice diff --git a/docs/notifications.md b/docs/notifications.md index a00fef8fae..b44984785a 100644 --- a/docs/notifications.md +++ b/docs/notifications.md @@ -2,11 +2,11 @@ This document aims to describe how Element android displays notifications to the # Table of Contents 1. [Prerequisites Knowledge](#prerequisites-knowledge) - * [How does a matrix client get a message from a Home Server?](#how-does-a-matrix-client-get-a-message-from-a-home-server) + * [How does a matrix client get a message from a homeserver?](#how-does-a-matrix-client-get-a-message-from-a-homeserver) * [How does a mobile app receives push notification?](#how-does-a-mobile-app-receives-push-notification) * [Push VS Notification](#push-vs-notification) * [Push in the matrix federated world](#push-in-the-matrix-federated-world) - * [How does the Home Server knows when to notify a client?](#how-does-the-home-server-knows-when-to-notify-a-client) + * [How does the homeserver know when to notify a client?](#how-does-the-homeserver-know-when-to-notify-a-client) * [Push vs privacy, and mitigation](#push-vs-privacy-and-mitigation) * [Background processing limitations](#background-processing-limitations) 2. [Element Notification implementations](#element-notification-implementations) @@ -22,9 +22,9 @@ First let's start with some prerequisite knowledge # Prerequisites Knowledge -## How does a matrix client get a message from a Home Server? +## How does a matrix client get a message from a homeserver? -In order to get messages from a home server, a matrix client need to perform a ``sync`` operation. +In order to get messages from a homeserver, a matrix client need to perform a ``sync`` operation. `To read events, the intended flow of operation is for clients to first call the /sync API without a since parameter. This returns the most recent message events for each room, as well as the state of the room at the start of the returned timeline. ` @@ -90,7 +90,7 @@ That means that Element Android, a matrix client created by New Vector, is using If you create your own matrix client, you will also need to deploy an instance of a **Push Gateway** with the credentials needed to use FCM for your app. -On registration, a matrix client must tell to it's Home Server what Push Gateway to use. +On registration, a matrix client must tell its homeserver what Push Gateway to use. See [Sygnal](https://github.com/matrix-org/sygnal/) for a reference implementation. ``` @@ -122,13 +122,13 @@ Recommended reading: * https://matrix.org/docs/spec/client_server/r0.4.0.html#id128 -## How does the Home Server knows when to notify a client? +## How does the homeserver know when to notify a client? This is defined by [**push rules**](https://matrix.org/docs/spec/client_server/r0.4.0.html#push-rules-). `A push rule is a single rule that states under what conditions an event should be passed onto a push gateway and how the notification should be presented (sound / importance).` -A Home Server can be configured with default rules (for Direct messages, group messages, mentions, etc.. ). +A homeserver can be configured with default rules (for Direct messages, group messages, mentions, etc.. ). There are different kind of push rules, it can be per room (each new message on this room should be notified), it can also define a pattern that a message should match (when you are mentioned, or key word based). @@ -187,7 +187,7 @@ In background, and depending on wether push is available or not, Element will us ## Push (FCM) received in background -In order to enable Push, Element must first get a push token from the firebase SDK, then register a pusher with this token on the HomeServer. +In order to enable Push, Element must first get a push token from the firebase SDK, then register a pusher with this token on the homeserver. When a message should be notified to a user, the user's homeserver notifies the registered `push gateway` for Element, that is [sygnal](https://github.com/matrix-org/sygnal) _- The reference implementation for push gateways -_ hosted by matrix.org. @@ -199,7 +199,7 @@ Homeserver ----> Sygnal (configured for Element) ----> FCM ----> Element The push gateway is configured to only send `(eventId,roomId)` in the push payload (for better [privacy](#push-vs-privacy-and-mitigation)). -Element needs then to synchronise with the user's HomeServer, in order to resolve the event and create a notification. +Element needs then to synchronise with the user's homeserver, in order to resolve the event and create a notification. As per [Google recommendation](https://android-developers.googleblog.com/2018/09/notifying-your-users-with-fcm.html), Element will then use the WorkManager API in order to trigger a background sync. @@ -217,7 +217,7 @@ Homeserver ----> Sygnal ----> FCM ----> Element **Possible outcomes** -Upon reception of the FCM push, Element will perform a sync call to the Home Server, during this process it is possible that: +Upon reception of the FCM push, Element will perform a sync call to the homeserver, during this process it is possible that: * Happy path, the sync is performed, the message resolved and displayed in the notification drawer * The notified message is not in the sync. Can happen if a lot of things did happen since the push (`gappy sync`) * The sync generates additional notifications (e.g an encrypted message where the user is mentioned detected locally) diff --git a/fastlane/metadata/android/cs-CZ/changelogs/40101100.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101100.txt new file mode 100644 index 0000000000..de73b6f382 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/40101100.txt @@ -0,0 +1,2 @@ +Hlavní změny v této verzi: aktualizace vzhledu a stylu a nové funkce prostorů. +Úplný záznam změn: https://github.com/vector-im/element-android/releases/tag/v1.1.10 diff --git a/fastlane/metadata/android/cs-CZ/changelogs/40101110.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101110.txt new file mode 100644 index 0000000000..c4bfee0779 --- /dev/null +++ b/fastlane/metadata/android/cs-CZ/changelogs/40101110.txt @@ -0,0 +1,2 @@ +Hlavní změny v této verzi: aktualizace vzhledu a stylu a nové funkce prostorů (bugfix pro 1.1.10) +Úplný záznam změn: https://github.com/vector-im/element-android/releases/tag/v1.1.11 diff --git a/fastlane/metadata/android/de-DE/changelogs/40101100.txt b/fastlane/metadata/android/de-DE/changelogs/40101100.txt new file mode 100644 index 0000000000..04f944cdcf --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/40101100.txt @@ -0,0 +1,2 @@ +Hauptänderungen: Design-Update und neue Features für Spaces +Vollständige Änderungsliste: https://github.com/vector-im/element-android/releases/tag/v1.1.10 diff --git a/fastlane/metadata/android/de-DE/changelogs/40101110.txt b/fastlane/metadata/android/de-DE/changelogs/40101110.txt new file mode 100644 index 0000000000..8e115469e1 --- /dev/null +++ b/fastlane/metadata/android/de-DE/changelogs/40101110.txt @@ -0,0 +1,2 @@ +Hauptänderungen: Design-Update und neue Features für Spaces (Bugfix für 1.1.10) +Vollständige Änderungsliste: https://github.com/vector-im/element-android/releases/tag/v1.1.11 diff --git a/fastlane/metadata/android/en-US/changelogs/40101130.txt b/fastlane/metadata/android/en-US/changelogs/40101130.txt new file mode 100644 index 0000000000..9fc3f23b3e --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/40101130.txt @@ -0,0 +1,2 @@ +Main changes in this version: mainly stability and bugfixes update. +Full changelog: https://github.com/vector-im/element-android/releases/tag/v1.1.13 \ No newline at end of file diff --git a/fastlane/metadata/android/et/changelogs/40101100.txt b/fastlane/metadata/android/et/changelogs/40101100.txt new file mode 100644 index 0000000000..e00e6de393 --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/40101100.txt @@ -0,0 +1,2 @@ +Põhilised muutused selles versioonis: teemade ja välimuse uuendused ning mõned kogukondade uuendused +Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases/tag/v1.1.10 diff --git a/fastlane/metadata/android/et/changelogs/40101110.txt b/fastlane/metadata/android/et/changelogs/40101110.txt new file mode 100644 index 0000000000..a4629c92d0 --- /dev/null +++ b/fastlane/metadata/android/et/changelogs/40101110.txt @@ -0,0 +1,2 @@ +Põhilised muutused selles versioonis: teemade ja välimuse uuendused ning mõned kogukondade uuendused (1.1.10 veaparandus) +Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases/tag/v1.1.11 diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101100.txt b/fastlane/metadata/android/hu-HU/changelogs/40101100.txt new file mode 100644 index 0000000000..34171b2221 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/40101100.txt @@ -0,0 +1,2 @@ +Főbb változtatások ebben a verzióban: kinézet és stílus frissítések és új funkciók a terekhez +Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.10 diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101110.txt b/fastlane/metadata/android/hu-HU/changelogs/40101110.txt new file mode 100644 index 0000000000..1550736f36 --- /dev/null +++ b/fastlane/metadata/android/hu-HU/changelogs/40101110.txt @@ -0,0 +1,2 @@ +Főbb változtatások ebben a verzióban: kinézet és stílus frissítések és új funkciók a terekhez (hibajavítás az 1.1.10-hez) +Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.11 diff --git a/fastlane/metadata/android/it-IT/changelogs/40101100.txt b/fastlane/metadata/android/it-IT/changelogs/40101100.txt new file mode 100644 index 0000000000..6f2447e5f6 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/40101100.txt @@ -0,0 +1,2 @@ +Modifiche principali in questa versione: aggiornati tema e stile e nuove funzioni per gli spazi . +Cronologia completa: https://github.com/vector-im/element-android/releases/tag/v1.1.10 diff --git a/fastlane/metadata/android/it-IT/changelogs/40101110.txt b/fastlane/metadata/android/it-IT/changelogs/40101110.txt new file mode 100644 index 0000000000..263f46b4f1 --- /dev/null +++ b/fastlane/metadata/android/it-IT/changelogs/40101110.txt @@ -0,0 +1,2 @@ +Modifiche principali in questa versione: aggiornati tema e stile e nuove funzioni per gli spazi (bugfix per 1.1.10) +Cronologia completa: https://github.com/vector-im/element-android/releases/tag/v1.1.11 diff --git a/fastlane/metadata/android/pt-BR/changelogs/40101070.txt b/fastlane/metadata/android/pt-BR/changelogs/40101070.txt index ab403ea4cc..5667b1609a 100644 --- a/fastlane/metadata/android/pt-BR/changelogs/40101070.txt +++ b/fastlane/metadata/android/pt-BR/changelogs/40101070.txt @@ -1,2 +1,2 @@ -Principais mudanças nesta version: suporte beta para Espaços. Comprimir vídeo antes de enviar. +Principais mudanças nesta versão: suporte beta para Espaços. Comprimir vídeo antes de enviar. Changelog completo: https://github.com/vector-im/element-android/releases/tag/v1.1.7 diff --git a/fastlane/metadata/android/pt-BR/changelogs/40101080.txt b/fastlane/metadata/android/pt-BR/changelogs/40101080.txt index 25047345ef..7922e6d800 100644 --- a/fastlane/metadata/android/pt-BR/changelogs/40101080.txt +++ b/fastlane/metadata/android/pt-BR/changelogs/40101080.txt @@ -1,2 +1,2 @@ -Principais mudanças nesta version: melhoramento para Espaços. +Principais mudanças nesta versão: melhoramento para Espaços. Changelog completo: https://github.com/vector-im/element-android/releases/tag/v1.1.8 diff --git a/fastlane/metadata/android/pt-BR/changelogs/40101090.txt b/fastlane/metadata/android/pt-BR/changelogs/40101090.txt index cc5e71cf7f..3246596eab 100644 --- a/fastlane/metadata/android/pt-BR/changelogs/40101090.txt +++ b/fastlane/metadata/android/pt-BR/changelogs/40101090.txt @@ -1,2 +1,2 @@ -Principais mudanças nesta version: adicionar supporte a rede gitter.im. +Principais mudanças nesta versão: adicionar supporte a rede gitter.im. Changelog completo: https://github.com/vector-im/element-android/releases/tag/v1.1.9 diff --git a/fastlane/metadata/android/pt-BR/changelogs/40101100.txt b/fastlane/metadata/android/pt-BR/changelogs/40101100.txt new file mode 100644 index 0000000000..4efd042313 --- /dev/null +++ b/fastlane/metadata/android/pt-BR/changelogs/40101100.txt @@ -0,0 +1,2 @@ +Principais mudanças nesta versão: atualização de tema e estilo e novas funcionalidades para espaços. +Changelog completo: https://github.com/vector-im/element-android/releases/tag/v1.1.10 diff --git a/fastlane/metadata/android/pt-BR/changelogs/40101110.txt b/fastlane/metadata/android/pt-BR/changelogs/40101110.txt new file mode 100644 index 0000000000..ac98ef9e3b --- /dev/null +++ b/fastlane/metadata/android/pt-BR/changelogs/40101110.txt @@ -0,0 +1,2 @@ +Principais mudanças nesta versão: atualização de tema e estilo e novas funcionalidades para espaços (bugfix para 1.1.10) +Changelog completo: https://github.com/vector-im/element-android/releases/tag/v1.1.11 diff --git a/fastlane/metadata/android/uk/changelogs/40101100.txt b/fastlane/metadata/android/uk/changelogs/40101100.txt new file mode 100644 index 0000000000..c1fde35579 --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/40101100.txt @@ -0,0 +1,2 @@ +Основні зміни цієї версії: оновлено зовнішній вигляд та нові можливості для просторів +Вичерпний перелік змін: https://github.com/vector-im/element-android/releases/tag/v1.1.10 diff --git a/fastlane/metadata/android/uk/changelogs/40101110.txt b/fastlane/metadata/android/uk/changelogs/40101110.txt new file mode 100644 index 0000000000..9aa1195e49 --- /dev/null +++ b/fastlane/metadata/android/uk/changelogs/40101110.txt @@ -0,0 +1,2 @@ +Основні зміни цієї версії: оновлено зовнішній вигляд та нові можливості для просторів (bugfix для 1.1.10) +Вичерпний перелік змін: https://github.com/vector-im/element-android/releases/tag/v1.1.11 diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101100.txt b/fastlane/metadata/android/zh-CN/changelogs/40101100.txt new file mode 100644 index 0000000000..b748f34290 --- /dev/null +++ b/fastlane/metadata/android/zh-CN/changelogs/40101100.txt @@ -0,0 +1,2 @@ +此版本的主要变化:主题和样式更新以及空间的新功能。 +完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.1.10 diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101110.txt b/fastlane/metadata/android/zh-CN/changelogs/40101110.txt new file mode 100644 index 0000000000..ef3f46e07d --- /dev/null +++ b/fastlane/metadata/android/zh-CN/changelogs/40101110.txt @@ -0,0 +1,2 @@ +此版本的主要变化:主题和样式更新以及空间的新功能(1.1.10 的错误修复) +完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.1.11 diff --git a/fastlane/metadata/android/zh-TW/changelogs/40101100.txt b/fastlane/metadata/android/zh-TW/changelogs/40101100.txt new file mode 100644 index 0000000000..08e081fd8b --- /dev/null +++ b/fastlane/metadata/android/zh-TW/changelogs/40101100.txt @@ -0,0 +1,2 @@ +此版本中的主要變動:佈景主題與樣式更新,以及空間的新功能。 +完整的變更紀錄:https://github.com/vector-im/element-android/releases/tag/v1.1.10 diff --git a/fastlane/metadata/android/zh-TW/changelogs/40101110.txt b/fastlane/metadata/android/zh-TW/changelogs/40101110.txt new file mode 100644 index 0000000000..91bbc18fff --- /dev/null +++ b/fastlane/metadata/android/zh-TW/changelogs/40101110.txt @@ -0,0 +1,2 @@ +此版本中的主要變動:佈景主題與樣式更新,以及空間的新功能(1.1.10 的臭蟲修復版本) +完整的變更紀錄:https://github.com/vector-im/element-android/releases/tag/v1.1.11 diff --git a/matrix-sdk-android/build.gradle b/matrix-sdk-android/build.gradle index 7d54012204..484a2ddfe6 100644 --- a/matrix-sdk-android/build.gradle +++ b/matrix-sdk-android/build.gradle @@ -176,7 +176,7 @@ dependencies { //testImplementation 'org.robolectric:shadows-support-v4:3.0' // Note: version sticks to 1.9.2 due to https://github.com/mockk/mockk/issues/281 testImplementation 'io.mockk:mockk:1.12.0' - testImplementation 'org.amshove.kluent:kluent-android:1.67' + testImplementation 'org.amshove.kluent:kluent-android:1.68' testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version" // Plant Timber tree for test testImplementation 'net.lachlanmckee:timber-junit-rule:1.0.1' @@ -187,7 +187,7 @@ dependencies { androidTestImplementation 'androidx.test:rules:1.4.0' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' - androidTestImplementation 'org.amshove.kluent:kluent-android:1.65' + androidTestImplementation 'org.amshove.kluent:kluent-android:1.68' androidTestImplementation 'io.mockk:mockk-android:1.12.0' androidTestImplementation "androidx.arch.core:core-testing:$arch_version" androidTestImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$kotlin_coroutines_version" diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/common/CommonTestHelper.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/common/CommonTestHelper.kt index 287a4233d9..6e07223ac7 100644 --- a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/common/CommonTestHelper.kt +++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/common/CommonTestHelper.kt @@ -78,7 +78,7 @@ class CommonTestHelper(context: Context) { } /** - * Create a Home server configuration, with Http connection allowed for test + * Create a homeserver configuration, with Http connection allowed for test */ fun createHomeServerConfig(): HomeServerConnectionConfig { return HomeServerConnectionConfig.Builder() diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/keysbackup/KeysBackupTest.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/keysbackup/KeysBackupTest.kt index eb8b8b9730..89d297c592 100644 --- a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/keysbackup/KeysBackupTest.kt +++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/keysbackup/KeysBackupTest.kt @@ -816,7 +816,7 @@ class KeysBackupTest : InstrumentedTest { // - Do an e2e backup to the homeserver mKeysBackupTestHelper.prepareAndCreateKeysBackupData(keysBackup) - // Get key backup version from the home server + // Get key backup version from the homeserver val keysVersionResult = mTestHelper.doSync { keysBackup.getCurrentVersion(it) } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/MatrixPatterns.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/MatrixPatterns.kt index 3af1a22779..9a5e40ffeb 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/MatrixPatterns.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/MatrixPatterns.kt @@ -17,9 +17,11 @@ package org.matrix.android.sdk.api import org.matrix.android.sdk.BuildConfig +import timber.log.Timber /** * This class contains pattern to match the different Matrix ids + * Ref: https://matrix.org/docs/spec/appendices#identifier-grammar */ object MatrixPatterns { @@ -27,7 +29,7 @@ object MatrixPatterns { private const val DOMAIN_REGEX = ":[A-Z0-9.-]+(:[0-9]{2,5})?" // regex pattern to find matrix user ids in a string. - // See https://matrix.org/speculator/spec/HEAD/appendices.html#historical-user-ids + // See https://matrix.org/docs/spec/appendices#historical-user-ids private const val MATRIX_USER_IDENTIFIER_REGEX = "@[A-Z0-9\\x21-\\x39\\x3B-\\x7F]+$DOMAIN_REGEX" val PATTERN_CONTAIN_MATRIX_USER_IDENTIFIER = MATRIX_USER_IDENTIFIER_REGEX.toRegex(RegexOption.IGNORE_CASE) @@ -173,8 +175,9 @@ object MatrixPatterns { * - "@bob:domain.org:3455".getDomain() will return "domain.org:3455" */ fun String.getDomain(): String { - if (BuildConfig.DEBUG) { - assert(isUserId(this)) + if (BuildConfig.DEBUG && !isUserId(this)) { + // They are some invalid userId localpart in the wild, but the domain part should be there anyway + Timber.w("Not a valid user ID: $this") } return substringAfter(":") } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/HomeServerConnectionConfig.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/HomeServerConnectionConfig.kt index dfe899ea4a..215f0a0351 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/HomeServerConnectionConfig.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/data/HomeServerConnectionConfig.kt @@ -73,14 +73,14 @@ data class HomeServerConnectionConfig( */ fun withHomeServerUri(hsUri: Uri): Builder { if (hsUri.scheme != "http" && hsUri.scheme != "https") { - throw RuntimeException("Invalid home server URI: $hsUri") + throw RuntimeException("Invalid homeserver URI: $hsUri") } // ensure trailing / val hsString = hsUri.toString().ensureTrailingSlash() homeServerUri = try { Uri.parse(hsString) } catch (e: Exception) { - throw RuntimeException("Invalid home server URI: $hsUri") + throw RuntimeException("Invalid homeserver URI: $hsUri") } return this } @@ -138,7 +138,7 @@ data class HomeServerConnectionConfig( } /** - * Add an accepted TLS version for TLS connections with the home server. + * Add an accepted TLS version for TLS connections with the homeserver. * * @param tlsVersion the tls version to add to the set of TLS versions accepted. * @return this builder @@ -160,7 +160,7 @@ data class HomeServerConnectionConfig( } /** - * Add a TLS cipher suite to the list of accepted TLS connections with the home server. + * Add a TLS cipher suite to the list of accepted TLS connections with the homeserver. * * @param tlsCipherSuite the tls cipher suite to add. * @return this builder diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationFlowResponse.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationFlowResponse.kt index 2b1c1c09b3..ac740ddab7 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationFlowResponse.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/auth/registration/RegistrationFlowResponse.kt @@ -38,7 +38,7 @@ data class RegistrationFlowResponse( val completedStages: List? = null, /** - * The session identifier that the client must pass back to the home server, if one is provided, + * The session identifier that the client must pass back to the homeserver, if one is provided, * in subsequent attempts to authenticate in the same API call. */ @Json(name = "session") diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupService.kt index 465d00168f..4464427b90 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupService.kt @@ -28,7 +28,7 @@ import org.matrix.android.sdk.internal.crypto.store.SavedKeyBackupKeyInfo interface KeysBackupService { /** - * Retrieve the current version of the backup from the home server + * Retrieve the current version of the backup from the homeserver * * It can be different than keysBackupVersion. * @param callback onSuccess(null) will be called if there is no backup on the server diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupState.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupState.kt index 7d0f04ebcf..a4cc133398 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupState.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/keysbackup/KeysBackupState.kt @@ -54,7 +54,7 @@ enum class KeysBackupState { // Need to check the current backup version on the homeserver Unknown, - // Checking if backup is enabled on home server + // Checking if backup is enabled on homeserver CheckingBackUpOnHomeserver, // Backup has been stopped because a new backup version has been detected on the homeserver diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/Event.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/Event.kt index 6400dd6444..3d82846e7e 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/Event.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/Event.kt @@ -104,7 +104,7 @@ data class Event( /** * The `age` value transcoded in a timestamp based on the device clock when the SDK received - * the event from the home server. + * the event from the homeserver. * Unlike `age`, this value is static. */ @Transient diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/SessionCreator.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/SessionCreator.kt index 51ecc68d62..160fd2d556 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/SessionCreator.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/auth/SessionCreator.kt @@ -38,7 +38,7 @@ internal class DefaultSessionCreator @Inject constructor( ) : SessionCreator { /** - * Credentials can affect the homeServerConnectionConfig, override home server url and/or + * Credentials can affect the homeServerConnectionConfig, override homeserver url and/or * identity server url if provided in the credentials */ override suspend fun createSession(credentials: Credentials, homeServerConnectionConfig: HomeServerConnectionConfig): Session { diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXDeviceInfo.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXDeviceInfo.kt index 00b8bde5d9..68cc41005e 100755 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXDeviceInfo.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/model/MXDeviceInfo.kt @@ -56,7 +56,7 @@ data class MXDeviceInfo( val signatures: Map>? = null, /* - * Additional data from the home server. + * Additional data from the homeserver. */ @Json(name = "unsigned") val unsigned: JsonDict? = null, diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/UserAccountDataEntity.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/UserAccountDataEntity.kt index cfdb84d033..e258c20df5 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/UserAccountDataEntity.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/model/UserAccountDataEntity.kt @@ -20,7 +20,7 @@ import io.realm.RealmObject import io.realm.annotations.Index /** - * Clients can store custom config data for their account on their HomeServer. + * Clients can store custom config data for their account on their homeserver. * This account data will be synced between different devices and can persist across installations on a particular device. * Users may only view the account data for their own account. * The account_data may be either global or scoped to a particular rooms. diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/legacy/riot/Credentials.java b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/legacy/riot/Credentials.java index 6844744044..0ca0c7db85 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/legacy/riot/Credentials.java +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/legacy/riot/Credentials.java @@ -41,7 +41,7 @@ public class Credentials { public String deviceId; - // Optional data that may contain info to override home server and/or identity server + // Optional data that may contain info to override homeserver and/or identity server public WellKnown wellKnown; public JSONObject toJson() throws JSONException { diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/legacy/riot/HomeServerConnectionConfig.java b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/legacy/riot/HomeServerConnectionConfig.java index 21d069f295..75fc187c45 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/legacy/riot/HomeServerConnectionConfig.java +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/legacy/riot/HomeServerConnectionConfig.java @@ -44,7 +44,7 @@ import timber.log.Timber; */ public class HomeServerConnectionConfig { - // the home server URI + // the homeserver URI private Uri mHomeServerUri; // the jitsi server URI. Can be null @Nullable @@ -82,7 +82,7 @@ public class HomeServerConnectionConfig { } /** - * Update the home server URI. + * Update the homeserver URI. * * @param uri the new HS uri */ @@ -91,7 +91,7 @@ public class HomeServerConnectionConfig { } /** - * @return the home server uri + * @return the homeserver uri */ public Uri getHomeserverUri() { return mHomeServerUri; @@ -145,7 +145,7 @@ public class HomeServerConnectionConfig { public void setCredentials(Credentials credentials) { mCredentials = credentials; - // Override home server url and/or identity server url if provided + // Override homeserver url and/or identity server url if provided if (credentials.wellKnown != null) { if (credentials.wellKnown.homeServer != null) { String homeServerUrl = credentials.wellKnown.homeServer.baseURL; @@ -200,7 +200,7 @@ public class HomeServerConnectionConfig { } /** - * TLS versions accepted for TLS connections with the home server. + * TLS versions accepted for TLS connections with the homeserver. */ @Nullable public List getAcceptedTlsVersions() { @@ -208,7 +208,7 @@ public class HomeServerConnectionConfig { } /** - * TLS cipher suites accepted for TLS connections with the home server. + * TLS cipher suites accepted for TLS connections with the homeserver. */ @Nullable public List getAcceptedTlsCipherSuites() { @@ -426,7 +426,7 @@ public class HomeServerConnectionConfig { */ public Builder withHomeServerUri(final Uri homeServerUri) { if (homeServerUri == null || (!"http".equals(homeServerUri.getScheme()) && !"https".equals(homeServerUri.getScheme()))) { - throw new RuntimeException("Invalid home server URI: " + homeServerUri); + throw new RuntimeException("Invalid homeserver URI: " + homeServerUri); } // remove trailing / @@ -435,7 +435,7 @@ public class HomeServerConnectionConfig { String url = homeServerUri.toString(); mHomeServerConnectionConfig.mHomeServerUri = Uri.parse(url.substring(0, url.length() - 1)); } catch (Exception e) { - throw new RuntimeException("Invalid home server URI: " + homeServerUri); + throw new RuntimeException("Invalid homeserver URI: " + homeServerUri); } } else { mHomeServerConnectionConfig.mHomeServerUri = homeServerUri; @@ -549,7 +549,7 @@ public class HomeServerConnectionConfig { } /** - * Add an accepted TLS version for TLS connections with the home server. + * Add an accepted TLS version for TLS connections with the homeserver. * * @param tlsVersion the tls version to add to the set of TLS versions accepted. * @return this builder @@ -577,7 +577,7 @@ public class HomeServerConnectionConfig { } /** - * Add a TLS cipher suite to the list of accepted TLS connections with the home server. + * Add a TLS cipher suite to the list of accepted TLS connections with the homeserver. * * @param tlsCipherSuite the tls cipher suite to add. * @return this builder @@ -666,7 +666,7 @@ public class HomeServerConnectionConfig { public HomeServerConnectionConfig build() { // Check mandatory parameters if (mHomeServerConnectionConfig.mHomeServerUri == null) { - throw new RuntimeException("Home server URI not set"); + throw new RuntimeException("Homeserver URI not set"); } return mHomeServerConnectionConfig; diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/legacy/riot/LoginStorage.java b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/legacy/riot/LoginStorage.java index 516007524e..2820b66886 100755 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/legacy/riot/LoginStorage.java +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/legacy/riot/LoginStorage.java @@ -38,7 +38,7 @@ import timber.log.Timber; public class LoginStorage { private static final String PREFS_LOGIN = "Vector.LoginStorage"; - // multi accounts + home server config + // multi accounts + homeserver config private static final String PREFS_KEY_CONNECTION_CONFIGS = "PREFS_KEY_CONNECTION_CONFIGS"; private final Context mContext; @@ -49,7 +49,7 @@ public class LoginStorage { } /** - * @return the list of home server configurations. + * @return the list of homeserver configurations. */ public List getCredentialsList() { SharedPreferences prefs = mContext.getSharedPreferences(PREFS_LOGIN, Context.MODE_PRIVATE); @@ -85,7 +85,7 @@ public class LoginStorage { /** * Add a credentials to the credentials list * - * @param config the home server config to add. + * @param config the homeserver config to add. */ public void addCredentials(HomeServerConnectionConfig config) { if (null != config && config.getCredentials() != null) { @@ -203,4 +203,4 @@ public class LoginStorage { //Need to commit now because called before forcing an app restart editor.commit(); } -} \ No newline at end of file +} diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/DefaultFileService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/DefaultFileService.kt index a284d976d0..1cbf621d36 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/DefaultFileService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/DefaultFileService.kt @@ -33,6 +33,7 @@ import org.matrix.android.sdk.internal.di.SessionDownloadsDirectory import org.matrix.android.sdk.internal.di.UnauthenticatedWithCertificateWithProgress import org.matrix.android.sdk.internal.session.download.DownloadProgressInterceptor.Companion.DOWNLOAD_PROGRESS_INTERCEPTOR_HEADER import org.matrix.android.sdk.internal.util.MatrixCoroutineDispatchers +import org.matrix.android.sdk.internal.util.file.AtomicFileCreator import org.matrix.android.sdk.internal.util.md5 import org.matrix.android.sdk.internal.util.writeToFile import timber.log.Timber @@ -96,6 +97,9 @@ internal class DefaultFileService @Inject constructor( } } + var atomicFileDownload: AtomicFileCreator? = null + var atomicFileDecrypt: AtomicFileCreator? = null + if (existingDownload != null) { // FIXME If the first downloader cancels then we'll unfortunately be cancelled too. return existingDownload.await() @@ -131,8 +135,11 @@ internal class DefaultFileService @Inject constructor( Timber.v("Response size ${response.body?.contentLength()} - Stream available: ${!source.exhausted()}") // Write the file to cache (encrypted version if the file is encrypted) - writeToFile(source.inputStream(), cachedFiles.file) + // Write to a part file first, so if we abort before done, we don't have a broken cached file + val atomicFileCreator = AtomicFileCreator(cachedFiles.file).also { atomicFileDownload = it } + writeToFile(source.inputStream(), atomicFileCreator.partFile) response.close() + atomicFileCreator.commit() } else { Timber.v("## FileService: cache hit for $url") } @@ -145,8 +152,10 @@ internal class DefaultFileService @Inject constructor( Timber.v("## FileService: decrypt file") // Ensure the parent folder exists cachedFiles.decryptedFile.parentFile?.mkdirs() + // Write to a part file first, so if we abort before done, we don't have a broken cached file + val atomicFileCreator = AtomicFileCreator(cachedFiles.decryptedFile).also { atomicFileDecrypt = it } val decryptSuccess = cachedFiles.file.inputStream().use { inputStream -> - cachedFiles.decryptedFile.outputStream().buffered().use { outputStream -> + atomicFileCreator.partFile.outputStream().buffered().use { outputStream -> MXEncryptedAttachments.decryptAttachment( inputStream, elementToDecrypt, @@ -154,6 +163,7 @@ internal class DefaultFileService @Inject constructor( ) } } + atomicFileCreator.commit() if (!decryptSuccess) { throw IllegalStateException("Decryption error") } @@ -174,6 +184,11 @@ internal class DefaultFileService @Inject constructor( } toNotify?.completeWith(result) + result.onFailure { + atomicFileDownload?.cancel() + atomicFileDecrypt?.cancel() + } + return result.getOrThrow() } diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/identity/DefaultIdentityService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/identity/DefaultIdentityService.kt index 4f88d8eb95..48870b86b7 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/identity/DefaultIdentityService.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/identity/DefaultIdentityService.kt @@ -191,7 +191,7 @@ internal class DefaultIdentityService @Inject constructor( } else { // Disconnect previous one if any, first, because the token will change. // In case of error when configuring the new identity server, this is not a big deal, - // we will ask for a new token on the previous Identity server + // we will ask for a new token on the previous identity server runCatching { identityDisconnectTask.execute(Unit) } .onFailure { Timber.w(it, "Unable to disconnect identity server") } @@ -241,7 +241,7 @@ internal class DefaultIdentityService @Inject constructor( override suspend fun getShareStatus(threePids: List): Map { // Note: we do not require user consent here, because it is used for emails and phone numbers that the user has already sent - // to the home server, and not emails and phone numbers from the contact book of the user + // to the homeserver, and not emails and phone numbers from the contact book of the user if (threePids.isEmpty()) { return emptyMap() diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/identity/IdentityAuthAPI.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/identity/IdentityAuthAPI.kt index 9d990d4d8f..f77eb296aa 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/identity/IdentityAuthAPI.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/identity/IdentityAuthAPI.kt @@ -42,7 +42,7 @@ internal interface IdentityAuthAPI { suspend fun ping() /** - * Ping v1 will be used to check outdated Identity server + * Ping v1 will be used to check outdated identity server */ @GET("_matrix/identity/api/v1") suspend fun pingV1() diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/integrationmanager/IntegrationManager.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/integrationmanager/IntegrationManager.kt index aa82cf9222..b654b8610d 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/integrationmanager/IntegrationManager.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/integrationmanager/IntegrationManager.kt @@ -43,8 +43,8 @@ import javax.inject.Inject /** * The integration manager allows to - * - Get the Integration Manager that a user has explicitly set for its account (via account data) - * - Get the recommended/preferred Integration Manager list as defined by the HomeServer (via wellknown) + * - Get the integration manager that a user has explicitly set for its account (via account data) + * - Get the recommended/preferred integration manager list as defined by the homeserver (via wellknown) * - Check if the user has disabled the integration manager feature * - Allow / Disallow Integration manager (propagated to other riot clients) * diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/profile/ProfileAPI.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/profile/ProfileAPI.kt index 485a4973ca..4b56db9f13 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/profile/ProfileAPI.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/profile/ProfileAPI.kt @@ -86,7 +86,7 @@ internal interface ProfileAPI { suspend fun addMsisdn(@Body body: AddMsisdnBody): AddMsisdnResponse /** - * Validate Msisdn code (same model than for Identity server API) + * Validate Msisdn code (same model than for identity server API) */ @POST suspend fun validateMsisdn(@Url url: String, diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/create/CreateRoomBodyBuilder.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/create/CreateRoomBodyBuilder.kt index 018b865388..86d2b70da1 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/create/CreateRoomBodyBuilder.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/create/CreateRoomBodyBuilder.kt @@ -59,7 +59,7 @@ internal class CreateRoomBodyBuilder @Inject constructor( val invite3pids = params.invite3pids .takeIf { it.isNotEmpty() } ?.let { invites -> - // This can throw Exception if Identity server is not configured + // This can throw an exception if identity server is not configured ensureIdentityTokenTask.execute(Unit) val identityServerUrlWithoutProtocol = identityStore.getIdentityServerUrlWithoutProtocol() diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/queue/EventSenderProcessorCoroutine.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/queue/EventSenderProcessorCoroutine.kt index 80bfd02b0e..3be01762e7 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/queue/EventSenderProcessorCoroutine.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/queue/EventSenderProcessorCoroutine.kt @@ -46,7 +46,7 @@ private const val MAX_RETRY_COUNT = 3 /** * This class is responsible for sending events in order in each room. It uses the QueuedTask.queueIdentifier to execute tasks sequentially. - * Each send is retried 3 times, if there is no network (e.g if cannot ping home server) it will wait and + * Each send is retried 3 times, if there is no network (e.g if cannot ping homeserver) it will wait and * periodically test reachability before resume (does not count as a retry) * * If the app is killed before all event were sent, on next wakeup the scheduled events will be re posted diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/queue/EventSenderProcessorThread.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/queue/EventSenderProcessorThread.kt index 9db7cc9039..f32890f3fb 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/queue/EventSenderProcessorThread.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/room/send/queue/EventSenderProcessorThread.kt @@ -42,7 +42,7 @@ import kotlin.concurrent.schedule /** * A simple ever running thread unique for that session responsible of sending events in order. - * Each send is retried 3 times, if there is no network (e.g if cannot ping home server) it will wait and + * Each send is retried 3 times, if there is no network (e.g if cannot ping homeserver) it will wait and * periodically test reachability before resume (does not count as a retry) * * If the app is killed before all event were sent, on next wakeup the scheduled events will be re posted diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncTask.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncTask.kt index 83a2ffc446..c80fbe60c1 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncTask.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/session/sync/SyncTask.kt @@ -94,7 +94,7 @@ internal class DefaultSyncTask @Inject constructor( userStore.createOrUpdate(userId) initialSyncProgressService.startRoot(InitSyncStep.ImportingAccount, 100) } - // Maybe refresh the home server capabilities data we know + // Maybe refresh the homeserver capabilities data we know getHomeServerCapabilitiesTask.execute(GetHomeServerCapabilitiesTask.Params(forceRefresh = false)) val readTimeOut = (params.timeout + TIMEOUT_MARGIN).coerceAtLeast(TimeOutInterceptor.DEFAULT_LONG_TIMEOUT) diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/util/file/AtomicFileCreator.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/util/file/AtomicFileCreator.kt new file mode 100644 index 0000000000..ca10c0ed0f --- /dev/null +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/util/file/AtomicFileCreator.kt @@ -0,0 +1,42 @@ +/* + * 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.internal.util.file + +import timber.log.Timber +import java.io.File + +internal class AtomicFileCreator(private val file: File) { + val partFile = File(file.parentFile, "${file.name}.part") + + init { + if (file.exists()) { + Timber.w("## AtomicFileCreator: target file ${file.path} exists, it should not happen.") + } + if (partFile.exists()) { + Timber.d("## AtomicFileCreator: discard aborted part file ${partFile.path}") + // No need to delete the file, we will overwrite it + } + } + + fun cancel() { + partFile.delete() + } + + fun commit() { + partFile.renameTo(file) + } +} diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/wellknown/GetWellknownTask.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/wellknown/GetWellknownTask.kt index fdeb8c1ca5..f11e87e1e7 100644 --- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/wellknown/GetWellknownTask.kt +++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/wellknown/GetWellknownTask.kt @@ -130,7 +130,7 @@ internal class DefaultGetWellknownTask @Inject constructor( } /** - * Return true if home server is valid, and (if applicable) if identity server is pingable + * Return true if homeserver is valid, and (if applicable) if identity server is pingable */ private suspend fun validateHomeServer(homeServerBaseUrl: String, wellKnown: WellKnown, client: OkHttpClient): WellknownResult { val capabilitiesAPI = retrofitFactory.create(client, homeServerBaseUrl) @@ -186,7 +186,7 @@ internal class DefaultGetWellknownTask @Inject constructor( } /** - * Try to get an identity server URL from a home server URL, using a .wellknown request + * Try to get an identity server URL from a homeserver URL, using a .wellknown request */ /* fun getIdentityServer(homeServerUrl: String, callback: ApiCallback) { diff --git a/matrix-sdk-android/src/main/java/org/matrix/androidsdk/crypto/data/MXDeviceInfo.java b/matrix-sdk-android/src/main/java/org/matrix/androidsdk/crypto/data/MXDeviceInfo.java index 393c633c6a..1014ceda0e 100755 --- a/matrix-sdk-android/src/main/java/org/matrix/androidsdk/crypto/data/MXDeviceInfo.java +++ b/matrix-sdk-android/src/main/java/org/matrix/androidsdk/crypto/data/MXDeviceInfo.java @@ -66,7 +66,7 @@ public class MXDeviceInfo implements Serializable { public Map> signatures; /* - * Additional data from the home server. + * Additional data from the homeserver. */ public Map unsigned; @@ -81,4 +81,4 @@ public class MXDeviceInfo implements Serializable { public MXDeviceInfo() { mVerified = DEVICE_VERIFICATION_UNKNOWN; } -} \ No newline at end of file +} diff --git a/vector/build.gradle b/vector/build.gradle index 0194e96bc3..29f517a7e0 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -14,7 +14,7 @@ kapt { // Note: 2 digits max for each value ext.versionMajor = 1 ext.versionMinor = 1 -ext.versionPatch = 13 +ext.versionPatch = 14 static def getGitTimestamp() { def cmd = 'git show -s --format=%ct' @@ -320,7 +320,7 @@ dependencies { def jjwt_version = '0.11.2' // Tests - def kluent_version = '1.67' + def kluent_version = '1.68' def androidxTest_version = '1.4.0' def espresso_version = '3.4.0' diff --git a/vector/src/androidTest/java/im/vector/app/RegistrationTest.kt b/vector/src/androidTest/java/im/vector/app/RegistrationTest.kt index 73ca94b148..fcec2a9fb5 100644 --- a/vector/src/androidTest/java/im/vector/app/RegistrationTest.kt +++ b/vector/src/androidTest/java/im/vector/app/RegistrationTest.kt @@ -57,7 +57,7 @@ class RegistrationTest { onView(withId(R.id.loginSplashSubmit)) .perform(click()) - // Check that home server options are shown + // Check that homeserver options are shown onView(withId(R.id.loginServerTitle)) .check(matches(isDisplayed())) .check(matches(withText(R.string.login_server_title))) diff --git a/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt b/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt index 53e1645f09..26365e0c72 100644 --- a/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt +++ b/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt @@ -486,7 +486,7 @@ class UiAllScreensSanityTest { clickOn(R.string.add_identity_server) pressBack() pressBack() - // Home server + // Homeserver clickOnPreference(R.string.settings_home_server) pressBack() // Identity server diff --git a/vector/src/main/java/im/vector/app/features/homeserver/ServerUrlsRepository.kt b/vector/src/main/java/im/vector/app/features/homeserver/ServerUrlsRepository.kt index 094fc4b3bb..5f1c709082 100644 --- a/vector/src/main/java/im/vector/app/features/homeserver/ServerUrlsRepository.kt +++ b/vector/src/main/java/im/vector/app/features/homeserver/ServerUrlsRepository.kt @@ -30,7 +30,7 @@ object ServerUrlsRepository { private const val DEFAULT_REFERRER_HOME_SERVER_URL_PREF = "default_referrer_home_server_url" private const val DEFAULT_REFERRER_IDENTITY_SERVER_URL_PREF = "default_referrer_identity_server_url" - // Keys used to store current home server url and identity url + // Keys used to store current homeserver url and identity url const val HOME_SERVER_URL_PREF = "home_server_url" const val IDENTITY_SERVER_URL_PREF = "identity_server_url" @@ -62,7 +62,7 @@ object ServerUrlsRepository { } /** - * Return last used home server url, or the default one from referrer or the default one from resources + * Return last used homeserver url, or the default one from referrer or the default one from resources */ fun getLastHomeServerUrl(context: Context): String { val prefs = DefaultSharedPreferences.getInstance(context) @@ -73,12 +73,12 @@ object ServerUrlsRepository { } /** - * Return true if url is the default home server url form resources + * Return true if url is the default homeserver url form resources */ fun isDefaultHomeServerUrl(context: Context, url: String) = url == getDefaultHomeServerUrl(context) /** - * Return default home server url from resources + * Return default homeserver url from resources */ fun getDefaultHomeServerUrl(context: Context): String = context.getString(R.string.matrix_org_server_url) } diff --git a/vector/src/main/java/im/vector/app/features/link/LinkHandlerActivity.kt b/vector/src/main/java/im/vector/app/features/link/LinkHandlerActivity.kt index 1361284ef1..a0b8efd5aa 100644 --- a/vector/src/main/java/im/vector/app/features/link/LinkHandlerActivity.kt +++ b/vector/src/main/java/im/vector/app/features/link/LinkHandlerActivity.kt @@ -122,7 +122,7 @@ class LinkHandlerActivity : VectorBaseActivity() { } /** - * Start the login screen with identity server and home server pre-filled + * Start the login screen with identity server and homeserver pre-filled */ private fun startLoginActivity(uri: Uri) { navigator.openLogin( diff --git a/vector/src/main/java/im/vector/app/features/login/LoginServerUrlFormFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginServerUrlFormFragment.kt index 5b98111645..538e4700de 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginServerUrlFormFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginServerUrlFormFragment.kt @@ -159,7 +159,7 @@ class LoginServerUrlFormFragment @Inject constructor() : AbstractLoginFragment onWellknownSuccess(action, data, homeServerConnectionConfig) is WellknownResult.FailPrompt -> - // Relax on IS discovery if home server is valid + // Relax on IS discovery if homeserver is valid if (data.homeServerUrl != null && data.wellKnown != null) { onWellknownSuccess(action, WellknownResult.Prompt(data.homeServerUrl!!, null, data.wellKnown!!), homeServerConnectionConfig) } else { diff --git a/vector/src/main/java/im/vector/app/features/login2/LoginViewModel2.kt b/vector/src/main/java/im/vector/app/features/login2/LoginViewModel2.kt index 13d819c284..e3f97a1c01 100644 --- a/vector/src/main/java/im/vector/app/features/login2/LoginViewModel2.kt +++ b/vector/src/main/java/im/vector/app/features/login2/LoginViewModel2.kt @@ -590,7 +590,7 @@ class LoginViewModel2 @AssistedInject constructor( is WellknownResult.Prompt -> onWellknownSuccess(action, data, homeServerConnectionConfig) is WellknownResult.FailPrompt -> - // Relax on IS discovery if home server is valid + // Relax on IS discovery if homeserver is valid if (data.homeServerUrl != null && data.wellKnown != null) { onWellknownSuccess(action, WellknownResult.Prompt(data.homeServerUrl!!, null, data.wellKnown!!), homeServerConnectionConfig) } else { diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryData.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryData.kt index 49bb769460..ae87de2bdf 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryData.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/RoomDirectoryData.kt @@ -22,7 +22,7 @@ package im.vector.app.features.roomdirectory data class RoomDirectoryData( /** * The server name (might be null) - * Set null when the server is the current user's home server. + * Set null when the server is the current user's homeserver. */ val homeServer: String? = null, diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewViewState.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewViewState.kt index 5a73f29ca3..0b2e0c048b 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewViewState.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewViewState.kt @@ -34,7 +34,7 @@ data class RoomPreviewViewState( val shouldPeekFromServer: Boolean = false, /** - * Can be empty when the server is the current user's home server. + * Can be empty when the server is the current user's homeserver. */ val homeServers: List = emptyList(), // Current state of the room in preview diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt index b247dbfcf6..e3949983fc 100755 --- a/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorPreferences.kt @@ -273,7 +273,7 @@ class VectorPreferences @Inject constructor(private val context: Context) { fun clearPreferences() { val keysToKeep = HashSet(mKeysToKeepAfterLogout) - // home server urls + // homeserver urls keysToKeep.add(ServerUrlsRepository.HOME_SERVER_URL_PREF) keysToKeep.add(ServerUrlsRepository.IDENTITY_SERVER_URL_PREF) diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsGeneralFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsGeneralFragment.kt index caa0763c87..f40079c615 100644 --- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsGeneralFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsGeneralFragment.kt @@ -179,7 +179,7 @@ class VectorSettingsGeneralFragment @Inject constructor( findPreference(VectorPreferences.SETTINGS_LOGGED_IN_PREFERENCE_KEY)!! .summary = session.myUserId - // home server + // homeserver findPreference(VectorPreferences.SETTINGS_HOME_SERVER_PREFERENCE_KEY)!! .summary = session.sessionParams.homeServerUrl diff --git a/vector/src/main/java/im/vector/app/features/settings/notifications/VectorSettingsNotificationPreferenceFragment.kt b/vector/src/main/java/im/vector/app/features/settings/notifications/VectorSettingsNotificationPreferenceFragment.kt index be989e62d3..40f575c853 100644 --- a/vector/src/main/java/im/vector/app/features/settings/notifications/VectorSettingsNotificationPreferenceFragment.kt +++ b/vector/src/main/java/im/vector/app/features/settings/notifications/VectorSettingsNotificationPreferenceFragment.kt @@ -69,7 +69,7 @@ class VectorSettingsNotificationPreferenceFragment @Inject constructor( .find { it.ruleId == RuleIds.RULE_ID_DISABLE_ALL } if (mRuleMaster == null) { - // The home server does not support RULE_ID_DISABLE_ALL, so hide the preference + // The homeserver does not support RULE_ID_DISABLE_ALL, so hide the preference pref.isVisible = false return } diff --git a/vector/src/main/java/im/vector/app/features/webview/ConsentWebViewEventListener.kt b/vector/src/main/java/im/vector/app/features/webview/ConsentWebViewEventListener.kt index d899486bcf..b9ad28c2df 100644 --- a/vector/src/main/java/im/vector/app/features/webview/ConsentWebViewEventListener.kt +++ b/vector/src/main/java/im/vector/app/features/webview/ConsentWebViewEventListener.kt @@ -58,7 +58,7 @@ class ConsentWebViewEventListener(activity: VectorBaseActivity<*>, session.profileApiClient .displayname(RIOT_BOT_ID, object : MatrixCallback(createRiotBotRoomCallback) { override fun onSuccess(info: String?) { - // Ok, the Home Server knows riot-Bot, so create a Room with him + // Ok, the homeserver knows riot-Bot, so create a Room with him session.createDirectMessageRoom(RIOT_BOT_ID, createRiotBotRoomCallback) } }) diff --git a/vector/src/main/res/layout/dialog_ssl_fingerprint.xml b/vector/src/main/res/layout/dialog_ssl_fingerprint.xml index 584db222c0..e2746dcbf7 100644 --- a/vector/src/main/res/layout/dialog_ssl_fingerprint.xml +++ b/vector/src/main/res/layout/dialog_ssl_fingerprint.xml @@ -33,7 +33,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="6dp" - tools:text="Home Server URL: http://matrix.org" /> + tools:text="Homeserver URL: http://matrix.org" /> - \ No newline at end of file + diff --git a/vector/src/main/res/layout/item_tos.xml b/vector/src/main/res/layout/item_tos.xml index 0a02ff7f54..ad23e14029 100644 --- a/vector/src/main/res/layout/item_tos.xml +++ b/vector/src/main/res/layout/item_tos.xml @@ -26,7 +26,7 @@ app:layout_constraintEnd_toStartOf="@id/term_policy_arrow" app:layout_constraintStart_toEndOf="@id/term_accept_checkbox" app:layout_constraintTop_toTopOf="parent" - tools:text="Integration Manager" /> + tools:text="Integration manager" /> - \ No newline at end of file + diff --git a/vector/src/main/res/values-cs/strings.xml b/vector/src/main/res/values-cs/strings.xml index 0b37b4e046..7a91dd1901 100644 --- a/vector/src/main/res/values-cs/strings.xml +++ b/vector/src/main/res/values-cs/strings.xml @@ -549,7 +549,7 @@ Zobrazit členy Otevřít záhlaví Synchronizuji… - Přejít na první nepřečtenou zprávu. + Přejít na nepřečtené místnost Nová konverzace Přidat člena @@ -2864,4 +2864,8 @@ \n \nV rámci beta verze to zlepšíme, ale jen jsme vás chtěli informovat. Prostory pro spolupracovníky nejsou ještě zcela připravené, ale přesto je můžete vyzkoušet + Omlouváme se, došlo k chybě během pokusu o přistoupení: %s + Adresa prostoru + Prohlédnout a spravovat adresy tohoto prostoru. + Adresy prostorů \ No newline at end of file diff --git a/vector/src/main/res/values-de/strings.xml b/vector/src/main/res/values-de/strings.xml index 5b5fb0809d..3f3697f4b8 100644 --- a/vector/src/main/res/values-de/strings.xml +++ b/vector/src/main/res/values-de/strings.xml @@ -34,7 +34,7 @@ VoIP-Konferenz beendet (Profilbild wurde ebenfalls geändert) %1$s hat den Raumnamen entfernt - %1$s hat das Raum-Thema entfernt + %1$s hat das Raumthema entfernt %1$s hat das Benutzerprofil aktualisiert %2$s %1$s hat eine Einladung an %2$s gesendet %1$s hat die Einladung in %2$s akzeptiert @@ -185,8 +185,8 @@ Du hast die Raumadressen %1$s hinzugefügt. - Du hast die Raum-Adresse %1$s vom Raum entfernt. - Du hast die Raum-Adressen %1$s vom Raum entfernt. + Du hast die Adresse %1$s vom Raum entfernt. + Du hast die Adressen %1$s vom Raum entfernt. Du hast die Raumadressen %1$s hinzugefügt und %2$s entfernt. Du hast die Hauptadresse für diesen Raum auf %1$s gesetzt. @@ -463,7 +463,7 @@ Heute Raumname - Raum-Thema + Raumthema Anruf verbunden Verbindungsaufbau… @@ -518,7 +518,7 @@ \nDu kannst dich mit einem anderen Konto anmelden oder diese E-Mail-Adresse zu diesem Konto hinzufügen. Du möchtest auf %s zugreifen. Möchtest du den Raum betreten, um an der Diskussion teilzunehmen? einen Raum - Dies ist eine Vorschau dieses Raums. Raum-Interaktionen wurden deaktiviert. + Das ist die Vorschau des Raums. Interaktionen mit dem Raum sind deaktiviert. Neuer Chat Mitglied hinzufügen @@ -543,12 +543,12 @@ Zum normalen Benutzer herabstufen Zum Moderator machen Zum Admin machen - Alle Nachrichten dieses Nutzers verbergen + Blockieren Alle Nachrichten dieses Nutzers anzeigen Nutzer-ID, Name oder E-Mail-Adresse Erwähnen Sitzungsliste anzeigen - Du wirst diese Änderung nicht rückgängig machen können, da der Benutzer dieselbe Berechtigungsstufe wie du erhalten wird. + Du wirst diese Änderung nicht rückgängig machen können, da die Person dieselbe Berechtigungsstufe wie du erhalten wird. \nBist du sicher\? "Bist du sicher, dass du %s in diesen Chat einladen willst?" @@ -587,7 +587,7 @@ Das Zertifikat hat sich von einem ursprünglich vertrauenswürdigem Zertifikat in ein nicht vertrauenswürdiges Zertifikat geändert. Eventuell wurde das Zertifikat des Servers erneuert. Bitte erkundige dich beim Server-Administrator, welcher Fingerprint als vertrauenswürdig gilt. Akzeptiere das Zertifikat nur dann, wenn der Server-Administrator einen Fingerprint veröffentlicht hat, der mit dem obigen übereinstimmt. - Raum-Details + Raumdetails Personen Dateien Einstellungen @@ -603,7 +603,7 @@ Herunterladen abbrechen Suchen - Raum-Mitglieder filtern + Raummitglieder filtern Keine Suchergebnisse RÄUME NACHRICHTEN @@ -645,10 +645,10 @@ E-Mail-Adresse hinzufügen Telefonnummer Telefonnummer hinzufügen - Zeige App-Infos in den Systemeinstellungen. + Appinfo in den Systemeinstellungen öffnen. App-Info - Benachrichtigungen für diesen Account aktivieren - Benachrichtigungen für diese Sitzung aktivieren + Benachrichtigungen für diesen Account + Benachrichtigungen für diese Sitzung Bildschirm für 3 Sekunden aktivieren Direktnachrichten Gruppenchats @@ -727,7 +727,7 @@ Raumbild Raumname Thema - Raum-Markierung + Raummarkierung Markiert als: Favorit @@ -735,21 +735,21 @@ Keine Zugriff und Sichtbarkeit - Diesen Raum im Raum-Verzeichnis anzeigen + Diesen Raum im Raumverzeichnis anzeigen Raumzugriff Lesbarkeit des Chatverlaufs Wer kann den Chatverlauf lesen? Wer kann auf diesen Raum zugreifen? Alle - Nur Mitglieder (ab dem Zeitpunkt, an dem diese Option ausgewählt wurde) - Nur Mitglieder (ab dem Zeitpunkt, an dem sie eingeladen wurden) - Nur Mitglieder (ab dem Zeitpunkt, an dem sie beigetreten sind) + Nur Mitglieder + Nur Mitglieder (ab Einladung) + Nur Mitglieder (ab Beitreten) Um einen Link zu einem Raum erstellen zu können, muss dieser eine Adresse haben. Nur eingeladene Personen - Alle, die den Raum-Link kennen (ausgenommen Gäste) - Alle, die den Raum-Link kennen (auch Gäste) + Alle, die den Raumlink kennen (ausgenommen Gäste) + Alle, die den Raumlink kennen (auch Gäste) Verbannte Benutzer @@ -833,7 +833,7 @@ \n \nUnbekannte Sitzungen: - Raum-Verzeichnis auswählen + Raumverzeichnis auswählen Der Server kann nicht verfügbar oder überlastet sein Gib einen Home-Server ein, um seine öffentlichen Räume aufzulisten Server-Name @@ -865,7 +865,7 @@ Sehr klein Riesig Design - Zeige Zeitstempel im 12-Stunden-Format + Zeitstempel im 12-Stunden-Format Um Widgets in diesem Raum zu verwalten, ist eine Berechtigung erforderlich Widget konnte nicht erstellt werden Konferenzgespräche mit Jitsi durchführen @@ -1056,14 +1056,14 @@ Bitte öffne ${app_name} auf einem anderen Gerät, das die Nachricht entschlüsseln kann, damit es die Schlüssel an diese Sitzung senden kann. Hier tippen… Sprachnachricht senden - fortfahren mit… + Öffnen mit… Es wurde keine externe Anwendung gefunden, um diese Aktion auszuführen. Sende Sprachnachrichten Bitte gib dein Passwort ein. Schreibe bitte auf Englisch, wenn möglich. Sende verschlüsselte Antwort… Sende unverschlüsselte Antwort… - Zeige Medien vor dem Senden + Medienvorschau vor dem Senden Du bist aktuell kein Mitglied einer Community. Benutze die Enter-Taste der Tastatur zum Senden Zeigt Aktionen @@ -1074,7 +1074,7 @@ Lädt Benutzer mit angegebener Kennung in den aktuellen Raum ein Tritt dem Raum mit angegebenen Alias bei Verlasse Raum - Setzt das Raum-Thema + Raumthema ändern Kickt Benutzer mit angegebener ID Ändert deinen Anzeigenamen (De-)Aktiviert Markdown @@ -1129,7 +1129,7 @@ Bitte %s um diesen Dienst weiter zu nutzen. Fehler Raummitglieder bei Bedarf nachladen - Verbessere Performanz, indem Raum-Mitglieder erst beim ersten Ansehen geladen werden. + Verbessere Performance, indem Raummitglieder erst beim ersten Ansehen geladen werden. Dein Home-Server unterstützt noch nicht das Nachladen von Raummitgliedern. Versuche es später. Entschuldige, ein Fehler trat auf Version %s @@ -1138,7 +1138,7 @@ Passphrasen stimmen nicht überein aufklappen Zusammenklappen - Zeige Infobereich + Infobereich zeigen Immer Für Nachrichten und Fehler Nur für Fehler @@ -1163,8 +1163,8 @@ Das Kommando \"%s\" braucht mehr Parameter oder einige Parameter sind inkorrekt. Markdown wurde aktiviert. Markdown wurde deaktiviert. - Zeige Betreten- und Verlassen-Ereignisse - Zeige Konto-Ereignisse + Betreten oder Verlassen von Benutzern zeigen + Kontoänderungen zeigen Enthält Änderungen des Profilbilds und des Anzeigenamens. Anrufe Nutze den Standard-Klingelton von ${app_name} für eingehende Anrufe @@ -1484,7 +1484,7 @@ Reaktionen ansehen Reaktionen Ereignis von Benutzer gelöscht - Ereignis moderiert durch Raum-Administrator + Ereignis durch einen Raum-Administrator moderiert Zuletzt bearbeitet von %1$s am %2$s Neuen Raum erstellen Kein Netzwerk. Bitte überprüfe deine Internetverbindung. @@ -1581,7 +1581,7 @@ Widerrufen Trennen Kein Identitätsserver konfiguriert. - Anruf aufgrund eines falsch konfigurierten Servers fehlgeschlagen + Anruf aufgrund eines Serverfehlers fehlgeschlagen Versuche es mit %s Nicht erneut fragen Richte eine E-Mail für die Kontowiederherstellung ein. Optional kannst du später einrichten, dass Personen dich über diese Adresse finden. @@ -1636,8 +1636,8 @@ %s \nDie Synchronisierung kann aufgrund deiner Ressourcen (Akku) oder Gerätezustands (schlafend) verschoben werden. Integrationen - Benutze einen Integrations-Manager um Bots, Brücken, Widgets und Sticker-Pakete zu verwalten. -\nIntegrations-Manager erhalten Konfigurationsdaten und können Widgets verändern, Raum-Einladungen senden und in deinem Namen Berechtigungslevel setzen. + Benutze einen Integrationsmanager um Bots, Brücken, Widgets und Stickerpakete zu verwalten. +\nIntegrationsmanager erhalten Rauminformationen und können so Widgets verändern, Einladungen senden und in deinem Namen Berechtigungslevel setzen. Integrationen erlauben Widget Widget laden @@ -1971,7 +1971,7 @@ Ende-zu-Ende-Verschlüsselung aktivieren… Einmal aktiviert kann die Verschlüsselung nicht rückgängig gemacht werden. Verschlüsselung aktivieren\? - Nach der Aktivierung kann die Verschlüsselung für einen Raum nicht deaktiviert werden. In einem verschlüsselten Raum gesendete Nachrichten können vom Server nicht gesehen werden, nur von den Teilnehmenden des Raums. Durch die Verschlüsselung funktionieren viele Bots und Bridges möglicherweise nicht ordnungsgemäß. + Nach der Aktivierung kann die Verschlüsselung für den Raum nicht deaktiviert werden. Nachrichten können nicht vom Server gesehen werden, nur von den Teilnehmenden des Raums. Möglicherweise funktionieren danach einige Bots und Bridges nicht mehr ordnungsgemäß. Verschlüsselung aktivieren Um sicher zu gehen, verifiziere %s, indem ein einmaliger Code überprüft wird. Um sicher zu sein, tut dies persönlich oder verwendet einen anderen Kommunikationsweg. @@ -2191,7 +2191,7 @@ Mitglieder hinzufügen EINLADEN Benutzer werden eingeladen… - Benutzer einladen + Personen einladen Einladung gesendet an %1$s Einladungen gesendet an %1$s und %2$s @@ -2230,7 +2230,7 @@ Durch das Ignorieren werden für dich alle Nachrichten des Nutzers ausgeblendet. \n \nDu kannst die Aktion jederzeit in den allgemeinen Einstellungen rückgängig machen. - Ignorieren des Benutzers rückgängig machen + Nicht mehr blockieren Das Aufheben der Ignorierung wird alle Nachrichten des Benutzers wieder einblenden. Einladung zurückziehen Bist du dir sicher, dass du die Einladung für diesen Benutzer zurückziehen möchtest\? @@ -2248,7 +2248,7 @@ Backup einrichten Backup zurücksetzen Auf diesem Gerät einrichten - Absicherung um den Zugriffsverlust auf verschlüsselte Nachrichten & Daten zu verhindern, indem die Schlüssel für die Entschlüsselung auf dem Server gesichert werden. + Verlust verschlüsselter Nachrichten & Daten verhindern, indem die Schlüssel für die Entschlüsselung am Server gesichert werden. Generiere einen neuen Sicherheitsschlüssel oder setze eine neue Sicherheitspassphrase für dein existierendes Backup. Dieses wird deinen aktuellen Schlüssel oder deine aktuelle Phrase ersetzen. Integrationen sind deaktiviert @@ -2262,11 +2262,11 @@ Aktive Widgets Der Sicherheitsschlüssel ist gespeichert worden. Backup - Absicherung gegen den Zugriffsverlust auf verschlüsselte Nachrichten & Daten + Absicherung gegen den Verlust verschlüsselter Nachrichten Richte Backup ein Nachricht gelöscht - Zeige gelöschte Nachrichten - Zeige einen Platzhalter für gelöschte Nachrichten + Gelöschte Nachrichten zeigen + Zeigt einen Platzhalter für gelöschte Nachrichten an Dedizierten Tab für ungelesene Nachrichten zur Hauptansicht hinzufügen Wir haben dir eine Bestätigungsmail an %s gesendet. Bitte prüfe deine E-Mails und klicke auf den Bestätigungslink Der Verifizierungscode ist nicht korrekt. @@ -2328,14 +2328,14 @@ Starte Kamera Richte Backup ein Backup - Absicherung um den Zugriffsverlust auf verschlüsselte Nachrichten & Daten zu verhindern, indem die Schlüssel für die Entschlüsselung auf dem Server gesichert werden. - Benutze einen Sicherheitsschlüssel + Verlust verschlüsselter Nachrichten & Daten verhindern, indem die Schlüssel für die Entschlüsselung am Server gesichert werden. + Sicherheitsschlüssel benutzen Generiere einen Sicherheitsschlüssel, welcher z.B. in einem Passwortmanager oder in einem Tresor sicher aufbewahrt werden sollte. - Benutze Sicherheitsphrase + Eine Sicherheitsphrase benutzen Gib eine geheime Phrase ein, die nur du kennst und generiere einen Schlüssel als Backup. Speichere deinen Sicherheitsschlüssel Bewahre deinen Sicherheitsschlüssel irgendwo sicher auf, wie z.B. in einem Passwortmanager oder in einem Tresor. - Setze Sicherheitsphrase + Sicherheitsphrase setzen Gib eine Sicherheitsphrase ein, welche nur du kennst und deine Daten auf dem Server geheim halten soll. Sicherheitsphrase Gib deine Sicherheitsphrase zur Bestätigung erneut ein. @@ -2419,7 +2419,7 @@ Telefonnummern %s entfernen\? Stelle sicher, dass du auf den Link in der E-Mail geklickt hast, die wir dir gesendet haben. - E-Mail-Adressen und Telefonnummern + E-Mail und Telefon Verwalte E-Mails und Telefonnummern, die mit deinem Matrix-Konto verknüpft sind Code Verwende das internationale Format (Telefonnummer muss mit \'+\' beginnen) @@ -2430,7 +2430,7 @@ %d Sekunde %d Sekunden - Zeige Status-Ereignisse der Raum-Mitglieder + Status-Ereignisse der Raummitglieder zeigen Bezieht Einladungs-/Beitritts-/Verlassen-/Entfernen-/Verbannen-Ereignisse und Avatar-/Anzeigenamen-Wechsel mit ein. Umfrage Bot-Schaltflächen @@ -2450,8 +2450,8 @@ Gebannte Nutzer filtern Du bist nicht berechtigt einen Anruf zu starten Du hast keine Berechtigung ein Konferenzgespräch zu starten - Zeige Details wie Raumnamen und Nachrichteninhalt. - Zeige Inhalt in Benachrichtigungen + Details wie Raumnamen und Nachrichteninhalt zeigen. + Inhalt in Benachrichtigungen anzeigen PIN-Code ist die einzige Möglichkeit ${app_name} zu entsperren. Aktiviere Gerät-spezifische Biometrie wie Fingerabdrücke und Gesichtserkennung. Biometrie aktivieren @@ -2479,7 +2479,7 @@ Dieser Home-Server läuft mit einer alten Version. Bitte deinen Home-Server-Administrator um eine Aktualisierung. Du kannst fortfahren, aber einige Funktionen funktionieren möglicherweise nicht richtig. Du hast dies auf Einladungen beschränkt. %1$s hat dies auf Einladungen beschränkt. - Zeige vollständigen Verlauf in verschlüsselten Räumen an + Vollständigen Verlauf in verschlüsselten Räumen anzeigen %1$s und %2$s %1$s in %2$s und %3$s @@ -2493,8 +2493,8 @@ Bei jedem Öffnen von ${app_name} ist der PIN-Code erforderlich. PIN-Code ist erforderlich, nachdem ${app_name} 2 Minuten lang nicht verwendet wurde. Fordere PIN nach 2 Minuten an - Zeige nur die Anzahl von ungelesenen Nachrichten in einer einfachen Benachrichtigung. - Bild hinzufügen von + Nur die Anzahl ungelesener Nachrichten in der Benachrichtigung zeigen. + Bild hinzufügen mit Der Raum ist noch nicht erstellt. Raumerstellung abbrechen\? Zu niedrige Priorität hinzufügen Thema @@ -2503,7 +2503,7 @@ Von niedrige Priorität entfernen Rotieren und Zuschneiden Raumeinstellungen - Raum-Thema (optional) + Raumthema (optional) Raumname Prüfung exportieren Direktnachricht @@ -2545,7 +2545,7 @@ Ändere deine aktuelle PIN PIN ändern Suche nach Kontakten auf Matrix - Raum-Bild einrichten + Raumbild einrichten Einverständnis wurde nicht abgegeben. Teile diesen Code mit Leuten, damit sie ihn scannen und mit dir chatten können. Meinen Code teilen @@ -2568,7 +2568,7 @@ Bitte gib eine Raumadresse an Diese Adresse ist bereits vergeben Raumadresse - Aktivieren, wenn der Raum nur von Mitgliedern deines Home-Servers zur internen Kommunikation verwendet wird. Das kann später nicht mehr geändert werden. + Aktivieren, wenn der Raum nur von Mitgliedern deines Homeservers zur internen Kommunikation verwendet wird. Das kann später nicht mehr geändert werden. Begrenze Zugang zu diesem Raum (für immer!) auf Mitglieder von %s %1$d von %2$d QR-Code scannen, um eine neue Direktnachricht schicken @@ -2597,11 +2597,11 @@ Andere öffentliche Adressen: Hauptadresse Das ist die Hauptadresse - Raum-Name ändern + Raumname ändern Sichtbarkeit des Verlaufs ändern Raum-Verschlüsselung aktivieren Haupt-Adresse des Raums ändern - Raum-Bild ändern + Raumbild ändern Widgets verändern Jeden benachrichtigen Von anderen gesendete Nachrichten entfernen @@ -2612,7 +2612,7 @@ Nachrichten senden Standard Rolle Berechtigungen - Raum-Berechtigungen + Berechtigungen Du hast nicht die Berechtigung zum Aktualisieren der Rollen, die zum Ändern verschiedener Teile des Raums erforderlich sind Dieser Raum ist nicht öffentlich. Du wirst ihn ohne Einladung nicht wieder betreten können. Standard-Design @@ -2682,7 +2682,7 @@ Status-Events Status-Event senden Benutzerdefiniertes Ereignis senden - Raum-Status erkunden + Raumstatus erkunden Entwicklerwerkzeuge Lesebestätigungen anzeigen Nicht benachrichtigen @@ -2714,7 +2714,7 @@ Datei-Upload-Obergrenze des Servers Serverversion Servername - Raum-Einstellungen + Raumeinstellungen Derzeitige Konferenz verlassen und zu einer anderen wechseln\? Raum-Version Neuer Wert @@ -2725,8 +2725,8 @@ Gesendet Raumverzeichnis Wechseln - Zeige alle Räume im Raumverzeichnis, inklusive der Räume mit anstößigen Inhalten. - Zeige Räume mit anstößigen Inhalten + Alle Räume im Raumverzeichnis anzeigen, inklusive der Räume mit anstößigen Inhalten. + Räume mit anstößigen Inhalten zeigen Bist du dir sicher, dass du alle nicht gesendeten Nachrichten in diesem Raum löschen willst\? Nicht gesendete Nachrichten löschen Fehlgeschlagen @@ -2751,13 +2751,13 @@ Spaces Jeder kann im Raum anklopfen, Mitglieder können dann zustimmen oder ablehnen Momentan bist nur du hier. Mit anderen Leuten wird %s noch viel besser. - Diese werden in der Lage sein %s zu durchsuchen + Diese werden in der Lage sein, %s zu durchsuchen Diese werden kein Teil von %s sein Tritt meinem Space %1$s %2$s bei Willkommen zu %1$s, %2$s. Warnung: benötigt Server-Unterstützung und eine experimentelle Raumversion Experimenteller Space - Zugangsbeschränkter Raum. - Mit Spaces kannst du Personen und Räume zu gruppieren. + Mit Spaces kannst du Personen und Räume gruppieren. Sag hallo zu Spaces! Füge bereits existierende Räume und Spaces hinzu Vorübergehend überspringen @@ -2779,7 +2779,7 @@ Space beitreten Space erzeugen Nur zu diesem Raum - Zu %s einladen + In Space \"%s\" einladen Link teilen Mithilfe eines Benutzernamens einladen Mithilfe einer E-Mail-Adresse einladen @@ -2873,4 +2873,8 @@ Trotzdem fortfahren Bei %1$s anfragen Zu %1$s weiterleiten + Space-Adressen + Adressen des Spaces anzeigen und verwalten. + Space-Adressen + Beim Versuch %s beizutreten, ist leider ein Fehler aufgetreten \ No newline at end of file diff --git a/vector/src/main/res/values-en-rGB/strings.xml b/vector/src/main/res/values-en-rGB/strings.xml new file mode 100644 index 0000000000..a6b3daec93 --- /dev/null +++ b/vector/src/main/res/values-en-rGB/strings.xml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/vector/src/main/res/values-et/strings.xml b/vector/src/main/res/values-et/strings.xml index 49761f6d88..4420763a1e 100644 --- a/vector/src/main/res/values-et/strings.xml +++ b/vector/src/main/res/values-et/strings.xml @@ -601,7 +601,7 @@ Eelvaade Hülga Sünkroniseerin… - Mine esimese lugemata sõnumi juurde. + Mine lugemata sõnumite juurde Sa oled kutsutud siia jututuppa %s poolt Kutse saadeti %s e-posti aadressile, aga see ei ole seotud antud kasutajakontoga. \nSa kas peaksid logima sisse teise kontoga või lisama selle e-posti aadressi oma kasutajakontole. @@ -2811,4 +2811,8 @@ Hetkel teiste kasutajate liitumine sinu poolt tehtud privaatsete jututubadega ei pruugi õnnestuda. \n \nKuna tegemist on beetaversiooniga, siis me veel parandame seda funktsionaalsust, aga lihtsalt tahtsime sind teavitada. + Vabandust, liitumisel tekkis viga: %s + Kogukonnakeskuse aadressid + Selle kogukonnakeskuse hallatud ja nähtavad aadressid. + Kogukonnakeskuse aadressid \ No newline at end of file diff --git a/vector/src/main/res/values-fr/strings.xml b/vector/src/main/res/values-fr/strings.xml index c33afe70d1..4d30b2a652 100644 --- a/vector/src/main/res/values-fr/strings.xml +++ b/vector/src/main/res/values-fr/strings.xml @@ -658,7 +658,7 @@ \n \nAutorisez-vous l’accès à vos contacts à cette fin \? Désolé. L’action n’a pas été réalisée faute d’autorisations - Aller au premier message non lu. + Aller au premier message non lu %s vous a invité à rejoindre ce salon Cette invitation a été envoyée à %s, qui n’est pas associé à ce compte. \nVous pouvez vous identifier avec un compte différent ou ajouter cette adresse e-mail à votre compte. @@ -2818,4 +2818,8 @@ \nNous allons améliorer ceci dans la bêta, mais nous voulions vous en faire part. Les espaces pour les équipes ne sont pas tout à fait prêts, mais vous pouvez quand même les essayer Poursuivre malgré tout + Désolé, une erreur est survenue en essayant de rejoindre %s + Adresse de l’espace + Afficher et gérer les adresses de cet espace. + Adresse de l’espace \ No newline at end of file diff --git a/vector/src/main/res/values-hu/strings.xml b/vector/src/main/res/values-hu/strings.xml index ba1e3a9e8e..b2f1a9481c 100644 --- a/vector/src/main/res/values-hu/strings.xml +++ b/vector/src/main/res/values-hu/strings.xml @@ -408,7 +408,7 @@ Csatlakozás Előnézet Elutasítás - Ugrás az első olvasatlan üzenethez. + Ugrás az olvasatlanra Meg lettél hívva, hogy csatlakozz ehhez a szobához %s által Tagok adatai Továbbítás @@ -2816,4 +2816,8 @@ Ha nem te állítottad be a visszaállítási metódust, akkor egy támadó pró \nEzt folyamatosan fejlesztjük a béta program keretében, csak szerettünk volna tájékoztatni róla. A csoporttárs terek még nem igazán vannak készen de már tehetsz velük egy próbát Mindenképpen folytatás + Bocsánat, hiba történt a csatlakozáskor ide: %s + Tér cím + Tér címek megjelenítése és kezelése. + Tér címek \ No newline at end of file diff --git a/vector/src/main/res/values-it/strings.xml b/vector/src/main/res/values-it/strings.xml index 1792d09cae..c6dedd6bdf 100644 --- a/vector/src/main/res/values-it/strings.xml +++ b/vector/src/main/res/values-it/strings.xml @@ -510,7 +510,7 @@ Anteprima Rifiuta - Vai al primo messaggio non letto. + Vai ai non letti Sei stato invitato da %s a entrare in questa stanza Questo invito è stato spedito a %s, che non è associato a questo account. @@ -2865,4 +2865,8 @@ \nMiglioreremo questa cosa come parte della beta, ma volevamo almeno fartelo sapere. Gli spazi dei compagni non sono ancora pronti del tutto, ma puoi comunque provarli Continua comunque + Spiacenti, si è verificato un errore tentando di entrare: %s + Indirizzo dello spazio + Vedi e gestisci gli indirizzi di questo spazio. + Indirizzi dello spazio \ No newline at end of file diff --git a/vector/src/main/res/values-ja/strings.xml b/vector/src/main/res/values-ja/strings.xml index 84bccec0f6..c948d6eddb 100644 --- a/vector/src/main/res/values-ja/strings.xml +++ b/vector/src/main/res/values-ja/strings.xml @@ -802,17 +802,17 @@ ${app_name}アプリがあなたの電話帳へアクセスすることを許可 あなたは現在どのコミュニティーのメンバーでもありません。 ここに入力… - %d 個の未読の通知されたメッセージ + %d件の通知された未読メッセージ - %d 個の未読の通知されたメッセージ + %d件の通知された未読メッセージ - %d 部屋 + %d部屋 %2$s件 中 %1$s件 - %d 個のアクティブなウィジェット + %d個のウィジェットが使用中 必要な変数が見つかりません。 変数が無効です。 @@ -832,10 +832,10 @@ ${app_name}アプリがあなたの電話帳へアクセスすることを許可 Markdown書式の入/切 Matrixアプリの管理を修正するには - %d名 + %d名の参加者 - %d 部屋 + %d部屋 アバターを読み込み %1$s ホームサーバを使用し続けるには、利用規約を読み、同意する必要があります。 @@ -1610,4 +1610,180 @@ Matrixでのメッセージの可視性は電子メールと同様です。メ %s はあなたを招待しています この部屋で電話会議をする権利がありません オーディオミーティングを開始する + 安全バックアップを設定 + 暗号鍵バックアップで管理 + 暗号鍵バックアップを使用 + 暗号化されたメッセージ及びデータへのアクセスを喪失しないための安全措置 + 暗号鍵のバックアップを開始 + 自分でした + 新しい暗号化されたメッセージの暗号鍵バックアップが検出されました。 +\n +\n新しい復元方法を設定しなかった場合、攻撃者がアカウントへアクセスしようとしている可能性があります。アカウントを守るために、設定ですぐにアカウントのパスワードを変更し新しい復元方法を設定してください。 + 新しい暗号鍵バックアップ + バックアップされた暗号鍵をサーバーから削除しますか?現在の復元鍵を使用して暗号化されたメッセージ履歴を読むことができなくなります。 + バックアップを削除 + バックアップの状態を確認中 + バックアップの削除に失敗しました(%s) + バックアップを削除中… + このセッションで暗号鍵バックアップを使用するには、今パスフレーズまたは復元鍵でバックアップを復元してください。 + バックアップは%sという未検証セッションによる不正なしょめいがあります + バックアップは%sという検証されたセッションによる不正な署名があります + バックアップは%sという未検証セッションによる有効な署名があります + バックアップは%sという検証されたセッションによる署名があります。 + バックアップはこのセッションによる有効な署名があります。 + バックアップは%sというIDの不明のセッションによる署名があります。 + このセッションでは暗号鍵がバックアップされていません。 + このセッションでは暗号鍵のバックアップが無効になっています。 + このセッションでは暗号鍵のバックアップが正しく設定されています。 + 最新の復号鍵バージョンの取得に失敗しました(%s)。 + + %d個の新しい鍵がこのセッションに追加されました。 + + + %d個の鍵を含めたバックアップを復元しました。 + + バックアップが復元されました %s! + この復元鍵ではバックアップを復号できませんでした。正しい復元鍵を入力したことを確認してください。 + 復元鍵を入力してください + 履歴をアンロック + 鍵をインポート中… + 鍵をダウンロード中… + 復元鍵を計算中… + バックアップを復元: + ネットワークエラー: 接続を確認して再試行してください。 + このパスフレーズではバックアップを復号できませんでした。正しい復元パスフレーズを入力したことを確認してください。 + 復元鍵を喪失しましたか?設定で新しいのを設定できます。 + メッセージの復元 + バックアップのバージョンを取得中… + 復元パスフレーズを使用して暗号化されたメッセージ履歴書をアンロックします。 + 復元パスフレーズをご存知でなければ、%sができます。 + 復元鍵を使用して暗号化されたメッセージ履歴をアンロックします + 復元鍵を入力 + 復元鍵を使用 + ログアウトしたりこの端末を失くしたりすればメッセージへのアクセスを失う可能性があります。 + 本当によろしいですか? + 暗号鍵が現在バックグラウンドでホームサーバーへバックアップされています。初期バックアップは数分かかることがあります。 + バックアップが開始されました + 予期せぬエラー + 復元鍵 + パスフレーズを使用して復元鍵を生成中です。数秒かかることがあります。 + 復元鍵を共有… + コピーをしてください + 中止 + 上書き + 違うセッションにより設定された暗号鍵バックアップが既に存在します。既存のバックアップを上書きしますか? + ホームサーバーには既存のバックアップがあります + 復元鍵が保存されました。 + 復号鍵が%sに保存されました。 +\n +\n注意: アプリケーションが削除された場合、削除される可能性があります。 + 復号鍵を保存 + コピーをしました + 復元鍵はパスワードマネージャーや金庫のような、非常に安全なばしょで保管してください + 復元鍵が安全網となります。パスフレーズを忘れた場合でも、暗号化されたメッセージへのアクセスを可能とするのです。 +\n復元鍵はパスワードマネージャーや金庫のような、非常に安全な場所で保管してください。 + 暗号鍵がバックアップ中です。 + (高度)復元鍵を使用して設定 + または、復元鍵を使用してバックアップを保護しバックアップを保護できます。復元鍵は安全な場所で保管してください。 + 暗号鍵のコピーを暗号化してホームサーバーに保存します。バックアップを保護するためにパスフレーズを設定してください。 +\n +\n最高度のセキュリティのために、アカウントのパスワードと異なることが大切です。 + パスフレーズを使用してバックアップを保護します。 + 暗号化が有効な部屋で送信されたメッセージはEnd-to-end暗号化によって保護されます。メッセージを読むための暗号鍵を持っているのは送受信者のみです。 +\n +\n暗号鍵を失わないように保護されたバックアップをしてください。 + (高度) + 暗号されたメッセージを絶対に失わないために + 利用可能なMatrixセッションがありません + ${app_name}による復号鍵の生成を望む場合、パスフレーズを削除してください。 + マークダウンが無効です。 + マークダウンが有効です。 + ”%s”とのコマンドはいくつかのパラメータが欠けているか不正です。 + この機能はメッセージを録音するために第三者のアプリを必要とします。 + 新しいセッションが暗号鍵を要請しています。 +\nセッション名: %1$s +\n最後のオンライン時刻: %2$s +\n新たにログインして新しいセッションを開始しなかった場合、この要求を無視してください。 + 未検証のセッションが暗号鍵を要請しています。 +\nセッション名: %1$s +\n最後のオンライン時刻: %2$s +\n新たにログインして新しいセッションを開始しなかった場合、この要求を無視してください。 + 暗号鍵共有要請 + カスタムカメラ画面の代わりにシステムカメラを使用します。 + 使用中のウィジェットがありません + インテグレーションを管理 + インテグレーション管理者が設定されていません。 + DRM保護されているメディアの読込 + マイクの使用 + カメラの使用 + このウィジェットは次のリソースの使用を要求します: + 現在の会議から退出しもう一つの会議に参加しますか? + 申し訳ありませんが、ビデオ会議に参加する途中で問題が発生しました + 申し訳ありませんが、古い端末(Android OS 6.0以前)はJitsiを使用したビデオ会議がサポートされていません + あなたの表示名 + ウィジェットの読込に失敗しました。 +\n%s + ウィジェットを再読込 + + ウィジェットの追加者: + **送信に失敗 - 部屋を開いてください + 新しい招待 + %1$sと%2$s + %2$sと%3$sに%1$s件のメッセージ + + %d件の通知 + + + %1$s: %2$d件のメッセージ + + + %d件の招待 + + 既にリストに載っているサーバーです + サーバーまたはその部屋一覧が見つかりません + 探検したい新しいサーバーの名前を入力してください。 + 新しいサーバーを追加 + あなたのサーバー + 暗号化されたメッセージの復元 + セッションの公開名は対話中の相手に閲覧できます + 部屋のバージョン + + banされたユーザー%d人 + + この部屋が含まれているスペースの参加者誰でも発見し参加できます。部屋をスペースに追加できるのは部屋の管理者だけです。 + スペース + 誰でも部屋を発見し参加できます + 公開 + 参加された人のみが部屋を発見し参加できます + プライベート + 不明のアクセス設定(%s) + 誰でもノックができ、メンバーがその参加を承認または拒否できます + 現在の部屋一覧可視性状態を取得できません(%1$s)。 + この部屋を%1$sの部屋一覧に公開しますか? + アドレスを非公開にする + アドレスを公開 + 同じホームサーバー(%1$s)の他のユーザーがこの部屋を見つけられるようにアドレスを設定できます。 + ローカルアドレス + 新しい公開アドレス(例: #alias:server) + 他の公開アドレスはまだありません。以下から追加できます。 + 他の公開アドレスはまだありません。 + 部屋を%1$sの部屋一覧に公開しますか? + \"%1$s\"を非公開にしますか? + 公開 + 手動で新しいアドレスを公開 + 他の公開アドレス + 公開されたアドレスを通して、どのサーバーのどのユーザーでもこの部屋に参加できます。アドレスを公開するには、まずローカルアドレスとして設定する必要があります。 + 公開アドレス + 部屋のアドレス + 部屋のアドレス及び部屋一覧における可視性を管理できます。 + スペースのアドレスを管理できます。 + スペースのアドレス + 部屋のアドレス + ゲストの参加を許可 + 部屋へのアクセス + 発信履歴閲覧権限の変更は今後送信されるメッセージにのみ適用されます。既存履歴の表示は影響されません。 + 無視して続行 + 毎回確認する + 招待 + おすすめの部屋 \ No newline at end of file diff --git a/vector/src/main/res/values-pt-rBR/strings.xml b/vector/src/main/res/values-pt-rBR/strings.xml index f1aa5b6fb9..d187980d54 100644 --- a/vector/src/main/res/values-pt-rBR/strings.xml +++ b/vector/src/main/res/values-pt-rBR/strings.xml @@ -515,7 +515,7 @@ Previsualizar Rejeitar - Pular para primeira mensagem não-lida. + Pular para não-lida(s) Você tem sido convidada(o) a juntar-se a esta sala por %s Este convite foi enviado para %s, que não está associada(o) a esta conta. @@ -2549,7 +2549,7 @@ Este endereço já está em uso Endereço de sala Você pode ativar isto se a sala vai somente ser usada para colaborar com times internos em seu servidorcasa. Isto não poder ser mudado mais tarde. - Bloquear qualquer pessoa que não é parte de %s de nunca se juntar a esta sala + Bloquear qualquer pessoa que não é parte de %s de jamais se juntar a esta sala %1$d de %2$d Criar uma nova conversa direta ao scannar um QR code Criar uma nova conversa direta por ID Matrix @@ -2881,4 +2881,8 @@ \nNós vamos melhorar isto como parte da beta, mas só queríamos deixar você saber. Espaços de colegas de trabalho não estão bem prontos mas você ainda pode dar-lhes uma tentativa Continuar Mesmo Assim + Desculpe, um erro ocorreu enquanto tentando se juntar: %s + Endereço de espaço + Ver e gerenciar endereços deste espaço. + Endereços de espaço \ No newline at end of file diff --git a/vector/src/main/res/values-pt/strings.xml b/vector/src/main/res/values-pt/strings.xml index 0cf47bd339..b4aa314cba 100644 --- a/vector/src/main/res/values-pt/strings.xml +++ b/vector/src/main/res/values-pt/strings.xml @@ -164,7 +164,7 @@ Criar conta Iniciar sessão Sair - URL do "Home Server" + URL do homeserver URL do "Identity Server" Pesquisar Iniciar nova conversa @@ -209,7 +209,7 @@ Poderá adicionar o seu email ao seu perfil nas definições. Este servidor quer ter a certeza de que você não é um robô Nome de utilizador já existe - Servidor local (home server): + Servidor local (homeserver): Servidor de Identidade: Verifiquei o meu endereço de email Para redefinir a sua palavra-passe, introduza o endereço de e-mail associado à sua conta: @@ -489,7 +489,7 @@ Para continuar, insira a sua palavra-passe. Palavra-passe: Submeter Conectado como - Servidor (Home Server) + Servidor (homeserver) Servidor de identidade Verificação pendente Verifique o seu e-mail e clique no link que contém. Uma vez feito isso, clique em continuar. diff --git a/vector/src/main/res/values-si/strings.xml b/vector/src/main/res/values-si/strings.xml index e1939a1ed6..5b7811c1e3 100644 --- a/vector/src/main/res/values-si/strings.xml +++ b/vector/src/main/res/values-si/strings.xml @@ -5,4 +5,5 @@ සැකසුම් කාමරය අඳුරු තේමාව + ඔබගේ ආරාධනය \ No newline at end of file diff --git a/vector/src/main/res/values-sq/strings.xml b/vector/src/main/res/values-sq/strings.xml index 167d4a6354..553761ce26 100644 --- a/vector/src/main/res/values-sq/strings.xml +++ b/vector/src/main/res/values-sq/strings.xml @@ -452,7 +452,7 @@ Hidheni tej Anëtarë liste Po njëkohësohet… - Hidhu te mesazhi i parë i palexuar. + Hidhu te të palexuarit. Jeni ftuar të merrni pjesë në këtë dhomë nga %s një dhomë Fjalosje e Re @@ -2801,4 +2801,8 @@ \nDo ta përmirësojmë këtë punë, si pjesë e versionit beta, thjesht donim t’ua bënim të ditur. Hapësirat për anëtarë ekipi ende s’janë tërësisht gati, por mund t’i provoni Vazhdo, Sido Qoftë + Na ndjeni, ndodhi një gabim teksa provohej të hyhej: %s + Adresë hapësire + Adresa hapësire + Shihni dhe administroni adresa në këtë hapësirë. \ No newline at end of file diff --git a/vector/src/main/res/values-th/strings.xml b/vector/src/main/res/values-th/strings.xml index a55bb93992..091dc268a0 100644 --- a/vector/src/main/res/values-th/strings.xml +++ b/vector/src/main/res/values-th/strings.xml @@ -300,9 +300,9 @@ ทำให้เป็นผู้ดูแล ทำให้เป็นผู้ควบคุม เอาออกจากห้องนี้ - 1 สมาชิก + สมาชิก 1 คน - %d สมาชิก + สมาชิก %d คน ส่งไฟล์ ไดเรกทอรีผู้ใช้ diff --git a/vector/src/main/res/values-tr/strings.xml b/vector/src/main/res/values-tr/strings.xml index 3e80f9f496..1d62631111 100644 --- a/vector/src/main/res/values-tr/strings.xml +++ b/vector/src/main/res/values-tr/strings.xml @@ -1820,4 +1820,13 @@ %1$s %2$s widgetını kaldırdı %1$s uçtan uca şifrelemeyi etkinleştirdi (%2$s) bilinmeyen (%s). + %s güncellendi. + birisi. + Gelecek mesajları %1$s için görünür yaptınız. + %1$s, gelecek mesajları %2$s için görünür hale getirdi. + Oda geçmişini %1$s için görünür yaptınız. + %1$s oda geçmişini %2$s \'ye görünür yaptı. + Çağrı kurulumu için verileri gönderdiniz. + %s kurulumu çağrı verileri gönderildi. + %1$s başlıklı görünen ad silindi. \ No newline at end of file diff --git a/vector/src/main/res/values-zh-rCN/strings.xml b/vector/src/main/res/values-zh-rCN/strings.xml index 190ea00a1e..cee86a356b 100644 --- a/vector/src/main/res/values-zh-rCN/strings.xml +++ b/vector/src/main/res/values-zh-rCN/strings.xml @@ -725,7 +725,7 @@ 进入聊天室 进入一个聊天室 输入聊天室 ID 或者聊天室别名 - 跳到第一条未读消息。 + 跳到未读 主页显示 固定含错过通知的聊天室 置顶含有未读消息的聊天室 @@ -2768,4 +2768,8 @@ \n作为测试版的一部分,我们将对此进行改进,只是想让你知道。 队友空间还没有完全准备好,但你仍然可以尝试一下 不论如何继续 + 抱歉,尝试加入 %s 时发生了一个错误 + 空间地址 + 查看和管理这个空间的地址。 + 空间地址 \ No newline at end of file diff --git a/vector/src/main/res/values-zh-rTW/strings.xml b/vector/src/main/res/values-zh-rTW/strings.xml index e6577580b5..21ff01b42c 100644 --- a/vector/src/main/res/values-zh-rTW/strings.xml +++ b/vector/src/main/res/values-zh-rTW/strings.xml @@ -502,7 +502,7 @@ 列出成員 打開標頭 正在同步…… - 跳到第一個未讀的訊息。 + 跳到未讀 你已經被 %s 邀請加入此聊天室 邀請已經被傳送給 %s,但與此帳號沒有進行關連。 \n你也許希望以不同帳號登入,或將電子郵件加入到您的帳號。 @@ -2758,4 +2758,8 @@ \n作為測試版的一部分,我們會對此進行改善,但想先讓您知道。 隊友空間還沒有完全準備好,但您仍可以試試看 無論如何都要繼續 + 抱歉,試圖加入時發生錯誤:%s + 空間地址 + 檢視與管理此空間的地址。 + 空間地址 \ No newline at end of file diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index 6c18eb2db5..ef25329eed 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -543,7 +543,7 @@ Sign out Homeserver URL Homeserver API URL - Identity Server URL + Identity server URL Search Start New Chat @@ -633,7 +633,7 @@ This homeserver would like to make sure you are not a robot Username in use Homeserver: - Identity Server: + Identity server: I have verified my email address To reset your password, enter the email address linked to your account: The email address linked to your account must be entered. @@ -1128,8 +1128,8 @@ Add Account Token Registration - FCM token successfully registered to HomeServer. - Failed to register FCM token to HomeServer:\n%1$s + FCM token successfully registered to homeserver. + Failed to register FCM token to homeserver:\n%1$s Test Push The application is waiting for the PUSH @@ -1171,7 +1171,7 @@ Normal Reduced privacy The app needs permission to run in the background - The apps does not need to connect to the HomeServer in the background, it should reduce battery usage + The apps does not need to connect to the homeserver in the background, it should reduce battery usage • Notifications are sent via Firebase Cloud Messaging • Notifications only contain meta data • Message content of the notification is located securely direct from the Matrix homeserver @@ -1236,7 +1236,7 @@ Other Advanced Integrations - Use an Integration Manager to manage bots, bridges, widgets and sticker packs.\nIntegration Managers receive configuration data, and can modify widgets, send room invites and set power levels on your behalf. + Use an integration manager to manage bots, bridges, widgets and sticker packs.\nIntegration managers receive configuration data, and can modify widgets, send room invites and set power levels on your behalf. Cryptography Cryptography Keys Management Notification Targets @@ -1321,9 +1321,9 @@ Logged in as Homeserver - Identity Server + Identity server Allow integrations - Integration Manager + Integration manager Integrations are disabled "Enable 'Allow integrations' in Settings to do this." @@ -1698,7 +1698,7 @@ Use the microphone Read DRM protected Media - + Unable to create widget. Failed to send request. @@ -1909,7 +1909,7 @@ The recovery key has been saved to \'%s\'.\n\nWarning: this file may be deleted if the application is uninstalled. The recovery key has been saved. - A backup already exist on your HomeServer + A backup already exist on your homeserver It looks like you already have setup key backup from another session. Do you want to replace it with the one you’re creating? Replace Stop @@ -2075,7 +2075,7 @@ Unknown Error - You are not using any Identity Server + You are not using any identity server No identity server is configured, it is required to reset your password. It looks like you’re trying to connect to another homeserver. Do you want to sign out? @@ -2273,7 +2273,7 @@ Give consent Send emails and phone numbers - In order to discover existing contacts you know, do you accept to send your contact data (phone numbers and/or emails) to the configured Identity Server (%1$s)?\n\nFor more privacy, the sent data will be hashed before being sent. + In order to discover existing contacts you know, do you accept to send your contact data (phone numbers and/or emails) to the configured identity server (%1$s)?\n\nFor more privacy, the sent data will be hashed before being sent. Enter an identity server URL Could not connect to identity server