diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 501aa6784a..8fbc5602fe 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -5,6 +5,6 @@
- [ ] Changes has been tested on an Android device or Android emulator with API 21
- [ ] UI change has been tested on both light and dark themes
- [ ] Pull request is based on the develop branch
-- [ ] Pull request includes a new file under ./newsfragment. See https://github.com/vector-im/element-android/blob/develop/CONTRIBUTING.md#changelog
+- [ ] Pull request includes a new file under ./changelog.d. See https://github.com/vector-im/element-android/blob/develop/CONTRIBUTING.md#changelog
- [ ] Pull request includes screenshots or videos if containing UI changes
- [ ] Pull request includes a [sign off](https://github.com/matrix-org/synapse/blob/master/CONTRIBUTING.md#sign-off)
diff --git a/.gitignore b/.gitignore
index 4a264a28d8..04d1b6fe06 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,5 +12,7 @@
.externalNativeBuild
/tmp
+/fastlane/private
+/fastlane/report.xml
ktlint
diff --git a/.idea/dictionaries/bmarty.xml b/.idea/dictionaries/bmarty.xml
index 4585842153..8299f1c4de 100644
--- a/.idea/dictionaries/bmarty.xml
+++ b/.idea/dictionaries/bmarty.xml
@@ -37,6 +37,7 @@
threepidunpublishunwedging
+ vctr
\ No newline at end of file
diff --git a/CHANGES.md b/CHANGES.md
index 1849bde397..1f4c680f53 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,33 @@
+Changes in Element v1.1.10 (2021-06-18)
+=======================================
+
+Features ✨
+----------
+ - Migrate DefaultTypingService, KeysImporter and KeysExporter to coroutines ([#2449](https://github.com/vector-im/element-android/issues/2449))
+ - Update Message Composer design ([#3182](https://github.com/vector-im/element-android/issues/3182))
+ - Cleanup Epoxy items, and debounce all the clicks ([#3435](https://github.com/vector-im/element-android/issues/3435))
+ - Adds support for receiving MSC3086 Asserted Identity events. ([#3451](https://github.com/vector-im/element-android/issues/3451))
+ - Migrate to new colors and cleanup the style and theme. Now exported in module :library:ui-styles
+ Ref: https://material.io/blog/migrate-android-material-components ([#3459](https://github.com/vector-im/element-android/issues/3459))
+ - Add option to set aliases for public spaces ([#3483](https://github.com/vector-im/element-android/issues/3483))
+ - Add beta warning to private space creation flow ([#3485](https://github.com/vector-im/element-android/issues/3485))
+ - User defined top level spaces ordering ([#3501](https://github.com/vector-im/element-android/issues/3501))
+
+Bugfixes 🐛
+----------
+ - Fix new DMs not always marked as such ([#3333](https://github.com/vector-im/element-android/issues/3333))
+
+SDK API changes ⚠️
+------------------
+ - Splits SessionAccountDataService and RoomAccountDataService and offers to query RoomAccountDataEvent at the session level. ([#3479](https://github.com/vector-im/element-android/issues/3479))
+
+Other changes
+-------------
+ - Move the ability to start a call from dialpad directly to a dedicated tab in the home screen. ([#3457](https://github.com/vector-im/element-android/issues/3457))
+ - VoIP: Change hold direction to send-only. ([#3467](https://github.com/vector-im/element-android/issues/3467))
+ - Some improvements on DialPad (cursor edition, paste number, small fixes). ([#3516](https://github.com/vector-im/element-android/issues/3516))
+
+
Changes in Element v1.1.9 (2021-06-02)
======================================
@@ -44,6 +74,9 @@ Other changes:
- Add documentation on LoginWizard and RegistrationWizard (#3303)
- Setup towncrier tool (#3293)
+ Security:
+ - Element Android shares name of E2EE files with homeserver (#3387)
+
Changes in Element 1.1.7 (2021-05-12)
===================================================
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 4b61777d3f..cbff8652cf 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -26,7 +26,7 @@ To install the template (to be done only once):
To create a new screen:
- First create a new package in your code.
-- Then right click on the package, and select `New/New Vector/RiotX Feature`.
+- Then right click on the package, and select `New/New Vector/Element Feature`.
- Follow the Wizard, especially replace `Main` by something more relevant to your feature.
- Click on `Finish`.
- Remaining steps are described as TODO in the generated files, or will be pointed out by the compiler, or at runtime :)
@@ -53,7 +53,7 @@ This project is full Kotlin. Please do not write Java classes.
### Changelog
-Please create at least one file under ./newsfragment containing details about your change. Towncrier will be used when preparing the release.
+Please create at least one file under ./changelog.d containing details about your change. Towncrier will be used when preparing the release.
Towncrier says to use the PR number for the filename, but the issue number is also fine.
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000000..7a118b49be
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,3 @@
+source "https://rubygems.org"
+
+gem "fastlane"
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000000..6045f55496
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,205 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ CFPropertyList (3.0.3)
+ addressable (2.7.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-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-core (~> 3, >= 3.112.0)
+ aws-sigv4 (~> 1.1)
+ aws-sdk-s3 (1.95.1)
+ aws-sdk-core (~> 3, >= 3.112.0)
+ aws-sdk-kms (~> 1)
+ aws-sigv4 (~> 1.1)
+ aws-sigv4 (1.2.3)
+ aws-eventstream (~> 1, >= 1.0.2)
+ babosa (1.0.4)
+ claide (1.0.3)
+ colored (1.2)
+ colored2 (3.1.2)
+ commander (4.6.0)
+ highline (~> 2.0.0)
+ declarative (0.0.20)
+ digest-crc (0.6.3)
+ rake (>= 12.0.0, < 14.0.0)
+ domain_name (0.5.20190701)
+ unf (>= 0.0.5, < 1.0.0)
+ dotenv (2.7.6)
+ emoji_regex (3.2.2)
+ excon (0.81.0)
+ faraday (1.4.2)
+ faraday-em_http (~> 1.0)
+ faraday-em_synchrony (~> 1.0)
+ faraday-excon (~> 1.1)
+ faraday-net_http (~> 1.0)
+ faraday-net_http_persistent (~> 1.1)
+ multipart-post (>= 1.2, < 3)
+ ruby2_keywords (>= 0.0.4)
+ faraday-cookie_jar (0.0.7)
+ faraday (>= 0.8.0)
+ http-cookie (~> 1.0.0)
+ faraday-em_http (1.0.0)
+ faraday-em_synchrony (1.0.0)
+ faraday-excon (1.1.0)
+ faraday-net_http (1.0.1)
+ faraday-net_http_persistent (1.1.0)
+ faraday_middleware (1.0.0)
+ faraday (~> 1.0)
+ fastimage (2.2.3)
+ fastlane (2.184.0)
+ CFPropertyList (>= 2.3, < 4.0.0)
+ addressable (>= 2.3, < 3.0.0)
+ artifactory (~> 3.0)
+ aws-sdk-s3 (~> 1.0)
+ babosa (>= 1.0.3, < 2.0.0)
+ bundler (>= 1.12.0, < 3.0.0)
+ colored
+ commander (~> 4.6)
+ dotenv (>= 2.1.1, < 3.0.0)
+ emoji_regex (>= 0.1, < 4.0)
+ excon (>= 0.71.0, < 1.0.0)
+ faraday (~> 1.0)
+ faraday-cookie_jar (~> 0.0.6)
+ faraday_middleware (~> 1.0)
+ fastimage (>= 2.1.0, < 3.0.0)
+ gh_inspector (>= 1.1.2, < 2.0.0)
+ google-apis-androidpublisher_v3 (~> 0.1)
+ google-apis-playcustomapp_v1 (~> 0.1)
+ google-cloud-storage (~> 1.31)
+ highline (~> 2.0)
+ json (< 3.0.0)
+ jwt (>= 2.1.0, < 3)
+ mini_magick (>= 4.9.4, < 5.0.0)
+ multipart-post (~> 2.0.0)
+ naturally (~> 2.2)
+ plist (>= 3.1.0, < 4.0.0)
+ rubyzip (>= 2.0.0, < 3.0.0)
+ security (= 0.1.3)
+ simctl (~> 1.6.3)
+ terminal-notifier (>= 2.0.0, < 3.0.0)
+ terminal-table (>= 1.4.5, < 2.0.0)
+ tty-screen (>= 0.6.3, < 1.0.0)
+ tty-spinner (>= 0.8.0, < 1.0.0)
+ word_wrap (~> 1.0.0)
+ xcodeproj (>= 1.13.0, < 2.0.0)
+ 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)
+ addressable (~> 2.5, >= 2.5.1)
+ googleauth (~> 0.14)
+ httpclient (>= 2.8.1, < 3.0)
+ mini_mime (~> 1.0)
+ representable (~> 3.0)
+ retriable (>= 2.0, < 4.0)
+ 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-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)
+ 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)
+ mini_mime (~> 1.0)
+ googleauth (0.16.2)
+ faraday (>= 0.17.3, < 2.0)
+ jwt (>= 1.4, < 3.0)
+ memoist (~> 0.16)
+ multi_json (~> 1.11)
+ os (>= 0.9, < 2.0)
+ signet (~> 0.14)
+ highline (2.0.3)
+ http-cookie (1.0.3)
+ domain_name (~> 0.5)
+ httpclient (2.8.3)
+ jmespath (1.4.0)
+ json (2.5.1)
+ jwt (2.2.3)
+ memoist (0.16.2)
+ mini_magick (4.11.0)
+ mini_mime (1.1.0)
+ multi_json (1.15.0)
+ multipart-post (2.0.0)
+ nanaimo (0.3.0)
+ naturally (2.2.1)
+ os (1.1.1)
+ plist (3.6.0)
+ public_suffix (4.0.6)
+ rake (13.0.3)
+ representable (3.1.1)
+ declarative (< 0.1.0)
+ trailblazer-option (>= 0.1.1, < 0.2.0)
+ uber (< 0.2.0)
+ retriable (3.1.2)
+ rexml (3.2.5)
+ rouge (2.0.7)
+ ruby2_keywords (0.0.4)
+ rubyzip (2.3.0)
+ security (0.1.3)
+ signet (0.15.0)
+ addressable (~> 2.3)
+ faraday (>= 0.17.3, < 2.0)
+ jwt (>= 1.5, < 3.0)
+ multi_json (~> 1.10)
+ simctl (1.6.8)
+ CFPropertyList
+ naturally
+ terminal-notifier (2.0.0)
+ terminal-table (1.8.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ trailblazer-option (0.1.1)
+ tty-cursor (0.7.1)
+ tty-screen (0.8.1)
+ tty-spinner (0.9.3)
+ tty-cursor (~> 0.7)
+ uber (0.1.0)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.7.7)
+ unicode-display_width (1.7.0)
+ webrick (1.7.0)
+ word_wrap (1.0.0)
+ xcodeproj (1.19.0)
+ CFPropertyList (>= 2.3.3, < 4.0)
+ atomos (~> 0.1.3)
+ claide (>= 1.0.2, < 2.0)
+ colored2 (~> 3.1)
+ nanaimo (~> 0.3.0)
+ xcpretty (0.3.0)
+ rouge (~> 2.0.7)
+ xcpretty-travis-formatter (1.0.1)
+ xcpretty (~> 0.2, >= 0.0.7)
+
+PLATFORMS
+ x86_64-darwin-20
+
+DEPENDENCIES
+ fastlane
+
+BUNDLED WITH
+ 2.2.15
diff --git a/attachment-viewer/build.gradle b/attachment-viewer/build.gradle
index 0f3817d983..4b95b20029 100644
--- a/attachment-viewer/build.gradle
+++ b/attachment-viewer/build.gradle
@@ -47,6 +47,8 @@ android {
}
dependencies {
+ implementation project(":library:ui-styles")
+
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
implementation 'io.reactivex.rxjava2:rxkotlin:2.4.0'
@@ -55,7 +57,7 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.5.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
- implementation "androidx.recyclerview:recyclerview:1.2.0"
+ implementation "androidx.recyclerview:recyclerview:1.2.1"
implementation 'com.google.android.material:material:1.3.0'
}
\ No newline at end of file
diff --git a/attachment-viewer/src/main/res/layout/item_image_attachment.xml b/attachment-viewer/src/main/res/layout/item_image_attachment.xml
index 91a009df2a..0f9a90e91c 100644
--- a/attachment-viewer/src/main/res/layout/item_image_attachment.xml
+++ b/attachment-viewer/src/main/res/layout/item_image_attachment.xml
@@ -1,22 +1,18 @@
+ android:layout_height="match_parent">
+ android:layout_height="match_parent" />
+ android:layout_centerInParent="true" />
\ No newline at end of file
diff --git a/attachment-viewer/src/main/res/layout/item_video_attachment.xml b/attachment-viewer/src/main/res/layout/item_video_attachment.xml
index 29f01650fd..7dd13ea460 100644
--- a/attachment-viewer/src/main/res/layout/item_video_attachment.xml
+++ b/attachment-viewer/src/main/res/layout/item_video_attachment.xml
@@ -1,8 +1,8 @@
+ android:layout_height="match_parent">
+ android:layout_centerInParent="true"
+ android:visibility="gone"
+ tools:visibility="visible" />
diff --git a/attachment-viewer/src/main/res/values/colors.xml b/attachment-viewer/src/main/res/values/colors.xml
deleted file mode 100644
index 7ceef40881..0000000000
--- a/attachment-viewer/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
- #80000000
-
-
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 881cd340f1..b213066423 100644
--- a/build.gradle
+++ b/build.gradle
@@ -15,7 +15,7 @@ buildscript {
classpath 'com.android.tools.build:gradle:4.2.1'
classpath 'com.google.gms:google-services:4.3.8'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.2.0'
+ classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3'
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.4'
classpath "com.likethesalad.android:string-reference:1.2.2"
diff --git a/changelog.d/.gitignore b/changelog.d/.gitignore
new file mode 100644
index 0000000000..b722e9e13e
--- /dev/null
+++ b/changelog.d/.gitignore
@@ -0,0 +1 @@
+!.gitignore
\ No newline at end of file
diff --git a/docs/color_migration_guide.md b/docs/color_migration_guide.md
new file mode 100644
index 0000000000..31a531d124
--- /dev/null
+++ b/docs/color_migration_guide.md
@@ -0,0 +1,85 @@
+# Color migration
+
+### Changes
+
+- use colors defined in https://www.figma.com/file/X4XTH9iS2KGJ2wFKDqkyed/Compound?node-id=557%3A0
+- remove unused resources and code (ex: PercentView)
+- split some resource files into smaller file
+- rework the theme files
+- ensure material theme is used everywhere in the theme and in the layout
+- add default style for some views in the theme (ex: Toolbar, etc.)
+- add some debug screen in the debug menu, to test the themes and the button style
+- rework the button style to use `materialThemeOverlay` attribute
+- custom tint icon for menu management has been removed
+- comment with `riotx` has been updated
+
+### Main change for developers
+
+- Read migration guide: https://github.com/vector-im/element-android/pull/3459/files#diff-f0e52729d5e4f6eccbcf72246807aa34ed19c4ef5625ca669df998cd1022874b
+- Use MaterialAlertDialogBuilder instead of AlertDialog.Builder
+- some Epoxy Item included a divider. This has been removed. Use a `dividerItem` or `bottomSheetDividerItem` Epoxy items to add a divider
+- RecyclerView.configureWith now take a divider drawable instead of a divider color
+
+### Remaining work
+
+- Cleanup some vector drawables and ensure a tint is always used instead of hard coded color.
+
+### Migration guide
+
+Some colors and color attribute has been removed, here is the list and what has to be used now.
+
+It can help Element Android forks maintainers to migrate their code.
+
+- riotx_text_primary -> ?vctr_content_primary
+- riotx_text_secondary -> ?vctr_content_secondary
+- riotx_text_tertiary -> ?vctr_content_tertiary
+
+- ?riotx_background -> ?android:colorBackground
+- riotx_background_light -> element_background_light
+- riotx_background_dark -> element_background_dark
+- riotx_background_black -> element_background_black
+
+- riotx_accent -> ?colorPrimary
+- riotx_positive_accent -> ?colorPrimary
+- riotx_accent_alpha25 -> color_primary_alpha25
+- riotx_notice -> ?colorError
+- riotx_destructive_accent -> ?colorError
+- vector_error_color -> ?colorError
+- vector_warning_color -> ?colorError
+
+- riotx_bottom_sheet_background -> ?colorSurface
+- riotx_alerter_background -> ?colorSurface
+
+- riotx_username_1 -> element_name_01
+- riotx_username_2 -> element_name_02
+- riotx_username_3 -> element_name_03
+- riotx_username_4 -> element_name_04
+- riotx_username_5 -> element_name_05
+- riotx_username_6 -> element_name_06
+- riotx_username_7 -> element_name_07
+- riotx_username_8 -> element_name_08
+
+- riotx_avatar_fill_1 -> element_room_01
+- riotx_avatar_fill_2 -> element_room_02
+- riotx_avatar_fill_3 -> element_room_03
+
+- white -> @android:color/white
+- black -> @android:color/black or emoji_color
+
+- riotx_list_header_background_color -> ?vctr_header_background
+- riotx_header_panel_background -> ?vctr_header_background
+- riotx_list_bottom_sheet_divider_color -> ?vctr_list_separator_on_surface
+- riotx_list_divider_color -> ?vctr_list_separator
+- list_divider_color -> ?vctr_list_separator
+- riotx_header_panel_border_mobile -> ?vctr_list_separator
+- riotx_bottom_nav_background_border_color -> ?vctr_list_separator
+- riotx_header_panel_text_secondary -> ?vctr_content_primary
+
+- link_color_light -> element_link_light
+- link_color_dark -> element_link_dark
+
+- riotx_toolbar_primary_text_color -> vctr_content_primary
+- riotx_toolbar_secondary_text_color -> vctr_content_primary
+- riot_primary_text_color -> vctr_content_primary
+
+- riotx_android_secondary -> vctr_content_secondary
diff --git a/fastlane/Appfile b/fastlane/Appfile
new file mode 100644
index 0000000000..25273b0b09
--- /dev/null
+++ b/fastlane/Appfile
@@ -0,0 +1,2 @@
+json_key_file("./fastlane/private/api-8525453667099313774-565354-aca0e6153603.json")
+package_name("im.vector.app")
diff --git a/fastlane/Fastfile b/fastlane/Fastfile
new file mode 100644
index 0000000000..85e3d777ac
--- /dev/null
+++ b/fastlane/Fastfile
@@ -0,0 +1,60 @@
+# This file contains the fastlane.tools configuration
+# You can find the documentation at https://docs.fastlane.tools
+#
+# For a list of all available actions, check out
+#
+# https://docs.fastlane.tools/actions
+#
+# For a list of all available plugins, check out
+#
+# https://docs.fastlane.tools/plugins/available-plugins
+#
+
+# Uncomment the line if you want fastlane to automatically update itself
+# update_fastlane
+
+default_platform(:android)
+
+platform :android do
+ desc "Runs all the tests"
+ lane :test do
+ gradle(task: "test")
+ end
+
+ desc "Submit a new Beta Build to Crashlytics Beta"
+ lane :beta do
+ gradle(task: "clean assembleRelease")
+ crashlytics
+
+ # sh "your_script.sh"
+ # You can also use other beta testing services here
+ end
+
+ desc "Deploy a new version to the Google Play"
+ lane :deploy do
+ gradle(task: "clean assembleRelease")
+ upload_to_play_store
+ end
+
+ desc "Deploy Google Play metadata"
+ lane :deployMeta do
+ # Doc: https://docs.fastlane.tools/actions/upload_to_play_store/
+ upload_to_play_store(
+ skip_upload_apk: true,
+ skip_upload_aab: true,
+ skip_upload_images: true,
+ skip_upload_screenshots: true,
+ skip_upload_changelogs: true,
+ # Set to true to not update the PlayStore
+ validate_only: false
+ )
+ end
+
+ desc "Get version code"
+ lane :getVersionCode do
+ versions = google_play_track_version_codes(track: "production")
+ puts(versions)
+ version_code = versions[0]
+ puts(version_code)
+ end
+end
diff --git a/fastlane/README.md b/fastlane/README.md
new file mode 100644
index 0000000000..54d3a005a6
--- /dev/null
+++ b/fastlane/README.md
@@ -0,0 +1,49 @@
+fastlane documentation
+================
+# Installation
+
+Make sure you have the latest version of the Xcode command line tools installed:
+
+```
+xcode-select --install
+```
+
+Install _fastlane_ using
+```
+[sudo] gem install fastlane -NV
+```
+or alternatively using `brew install fastlane`
+
+# Available Actions
+## Android
+### android test
+```
+fastlane android test
+```
+Runs all the tests
+### android beta
+```
+fastlane android beta
+```
+Submit a new Beta Build to Crashlytics Beta
+### android deploy
+```
+fastlane android deploy
+```
+Deploy a new version to the Google Play
+### android deployMeta
+```
+fastlane android deployMeta
+```
+Deploy Google Play metadata
+### android getVersionCode
+```
+fastlane android getVersionCode
+```
+Get version code
+
+----
+
+This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run.
+More information about fastlane can be found on [fastlane.tools](https://fastlane.tools).
+The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
diff --git a/fastlane/metadata/android/cs/changelogs/40100100.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100100.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100110.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100110.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100120.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100120.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100130.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100130.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100140.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100140.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100150.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100150.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100160.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100160.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100170.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100170.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101000.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101000.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101010.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101010.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101020.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101020.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101030.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101030.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101040.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101040.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101040.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101040.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101050.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101050.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101050.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101050.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101060.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101060.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101060.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101060.txt
diff --git a/fastlane/metadata/android/cs-CZ/full_description.txt b/fastlane/metadata/android/cs-CZ/full_description.txt
new file mode 100644
index 0000000000..d169c077e1
--- /dev/null
+++ b/fastlane/metadata/android/cs-CZ/full_description.txt
@@ -0,0 +1,39 @@
+Element je zabezpečený komunikátor a zároveň aplikace pro týmovou spolupráci, která je ideální pro skupinové chaty při práci na dálku. Tato chatovací aplikace využívá end-to-end šifrování a poskytuje výkonné videokonference, sdílení souborů a hlasové hovory.
+
+Mezi funkce aplikace Element patří:
+- Pokročilé nástroje pro online komunikaci
+- Plně šifrované zprávy umožňující bezpečnější firemní komunikaci i pro pracovníky na dálku
+- Decentralizovaný chat založený na open source frameworku Matrix
+- Bezpečné sdílení souborů se šifrovanými daty při správě projektů
+- Videochaty s funkcí Voice over IP a sdílením obrazovky
+- Snadná integrace s oblíbenými nástroji pro online spolupráci, nástroji pro správu projektů, službami VoIP a dalšími aplikacemi pro týmovou komunikaci
+
+Element se zcela liší od ostatních aplikací pro zasílání zpráv a spolupráci. Funguje na platformě Matrix, otevřené síti pro bezpečné zasílání zpráv a decentralizovanou komunikaci. Umožňuje vlastní hostování, aby uživatelé měli maximální vlastnictví a kontrolu nad svými daty a zprávami.
+
+Soukromí a šifrované zprávy
+Element vás chrání před nežádoucími reklamami, vytěžováním dat a tzv. walled gardens. Zabezpečuje také všechna vaše data, video a hlasovou komunikaci jeden na jednoho prostřednictvím šifrování end-to-end a křížového ověřování zařízení.
+
+Element vám dává kontrolu nad vaším soukromím a zároveň vám umožňuje bezpečně komunikovat s kýmkoli v síti Matrix nebo s dalšími nástroji pro firemní spolupráci díky integraci s aplikacemi, jako je Slack.
+
+Element lze hostovat samostatně
+Abyste měli větší kontrolu nad svými citlivými daty a konverzacemi, může být Element hostován na vlastním hardwaru nebo si můžete vybrat libovolného hostitele založeného na systému Matrix - standardu pro decentralizovanou komunikaci s otevřeným zdrojovým kódem. Element vám poskytuje soukromí, soulad se zásadami bezpečnosti a flexibilitu integrace.
+
+Vlastněte svá data
+Sami rozhodujete, kde budou vaše data a zprávy uloženy. Bez rizika vytěžování dat nebo přístupu třetích stran.
+
+Element vám dává kontrolu různými způsoby:
+1. Získejte bezplatný účet na veřejném serveru matrix.org, který hostují vývojáři Matrixu, nebo si vyberte z tisíců veřejných serverů hostovaných dobrovolníky.
+2. Vlastní hostování účtu spuštěním serveru na vlastní IT infrastruktuře.
+3. Zaregistrujte si účet na vlastním serveru tak, že si jednoduše předplatíte hostingovou platformu Element Matrix Services.
+
+Otevřené zasílání zpráv a spolupráce
+Můžete chatovat s kýmkoli v síti Matrix, ať už používá aplikaci Element, jinou aplikaci podporující protokol Matrix nebo dokonce i když používá jinou aplikaci pro zasílání zpráv.
+
+Superbezpečné
+Skutečné end-to-end šifrování (zprávy mohou dešifrovat pouze účastníci konverzace) a křížové ověřování zařízení.
+
+Kompletní komunikace a integrace
+Zprávy, hlasové a videohovory, sdílení souborů, sdílení obrazovky a celá řada integrací, botů a widgetů. Vytvářejte místnosti, komunity, zůstaňte v kontaktu a spolupracujte.
+
+Navažte tam, kde jste skončili
+Zůstaňte v kontaktu, ať jste kdekoli, díky plně synchronizované historii zpráv ve všech zařízeních a na webu https://app.element.io
diff --git a/fastlane/metadata/android/cs/short_description.txt b/fastlane/metadata/android/cs-CZ/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/cs/short_description.txt
rename to fastlane/metadata/android/cs-CZ/short_description.txt
diff --git a/fastlane/metadata/android/cs/title.txt b/fastlane/metadata/android/cs-CZ/title.txt
similarity index 100%
rename from fastlane/metadata/android/cs/title.txt
rename to fastlane/metadata/android/cs-CZ/title.txt
diff --git a/fastlane/metadata/android/cs/full_description.txt b/fastlane/metadata/android/cs/full_description.txt
deleted file mode 100644
index f9c1f2ad0c..0000000000
--- a/fastlane/metadata/android/cs/full_description.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-Element je nový typ aplikace pro výměnu zpráv a spolupráci, která:
-
-1. Vám dá kontrolu nad ochranou vašeho soukromí
-2. Umožní vám komunikovat s kýmkoli v síti Matrix a dokonce i mimo ni pomocí integrací s aplikacemi, jako je Slack
-3. Ochrání vás před inzercí, dataminingem a uzavřenými zahradami
-4. Zabezpečí vás end-to-end šifrováním s křížovým podpisem pro ověření ostatních
-
-Element je zcela odlišný od ostatních aplikací pro zasílání zpráv a spolupráci, protože je decentralizovaný a otevřený.
-
-Element vám umožňuje použít vlastní domovský server - nebo si vybrat hostitele - abyste měli soukromí, vlastnictví a kontrolu nad svými daty a konverzacemi. Poskytuje vám přístup k otevřené síti; takže nejste zaseknuti jen při konverzaci s ostatními uživateli Elementu. A je velmi bezpečný.
-
-Element je toho všeho schopen, protože pracuje na Matrixu - standardu otevřené, decentralizované komunikace.
-
-Element vám dává kontrolu nad tím, že si můžete vybrat, kdo bude hostovat vaše konverzace. Z aplikace Element si můžete vybrat hostování různými způsoby:
-
-1. Získejte zdarma účet na veřejném serveru matrix.org hostovaném vývojáři Matrixu, nebo si vyberte z tisíců veřejných serverů hostovaných dobrovolníky
-2. Hostujte svůj účet spuštěním serveru na svém vlastním hardwaru
-3. Zaregistrujte si účet na vlastním serveru jednoduchým přihlášením k hostitelské platformě Element Matrix Services
-
-Proč zvolit Element?
-
-VLASTNĚTE SVÁ DATA: Vy rozhodnete, kde svá data a zprávy ponecháte. Vlastníte je a jsou pod vaší kontrolou, ne nějaký MEGACORP, který těží vaše data nebo poskytuje přístup třetím stranám.
-
-ZPRÁVY A SPOLUPRÁCE: Můžete chatovat s kýmkoli v síti Matrix, ať už používá Element nebo jinou aplikaci, a to i v případě, že používají jiný systém zasílání zpráv, jako je Slack, IRC nebo XMPP.
-
-MAXIMÁLNĚ BEZPEČNÉ: Skutečné šifrování typu end-to-end (pouze ti v konverzaci mohou dešifrovat zprávy) a křížové podepisování k ověření zařízení účastníků konverzace.
-
-KOMPLETNÍ KOMUNIKACE: Zprávy, hlasové hovory a videohovory, sdílení souborů, sdílení obrazovky a celá řada integrací, robotů a widgetů. Budujte místnosti, komunity, zůstaňte v kontaktu a spolupracujte.
-
-KDEKOLIV JSTE: Zůstaňte v kontaktu, ať jste kdekoli, s plně synchronizovanou historií zpráv na všech vašich zařízeních a na webu na adrese https://app.element.io.
diff --git a/fastlane/metadata/android/de/changelogs/40100100.txt b/fastlane/metadata/android/de-DE/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100100.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100110.txt b/fastlane/metadata/android/de-DE/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100110.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100120.txt b/fastlane/metadata/android/de-DE/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100120.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100130.txt b/fastlane/metadata/android/de-DE/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100130.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100140.txt b/fastlane/metadata/android/de-DE/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100140.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100150.txt b/fastlane/metadata/android/de-DE/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100150.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100160.txt b/fastlane/metadata/android/de-DE/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100160.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100170.txt b/fastlane/metadata/android/de-DE/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100170.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101000.txt b/fastlane/metadata/android/de-DE/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101000.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101010.txt b/fastlane/metadata/android/de-DE/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101010.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101020.txt b/fastlane/metadata/android/de-DE/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101020.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101030.txt b/fastlane/metadata/android/de-DE/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101030.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101040.txt b/fastlane/metadata/android/de-DE/changelogs/40101040.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101040.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101040.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101050.txt b/fastlane/metadata/android/de-DE/changelogs/40101050.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101050.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101050.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101060.txt b/fastlane/metadata/android/de-DE/changelogs/40101060.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101060.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101060.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/40101070.txt b/fastlane/metadata/android/de-DE/changelogs/40101070.txt
new file mode 100644
index 0000000000..757475a44d
--- /dev/null
+++ b/fastlane/metadata/android/de-DE/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Hauptänderungen in dieser Version: Mit Spaces kannst du deine Räume gruppieren (Beta). Videos können vor dem Senden komprimiert werden.
+Die vollständige Änderungsliste gibt es hier: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/de-DE/changelogs/40101080.txt b/fastlane/metadata/android/de-DE/changelogs/40101080.txt
new file mode 100644
index 0000000000..3609fb7078
--- /dev/null
+++ b/fastlane/metadata/android/de-DE/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Hauptänderung: Verbesserung für Spaces.
+Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/de-DE/changelogs/40101090.txt b/fastlane/metadata/android/de-DE/changelogs/40101090.txt
new file mode 100644
index 0000000000..1a957862ab
--- /dev/null
+++ b/fastlane/metadata/android/de-DE/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Hauptänderung in dieser Version: Füge Unterstützung für gitter.im-Netzwerk hinzu
+Alle Änderungen: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/de/full_description.txt b/fastlane/metadata/android/de-DE/full_description.txt
similarity index 52%
rename from fastlane/metadata/android/de/full_description.txt
rename to fastlane/metadata/android/de-DE/full_description.txt
index 1334adf554..30eb153ee9 100644
--- a/fastlane/metadata/android/de/full_description.txt
+++ b/fastlane/metadata/android/de-DE/full_description.txt
@@ -1,9 +1,9 @@
-Element ist einerseits ein sicherer Messenger, andererseits ideal geeignet für die produktive Zusammenarbeit mit dem Team im Homeoffice. Mit eingebauter Ende-zu-Ende-Verschlüsselung ermöglicht Element umfangreiche und sichere Videokonferenzen, das Teilen von Dateien sowie Sprachanrufe.
+Element ist ein sicherer Messenger und ideal für die produktive Zusammenarbeit mit Ihrem Team im Homeoffice. Mit eingebauter Ende-zu-Ende-Verschlüsselung ermöglicht Element auch umfangreiche und sichere Videokonferenzen, das Teilen von Dateien, Sprachanrufe und vieles mehr.
Element bietet folgende Funktionen:
- Fortschrittliche Werkzeuge für die Online-Kommunikation
- Vollständig verschlüsselte Nachrichten, um eine sichere Kommunikation innerhalb und außerhalb von Unternehmen zu ermöglichen
-- Dezentralisierte Chats, basierend auf dem quelloffenen Matrix-Framework
+- Dezentralisierte Chats, basierend auf dem quelloffenen Matrix-Protokoll
- Sichere und kontrollierte Dateifreigabe durch verschlüsselte Daten beim Verwalten von Projekten
- Videochats mit VoIP und Bildschirmübertragung
- Einfache Einbindung in Ihre bevorzugten Online-Kollaborations- und Projektverwaltungswerkzeuge, VoIP-Dienste und andere Kommunikationsapps für Ihr Team
@@ -11,29 +11,29 @@ Element ist einerseits ein sicherer Messenger, andererseits ideal geeignet für
Element unterscheidet sich grundlegend von anderen Kommunikations- und Kollaborationsapps. Es läuft auf Matrix, einem offenen Netzwerk für sichere und dezentralisierte Kommunikation. Es erlaubt Nutzern ihre eigene Infrastruktur zu betreiben und gibt ihnen damit vollständige Kontrolle und Besitz über ihre eigenen Daten und Nachrichten.
Privatsphäre/Datenschutz und verschlüsselte Kommunikation
-Element schützt Sie vor unerwünschter Werbung, dem Datenschürfen und abgeschlossenen Plattformen. Auch schützt es all Ihre Daten, Ihre Video- und Sprachkommunikation unter vier Augen, durch Ende-zu-Ende-Verschlüsselung und durch das Quersignieren von Geräten zur Verifizierung.
+Element schützt Sie vor unerwünschter Werbung, dem Datensammeln und geschlossenen Plattformen. Auch schützt es all Ihre Daten, Ihre Video- und Sprachkommunikation mittels Ende-zu-Ende-Verschlüsselung und durch das Quersignieren von Geräten zur Verifizierung.
-Element gibt Ihnen die Kontrolle über Ihre Privatsphäre und ermöglicht es Ihnen zugleich, mit jedem im Matrix-Netzwerk sicher zu kommunizieren - oder auch auf anderen geschäftlichen Kollaborationswerkzeugen, zum Beispiel durch das Einbinden von Apps wie Slack.
+Element gibt Ihnen volle Kontrolle über Ihre Privatsphäre und ermöglicht es Ihnen zugleich, mit jedem im Matrix-Netzwerk sicher zu kommunizieren - oder auch auf anderen geschäftlichen Kollaborationswerkzeugen, zum Beispiel durch das Einbinden von Apps wie Slack.
Element kann man selber betreiben
Um mehr Kontrolle über Ihre sensiblen Daten und Konversationen zu ermöglichen, kann man Element selbst betreiben, oder Sie wählen irgendeinen Matrix-basierten Dienst - der Standard für quelloffene, dezentralisierte Kommunikation. Element gibt Ihnen Privatsphäre, Sicherheitskonformität und Flexibilität für Integrationen.
Besitzen Sie Ihre Daten
-Sie entscheiden, wo Sie Ihre Daten und Nachrichten aufbewahren - ohne das Datenschürfen oder den Zugriff Dritter zu riskieren.
+Sie entscheiden, wo Sie Ihre Daten und Nachrichten aufbewahren - ohne das Datensammeln oder den Zugriff Dritter zu riskieren.
-Element gibt Ihnen auf verschiedene Arten die Kontrolle:
-1. Kostenlos auf dem öffentlichen matrix.org-Server registrieren, der von den Matrix-Entwicklern gehostet wird, oder wählen Sie aus Tausenden von öffentlichen Servern, die von Freiwilligen betrieben werden
-2. Ein Konto auf einem eigenen Server in der eigenen IT-Infrastruktur betreiben
-3. Einen Konto auf einem maßgeschneiderten Server erstellen, zum Beispiel durch ein Abonnement der Element Matrix Services (kurz EMS)
+Element gibt Ihnen auf verschiedene Arten Kontrolle:
+1. Sie können sich kostenlos auf dem öffentlichen matrix.org-Server registrieren, der von den Matrix-Entwicklern gehostet wird, oder einen von Tausenden öffentlichen Servern, die von Freiwilligen betrieben werden, auswählen
+2. Sie haben die Möglichkeit, ein Konto auf einem eigenen Server in der eigenen IT-Infrastruktur betreiben
+3. Außerdem können Sie durch ein Abonnement der Element Matrix Services ein Konto auf einem für Sie maßgeschneiderten Server erstellen
Offene Kommunikation und Zusammenarbeit
Sie können mit jedem im Matrix-Netzwerk chatten, egal ob ihr Kontakt Element, eine andere Matrix-App oder sogar eine völlig andere Anwendung nutzt.
Super sicher
-Echte Ende-zu-Ende-Verschlüsselung (nur die Personen in der Unterhaltung können die Nachrichten entschüsseln), sowie die Quersignierung von Geräten zur Verifizierung.
+Durch Ende-zu-Ende-Verschlüsselung können nur die Personen, die in der Unterhaltung sind, die Nachrichten lesen. Außerdem stellt die Verifizierung mittels Quersignierung sicher, dass Sie wirklich mit dem Chatten, mit dem Sie glauben - und niemand Anderem.
Vollständige Kommunikation und Integration
-Kurznachrichten, Sprach- und Videoanrufe, Dateifreigaben, Bildschirmübertragungen und eine ganze Reihe an Integrationen, Bots and Widgets. Schaffen Sie Räume, Communities, bleiben Sie auf dem Laufenden und erledigen Sie Sachen.
+Kurznachrichten, Sprach- und Videoanrufe, Dateifreigaben, Bildschirmübertragungen und einer Menge an Integrationen, Bots und Widgets. Schaffen Sie Räume und Communities, bleiben Sie auf dem Laufenden und erledigen Sie Sachen.
Da Weitermachen, wo Sie aufgehört haben
Bleiben Sie in Kontakt, egal wo Sie sind, mit vollständig synchronisiertem Nachrichtenverlauf quer über all Ihre Geräte und im Netz auf https://app.element.io
diff --git a/fastlane/metadata/android/de/short_description.txt b/fastlane/metadata/android/de-DE/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/de/short_description.txt
rename to fastlane/metadata/android/de-DE/short_description.txt
diff --git a/fastlane/metadata/android/de/title.txt b/fastlane/metadata/android/de-DE/title.txt
similarity index 100%
rename from fastlane/metadata/android/de/title.txt
rename to fastlane/metadata/android/de-DE/title.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/40101100.txt b/fastlane/metadata/android/en-US/changelogs/40101100.txt
new file mode 100644
index 0000000000..30543cb102
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/40101100.txt
@@ -0,0 +1,2 @@
+Main changes in this version: theme and style update and new features for spaces.
+Full changelog: https://github.com/vector-im/element-android/releases/tag/v1.1.10
\ No newline at end of file
diff --git a/fastlane/metadata/android/es/changelogs/40100100.txt b/fastlane/metadata/android/es-ES/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/es/changelogs/40100100.txt
rename to fastlane/metadata/android/es-ES/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/es/full_description.txt b/fastlane/metadata/android/es-ES/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/es/full_description.txt
rename to fastlane/metadata/android/es-ES/full_description.txt
diff --git a/fastlane/metadata/android/es/short_description.txt b/fastlane/metadata/android/es-ES/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/es/short_description.txt
rename to fastlane/metadata/android/es-ES/short_description.txt
diff --git a/fastlane/metadata/android/es/title.txt b/fastlane/metadata/android/es-ES/title.txt
similarity index 100%
rename from fastlane/metadata/android/es/title.txt
rename to fastlane/metadata/android/es-ES/title.txt
diff --git a/fastlane/metadata/android/et/changelogs/40101070.txt b/fastlane/metadata/android/et/changelogs/40101070.txt
new file mode 100644
index 0000000000..8ef65a7396
--- /dev/null
+++ b/fastlane/metadata/android/et/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Põhilised muudatused selles versioonis: beeta-versioon kogukonnakeskustest ja videofailide pakkimine enne üleslaadimist.
+Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/et/changelogs/40101080.txt b/fastlane/metadata/android/et/changelogs/40101080.txt
new file mode 100644
index 0000000000..6fa09b30a7
--- /dev/null
+++ b/fastlane/metadata/android/et/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Põhilised muutused selles versioonis: kogukonnakeskuste täiendused
+Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/et/changelogs/40101090.txt b/fastlane/metadata/android/et/changelogs/40101090.txt
new file mode 100644
index 0000000000..f354f7f320
--- /dev/null
+++ b/fastlane/metadata/android/et/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Põhilised muutused selles versioonis: liidestus gitter.im võrguga.
+Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/fa/full_description.txt b/fastlane/metadata/android/fa/full_description.txt
index 0a93676bbf..3051f491ba 100644
--- a/fastlane/metadata/android/fa/full_description.txt
+++ b/fastlane/metadata/android/fa/full_description.txt
@@ -23,7 +23,7 @@
پیامرسانی و همکاری باز: میتوانید با هرکسی در شبکهٔ ماتریکس گپ بزنید، چه از المنت استفاده کنند و چه از هر کارهٔ ماتریکس دیگری؛ و حتا اگر از سامانهٔ پیامرسانی متفاوتی مثل اسلک، آیآرسی یا جبر استفاده کنند.
-فوق امن: رمزنگاری سرتاسری واقعی (فقط کسانی که در گفتوگو هستند،میتوانند پیامها را رمزگشایی کنند) و ورود چندگانه برای تأیید هویت افزارههای شرکتکنندگان در گفتوگو.
+b>فوق امن: رمزنگاری سرتاسری واقعی (فقط کسانی که در گفتوگو هستند،میتوانند پیامها را رمزگشایی کنند) و ورود چندگانه برای تأیید هویت افزارههای شرکتکنندگان در گفتوگو.
ارتباط کامل: پیامرسانی، تماسهای صوتی و تصویری،همرسانی پرونده، همرسانی صفحه و یه عالمه یکپارچگی، بات و ابزارک. اتاق و اجتماع ساخته، در دسترس بوده و کارها را انجام دهید.
diff --git a/fastlane/metadata/android/fa/title.txt b/fastlane/metadata/android/fa/title.txt
index fb4ea4125e..96f2f9a9df 100644
--- a/fastlane/metadata/android/fa/title.txt
+++ b/fastlane/metadata/android/fa/title.txt
@@ -1 +1 @@
-المنت (ریوت سابق)
+المنت - پیامرسان امن
diff --git a/fastlane/metadata/android/fi/changelogs/40100100.txt b/fastlane/metadata/android/fi-FI/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100100.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100110.txt b/fastlane/metadata/android/fi-FI/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100110.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100120.txt b/fastlane/metadata/android/fi-FI/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100120.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100130.txt b/fastlane/metadata/android/fi-FI/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100130.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100140.txt b/fastlane/metadata/android/fi-FI/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100140.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100150.txt b/fastlane/metadata/android/fi-FI/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100150.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100160.txt b/fastlane/metadata/android/fi-FI/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100160.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100170.txt b/fastlane/metadata/android/fi-FI/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100170.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40101000.txt b/fastlane/metadata/android/fi-FI/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40101000.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40101010.txt b/fastlane/metadata/android/fi-FI/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40101010.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/fi/full_description.txt b/fastlane/metadata/android/fi-FI/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/fi/full_description.txt
rename to fastlane/metadata/android/fi-FI/full_description.txt
diff --git a/fastlane/metadata/android/fi/short_description.txt b/fastlane/metadata/android/fi-FI/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/fi/short_description.txt
rename to fastlane/metadata/android/fi-FI/short_description.txt
diff --git a/fastlane/metadata/android/fi/title.txt b/fastlane/metadata/android/fi-FI/title.txt
similarity index 100%
rename from fastlane/metadata/android/fi/title.txt
rename to fastlane/metadata/android/fi-FI/title.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100100.txt b/fastlane/metadata/android/fr-FR/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100100.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100110.txt b/fastlane/metadata/android/fr-FR/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100110.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100120.txt b/fastlane/metadata/android/fr-FR/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100120.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100130.txt b/fastlane/metadata/android/fr-FR/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100130.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100140.txt b/fastlane/metadata/android/fr-FR/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100140.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100150.txt b/fastlane/metadata/android/fr-FR/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100150.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100160.txt b/fastlane/metadata/android/fr-FR/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100160.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100170.txt b/fastlane/metadata/android/fr-FR/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100170.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101000.txt b/fastlane/metadata/android/fr-FR/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101000.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101010.txt b/fastlane/metadata/android/fr-FR/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101010.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101020.txt b/fastlane/metadata/android/fr-FR/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101020.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101030.txt b/fastlane/metadata/android/fr-FR/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101030.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101040.txt b/fastlane/metadata/android/fr-FR/changelogs/40101040.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101040.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101040.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101050.txt b/fastlane/metadata/android/fr-FR/changelogs/40101050.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101050.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101050.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101060.txt b/fastlane/metadata/android/fr-FR/changelogs/40101060.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101060.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101060.txt
diff --git a/fastlane/metadata/android/fr/full_description.txt b/fastlane/metadata/android/fr-FR/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/fr/full_description.txt
rename to fastlane/metadata/android/fr-FR/full_description.txt
diff --git a/fastlane/metadata/android/fr/short_description.txt b/fastlane/metadata/android/fr-FR/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/fr/short_description.txt
rename to fastlane/metadata/android/fr-FR/short_description.txt
diff --git a/fastlane/metadata/android/fr/title.txt b/fastlane/metadata/android/fr-FR/title.txt
similarity index 100%
rename from fastlane/metadata/android/fr/title.txt
rename to fastlane/metadata/android/fr-FR/title.txt
diff --git a/fastlane/metadata/android/hu/changelogs/40100100.txt b/fastlane/metadata/android/hu-HU/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/hu/changelogs/40100100.txt
rename to fastlane/metadata/android/hu-HU/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/hu/changelogs/40100110.txt b/fastlane/metadata/android/hu-HU/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/hu/changelogs/40100110.txt
rename to fastlane/metadata/android/hu-HU/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/hu/changelogs/40100120.txt b/fastlane/metadata/android/hu-HU/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/hu/changelogs/40100120.txt
rename to fastlane/metadata/android/hu-HU/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/hu/changelogs/40100130.txt b/fastlane/metadata/android/hu-HU/changelogs/40100130.txt
similarity index 88%
rename from fastlane/metadata/android/hu/changelogs/40100130.txt
rename to fastlane/metadata/android/hu-HU/changelogs/40100130.txt
index e1b044f4e5..47ce2690f4 100644
--- a/fastlane/metadata/android/hu/changelogs/40100130.txt
+++ b/fastlane/metadata/android/hu-HU/changelogs/40100130.txt
@@ -1,2 +1,2 @@
Főbb változtatások ebben a verzióban: URL előnézet, új emoji billentyűzet, új szoba beállitási lehetőségek, és hó karácsonyra!
-Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.0.12
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.0.13
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40100140.txt b/fastlane/metadata/android/hu-HU/changelogs/40100140.txt
new file mode 100644
index 0000000000..1b86da9ab1
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40100140.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: Szoba jogosultságok szerkesztése, automatikus sötét/világos téma és sok hibajavítás.
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.0.14
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40100150.txt b/fastlane/metadata/android/hu-HU/changelogs/40100150.txt
new file mode 100644
index 0000000000..b48fd6a0d7
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40100150.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: Közösségi hálózatos bejelentkezés támogatása
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.0.15
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40100160.txt b/fastlane/metadata/android/hu-HU/changelogs/40100160.txt
new file mode 100644
index 0000000000..bb983ed5e8
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40100160.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: Közösségi hálózatos bejelentkezés
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.0.15 and https://github.com/vector-im/element-android/releases/tag/v1.0.16
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40100170.txt b/fastlane/metadata/android/hu-HU/changelogs/40100170.txt
new file mode 100644
index 0000000000..806470d74e
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40100170.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: Hibajavítás!
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.0.17
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101000.txt b/fastlane/metadata/android/hu-HU/changelogs/40101000.txt
new file mode 100644
index 0000000000..0bc4f5d49f
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101000.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: VoIP (hang és videóhívás közvetlen beszélgetésekben) fejlesztés és hibajavítás
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.0
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101010.txt b/fastlane/metadata/android/hu-HU/changelogs/40101010.txt
new file mode 100644
index 0000000000..503fc0ab2f
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101010.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: sebesség javítás és hibajavítás
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.1
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101020.txt b/fastlane/metadata/android/hu-HU/changelogs/40101020.txt
new file mode 100644
index 0000000000..04d67ac5ae
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101020.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: sebesség javítás és hibajavítás
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.2
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101030.txt b/fastlane/metadata/android/hu-HU/changelogs/40101030.txt
new file mode 100644
index 0000000000..4d0e46739e
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101030.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: sebesség javítás és hibajavítás
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.3
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101040.txt b/fastlane/metadata/android/hu-HU/changelogs/40101040.txt
new file mode 100644
index 0000000000..1c6921f0d5
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101040.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: sebesség javítás és hibajavítás
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.4
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101050.txt b/fastlane/metadata/android/hu-HU/changelogs/40101050.txt
new file mode 100644
index 0000000000..c937bb9215
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101050.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: javítás az 1.1.4 verzióhoz
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.5
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101060.txt b/fastlane/metadata/android/hu-HU/changelogs/40101060.txt
new file mode 100644
index 0000000000..a9b37e66a9
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101060.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: javítás az 1.1.5 verzióhoz
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.6
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101070.txt b/fastlane/metadata/android/hu-HU/changelogs/40101070.txt
new file mode 100644
index 0000000000..4acfbea1ea
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: béta állapotú Tér támogatás. Videó tömörítés küldés előtt.
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101080.txt b/fastlane/metadata/android/hu-HU/changelogs/40101080.txt
new file mode 100644
index 0000000000..e0f45f09b5
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: javítások a Terekhez
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101090.txt b/fastlane/metadata/android/hu-HU/changelogs/40101090.txt
new file mode 100644
index 0000000000..b3f3369ed7
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: támogatás a gitter.im hálózathoz
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/hu-HU/full_description.txt b/fastlane/metadata/android/hu-HU/full_description.txt
new file mode 100644
index 0000000000..032346ccb8
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/full_description.txt
@@ -0,0 +1,40 @@
+Element egy biztonságos üzenetküldő és csapatmunka támogató alkalmazás ami ideális távoli munkavégzés közben csoportos csevegéshez. Az alkalmazás végpontok közötti titkosítást használ videó konferenciához, fájl megosztáshoz és videó hivásokhoz.
+
+Element tulajdonságai:
+- Fejlett online kommunikációs eszköz
+- Teljesen titkosított üzenetküldés biztonságos céges kommunikációt kínál még a távdolgozóknak is
+- Elosztott csevegés a Matrix nyílt forráskódú keretrendszer felhasználásával
+- Bizontságos fájl megosztás titkosítottan projektek kezeléséhez
+- Videó hívás VoIP-pal és képernyőmegosztással
+- Könnyen integrálható a kedvenc online kollaborációs eszközöddel, projekt menedzsment eszközzel, VoIP szolgáltatással vagy más csoport üzenetküldő alkalmazással
+
+Element teljesen más mint a többi üzenetküldő alkalmazás. Matrixot használ, egy nyílt hálózatot a decentralizált biztonságos kommunikációhoz. Lehetőséget ad saját szerver üzemeltetésére ami maximális tulajdont és kontrollt biztosít az adatok fölött.
+
+Magánélet védelme és titkosított üzenetküldés
+Element megóv a kéretlen hirdetésektől, adatbányászattól és a különböző szigetszerű megoldásoktól. Minden adatot biztonságba helyez, egy az egybe videó és hang kommunikáció végpontok között titkosítva ahol az eszközök hitelesítve vannak.
+
+Element a kezedbe adja az adatvédelmi irányítást miközben bárkivel kommunikálhatsz a Matrix hálózatban vagy más üzleti kollaborációs eszközzel ami integrálva van, mint amilyen a Slack.
+
+Element futtatható saját szerveren
+
+Azért, hogy az érzékeny adatok és beszélgetések minnél inkább az irányításod alatt lehessen az Elementet saját magadnak üzemeltetheted vagy választhatsz bármely Matrixon alapuló - szabványos nyílt forráskódú és decentralizált kommunikáció - szoláltató közül. Element adatvédelmet, biztonságot és rugalmas integrációkat biztosít.
+
+A te adatod a tiéd
+Te döntöd el, hogy hol tárolod az adataidat és üzeneteidet. Adatbányászat vagy harmadik fél hozzáférésének kockázata nélkül.
+
+Element többféle képpen adja vissza az irányítást:
+1. Szerezz egy ingyenes hozzáférést a matrix.org nyilvános szerverre amit a Matrix fejlesztők üzemeltetnek vagy válassz a több ezer önkéntesek által üzemeltetett nyilvános szerverből
+2. Üzemeltess szerver magadnak a saját infrastruktúrádon
+3. Iratkozz fel egy egyedi szerverre az Element Matrix Services platformon
+
+Nyílt üzenetküldés és kollaboráció
+Bárkivel beszélgethetsz a Matrix hálózaton, akár az Elementet használja akár egy másik Matrix alkalmazást használ vagy akár egy eltérő üzenetküldőt.
+
+Fantasztikusan biztonságos
+Igazi végpontok között titkosítás (csak a beszélgetésben résztvevők tudják visszafejteni) és hitelesítés eszközök közötti aláírásokkal.
+
+Teljes kommunikáció és integráció
+Üzenetküldés, hang és videóhívás, fájl megosztás, képernyő megosztás és egy csomó integráció, botok és kisalkalmazások. Építs szobákat, közösségeket, maradj kapcsolatban és végezz el dolgokat.
+
+Vedd fel a fonalat
+Maradj kapcsolatban bárhol minden eszközödön a szinkronizált üzenetekkel és a weben a https://app.element.io oldallal
diff --git a/fastlane/metadata/android/hu-HU/short_description.txt b/fastlane/metadata/android/hu-HU/short_description.txt
new file mode 100644
index 0000000000..2dfe14c516
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/short_description.txt
@@ -0,0 +1 @@
+Csoportos üzenetküldő - titkosított üzenetek, videó hívások
diff --git a/fastlane/metadata/android/hu-HU/title.txt b/fastlane/metadata/android/hu-HU/title.txt
new file mode 100644
index 0000000000..c463dea393
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/title.txt
@@ -0,0 +1 @@
+Element - Biztonságos üzenetküldő
diff --git a/fastlane/metadata/android/hu/full_description.txt b/fastlane/metadata/android/hu/full_description.txt
deleted file mode 100644
index b75f259d02..0000000000
--- a/fastlane/metadata/android/hu/full_description.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-Az Element egy új üzenetküldő, és csapatmunka alkalmazás, amivel
-
-1. A te kezedben van az irányítás a saját adataid fölött, hogy megőrizhesd a magánszférádat
-2. Akárkivel beszélgethetsz a Matrix hálózatban, sőt még azon kívül is, például olyan alkalmazások integrálásával, mint a Slack
-3. Megvédheted magad a hirdetésektől, adatbányászattól, és a nagy cégek megoldásaiba való bezártságtól
-4. Biztonságosan beszélgethetsz, a végpontok közötti titkosításnak köszönhetően, az eszközök megbízhatóságát az eszköz-közti hitelesítéssel garantálva
-
-Az Element teljesen más, mint a többi üzenetküldő és csapatmunka alkalmazás, mert nyílt forráskódú, és decentralizált (nem központilag irányított).
-
-Az Element lehetővé teszi, hogy saját szervert futtass - vagy válassz egy szolgáltatót - így te birtoklod az adataidat, ezáltal megőrizve a magánszférád és a biztonságod. Egy nyitott hálózathoz ad hozzáférést, így nem csak a többi Element felhasználóval tudsz beszélgetni, hanem másokkal is. Ráadásul nagyon biztonságos.
-
-Az Element-tel azért válik mindez lehetővé, mert a Matrix hálózatra épül - egy nyílt, decentralizált kommunikációs szabványra.
-
-Az Element a te kezedbe adja az irányítást azáltal, hogy eldöntheted, ki tárolja a beszélgetéseidet. Az Element alkalmazásból több féle szolgáltatót is választhatsz:
-
-1. Regisztrálhatsz ingyen egy fiókot a matrix.org nyilvános szerveren, amit a Matrix fejlesztői üzemeltetnek, vagy választhatsz a több ezer, ingyenes szerver közül, amit önkéntesek üzemeltetnek
-2. A saját számítógépeden is futtathatsz szervert
-3. Előfizethetsz egy saját szerverre az Element Matrix Szolgáltatások platformon
-
-Miért jó az Element-et választani?
-
-ADATAID MEGVÉDÉSE: Eldöntheted, hol tárold az adataid és üzeneteid. A te tulajdonodban van, nem valami megacégnél, ami bányássza az adataid, vagy továbbadja másoknak.
-
-NYÍLT BESZÉLGETÉS, ÉS CSAPATMUNKA: Akárkivel cseveghetsz a Matrix hálózatban, akár az Element-et használják, akár valamilyen másik Matrix alkalmazást, de még akkor is, ha egy másik csevegő hálózatot használnak, olyat, mint például a Slack, IRC, vagy az XMPP.
-
-SZUPER-BIZTONSÁGOS: Valódi, végpontok közötti titkosítás (csak a beszélgetés résztvevői tudják elolvasni az üzeneteket), és eszköz-közti hitelesítés, hogy ellenőrizhesd a résztvevők eszközeit.
-
-TELJES KOMMUNIKÁCIÓ: Üzenetküldés, hang- és videóhívások, fájlmegosztás, képernyőmegosztás, és egy rakás integráció, bot, és widget. Hozz létre szobákat, közösségeket, maradj elérhető, és végezzétek el a feladatokat.
-
-AKÁRHOL, AHOL CSAK SZÜKSÉG VAN RÁ: Akárhol is vagy, maradj elérhető, a teljes mértékben szinkronizált beszélgetésekkel az összes eszközödön, és a weben a https://app.element.io oldalon.
diff --git a/fastlane/metadata/android/hu/short_description.txt b/fastlane/metadata/android/hu/short_description.txt
deleted file mode 100644
index 89f7c13f54..0000000000
--- a/fastlane/metadata/android/hu/short_description.txt
+++ /dev/null
@@ -1 +0,0 @@
-Biztonságos, decentralizált chat és VoIP. Tartsd az adataid biztonságban.
diff --git a/fastlane/metadata/android/hu/title.txt b/fastlane/metadata/android/hu/title.txt
deleted file mode 100644
index 8e493d2d08..0000000000
--- a/fastlane/metadata/android/hu/title.txt
+++ /dev/null
@@ -1 +0,0 @@
-Element (régebben Riot.im)
diff --git a/fastlane/metadata/android/it/changelogs/40100100.txt b/fastlane/metadata/android/it-IT/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100100.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100110.txt b/fastlane/metadata/android/it-IT/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100110.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100120.txt b/fastlane/metadata/android/it-IT/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100120.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100130.txt b/fastlane/metadata/android/it-IT/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100130.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100140.txt b/fastlane/metadata/android/it-IT/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100140.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100150.txt b/fastlane/metadata/android/it-IT/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100150.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100160.txt b/fastlane/metadata/android/it-IT/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100160.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100170.txt b/fastlane/metadata/android/it-IT/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100170.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101000.txt b/fastlane/metadata/android/it-IT/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101000.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101010.txt b/fastlane/metadata/android/it-IT/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101010.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101020.txt b/fastlane/metadata/android/it-IT/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101020.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101030.txt b/fastlane/metadata/android/it-IT/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101030.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101040.txt b/fastlane/metadata/android/it-IT/changelogs/40101040.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101040.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101040.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101050.txt b/fastlane/metadata/android/it-IT/changelogs/40101050.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101050.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101050.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101060.txt b/fastlane/metadata/android/it-IT/changelogs/40101060.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101060.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101060.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/40101070.txt b/fastlane/metadata/android/it-IT/changelogs/40101070.txt
new file mode 100644
index 0000000000..6f7ffcd958
--- /dev/null
+++ b/fastlane/metadata/android/it-IT/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Modifiche principali in questa versione: supporto beta per gli Spazi. Compressione video prima dell'invio.
+Cronologia completa: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/it-IT/changelogs/40101080.txt b/fastlane/metadata/android/it-IT/changelogs/40101080.txt
new file mode 100644
index 0000000000..9964245d4d
--- /dev/null
+++ b/fastlane/metadata/android/it-IT/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Modifiche principali in questa versione: miglioramenti per gli Spazi.
+Cronologia completa: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/it-IT/changelogs/40101090.txt b/fastlane/metadata/android/it-IT/changelogs/40101090.txt
new file mode 100644
index 0000000000..d1d89c8f41
--- /dev/null
+++ b/fastlane/metadata/android/it-IT/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Modifiche principali in questa versione: aggiunto supporto per la rete gitter.im .
+Cronologia completa: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/it/full_description.txt b/fastlane/metadata/android/it-IT/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/it/full_description.txt
rename to fastlane/metadata/android/it-IT/full_description.txt
diff --git a/fastlane/metadata/android/it/short_description.txt b/fastlane/metadata/android/it-IT/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/it/short_description.txt
rename to fastlane/metadata/android/it-IT/short_description.txt
diff --git a/fastlane/metadata/android/it/title.txt b/fastlane/metadata/android/it-IT/title.txt
similarity index 100%
rename from fastlane/metadata/android/it/title.txt
rename to fastlane/metadata/android/it-IT/title.txt
diff --git a/fastlane/metadata/android/he/changelogs/40100100.txt b/fastlane/metadata/android/iw-IL/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/he/changelogs/40100100.txt
rename to fastlane/metadata/android/iw-IL/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/he/changelogs/40100110.txt b/fastlane/metadata/android/iw-IL/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/he/changelogs/40100110.txt
rename to fastlane/metadata/android/iw-IL/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/he/changelogs/40100120.txt b/fastlane/metadata/android/iw-IL/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/he/changelogs/40100120.txt
rename to fastlane/metadata/android/iw-IL/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/he/changelogs/40100130.txt b/fastlane/metadata/android/iw-IL/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/he/changelogs/40100130.txt
rename to fastlane/metadata/android/iw-IL/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/he/full_description.txt b/fastlane/metadata/android/iw-IL/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/he/full_description.txt
rename to fastlane/metadata/android/iw-IL/full_description.txt
diff --git a/fastlane/metadata/android/he/short_description.txt b/fastlane/metadata/android/iw-IL/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/he/short_description.txt
rename to fastlane/metadata/android/iw-IL/short_description.txt
diff --git a/fastlane/metadata/android/he/title.txt b/fastlane/metadata/android/iw-IL/title.txt
similarity index 100%
rename from fastlane/metadata/android/he/title.txt
rename to fastlane/metadata/android/iw-IL/title.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100100.txt b/fastlane/metadata/android/ja-JP/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100100.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100110.txt b/fastlane/metadata/android/ja-JP/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100110.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100120.txt b/fastlane/metadata/android/ja-JP/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100120.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100130.txt b/fastlane/metadata/android/ja-JP/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100130.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100140.txt b/fastlane/metadata/android/ja-JP/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100140.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100150.txt b/fastlane/metadata/android/ja-JP/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100150.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100160.txt b/fastlane/metadata/android/ja-JP/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100160.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100170.txt b/fastlane/metadata/android/ja-JP/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100170.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40101000.txt b/fastlane/metadata/android/ja-JP/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40101000.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40101010.txt b/fastlane/metadata/android/ja-JP/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40101010.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40101020.txt b/fastlane/metadata/android/ja-JP/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40101020.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40101030.txt b/fastlane/metadata/android/ja-JP/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40101030.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/ja/full_description.txt b/fastlane/metadata/android/ja-JP/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/ja/full_description.txt
rename to fastlane/metadata/android/ja-JP/full_description.txt
diff --git a/fastlane/metadata/android/ja/short_description.txt b/fastlane/metadata/android/ja-JP/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/ja/short_description.txt
rename to fastlane/metadata/android/ja-JP/short_description.txt
diff --git a/fastlane/metadata/android/ja/title.txt b/fastlane/metadata/android/ja-JP/title.txt
similarity index 100%
rename from fastlane/metadata/android/ja/title.txt
rename to fastlane/metadata/android/ja-JP/title.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100100.txt b/fastlane/metadata/android/no-NO/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100100.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100110.txt b/fastlane/metadata/android/no-NO/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100110.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100120.txt b/fastlane/metadata/android/no-NO/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100120.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100130.txt b/fastlane/metadata/android/no-NO/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100130.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100140.txt b/fastlane/metadata/android/no-NO/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100140.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100150.txt b/fastlane/metadata/android/no-NO/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100150.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100160.txt b/fastlane/metadata/android/no-NO/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100160.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100170.txt b/fastlane/metadata/android/no-NO/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100170.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40101000.txt b/fastlane/metadata/android/no-NO/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40101000.txt
rename to fastlane/metadata/android/no-NO/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40101010.txt b/fastlane/metadata/android/no-NO/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40101010.txt
rename to fastlane/metadata/android/no-NO/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40101020.txt b/fastlane/metadata/android/no-NO/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40101020.txt
rename to fastlane/metadata/android/no-NO/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40101030.txt b/fastlane/metadata/android/no-NO/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40101030.txt
rename to fastlane/metadata/android/no-NO/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/nb-NO/full_description.txt b/fastlane/metadata/android/no-NO/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/full_description.txt
rename to fastlane/metadata/android/no-NO/full_description.txt
diff --git a/fastlane/metadata/android/nb-NO/short_description.txt b/fastlane/metadata/android/no-NO/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/short_description.txt
rename to fastlane/metadata/android/no-NO/short_description.txt
diff --git a/fastlane/metadata/android/nb-NO/title.txt b/fastlane/metadata/android/no-NO/title.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/title.txt
rename to fastlane/metadata/android/no-NO/title.txt
diff --git a/fastlane/metadata/android/pt-BR/changelogs/40101070.txt b/fastlane/metadata/android/pt-BR/changelogs/40101070.txt
new file mode 100644
index 0000000000..ab403ea4cc
--- /dev/null
+++ b/fastlane/metadata/android/pt-BR/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Principais mudanças nesta version: 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
new file mode 100644
index 0000000000..25047345ef
--- /dev/null
+++ b/fastlane/metadata/android/pt-BR/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Principais mudanças nesta version: 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
new file mode 100644
index 0000000000..cc5e71cf7f
--- /dev/null
+++ b/fastlane/metadata/android/pt-BR/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Principais mudanças nesta version: 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/full_description.txt b/fastlane/metadata/android/pt-BR/full_description.txt
index b4fee53b4d..7bb3d0981d 100644
--- a/fastlane/metadata/android/pt-BR/full_description.txt
+++ b/fastlane/metadata/android/pt-BR/full_description.txt
@@ -11,7 +11,7 @@ Element é tanto um mensageiro seguro como um app de colaboração de time de pr
Element é completamente diferente de outros apps de mensageria e colaboração. Ele opera em Matrix, uma rede aberta para mensageria segura e comunicação descentralizada. Ele permite auto-hospedagem para dar a usuárias(os) máxima propriedade e controle de seus dados e suas mensagens.
Privacidade e mensageria encriptada
-Element protege você de ads não-desejados, minagem de dados e jardins murados. Ele também assegura todos os seus dados, vídeo um-a-um e comunicação de voz através de encriptação ponta-a-ponta e verificação de dispositivo assinada cruzado.
+Element protege você de ads indesejados, datamining e jardins murados. Ele também assegura todos os seus dados, vídeo um-a-um e comunicação de voz através de encriptação ponta-a-ponta e verificação de dispositivo assinada cruzado.
Element dá a você controle sobre sua privacidade enquanto permite a você se comunicar seguramente com qualquer pessoa na rede Matrix, ou outras ferramentas de colaboração ao se integrar com apps tais como Slack.
@@ -19,21 +19,21 @@ Element dá a você controle sobre sua privacidade enquanto permite a você se c
Para permitir mais controle de seus dados e conversas sensíveis, Element pode ser auto-hospedado ou você pode escolher qualquer host baseado em Matrix - o standard para comunicação open source e descentralizada. Element dá a você privacidade, conformidade de segurança e flexibilidade de integração.
Tenha posse de seus dados
-Você decidade onde mannter seus dados e mensagens. Sem o risco de minagem de dados ou acesso de terceiros.
+Você decide onde manter seus dados e mensagens. Sem o risco de data mining ou acesso de terceiros.
Element põe você em controle de diferentes maneiras:
-1. Tenha uma conta grátis no servidor público matrix.org hospedado pelos desenvolvedores Matrix, ou escolha de milhares de servidores públicos hospedados por pessoas se voluntariando
-2. Auto-hospede sua conta ao rodar um servidor em sua própria infraestrutura de TI
-3. Registre-se para uma conta num servidor personalizado ao simplesmente assinar a plataforma de hospedagem Element Matrix Services
+1. Pegar uma conta grátis no servidor público matrix.org hospedado pelos desenvolvedores Matrix, ou escolha de milhares de servidores públicos hospedados por pessoas se voluntariando
+2. Auto-hospedar sua conta ao rodar um servidor em sua própria infraestrutura de TI
+3. Fazer signup para uma conta num servidor personalizado ao simplesmente assinar a plataforma de hospedagem Element Matrix Services
Mensageria e colaboração abertos
-Você pode fazer chat com qualquer pessoa na rede Matrix, caso ela esteja usando Element, um outro app de Matrix ou mesmo se ela estiver usando um app de mensagem diferente.
+Você pode fazer chat com qualquer pessoa na rede Matrix, caso ela esteja usando Element, um outro app de Matrix ou mesmo se ela estiver usando um app de mensageria diferente.
Super seguro
Encriptação ponta-a-ponta real (somente aquelas/es na conversa podem decriptar mensagens), e verificação de dispositivo assinada cuzado.
Comunicação e integração completas
-Messageria, chamas de voz e vídeo, compartilhamento de arquivo, compartilhamento de tela e um monte de integrações, bots e widgets. Construa salas, comunidades, fique em contato e tenha as coisas feitas.
+Messageria, chamadas de voz e vídeo, compartilhamento de arquivo, compartilhamento de tela e um monte de integrações, bots e widgets. Construa salas, comunidades, fique em contato e tenha as coisas feitas.
Continue de onde você parou
Fique em contato onde quer que você esteja com histórico de mensagem completamente sincronizado por todos os seus dispositivos e na web em https://app.element.io
diff --git a/fastlane/metadata/android/pt-BR/short_description.txt b/fastlane/metadata/android/pt-BR/short_description.txt
index f03b5347b9..d5f82d8623 100644
--- a/fastlane/metadata/android/pt-BR/short_description.txt
+++ b/fastlane/metadata/android/pt-BR/short_description.txt
@@ -1 +1 @@
-Mensageiro de grupo - mensagens encriptadas, chat de grupo e chamadas de vídeo
+Mensageiro de grupo - mensageria, chat de grupo e chamadas de vídeo encriptados
diff --git a/fastlane/metadata/android/ru/changelogs/40100100.txt b/fastlane/metadata/android/ru-RU/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100100.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100110.txt b/fastlane/metadata/android/ru-RU/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100110.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100120.txt b/fastlane/metadata/android/ru-RU/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100120.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100130.txt b/fastlane/metadata/android/ru-RU/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100130.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100140.txt b/fastlane/metadata/android/ru-RU/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100140.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100150.txt b/fastlane/metadata/android/ru-RU/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100150.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100160.txt b/fastlane/metadata/android/ru-RU/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100160.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100170.txt b/fastlane/metadata/android/ru-RU/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100170.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40101000.txt b/fastlane/metadata/android/ru-RU/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40101000.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40101010.txt b/fastlane/metadata/android/ru-RU/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40101010.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40101020.txt b/fastlane/metadata/android/ru-RU/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40101020.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40101030.txt b/fastlane/metadata/android/ru-RU/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40101030.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/ru/full_description.txt b/fastlane/metadata/android/ru-RU/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/ru/full_description.txt
rename to fastlane/metadata/android/ru-RU/full_description.txt
diff --git a/fastlane/metadata/android/ru/short_description.txt b/fastlane/metadata/android/ru-RU/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/ru/short_description.txt
rename to fastlane/metadata/android/ru-RU/short_description.txt
diff --git a/fastlane/metadata/android/ru/title.txt b/fastlane/metadata/android/ru-RU/title.txt
similarity index 100%
rename from fastlane/metadata/android/ru/title.txt
rename to fastlane/metadata/android/ru-RU/title.txt
diff --git a/fastlane/metadata/android/si/title.txt b/fastlane/metadata/android/si-LK/title.txt
similarity index 100%
rename from fastlane/metadata/android/si/title.txt
rename to fastlane/metadata/android/si-LK/title.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100100.txt b/fastlane/metadata/android/sv-SE/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100100.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100110.txt b/fastlane/metadata/android/sv-SE/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100110.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100120.txt b/fastlane/metadata/android/sv-SE/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100120.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100130.txt b/fastlane/metadata/android/sv-SE/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100130.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100140.txt b/fastlane/metadata/android/sv-SE/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100140.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100150.txt b/fastlane/metadata/android/sv-SE/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100150.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100160.txt b/fastlane/metadata/android/sv-SE/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100160.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100170.txt b/fastlane/metadata/android/sv-SE/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100170.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101000.txt b/fastlane/metadata/android/sv-SE/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101000.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101010.txt b/fastlane/metadata/android/sv-SE/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101010.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101020.txt b/fastlane/metadata/android/sv-SE/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101020.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101030.txt b/fastlane/metadata/android/sv-SE/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101030.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101040.txt b/fastlane/metadata/android/sv-SE/changelogs/40101040.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101040.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101040.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101050.txt b/fastlane/metadata/android/sv-SE/changelogs/40101050.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101050.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101050.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101060.txt b/fastlane/metadata/android/sv-SE/changelogs/40101060.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101060.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101060.txt
diff --git a/fastlane/metadata/android/sv-SE/changelogs/40101070.txt b/fastlane/metadata/android/sv-SE/changelogs/40101070.txt
new file mode 100644
index 0000000000..4756a2d028
--- /dev/null
+++ b/fastlane/metadata/android/sv-SE/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Huvudsakliga ändringar i den här versionen: betastöd för utrymmen. Komprimera video innan den skickas.
+Full ändringslogg: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/sv-SE/changelogs/40101080.txt b/fastlane/metadata/android/sv-SE/changelogs/40101080.txt
new file mode 100644
index 0000000000..38d704f995
--- /dev/null
+++ b/fastlane/metadata/android/sv-SE/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Huvudsakliga ändringar i den här versionen: förbättringar för utrymmen.
+Full ändringslogg: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/sv-SE/changelogs/40101090.txt b/fastlane/metadata/android/sv-SE/changelogs/40101090.txt
new file mode 100644
index 0000000000..e1b5900a30
--- /dev/null
+++ b/fastlane/metadata/android/sv-SE/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Huvudsakliga ändringar i den här versionen: lägg till stöd för gitter.im-nätverket.
+Full ändringslogg: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/sv/full_description.txt b/fastlane/metadata/android/sv-SE/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/sv/full_description.txt
rename to fastlane/metadata/android/sv-SE/full_description.txt
diff --git a/fastlane/metadata/android/sv/short_description.txt b/fastlane/metadata/android/sv-SE/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/sv/short_description.txt
rename to fastlane/metadata/android/sv-SE/short_description.txt
diff --git a/fastlane/metadata/android/sv/title.txt b/fastlane/metadata/android/sv-SE/title.txt
similarity index 100%
rename from fastlane/metadata/android/sv/title.txt
rename to fastlane/metadata/android/sv-SE/title.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40100100.txt b/fastlane/metadata/android/tr-TR/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40100100.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40100110.txt b/fastlane/metadata/android/tr-TR/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40100110.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40100120.txt b/fastlane/metadata/android/tr-TR/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40100120.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40100130.txt b/fastlane/metadata/android/tr-TR/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40100130.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40100140.txt b/fastlane/metadata/android/tr-TR/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40100140.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40100170.txt b/fastlane/metadata/android/tr-TR/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40100170.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40101000.txt b/fastlane/metadata/android/tr-TR/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40101000.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40101010.txt b/fastlane/metadata/android/tr-TR/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40101010.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/tr/full_description.txt b/fastlane/metadata/android/tr-TR/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/tr/full_description.txt
rename to fastlane/metadata/android/tr-TR/full_description.txt
diff --git a/fastlane/metadata/android/tr/short_description.txt b/fastlane/metadata/android/tr-TR/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/tr/short_description.txt
rename to fastlane/metadata/android/tr-TR/short_description.txt
diff --git a/fastlane/metadata/android/tr/title.txt b/fastlane/metadata/android/tr-TR/title.txt
similarity index 100%
rename from fastlane/metadata/android/tr/title.txt
rename to fastlane/metadata/android/tr-TR/title.txt
diff --git a/fastlane/metadata/android/uk/changelogs/40101070.txt b/fastlane/metadata/android/uk/changelogs/40101070.txt
new file mode 100644
index 0000000000..4d60bb1704
--- /dev/null
+++ b/fastlane/metadata/android/uk/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Основні зміни в цій версії: бета-підтримка Spaces. Стиснення відео перед надсиланням.
+Повний журнал змін: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/uk/changelogs/40101080.txt b/fastlane/metadata/android/uk/changelogs/40101080.txt
new file mode 100644
index 0000000000..c174603258
--- /dev/null
+++ b/fastlane/metadata/android/uk/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Основні зміни у цій версії: Вдосконалено Простори!
+Вичерпний перелік змін: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/uk/changelogs/40101090.txt b/fastlane/metadata/android/uk/changelogs/40101090.txt
new file mode 100644
index 0000000000..af822ad291
--- /dev/null
+++ b/fastlane/metadata/android/uk/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Основні зміни цієї версії: підтримка мережі gitter.im.
+Вичерпний перелік змін: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/uk/full_description.txt b/fastlane/metadata/android/uk/full_description.txt
index 026ae4162a..df06315754 100644
--- a/fastlane/metadata/android/uk/full_description.txt
+++ b/fastlane/metadata/android/uk/full_description.txt
@@ -1,30 +1,39 @@
-Element — це застосунок для спілкування та співпраці нового типу, який:
+Element — це і безпечний месенджер, і застосунок для співпраці команди, який ідеально підходить для групових бесід під час віддаленої роботи. Цей застосунок для спілкування застосовує наскрізне шифрування для забезпечення відеоконференцій, обміну файлами та голосових викликів.
-1. Надає вам повний контроль за своєю конфіденційністю
-2. Дозволяє спілкування з будь-ким у мережі Matrix та поза нею, інтегруючись із такими застосунками, як Slack
-3. Убезпечує вас від реклами, збору даних та штучних обмежень
-4. Захищає ваше спілкування наскрізним шифруванням із перехресним підписуванням для звірення інших осіб
+Можливості Element включають:
+- Розширені засоби спілкування в Інтернеті
+- Повністю зашифровані повідомлення для надання можливості безпечнішого корпоративного спілкування, навіть для віддалених працівників
+- Децентралізований чат на основі відкритого коду Matrix
+- Безпечний обмін файлами із зашифрованими даними для керування проєктами
+- Відеочати з передачею голосу через IP та показом екрану іншим
+- Проста інтеграція з вашими улюбленими інструментами для онлайн-співпраці, інструментами керування проєктами, послугами VoIP та іншими застосунками обміну повідомленнями для команд
-Element ґрунтовно відрізняється від інших застосунків для спілкування та співпраці тому що він є децентралізованим та відкритоджерельним.
+Element цілковито відрізняється від інших застосунків обміну повідомленнями та спільної роботи. Він працює на Matrix, відкритій мережі для безпечного обміну повідомленнями та децентралізованого зв'язку. Це дозволяє самостійне розгортання, щоб надати користувачам якнайбільше володіння та контролю над їх даними та повідомленнями.
-Element дозволяє вам розміщувати сервер в себе або обирати будь-якого з надавачів послуг, таким чином забезпечуючи вам конфіденційність і можливість володіти власними даними й бесідами та контролювати їх. Він надає вам доступ до відкритої мережі, тож ви не є обмеженими спілкуванням виключно з користувачами Element. І він є дуже надійним та безпечним.
+Приватність та обмін зашифрованими повідомленнями
+Element захищає вас від небажаної реклами, збору даних та обмежень. Він також захищає всі ваші дані, відео та голосовий зв'язок віч-на-віч за допомогою наскрізного шифрування та взаємного підписування пристроїв.
-Element здатен забезпечити усе це завдяки тому, що він заснований на протоколі Matrix — стандарті для відкритого та децентралізованого спілкування.
+Element дає вам можливість контролювати вашу приватність, одночасно дозволяючи вам безпечно спілкуватися з будь-ким у мережі Matrix або через інші інструменти ділової співпраці, інтегрувавшись із такими програмами, як Slack.
-Element надає вам повний контроль, дозволяючи обирати з-поміж надавачів послуг, що обслуговують сервери з вашими бесідами. Ви вільні обрати будь-який спосіб розміщення прямо з застосунку Element:
+Element можна розгортати самостійно
+Щоб забезпечити більше контролю над вашими приватними даними та розмовами, Element можна самостійно розміщувати або ви можете вибрати будь-який вузол на основі Matrix — стандарт для децентралізованого спілкування з відкритим кодом. Element надає вам приватність, відповідність безпеці та гнучкість інтеграції.
-1. Отримати безкоштовний обліковий запис на загальнодоступному сервері matrix.org, який обслуговують розробники Matrix, чи на одному з тисяч публічних серверів, які обслуговують волонтери
-2. Розмістити свій обліковий запис на власному сервері
-3. Зареєструватись на індивідуальному сервері, просто підписавшись на послуги платформи Element Matrix Services
+Ваші дані
+Ви вирішуєте, де зберігати свої дані та повідомлення. Без ризику видобутку даних або стороннього доступу.
-Чому я маю обрати Element?
+Element надає такі можливості на вибір:
+1. Отримайте безплатний обліковий запис на загальнодоступному сервері matrix.org, розміщеному розробниками Matrix, або виберіть серед тисяч загальнодоступних серверів, розміщених волонтерами
+2. Самостійно розмістіть свій обліковий запис, запустивши сервер на власній ІТ-інфраструктурі
+3. Зареєструйте обліковий запис на власному сервері, просто підписавшись на хостинг-платформу Element Matrix Services
-ВОЛОДІЙТЕ ВАШИМИ ДАНИМИ: Ви вирішуєте де тримати ваші дані та повідомлення. Саме ви володієте ними та контролюєте їх, а не якась Мегакорпорація, що збирає ваші дані та надає стороннім особам доступ до них.
+Відкриті обмін повідомленнями та співпраця
+Ви можете спілкуватися з усіма у мережі Matrix, незалежно від того, чи користуються вони Element, іншим застосунком Matrix або навіть якщо іншим застосунком для обміну повідомленнями.
-ВІДКРИТІ ОБМІН ПОВІДОМЛЕННЯМИ ТА СПІВПРАЦЯ: Ви можете балакати з будь-ким у мережі Matrix, хоч вони користуються Element, хоч іншим застосунком для Matrix, і навіть якщо вони користуються іншою системою обміну повідомленнями на кшталт Slack, IRC чи XMPP.
+Надбезпечний
+Справжнє наскрізне шифрування (лише учасники бесіди можуть розшифровувати повідомлення) та взаємне підписування пристроїв.
-НАДБЕЗПЕЧНІСТЬ: Справжнє наскрізне шифрування (лише ваші співрозмовники здатні дешифровувати повідомлення) та перехресне підписування для звірення пристроїв інших учасників бесіди.
+Повноцінні спілкування та інтеграція
+Обмін повідомленнями, голосові та відеовиклики, обмін файлами, спільний доступ до екрана та ціла купа інтеграцій, ботів та віджетів. Створюйте кімнати, спільноти, залишайтеся на зв’язку та виконуйте завдання.
-ДОВЕРШЕНИЙ ЗВʼЯЗОК: Повідомлення, голосові та відеодзвінки, обмін файлами, розподіл екрану та ціла купа інтеграцій, ботів та знадобів. Створюйте кімнати й спільноти, залишайтесь на зв'язку та завершуйте свої справи.
-
-ДЕ Б ВИ НЕ БУЛИ: Залишайтесь на зв'язку де б ви не були, разом з синхронізовною історією листувань на усіх ваших пристроях та в Інтернеті на https://app.element.io.
+Продовжуйте, де зупинилися
+Залишайтеся на зв'язку, де б ви не знаходились, з повністю синхронізованою історією повідомлень на всіх своїх пристроях та в Інтернеті за адресою https://app.element.io
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100100.txt b/fastlane/metadata/android/zh-CN/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100100.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100110.txt b/fastlane/metadata/android/zh-CN/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100110.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100120.txt b/fastlane/metadata/android/zh-CN/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100120.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100130.txt b/fastlane/metadata/android/zh-CN/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100130.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100140.txt b/fastlane/metadata/android/zh-CN/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100140.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100150.txt b/fastlane/metadata/android/zh-CN/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100150.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100160.txt b/fastlane/metadata/android/zh-CN/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100160.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100170.txt b/fastlane/metadata/android/zh-CN/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100170.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40101000.txt b/fastlane/metadata/android/zh-CN/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40101000.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40101010.txt b/fastlane/metadata/android/zh-CN/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40101010.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101020.txt b/fastlane/metadata/android/zh-CN/changelogs/40101020.txt
new file mode 100644
index 0000000000..0de3f2aed0
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101020.txt
@@ -0,0 +1,2 @@
+此版本中的主要更新:改进性能和错误修复!
+完整的更新记录:https://github.com/vector-im/element-android/releases/tag/v1.1.2
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101030.txt b/fastlane/metadata/android/zh-CN/changelogs/40101030.txt
new file mode 100644
index 0000000000..5a7fae92d5
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101030.txt
@@ -0,0 +1,2 @@
+此版本中的主要更新:改进性能和修复错误!
+完整的更新记录:https://github.com/vector-im/element-android/releases/tag/v1.1.3
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101040.txt b/fastlane/metadata/android/zh-CN/changelogs/40101040.txt
new file mode 100644
index 0000000000..44a3547b3e
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101040.txt
@@ -0,0 +1,2 @@
+此版本中的主要更新:改进性能和修复错误!
+完整的更新记录:https://github.com/vector-im/element-android/releases/tag/v1.1.4
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101050.txt b/fastlane/metadata/android/zh-CN/changelogs/40101050.txt
new file mode 100644
index 0000000000..c320815a00
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101050.txt
@@ -0,0 +1,2 @@
+此版本中的主要更新:1.1.4 的热修复
+完整的更新记录:https://github.com/vector-im/element-android/releases/tag/v1.1.5
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101060.txt b/fastlane/metadata/android/zh-CN/changelogs/40101060.txt
new file mode 100644
index 0000000000..193ef8f48e
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101060.txt
@@ -0,0 +1,2 @@
+此版本中的主要更新:1.1.5 的热修复
+完整的更新记录:https://github.com/vector-im/element-android/releases/tag/v1.1.6
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101070.txt b/fastlane/metadata/android/zh-CN/changelogs/40101070.txt
new file mode 100644
index 0000000000..ba8e92be9b
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+此版本中的主要更新:对「空间」的测试版支持。发送前压缩视频。
+完整的更新记录:https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101080.txt b/fastlane/metadata/android/zh-CN/changelogs/40101080.txt
new file mode 100644
index 0000000000..64b6462ad2
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+此版本的主要变化:对空间进行改进。
+完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101090.txt b/fastlane/metadata/android/zh-CN/changelogs/40101090.txt
new file mode 100644
index 0000000000..c4c6b349c8
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+此版本的主要变化:为 gitter.im 网络提供支持。
+完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/zh-CN/full_description.txt b/fastlane/metadata/android/zh-CN/full_description.txt
new file mode 100644
index 0000000000..fa6b00f1e4
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/full_description.txt
@@ -0,0 +1,39 @@
+Element 不仅是安全的通讯软件,同时也是生产力团队协作应用,非常适合在远端工作时进行群组聊天。此聊天应用使用了端到端加密来提供强大的视频会议、文件分享与语音通话功能。
+
+Element 的功能包含了:
+- 进阶的线上通讯工具
+- 完全加密的信息,即使对于远端工作者来说,也可以有更安全的公司通讯
+- 以 Matrix 开放源码框架为基础的去中心化的聊天
+- 在管理项目时通过加密资料安全地分享文件
+- 包含了 VoIP 与画面分享的视频聊天
+- 与你最喜欢的协作工具、项目管理工具、VoIP 服务与其他团队信息应用轻松整合
+
+Element 与其他信息传递与协作应用完全不同。它在 Matrix(一个用于安全传递讯息与去中心化通讯的开放网络)上运行。其可以自建,让使用者对他们的资料和信息拥有最大的所有权与控制权。
+
+隐私与加密信息传递
+Element 保护你不受不想要的广告、信息泄露与围城侵扰。其也通过端到端加密与交叉签章装置验证保护了你所有的资料,并提供一对一视频以及语音通讯。
+
+Element 通过与其他商业协作工具,如 Slack 等应用整合,让你可以在控制你的隐私的同时,也可以与 Matrix 网络上的任何人安全地通讯。
+
+Element 可以自建
+为了可以完整控制你的敏感资料与对话,Element 可以自建,你也可以选择任何以 Matrix 为基础的服务提供商,开放源码、去中心化的通讯标准。Element 为你提供隐私、安全合规与整合灵活性。
+
+拥有你的资料
+你可以决定将你的资料与信息储存在何处。没有信息泄露或被第三方爬取的风险。
+
+Element 透过不同的方式让你掌控一切:
+1. 在 Matrix 开发者架设的 matrix.org 公开服务器上取得免费帐号,或是从数千个由志愿者架设的公开服务器中选择
+2. 在你自己的 IT 基础架构上的服务器自行托管你的帐号
+3. 只要订阅 Element Matrix Services 托管平台就可以在自定义的服务器上注册帐号
+
+开放信息传递与协作
+你可以与 Matrix 网络上的任何人聊天,不论他们是使用 Element、其他 Matrix 应用或其他通讯应用。
+
+超级安全
+真正的端到端加密(仅有那些在对话中的可以解密讯息)以及交叉签章装置验证。
+
+完整的通讯与整合
+信息传递、语音与视频通话、文件分享、画面分享与超多的整合、机器人与挂件。建构聊天室、社群、保持联络并完成工作。
+
+从上次离开的地方开始
+无论你身在何处,都可以透过在你所有设备与网页 https://app.element.io 间完全同步的信息历史保持联络
diff --git a/fastlane/metadata/android/zh-Hans/short_description.txt b/fastlane/metadata/android/zh-CN/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/short_description.txt
rename to fastlane/metadata/android/zh-CN/short_description.txt
diff --git a/fastlane/metadata/android/zh-Hans/title.txt b/fastlane/metadata/android/zh-CN/title.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/title.txt
rename to fastlane/metadata/android/zh-CN/title.txt
diff --git a/fastlane/metadata/android/zh-Hans/full_description.txt b/fastlane/metadata/android/zh-Hans/full_description.txt
deleted file mode 100644
index 4791c9652b..0000000000
--- a/fastlane/metadata/android/zh-Hans/full_description.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-Element 是一种新型的通讯与协作应用:
-
-1. 使您可以掌控您的隐私
-2. 使您与 Matrix 网络中的任何人交流,甚至可以通过集成功能与如 Slack 之类的其他应用通讯
-3. 保护您免受广告,大数据挖掘和封闭服务的侵害
-4. 通过端到端加密保证安全,通过交叉签名验证其他人
-
-Element 与其他通讯与协作应用完全不同,因为它是去中心化且开源的。
-
-Element 允许您自托管——或者选择托管商——因此,您能拥有数据和会话的隐私权,所有权和控制权。它允许您访问开放网络;因此,您可以与 Element 用户以外的人交流。并且它非常安全。
-
-Element 之所以可以做到这些,是因为它在 Matrix 上运行——开放,去中心化通讯的标准。
-
-通过让您选择由谁来托管您的会话,Element 让您掌控一切。在 Element 应用中,您可以选择不同的托管方式:
-
-1. 在由 Matrix 开发者托管的 matrix.org 公共服务器上获取免费帐户,或从志愿者托管的上千个公共服务器中选择
-2. 在您自己的硬件上运行服务器,自托管您的会话
-3. 通过订阅 Element Matrix Services 托管平台,简单地在自定义服务器上注册账户
-
-为什么选择 Element?
-
-掌控您的数据:您来决定存放您的数据和消息的位置。拥有并控制它的是您,而不是挖掘您的数据或与第三方分享的巨型企业。
-
-开放通讯与协作:您可以与 Matrix 网络中的任何人聊天,不论他们使用 Element 还是其他 Matrix 应用,甚至/即使他们在使用不同的通讯系统,例如 Slack,IRC 或 XMPP。
-
-超级安全:支持真正的端到端加密(仅有会话中的人可以解密消息),还有能够验证会话参与方的设备的交叉签名。
-
-完善的通讯方式:消息,语音和视频通话,文件共享,屏幕共享和大量集成功能,机器人和小挂件。建立房间与社区,保持联系并完成工作。
-
-随时随地:消息历史可在您的全部设备和 https://app.element.io 网页端之间完全同步,无论您在哪里,都可以保持联系。
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100100.txt b/fastlane/metadata/android/zh-TW/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100100.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100110.txt b/fastlane/metadata/android/zh-TW/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100110.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100120.txt b/fastlane/metadata/android/zh-TW/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100120.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100130.txt b/fastlane/metadata/android/zh-TW/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100130.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100140.txt b/fastlane/metadata/android/zh-TW/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100140.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100150.txt b/fastlane/metadata/android/zh-TW/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100150.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100160.txt b/fastlane/metadata/android/zh-TW/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100160.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100170.txt b/fastlane/metadata/android/zh-TW/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100170.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101000.txt b/fastlane/metadata/android/zh-TW/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101000.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101010.txt b/fastlane/metadata/android/zh-TW/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101010.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101020.txt b/fastlane/metadata/android/zh-TW/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101020.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101030.txt b/fastlane/metadata/android/zh-TW/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101030.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101040.txt b/fastlane/metadata/android/zh-TW/changelogs/40101040.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101040.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101040.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101050.txt b/fastlane/metadata/android/zh-TW/changelogs/40101050.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101050.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101050.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101060.txt b/fastlane/metadata/android/zh-TW/changelogs/40101060.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101060.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101060.txt
diff --git a/fastlane/metadata/android/zh-TW/changelogs/40101070.txt b/fastlane/metadata/android/zh-TW/changelogs/40101070.txt
new file mode 100644
index 0000000000..c62c7d5224
--- /dev/null
+++ b/fastlane/metadata/android/zh-TW/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+此版本中的主要變動:對「空間」的測試版支援。傳送前壓縮影片。
+完整的變更紀錄:https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/zh-TW/changelogs/40101080.txt b/fastlane/metadata/android/zh-TW/changelogs/40101080.txt
new file mode 100644
index 0000000000..4ed232fe70
--- /dev/null
+++ b/fastlane/metadata/android/zh-TW/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+此版本中的主要變動:改善「空間」的功能。
+完整的變更紀錄:https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/zh-TW/changelogs/40101090.txt b/fastlane/metadata/android/zh-TW/changelogs/40101090.txt
new file mode 100644
index 0000000000..84e46bdd76
--- /dev/null
+++ b/fastlane/metadata/android/zh-TW/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+此版本中的主要變動:新增對 gitter.im 網路的支援。
+完整的變更紀錄:https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/zh-Hant/full_description.txt b/fastlane/metadata/android/zh-TW/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/full_description.txt
rename to fastlane/metadata/android/zh-TW/full_description.txt
diff --git a/fastlane/metadata/android/zh-Hant/short_description.txt b/fastlane/metadata/android/zh-TW/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/short_description.txt
rename to fastlane/metadata/android/zh-TW/short_description.txt
diff --git a/fastlane/metadata/android/zh-Hant/title.txt b/fastlane/metadata/android/zh-TW/title.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/title.txt
rename to fastlane/metadata/android/zh-TW/title.txt
diff --git a/library/ui-styles/.gitignore b/library/ui-styles/.gitignore
new file mode 100644
index 0000000000..42afabfd2a
--- /dev/null
+++ b/library/ui-styles/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/library/ui-styles/build.gradle b/library/ui-styles/build.gradle
new file mode 100644
index 0000000000..47c4664636
--- /dev/null
+++ b/library/ui-styles/build.gradle
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+plugins {
+ id 'com.android.library'
+ id 'kotlin-android'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ minSdkVersion 21
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles "consumer-rules.pro"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+ buildFeatures {
+ viewBinding true
+ }
+}
+
+dependencies {
+ implementation 'androidx.appcompat:appcompat:1.3.0'
+ implementation 'com.google.android.material:material:1.3.0'
+ // Pref theme
+ implementation 'androidx.preference:preference-ktx:1.1.1'
+ // PFLockScreen attrs
+ implementation 'com.github.vector-im:PFLockScreen-Android:1.0.0-beta12'
+ // dialpad dimen
+ implementation 'im.dlg:android-dialer:1.2.5'
+}
\ No newline at end of file
diff --git a/library/ui-styles/src/debug/AndroidManifest.xml b/library/ui-styles/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000000..e32676136d
--- /dev/null
+++ b/library/ui-styles/src/debug/AndroidManifest.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugBottomSheet.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugBottomSheet.kt
new file mode 100644
index 0000000000..9998fd661f
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugBottomSheet.kt
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment
+import im.vector.lib.ui.styles.databinding.ActivityDebugMaterialThemeBinding
+
+class DebugBottomSheet : BottomSheetDialogFragment() {
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ // Reuse tha Activity layout
+ val binding = ActivityDebugMaterialThemeBinding.inflate(inflater, container, false)
+ return binding.root
+ }
+}
diff --git a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeActivity.kt
similarity index 66%
rename from vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeActivity.kt
rename to library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeActivity.kt
index 8df1feab1e..675edde4f2 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeActivity.kt
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeActivity.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 New Vector Ltd
+ * Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,26 +14,31 @@
* limitations under the License.
*/
-package im.vector.app.features.debug
+package im.vector.lib.ui.styles.debug
import android.os.Bundle
import android.view.Menu
-import androidx.appcompat.app.AlertDialog
+import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
-import com.google.android.material.bottomsheet.BottomSheetDialogFragment
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
-import im.vector.app.R
-import im.vector.app.core.utils.toast
-import im.vector.app.databinding.ActivityTestMaterialThemeBinding
+import im.vector.lib.ui.styles.R
+import im.vector.lib.ui.styles.databinding.ActivityDebugMaterialThemeBinding
// Rendering is not the same with VectorBaseActivity
abstract class DebugMaterialThemeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- val views = ActivityTestMaterialThemeBinding.inflate(layoutInflater)
+ val views = ActivityDebugMaterialThemeBinding.inflate(layoutInflater)
setContentView(views.root)
+ setSupportActionBar(views.debugToolbar)
+ supportActionBar?.let {
+ it.setDisplayShowHomeEnabled(true)
+ it.setDisplayHomeAsUpEnabled(true)
+ }
+
views.debugShowSnackbar.setOnClickListener {
Snackbar.make(views.coordinatorLayout, "Snackbar!", Snackbar.LENGTH_SHORT)
.setAction("Action") { }
@@ -41,13 +46,14 @@ abstract class DebugMaterialThemeActivity : AppCompatActivity() {
}
views.debugShowToast.setOnClickListener {
- toast("Toast")
+ Toast.makeText(this, "Toast", Toast.LENGTH_SHORT).show()
}
views.debugShowDialog.setOnClickListener {
- AlertDialog.Builder(this)
+ MaterialAlertDialogBuilder(this)
+ .setTitle("Dialog title")
.setMessage("Dialog content")
- .setIcon(R.drawable.ic_settings_x)
+ .setIcon(R.drawable.ic_debug_icon)
.setPositiveButton("Positive", null)
.setNegativeButton("Negative", null)
.setNeutralButton("Neutral", null)
@@ -55,12 +61,12 @@ abstract class DebugMaterialThemeActivity : AppCompatActivity() {
}
views.debugShowBottomSheet.setOnClickListener {
- BottomSheetDialogFragment().show(supportFragmentManager, "TAG")
+ DebugBottomSheet().show(supportFragmentManager, "TAG")
}
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
- menuInflater.inflate(R.menu.home, menu)
+ menuInflater.inflate(R.menu.menu_debug, menu)
return true
}
}
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkDefaultActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkDefaultActivity.kt
new file mode 100644
index 0000000000..d24ceb6ede
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkDefaultActivity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+class DebugMaterialThemeDarkDefaultActivity : DebugMaterialThemeActivity()
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkTestActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkTestActivity.kt
new file mode 100644
index 0000000000..fea1f27dae
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkTestActivity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+class DebugMaterialThemeDarkTestActivity : DebugMaterialThemeActivity()
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkVectorActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkVectorActivity.kt
new file mode 100644
index 0000000000..379d55d006
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkVectorActivity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+class DebugMaterialThemeDarkVectorActivity : DebugMaterialThemeActivity()
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightDefaultActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightDefaultActivity.kt
new file mode 100644
index 0000000000..57f172bdc3
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightDefaultActivity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+class DebugMaterialThemeLightDefaultActivity : DebugMaterialThemeActivity()
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightTestActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightTestActivity.kt
new file mode 100644
index 0000000000..d3a6c757fb
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightTestActivity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+class DebugMaterialThemeLightTestActivity : DebugMaterialThemeActivity()
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightVectorActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightVectorActivity.kt
new file mode 100644
index 0000000000..3fafa61421
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightVectorActivity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+class DebugMaterialThemeLightVectorActivity : DebugMaterialThemeActivity()
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesActivity.kt
new file mode 100644
index 0000000000..50d1e344e9
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesActivity.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import im.vector.lib.ui.styles.databinding.ActivityDebugButtonStylesBinding
+
+abstract class DebugVectorButtonStylesActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ val views = ActivityDebugButtonStylesBinding.inflate(layoutInflater)
+ setContentView(views.root)
+ }
+}
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesDarkActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesDarkActivity.kt
new file mode 100644
index 0000000000..102ca53f3c
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesDarkActivity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+class DebugVectorButtonStylesDarkActivity : DebugVectorButtonStylesActivity()
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesLightActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesLightActivity.kt
new file mode 100644
index 0000000000..c1b01dc6a3
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesLightActivity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+class DebugVectorButtonStylesLightActivity : DebugVectorButtonStylesActivity()
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewActivity.kt
new file mode 100644
index 0000000000..ac3d4ea696
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewActivity.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import im.vector.lib.ui.styles.databinding.ActivityDebugTextViewBinding
+
+// Rendering is not the same with VectorBaseActivity
+abstract class DebugVectorTextViewActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ val views = ActivityDebugTextViewBinding.inflate(layoutInflater)
+ setContentView(views.root)
+ }
+}
diff --git a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeDarkActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewDarkActivity.kt
similarity index 79%
rename from vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeDarkActivity.kt
rename to library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewDarkActivity.kt
index e6e1bf04ee..2d95056fef 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeDarkActivity.kt
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewDarkActivity.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 New Vector Ltd
+ * Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-package im.vector.app.features.debug
+package im.vector.lib.ui.styles.debug
-class DebugMaterialThemeDarkActivity : DebugMaterialThemeActivity()
+class DebugVectorTextViewDarkActivity : DebugVectorTextViewActivity()
diff --git a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeLightActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewLightActivity.kt
similarity index 79%
rename from vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeLightActivity.kt
rename to library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewLightActivity.kt
index d1d3061cad..33e4a0f075 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeLightActivity.kt
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewLightActivity.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 New Vector Ltd
+ * Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-package im.vector.app.features.debug
+package im.vector.lib.ui.styles.debug
-class DebugMaterialThemeLightActivity : DebugMaterialThemeActivity()
+class DebugVectorTextViewLightActivity : DebugVectorTextViewActivity()
diff --git a/library/ui-styles/src/debug/res/drawable/ic_debug_icon.xml b/library/ui-styles/src/debug/res/drawable/ic_debug_icon.xml
new file mode 100644
index 0000000000..08af7d6539
--- /dev/null
+++ b/library/ui-styles/src/debug/res/drawable/ic_debug_icon.xml
@@ -0,0 +1,22 @@
+
+
+
+
diff --git a/vector/src/debug/res/drawable/linear_divider.xml b/library/ui-styles/src/debug/res/drawable/linear_divider.xml
similarity index 100%
rename from vector/src/debug/res/drawable/linear_divider.xml
rename to library/ui-styles/src/debug/res/drawable/linear_divider.xml
diff --git a/library/ui-styles/src/debug/res/layout/activity_debug_button_styles.xml b/library/ui-styles/src/debug/res/layout/activity_debug_button_styles.xml
new file mode 100644
index 0000000000..0f129fb406
--- /dev/null
+++ b/library/ui-styles/src/debug/res/layout/activity_debug_button_styles.xml
@@ -0,0 +1,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/library/ui-styles/src/debug/res/layout/activity_debug_material_theme.xml b/library/ui-styles/src/debug/res/layout/activity_debug_material_theme.xml
new file mode 100644
index 0000000000..7df0facb12
--- /dev/null
+++ b/library/ui-styles/src/debug/res/layout/activity_debug_material_theme.xml
@@ -0,0 +1,504 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/debug/res/layout/activity_debug_text_view.xml b/library/ui-styles/src/debug/res/layout/activity_debug_text_view.xml
new file mode 100644
index 0000000000..0c16f889ec
--- /dev/null
+++ b/library/ui-styles/src/debug/res/layout/activity_debug_text_view.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/debug/res/menu/menu_debug.xml b/library/ui-styles/src/debug/res/menu/menu_debug.xml
new file mode 100644
index 0000000000..c58a29db8f
--- /dev/null
+++ b/library/ui-styles/src/debug/res/menu/menu_debug.xml
@@ -0,0 +1,19 @@
+
+
\ No newline at end of file
diff --git a/vector/src/debug/res/values/styles.xml b/library/ui-styles/src/debug/res/values/debug_styles.xml
similarity index 61%
rename from vector/src/debug/res/values/styles.xml
rename to library/ui-styles/src/debug/res/values/debug_styles.xml
index 063f652d08..d025ba1784 100644
--- a/vector/src/debug/res/values/styles.xml
+++ b/library/ui-styles/src/debug/res/values/debug_styles.xml
@@ -6,32 +6,11 @@
-
-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/AndroidManifest.xml b/library/ui-styles/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..19aa89e2e7
--- /dev/null
+++ b/library/ui-styles/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/color/bottom_navigation_icon_tint_selector.xml b/library/ui-styles/src/main/res/color/bottom_navigation_icon_tint_selector.xml
new file mode 100644
index 0000000000..403ed865e7
--- /dev/null
+++ b/library/ui-styles/src/main/res/color/bottom_navigation_icon_tint_selector.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/color/button_background_tint_selector.xml b/library/ui-styles/src/main/res/color/button_background_tint_selector.xml
new file mode 100644
index 0000000000..57135b1eb9
--- /dev/null
+++ b/library/ui-styles/src/main/res/color/button_background_tint_selector.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/color/button_social_google_background_selector_dark.xml b/library/ui-styles/src/main/res/color/button_social_google_background_selector_dark.xml
similarity index 73%
rename from vector/src/main/res/color/button_social_google_background_selector_dark.xml
rename to library/ui-styles/src/main/res/color/button_social_google_background_selector_dark.xml
index 1369414e58..3893ce3e34 100644
--- a/vector/src/main/res/color/button_social_google_background_selector_dark.xml
+++ b/library/ui-styles/src/main/res/color/button_social_google_background_selector_dark.xml
@@ -1,7 +1,7 @@
-
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/color/button_social_google_background_selector_light.xml b/library/ui-styles/src/main/res/color/button_social_google_background_selector_light.xml
new file mode 100644
index 0000000000..dc80f861b9
--- /dev/null
+++ b/library/ui-styles/src/main/res/color/button_social_google_background_selector_light.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/color/color_primary_alpha25.xml b/library/ui-styles/src/main/res/color/color_primary_alpha25.xml
new file mode 100644
index 0000000000..5afa385f3c
--- /dev/null
+++ b/library/ui-styles/src/main/res/color/color_primary_alpha25.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/drawable-hdpi/riot_splash_white.png b/library/ui-styles/src/main/res/drawable-hdpi/element_splash_white.png
similarity index 100%
rename from vector/src/main/res/drawable-hdpi/riot_splash_white.png
rename to library/ui-styles/src/main/res/drawable-hdpi/element_splash_white.png
diff --git a/vector/src/main/res/drawable-mdpi/riot_splash_white.png b/library/ui-styles/src/main/res/drawable-mdpi/element_splash_white.png
similarity index 100%
rename from vector/src/main/res/drawable-mdpi/riot_splash_white.png
rename to library/ui-styles/src/main/res/drawable-mdpi/element_splash_white.png
diff --git a/vector/src/main/res/drawable-xhdpi/riot_splash_white.png b/library/ui-styles/src/main/res/drawable-xhdpi/element_splash_white.png
similarity index 100%
rename from vector/src/main/res/drawable-xhdpi/riot_splash_white.png
rename to library/ui-styles/src/main/res/drawable-xhdpi/element_splash_white.png
diff --git a/vector/src/main/res/drawable-xxhdpi/riot_splash_white.png b/library/ui-styles/src/main/res/drawable-xxhdpi/element_splash_white.png
similarity index 100%
rename from vector/src/main/res/drawable-xxhdpi/riot_splash_white.png
rename to library/ui-styles/src/main/res/drawable-xxhdpi/element_splash_white.png
diff --git a/vector/src/main/res/drawable-xxxhdpi/riot_splash_white.png b/library/ui-styles/src/main/res/drawable-xxxhdpi/element_splash_white.png
similarity index 100%
rename from vector/src/main/res/drawable-xxxhdpi/riot_splash_white.png
rename to library/ui-styles/src/main/res/drawable-xxxhdpi/element_splash_white.png
diff --git a/library/ui-styles/src/main/res/drawable/bg_bottom_navigation.xml b/library/ui-styles/src/main/res/drawable/bg_bottom_navigation.xml
new file mode 100644
index 0000000000..3011da0026
--- /dev/null
+++ b/library/ui-styles/src/main/res/drawable/bg_bottom_navigation.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/drawable/bg_pin_key.xml b/library/ui-styles/src/main/res/drawable/bg_pin_key.xml
similarity index 100%
rename from vector/src/main/res/drawable/bg_pin_key.xml
rename to library/ui-styles/src/main/res/drawable/bg_pin_key.xml
diff --git a/vector/src/main/res/drawable/element_logo_green.xml b/library/ui-styles/src/main/res/drawable/element_logo_green.xml
similarity index 100%
rename from vector/src/main/res/drawable/element_logo_green.xml
rename to library/ui-styles/src/main/res/drawable/element_logo_green.xml
diff --git a/vector/src/main/res/drawable/file_progress_bar.xml b/library/ui-styles/src/main/res/drawable/file_progress_bar.xml
similarity index 71%
rename from vector/src/main/res/drawable/file_progress_bar.xml
rename to library/ui-styles/src/main/res/drawable/file_progress_bar.xml
index 4c96aaebf6..d175b871f7 100644
--- a/vector/src/main/res/drawable/file_progress_bar.xml
+++ b/library/ui-styles/src/main/res/drawable/file_progress_bar.xml
@@ -4,7 +4,7 @@
-
+
@@ -12,7 +12,7 @@
-
+
diff --git a/vector/src/main/res/drawable/ic_search.xml b/library/ui-styles/src/main/res/drawable/ic_search.xml
similarity index 100%
rename from vector/src/main/res/drawable/ic_search.xml
rename to library/ui-styles/src/main/res/drawable/ic_search.xml
diff --git a/vector/src/main/res/drawable/ic_social_apple.xml b/library/ui-styles/src/main/res/drawable/ic_social_apple.xml
similarity index 100%
rename from vector/src/main/res/drawable/ic_social_apple.xml
rename to library/ui-styles/src/main/res/drawable/ic_social_apple.xml
diff --git a/vector/src/main/res/drawable/ic_social_facebook.xml b/library/ui-styles/src/main/res/drawable/ic_social_facebook.xml
similarity index 100%
rename from vector/src/main/res/drawable/ic_social_facebook.xml
rename to library/ui-styles/src/main/res/drawable/ic_social_facebook.xml
diff --git a/vector/src/main/res/drawable/ic_social_github.xml b/library/ui-styles/src/main/res/drawable/ic_social_github.xml
similarity index 100%
rename from vector/src/main/res/drawable/ic_social_github.xml
rename to library/ui-styles/src/main/res/drawable/ic_social_github.xml
diff --git a/vector/src/main/res/drawable/ic_social_gitlab.xml b/library/ui-styles/src/main/res/drawable/ic_social_gitlab.xml
similarity index 100%
rename from vector/src/main/res/drawable/ic_social_gitlab.xml
rename to library/ui-styles/src/main/res/drawable/ic_social_gitlab.xml
diff --git a/vector/src/main/res/drawable/ic_social_google.xml b/library/ui-styles/src/main/res/drawable/ic_social_google.xml
similarity index 100%
rename from vector/src/main/res/drawable/ic_social_google.xml
rename to library/ui-styles/src/main/res/drawable/ic_social_google.xml
diff --git a/vector/src/main/res/drawable/ic_social_twitter.xml b/library/ui-styles/src/main/res/drawable/ic_social_twitter.xml
similarity index 100%
rename from vector/src/main/res/drawable/ic_social_twitter.xml
rename to library/ui-styles/src/main/res/drawable/ic_social_twitter.xml
diff --git a/vector/src/main/res/drawable/ic_x_gray.xml b/library/ui-styles/src/main/res/drawable/ic_x_gray.xml
similarity index 100%
rename from vector/src/main/res/drawable/ic_x_gray.xml
rename to library/ui-styles/src/main/res/drawable/ic_x_gray.xml
diff --git a/vector/src/main/res/drawable/pin_code_dot_empty.xml b/library/ui-styles/src/main/res/drawable/pin_code_dot_empty.xml
similarity index 81%
rename from vector/src/main/res/drawable/pin_code_dot_empty.xml
rename to library/ui-styles/src/main/res/drawable/pin_code_dot_empty.xml
index 6ee800a07d..1827a7682b 100644
--- a/vector/src/main/res/drawable/pin_code_dot_empty.xml
+++ b/library/ui-styles/src/main/res/drawable/pin_code_dot_empty.xml
@@ -4,7 +4,7 @@
android:shape="oval">
-
-
+
-
+
+ android:src="@drawable/element_splash_white" />
\ No newline at end of file
diff --git a/vector/src/main/res/drawable/vector_label_background.xml b/library/ui-styles/src/main/res/drawable/vector_label_background.xml
similarity index 66%
rename from vector/src/main/res/drawable/vector_label_background.xml
rename to library/ui-styles/src/main/res/drawable/vector_label_background.xml
index e721c1dd69..bc8fd22a4d 100644
--- a/vector/src/main/res/drawable/vector_label_background.xml
+++ b/library/ui-styles/src/main/res/drawable/vector_label_background.xml
@@ -4,10 +4,10 @@
-
+
+ android:color="?vctr_fab_label_stroke" />
\ No newline at end of file
diff --git a/vector/src/main/res/transition/image_preview_transition.xml b/library/ui-styles/src/main/res/transition/image_preview_transition.xml
similarity index 100%
rename from vector/src/main/res/transition/image_preview_transition.xml
rename to library/ui-styles/src/main/res/transition/image_preview_transition.xml
diff --git a/vector/src/main/res/values-land/dimens.xml b/library/ui-styles/src/main/res/values-land/dimens.xml
similarity index 100%
rename from vector/src/main/res/values-land/dimens.xml
rename to library/ui-styles/src/main/res/values-land/dimens.xml
diff --git a/vector/src/main/res/values-land/styles.xml b/library/ui-styles/src/main/res/values-land/styles.xml
similarity index 100%
rename from vector/src/main/res/values-land/styles.xml
rename to library/ui-styles/src/main/res/values-land/styles.xml
diff --git a/library/ui-styles/src/main/res/values-land/styles_dial_pad.xml b/library/ui-styles/src/main/res/values-land/styles_dial_pad.xml
new file mode 100644
index 0000000000..39c5bf9aa6
--- /dev/null
+++ b/library/ui-styles/src/main/res/values-land/styles_dial_pad.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/values-ldrtl/integers.xml b/library/ui-styles/src/main/res/values-ldrtl/integers.xml
similarity index 100%
rename from vector/src/main/res/values-ldrtl/integers.xml
rename to library/ui-styles/src/main/res/values-ldrtl/integers.xml
diff --git a/vector/src/main/res/values-sw600dp/dimens.xml b/library/ui-styles/src/main/res/values-sw600dp/dimens.xml
similarity index 100%
rename from vector/src/main/res/values-sw600dp/dimens.xml
rename to library/ui-styles/src/main/res/values-sw600dp/dimens.xml
diff --git a/library/ui-styles/src/main/res/values-v23/theme_black.xml b/library/ui-styles/src/main/res/values-v23/theme_black.xml
new file mode 100644
index 0000000000..e0399f6449
--- /dev/null
+++ b/library/ui-styles/src/main/res/values-v23/theme_black.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values-v23/theme_dark.xml b/library/ui-styles/src/main/res/values-v23/theme_dark.xml
new file mode 100644
index 0000000000..45b340eaad
--- /dev/null
+++ b/library/ui-styles/src/main/res/values-v23/theme_dark.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values-v23/theme_light.xml b/library/ui-styles/src/main/res/values-v23/theme_light.xml
new file mode 100644
index 0000000000..28a78b98bf
--- /dev/null
+++ b/library/ui-styles/src/main/res/values-v23/theme_light.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values-v27/theme_black.xml b/library/ui-styles/src/main/res/values-v27/theme_black.xml
new file mode 100644
index 0000000000..2a18b021e3
--- /dev/null
+++ b/library/ui-styles/src/main/res/values-v27/theme_black.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values-v27/theme_dark.xml b/library/ui-styles/src/main/res/values-v27/theme_dark.xml
new file mode 100644
index 0000000000..ee654bbaab
--- /dev/null
+++ b/library/ui-styles/src/main/res/values-v27/theme_dark.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values-v27/theme_light.xml b/library/ui-styles/src/main/res/values-v27/theme_light.xml
new file mode 100644
index 0000000000..0151130f5a
--- /dev/null
+++ b/library/ui-styles/src/main/res/values-v27/theme_light.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/values-w820dp/dimens.xml b/library/ui-styles/src/main/res/values-w820dp/dimens.xml
similarity index 100%
rename from vector/src/main/res/values-w820dp/dimens.xml
rename to library/ui-styles/src/main/res/values-w820dp/dimens.xml
diff --git a/library/ui-styles/src/main/res/values/attrs_room_message_colors.xml b/library/ui-styles/src/main/res/values/attrs_room_message_colors.xml
new file mode 100644
index 0000000000..68b64c21b0
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/attrs_room_message_colors.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/library/ui-styles/src/main/res/values/attrs_social_login_button.xml b/library/ui-styles/src/main/res/values/attrs_social_login_button.xml
new file mode 100644
index 0000000000..e988646049
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/attrs_social_login_button.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vector/src/main/res/values/bools.xml b/library/ui-styles/src/main/res/values/bools.xml
similarity index 100%
rename from vector/src/main/res/values/bools.xml
rename to library/ui-styles/src/main/res/values/bools.xml
diff --git a/library/ui-styles/src/main/res/values/colors.xml b/library/ui-styles/src/main/res/values/colors.xml
new file mode 100644
index 0000000000..1e94d65c55
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/colors.xml
@@ -0,0 +1,131 @@
+
+
+
+
+ @color/palette_melon
+ #2f9edb
+
+
+ #2f9edb
+ ?colorError
+
+
+ #14368BD6
+ @color/palette_azure
+
+
+ @color/palette_azure
+ @color/palette_melon
+
+
+
+ #99000000
+ #27303A
+
+ #FF61708B
+ #1E61708B
+
+
+
+ @android:color/black
+
+ #80000000
+
+ #55000000
+ #8A000000
+
+
+ @color/element_system_light
+ @color/element_system_light
+ @color/element_background_dark
+ @color/element_system_dark
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ #FF61708B
+ #FF61708B
+ #FF61708B
+
+
+ @android:color/white
+ #FF181B21
+ #FF181B21
+
+
+ #1EFFFFFF
+ @android:color/black
+ @android:color/black
+
+
+ #FF2E2F32
+ #FFA1B2D1
+ #FFA1B2D1
+
+
+ #66000000
+ #BF000000
+ #BF000000
+
+
+ #FFFFFFFF
+ #FF22262E
+ #FF090A0C
+
+
+ #FFE9EDF1
+ #FF22262E
+ #FF090A0C
+
+
+ #EBEFF5
+ #27303A
+ #27303A
+
+
+ #61708B
+ #E3E8F0
+ #E3E8F0
+
+
+ #AAAAAAAA
+ #55555555
+
+
+ #EEEEEE
+ #61708B
+
+
+ #FFF3F8FD
+ #22252B
+ #22252B
+
+
+ #2011BC8A
+ #4011BC8A
+ #4011BC8A
+
+
+
+ #FFF8E3
+ #22262E
+
+
+ @color/black_alpha
+ @android:color/transparent
+
+
diff --git a/library/ui-styles/src/main/res/values/colors_password_strength.xml b/library/ui-styles/src/main/res/values/colors_password_strength.xml
new file mode 100644
index 0000000000..038f42044c
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/colors_password_strength.xml
@@ -0,0 +1,11 @@
+
+
+
+
+ #FFF56679
+ #FFFFC666
+ #FFF8E71C
+ #FF7AC9A1
+ #FF9E9E9E
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/values/dimens.xml b/library/ui-styles/src/main/res/values/dimens.xml
similarity index 100%
rename from vector/src/main/res/values/dimens.xml
rename to library/ui-styles/src/main/res/values/dimens.xml
diff --git a/vector/src/main/res/values/integers.xml b/library/ui-styles/src/main/res/values/integers.xml
similarity index 100%
rename from vector/src/main/res/values/integers.xml
rename to library/ui-styles/src/main/res/values/integers.xml
diff --git a/library/ui-styles/src/main/res/values/palette.xml b/library/ui-styles/src/main/res/values/palette.xml
new file mode 100644
index 0000000000..16cee0c620
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/palette.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+ #368BD6
+ #74D12C
+ #AC3BA8
+ #03B381
+ #E64F7A
+ #FF812D
+
+ #0DBD8B
+ #FFFFFF
+ #FF5B55
+ #7E69FF
+ #2DC2C5
+ #5C56F5
+ #0086E6
+
+
+
+ #F4F6FA
+ #E6E8F0
+ #C1C6CD
+ #8D97A5
+ #737D8C
+ #17191C
+ #F4F9FD
+
+
+ #A9B2BC
+ #8E99A4
+ #6F7882
+ #394049
+ #15191E
+ #21262C
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/palette_mobile.xml b/library/ui-styles/src/main/res/values/palette_mobile.xml
new file mode 100644
index 0000000000..c22b9705c7
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/palette_mobile.xml
@@ -0,0 +1,58 @@
+
+
+
+
+
+ @color/palette_element_green
+ @color/palette_element_green
+
+ @color/palette_vermilion
+ @color/palette_vermilion
+
+ @color/palette_links
+ @color/palette_links
+
+
+
+
+
+
+
+
+ @color/palette_black_900
+ @color/palette_gray_200
+ @color/palette_gray_150
+ @color/palette_gray_100
+ @color/palette_gray_50
+
+ @color/palette_white
+ @color/palette_gray_250
+ @color/palette_gray_300
+ @color/palette_gray_400
+ @color/palette_gray_450
+
+
+ @color/palette_gray_25
+ @color/palette_black_950
+ @color/palette_black_950
+
+ @color/palette_white
+ @color/palette_black_800
+ @android:color/black
+
+ @color/palette_azure
+ @color/palette_grape
+ @color/palette_verde
+ @color/palette_polly
+ @color/palette_melon
+ @color/palette_aqua
+ @color/palette_prune
+ @color/palette_kiwi
+
+
+ @color/palette_verde
+ @color/palette_azure
+ @color/palette_grape
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/values/attrs_badge_fab.xml b/library/ui-styles/src/main/res/values/stylable_badge_floating_action_button.xml
similarity index 100%
rename from vector/src/main/res/values/attrs_badge_fab.xml
rename to library/ui-styles/src/main/res/values/stylable_badge_floating_action_button.xml
diff --git a/library/ui-styles/src/main/res/values/stylable_bottom_sheet_action.xml b/library/ui-styles/src/main/res/values/stylable_bottom_sheet_action.xml
new file mode 100644
index 0000000000..d6fa160d6b
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/stylable_bottom_sheet_action.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vector/src/main/res/values/attrs_state_button.xml b/library/ui-styles/src/main/res/values/stylable_button_state_view.xml
similarity index 95%
rename from vector/src/main/res/values/attrs_state_button.xml
rename to library/ui-styles/src/main/res/values/stylable_button_state_view.xml
index 7d2583cdfe..3681884735 100644
--- a/vector/src/main/res/values/attrs_state_button.xml
+++ b/library/ui-styles/src/main/res/values/stylable_button_state_view.xml
@@ -2,12 +2,9 @@
-
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/values/attrs_max_height_scroll_view.xml b/library/ui-styles/src/main/res/values/stylable_max_height_scroll_view.xml
similarity index 100%
rename from vector/src/main/res/values/attrs_max_height_scroll_view.xml
rename to library/ui-styles/src/main/res/values/stylable_max_height_scroll_view.xml
diff --git a/library/ui-styles/src/main/res/values/stylable_pool_result_line.xml b/library/ui-styles/src/main/res/values/stylable_pool_result_line.xml
new file mode 100644
index 0000000000..93e9851106
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/stylable_pool_result_line.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vector/src/main/res/values/attrs_reaction_button.xml b/library/ui-styles/src/main/res/values/stylable_reaction_button.xml
similarity index 100%
rename from vector/src/main/res/values/attrs_reaction_button.xml
rename to library/ui-styles/src/main/res/values/stylable_reaction_button.xml
diff --git a/library/ui-styles/src/main/res/values/stylable_sign_out_bottom_sheet_action_button.xml b/library/ui-styles/src/main/res/values/stylable_sign_out_bottom_sheet_action_button.xml
new file mode 100644
index 0000000000..068fb93e1b
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/stylable_sign_out_bottom_sheet_action_button.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/library/ui-styles/src/main/res/values/stylable_social_login_button_view.xml b/library/ui-styles/src/main/res/values/stylable_social_login_button_view.xml
new file mode 100644
index 0000000000..5e0b17f7df
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/stylable_social_login_button_view.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/library/ui-styles/src/main/res/values/stylable_wizard_button_view.xml b/library/ui-styles/src/main/res/values/stylable_wizard_button_view.xml
new file mode 100644
index 0000000000..2705abd7ca
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/stylable_wizard_button_view.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vector/src/main/res/values/style_snackbar.xml b/library/ui-styles/src/main/res/values/style_snackbar.xml
similarity index 51%
rename from vector/src/main/res/values/style_snackbar.xml
rename to library/ui-styles/src/main/res/values/style_snackbar.xml
index 3a826a6dda..d15f846d8f 100644
--- a/vector/src/main/res/values/style_snackbar.xml
+++ b/library/ui-styles/src/main/res/values/style_snackbar.xml
@@ -1,15 +1,15 @@
-
-
-
diff --git a/vector/src/main/res/values/styles.xml b/library/ui-styles/src/main/res/values/styles.xml
similarity index 66%
rename from vector/src/main/res/values/styles.xml
rename to library/ui-styles/src/main/res/values/styles.xml
index 8cc1fe70d8..b028d2e219 100644
--- a/vector/src/main/res/values/styles.xml
+++ b/library/ui-styles/src/main/res/values/styles.xml
@@ -1,8 +1,6 @@
-
-
diff --git a/library/ui-styles/src/main/res/values/styles_action_mode.xml b/library/ui-styles/src/main/res/values/styles_action_mode.xml
new file mode 100644
index 0000000000..f6e6079633
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_action_mode.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_alert_dialog.xml b/library/ui-styles/src/main/res/values/styles_alert_dialog.xml
new file mode 100644
index 0000000000..283a1ab1ca
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_alert_dialog.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_app_bar_layout.xml b/library/ui-styles/src/main/res/values/styles_app_bar_layout.xml
new file mode 100644
index 0000000000..973a2c5e4a
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_app_bar_layout.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_attachments.xml b/library/ui-styles/src/main/res/values/styles_attachments.xml
new file mode 100644
index 0000000000..18c2e3f95f
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_attachments.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_bottom_navigation.xml b/library/ui-styles/src/main/res/values/styles_bottom_navigation.xml
new file mode 100644
index 0000000000..8925d6a74f
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_bottom_navigation.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_bottom_sheet.xml b/library/ui-styles/src/main/res/values/styles_bottom_sheet.xml
new file mode 100644
index 0000000000..9f17342ede
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_bottom_sheet.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_buttons.xml b/library/ui-styles/src/main/res/values/styles_buttons.xml
new file mode 100644
index 0000000000..8d34995751
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_buttons.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_dial_pad.xml b/library/ui-styles/src/main/res/values/styles_dial_pad.xml
new file mode 100644
index 0000000000..34e128c56d
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_dial_pad.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_edit_text.xml b/library/ui-styles/src/main/res/values/styles_edit_text.xml
new file mode 100644
index 0000000000..d23c11c96c
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_edit_text.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_label.xml b/library/ui-styles/src/main/res/values/styles_label.xml
new file mode 100644
index 0000000000..3f38855430
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_label.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/values/styles_login.xml b/library/ui-styles/src/main/res/values/styles_login.xml
similarity index 89%
rename from vector/src/main/res/values/styles_login.xml
rename to library/ui-styles/src/main/res/values/styles_login.xml
index 8cba34daf3..ab2cb44c5a 100644
--- a/vector/src/main/res/values/styles_login.xml
+++ b/library/ui-styles/src/main/res/values/styles_login.xml
@@ -35,17 +35,17 @@
32dp
-
-
-
diff --git a/vector/src/main/res/values/styles_pin_code.xml b/library/ui-styles/src/main/res/values/styles_pin_code.xml
similarity index 69%
rename from vector/src/main/res/values/styles_pin_code.xml
rename to library/ui-styles/src/main/res/values/styles_pin_code.xml
index ecf217bf03..2b6c113359 100644
--- a/vector/src/main/res/values/styles_pin_code.xml
+++ b/library/ui-styles/src/main/res/values/styles_pin_code.xml
@@ -2,11 +2,11 @@
@@ -15,7 +15,7 @@
@drawable/pin_code_dots
-
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_popup.xml b/library/ui-styles/src/main/res/values/styles_popup.xml
new file mode 100644
index 0000000000..2aad848989
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_popup.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_progress.xml b/library/ui-styles/src/main/res/values/styles_progress.xml
new file mode 100644
index 0000000000..712e7e98b6
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_progress.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_search_view.xml b/library/ui-styles/src/main/res/values/styles_search_view.xml
new file mode 100644
index 0000000000..e1439697c9
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_search_view.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_social_login.xml b/library/ui-styles/src/main/res/values/styles_social_login.xml
new file mode 100644
index 0000000000..b527d5bfdc
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_social_login.xml
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_text_view.xml b/library/ui-styles/src/main/res/values/styles_text_view.xml
new file mode 100644
index 0000000000..77e32da345
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_text_view.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_timeline.xml b/library/ui-styles/src/main/res/values/styles_timeline.xml
new file mode 100644
index 0000000000..7fd7eac0ec
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_timeline.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/styles_toolbar.xml b/library/ui-styles/src/main/res/values/styles_toolbar.xml
new file mode 100644
index 0000000000..9f6ba102ed
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/styles_toolbar.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/text_appearances.xml b/library/ui-styles/src/main/res/values/text_appearances.xml
new file mode 100644
index 0000000000..88192f70e6
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/text_appearances.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/library/ui-styles/src/main/res/values/theme_black.xml b/library/ui-styles/src/main/res/values/theme_black.xml
new file mode 100644
index 0000000000..c472a4fae5
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/theme_black.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vector/src/main/res/values/theme_common.xml b/library/ui-styles/src/main/res/values/theme_common.xml
similarity index 63%
rename from vector/src/main/res/values/theme_common.xml
rename to library/ui-styles/src/main/res/values/theme_common.xml
index e9fbe40e5a..2e9c2c5123 100644
--- a/vector/src/main/res/values/theme_common.xml
+++ b/library/ui-styles/src/main/res/values/theme_common.xml
@@ -2,22 +2,19 @@
-
-
-
-
-
+
+
+
+
diff --git a/library/ui-styles/src/main/res/values/theme_light.xml b/library/ui-styles/src/main/res/values/theme_light.xml
new file mode 100644
index 0000000000..531f590b6c
--- /dev/null
+++ b/library/ui-styles/src/main/res/values/theme_light.xml
@@ -0,0 +1,141 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/vector/src/release/res/values/styles.xml b/library/ui-styles/src/release/res/values/styles.xml
similarity index 100%
rename from vector/src/release/res/values/styles.xml
rename to library/ui-styles/src/release/res/values/styles.xml
diff --git a/matrix-sdk-android-rx/src/main/java/org/matrix/android/sdk/rx/RxSession.kt b/matrix-sdk-android-rx/src/main/java/org/matrix/android/sdk/rx/RxSession.kt
index 252359193d..58fb760ff5 100644
--- a/matrix-sdk-android-rx/src/main/java/org/matrix/android/sdk/rx/RxSession.kt
+++ b/matrix-sdk-android-rx/src/main/java/org/matrix/android/sdk/rx/RxSession.kt
@@ -24,7 +24,7 @@ import kotlinx.coroutines.rx2.rxSingle
import org.matrix.android.sdk.api.extensions.orFalse
import org.matrix.android.sdk.api.query.QueryStringValue
import org.matrix.android.sdk.api.session.Session
-import org.matrix.android.sdk.api.session.accountdata.AccountDataEvent
+import org.matrix.android.sdk.api.session.accountdata.UserAccountDataEvent
import org.matrix.android.sdk.api.session.crypto.crosssigning.KEYBACKUP_SECRET_SSSS_NAME
import org.matrix.android.sdk.api.session.crypto.crosssigning.MASTER_KEY_SSSS_NAME
import org.matrix.android.sdk.api.session.crypto.crosssigning.MXCrossSigningInfo
@@ -35,6 +35,7 @@ import org.matrix.android.sdk.api.session.group.model.GroupSummary
import org.matrix.android.sdk.api.session.identity.ThreePid
import org.matrix.android.sdk.api.session.pushers.Pusher
import org.matrix.android.sdk.api.session.room.RoomSummaryQueryParams
+import org.matrix.android.sdk.api.session.room.accountdata.RoomAccountDataEvent
import org.matrix.android.sdk.api.session.room.members.ChangeMembershipState
import org.matrix.android.sdk.api.session.room.model.RoomMemberSummary
import org.matrix.android.sdk.api.session.room.model.RoomSummary
@@ -177,10 +178,17 @@ class RxSession(private val session: Session) {
}
}
- fun liveUserAccountData(types: Set): Observable> {
- return session.userAccountDataService().getLiveAccountDataEvents(types).asObservable()
+ fun liveUserAccountData(types: Set): Observable> {
+ return session.accountDataService().getLiveUserAccountDataEvents(types).asObservable()
.startWithCallable {
- session.userAccountDataService().getAccountDataEvents(types)
+ session.accountDataService().getUserAccountDataEvents(types)
+ }
+ }
+
+ fun liveRoomAccountData(types: Set): Observable> {
+ return session.accountDataService().getLiveRoomAccountDataEvents(types).asObservable()
+ .startWithCallable {
+ session.accountDataService().getRoomAccountDataEvents(types)
}
}
@@ -201,7 +209,7 @@ class RxSession(private val session: Session) {
}
fun liveSecretSynchronisationInfo(): Observable {
- return Observable.combineLatest, Optional, Optional, SecretsSynchronisationInfo>(
+ return Observable.combineLatest, Optional, Optional, SecretsSynchronisationInfo>(
liveUserAccountData(setOf(MASTER_KEY_SSSS_NAME, USER_SIGNING_KEY_SSSS_NAME, SELF_SIGNING_KEY_SSSS_NAME, KEYBACKUP_SECRET_SSSS_NAME)),
liveCrossSigningInfo(session.myUserId),
liveCrossSigningPrivateKeys(),
diff --git a/matrix-sdk-android/build.gradle b/matrix-sdk-android/build.gradle
index 875662759a..60352e4a97 100644
--- a/matrix-sdk-android/build.gradle
+++ b/matrix-sdk-android/build.gradle
@@ -112,7 +112,7 @@ dependencies {
def lifecycle_version = '2.2.0'
def arch_version = '2.1.0'
def markwon_version = '3.1.0'
- def daggerVersion = '2.36'
+ def daggerVersion = '2.37'
def work_version = '2.5.0'
def retrofit_version = '2.9.0'
diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/SpaceOrderTest.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/SpaceOrderTest.kt
new file mode 100644
index 0000000000..3270dfb757
--- /dev/null
+++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/SpaceOrderTest.kt
@@ -0,0 +1,260 @@
+/*
+ * Copyright 2021 The Matrix.org Foundation C.I.C.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.matrix.android.sdk
+
+import org.amshove.kluent.internal.assertEquals
+import org.junit.Assert
+import org.junit.Test
+import org.matrix.android.sdk.api.session.space.SpaceOrderUtils
+
+class SpaceOrderTest {
+
+ @Test
+ fun testOrderBetweenNodesWithOrder() {
+ val orderedSpaces = listOf(
+ "roomId1" to "a",
+ "roomId2" to "m",
+ "roomId3" to "z"
+ ).assertSpaceOrdered()
+
+ val orderCommand = SpaceOrderUtils.orderCommandsForMove(orderedSpaces, "roomId1", 1)
+
+ Assert.assertTrue("Only one order should be changed", orderCommand.size == 1)
+ Assert.assertTrue("Moved space order should change", orderCommand.first().spaceId == "roomId1")
+
+ Assert.assertTrue("m" < orderCommand[0].order)
+ Assert.assertTrue(orderCommand[0].order < "z")
+ }
+
+ @Test
+ fun testMoveLastBetweenNodesWithOrder() {
+ val orderedSpaces = listOf(
+ "roomId1" to "a",
+ "roomId2" to "m",
+ "roomId3" to "z"
+ ).assertSpaceOrdered()
+
+ val orderCommand = SpaceOrderUtils.orderCommandsForMove(orderedSpaces, "roomId1", 2)
+
+ Assert.assertTrue("Only one order should be changed", orderCommand.size == 1)
+ Assert.assertTrue("Moved space order should change", orderCommand.first().spaceId == "roomId1")
+
+ Assert.assertTrue("z" < orderCommand[0].order)
+ }
+
+ @Test
+ fun testMoveUpNoOrder() {
+ val orderedSpaces = listOf(
+ "roomId1" to null,
+ "roomId2" to null,
+ "roomId3" to null
+ ).assertSpaceOrdered()
+
+ val orderCommand = SpaceOrderUtils.orderCommandsForMove(orderedSpaces, "roomId1", 1)
+
+ Assert.assertTrue("2 orders change should be needed", orderCommand.size == 2)
+
+ val reOrdered = reOrderWithCommands(orderedSpaces, orderCommand)
+
+ Assert.assertEquals("roomId2", reOrdered[0].first)
+ Assert.assertEquals("roomId1", reOrdered[1].first)
+ Assert.assertEquals("roomId3", reOrdered[2].first)
+ }
+
+ @Test
+ fun testMoveUpNotEnoughSpace() {
+ val orderedSpaces = listOf(
+ "roomId1" to "a",
+ "roomId2" to "j",
+ "roomId3" to "k"
+ ).assertSpaceOrdered()
+
+ val orderCommand = SpaceOrderUtils.orderCommandsForMove(orderedSpaces, "roomId1", 1)
+
+ Assert.assertTrue("more orders change should be needed", orderCommand.size > 1)
+
+ val reOrdered = reOrderWithCommands(orderedSpaces, orderCommand)
+
+ Assert.assertEquals("roomId2", reOrdered[0].first)
+ Assert.assertEquals("roomId1", reOrdered[1].first)
+ Assert.assertEquals("roomId3", reOrdered[2].first)
+ }
+
+ @Test
+ fun testMoveEndNoOrder() {
+ val orderedSpaces = listOf(
+ "roomId1" to null,
+ "roomId2" to null,
+ "roomId3" to null
+ ).assertSpaceOrdered()
+
+ val orderCommand = SpaceOrderUtils.orderCommandsForMove(orderedSpaces, "roomId1", 2)
+
+ // Actually 2 could be enough... as it's last it can stays with null
+ Assert.assertEquals("3 orders change should be needed", 3, orderCommand.size)
+
+ val reOrdered = reOrderWithCommands(orderedSpaces, orderCommand)
+
+ Assert.assertEquals("roomId2", reOrdered[0].first)
+ Assert.assertEquals("roomId3", reOrdered[1].first)
+ Assert.assertEquals("roomId1", reOrdered[2].first)
+ }
+
+ @Test
+ fun testMoveUpBiggerOrder() {
+ val orderedSpaces = listOf(
+ "roomId1" to "aaaa",
+ "roomId2" to "ffff",
+ "roomId3" to "pppp",
+ "roomId4" to null,
+ "roomId5" to null,
+ "roomId6" to null
+ ).assertSpaceOrdered()
+
+ val orderCommand = SpaceOrderUtils.orderCommandsForMove(orderedSpaces, "roomId2", 3)
+
+ // Actually 2 could be enough... as it's last it can stays with null
+ Assert.assertEquals("3 orders change should be needed", 3, orderCommand.size)
+
+ val reOrdered = reOrderWithCommands(orderedSpaces, orderCommand)
+
+ Assert.assertEquals("roomId1", reOrdered[0].first)
+ Assert.assertEquals("roomId3", reOrdered[1].first)
+ Assert.assertEquals("roomId4", reOrdered[2].first)
+ Assert.assertEquals("roomId5", reOrdered[3].first)
+ Assert.assertEquals("roomId2", reOrdered[4].first)
+ Assert.assertEquals("roomId6", reOrdered[5].first)
+ }
+
+ @Test
+ fun testMoveDownBetweenNodesWithOrder() {
+ val orderedSpaces = listOf(
+ "roomId1" to "a",
+ "roomId2" to "m",
+ "roomId3" to "z"
+ ).assertSpaceOrdered()
+
+ val orderCommand = SpaceOrderUtils.orderCommandsForMove(orderedSpaces, "roomId3", -1)
+
+ Assert.assertTrue("Only one order should be changed", orderCommand.size == 1)
+ Assert.assertTrue("Moved space order should change", orderCommand.first().spaceId == "roomId3")
+
+ val reOrdered = reOrderWithCommands(orderedSpaces, orderCommand)
+
+ Assert.assertEquals("roomId1", reOrdered[0].first)
+ Assert.assertEquals("roomId3", reOrdered[1].first)
+ Assert.assertEquals("roomId2", reOrdered[2].first)
+ }
+
+ @Test
+ fun testMoveDownNoOrder() {
+ val orderedSpaces = listOf(
+ "roomId1" to null,
+ "roomId2" to null,
+ "roomId3" to null
+ ).assertSpaceOrdered()
+
+ val orderCommand = SpaceOrderUtils.orderCommandsForMove(orderedSpaces, "roomId3", -1)
+
+ Assert.assertTrue("2 orders change should be needed", orderCommand.size == 2)
+
+ val reOrdered = reOrderWithCommands(orderedSpaces, orderCommand)
+
+ Assert.assertEquals("roomId1", reOrdered[0].first)
+ Assert.assertEquals("roomId3", reOrdered[1].first)
+ Assert.assertEquals("roomId2", reOrdered[2].first)
+ }
+
+ @Test
+ fun testMoveDownBiggerOrder() {
+ val orderedSpaces = listOf(
+ "roomId1" to "aaaa",
+ "roomId2" to "ffff",
+ "roomId3" to "pppp",
+ "roomId4" to null,
+ "roomId5" to null,
+ "roomId6" to null
+ ).assertSpaceOrdered()
+
+ val orderCommand = SpaceOrderUtils.orderCommandsForMove(orderedSpaces, "roomId5", -4)
+
+ Assert.assertEquals("1 order change should be needed", 1, orderCommand.size)
+
+ val reOrdered = reOrderWithCommands(orderedSpaces, orderCommand)
+
+ Assert.assertEquals("roomId5", reOrdered[0].first)
+ Assert.assertEquals("roomId1", reOrdered[1].first)
+ Assert.assertEquals("roomId2", reOrdered[2].first)
+ Assert.assertEquals("roomId3", reOrdered[3].first)
+ Assert.assertEquals("roomId4", reOrdered[4].first)
+ Assert.assertEquals("roomId6", reOrdered[5].first)
+ }
+
+ @Test
+ fun testMultipleMoveOrder() {
+ val orderedSpaces = listOf(
+ "roomId1" to null,
+ "roomId2" to null,
+ "roomId3" to null,
+ "roomId4" to null,
+ "roomId5" to null,
+ "roomId6" to null
+ ).assertSpaceOrdered()
+
+ // move 5 to Top
+ val fiveToTop = SpaceOrderUtils.orderCommandsForMove(orderedSpaces, "roomId5", -4)
+
+ val fiveTopReOrder = reOrderWithCommands(orderedSpaces, fiveToTop)
+
+ // now move 4 to second
+ val orderCommand = SpaceOrderUtils.orderCommandsForMove(fiveTopReOrder, "roomId4", -3)
+
+ val reOrdered = reOrderWithCommands(fiveTopReOrder, orderCommand)
+ // second order should cost 1 re-order
+ Assert.assertEquals(1, orderCommand.size)
+
+ Assert.assertEquals("roomId5", reOrdered[0].first)
+ Assert.assertEquals("roomId4", reOrdered[1].first)
+ Assert.assertEquals("roomId1", reOrdered[2].first)
+ Assert.assertEquals("roomId2", reOrdered[3].first)
+ Assert.assertEquals("roomId3", reOrdered[4].first)
+ Assert.assertEquals("roomId6", reOrdered[5].first)
+ }
+
+ @Test
+ fun testComparator() {
+ listOf(
+ "roomId2" to "a",
+ "roomId1" to "b",
+ "roomId3" to null,
+ "roomId4" to null
+ ).assertSpaceOrdered()
+ }
+
+ private fun reOrderWithCommands(orderedSpaces: List>, orderCommand: List) =
+ orderedSpaces.map { orderInfo ->
+ orderInfo.first to (orderCommand.find { it.spaceId == orderInfo.first }?.order ?: orderInfo.second)
+ }
+ .sortedWith(testSpaceComparator)
+
+ private fun List>.assertSpaceOrdered(): List> {
+ assertEquals(this, this.sortedWith(testSpaceComparator))
+ return this
+ }
+
+ private val testSpaceComparator = compareBy, String?>(nullsLast()) { it.second }.thenBy { it.first }
+}
diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/StringOrderTest.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/StringOrderTest.kt
new file mode 100644
index 0000000000..a625362c04
--- /dev/null
+++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/StringOrderTest.kt
@@ -0,0 +1,110 @@
+/*
+ * Copyright 2021 The Matrix.org Foundation C.I.C.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.matrix.android.sdk
+
+import org.amshove.kluent.internal.assertEquals
+import org.junit.Assert
+import org.junit.Test
+import org.matrix.android.sdk.api.MatrixPatterns
+import org.matrix.android.sdk.api.util.StringOrderUtils
+
+class StringOrderTest {
+
+ @Test
+ fun testbasing() {
+ assertEquals("a", StringOrderUtils.baseToString(StringOrderUtils.stringToBase("a", StringOrderUtils.DEFAULT_ALPHABET), StringOrderUtils.DEFAULT_ALPHABET))
+ assertEquals("element", StringOrderUtils.baseToString(StringOrderUtils.stringToBase("element", StringOrderUtils.DEFAULT_ALPHABET), StringOrderUtils.DEFAULT_ALPHABET))
+ assertEquals("matrix", StringOrderUtils.baseToString(StringOrderUtils.stringToBase("matrix", StringOrderUtils.DEFAULT_ALPHABET), StringOrderUtils.DEFAULT_ALPHABET))
+ }
+
+ @Test
+ fun testValid() {
+ println(StringOrderUtils.DEFAULT_ALPHABET.joinToString(","))
+
+ assert(MatrixPatterns.isValidOrderString("a"))
+ assert(MatrixPatterns.isValidOrderString(" "))
+ assert(MatrixPatterns.isValidOrderString("abc"))
+ assert(!MatrixPatterns.isValidOrderString("abcê"))
+ assert(!MatrixPatterns.isValidOrderString(""))
+ assert(MatrixPatterns.isValidOrderString("!"))
+ assert(MatrixPatterns.isValidOrderString("!\"#\$%&'()*+,012"))
+ assert(!MatrixPatterns.isValidOrderString(Char(' '.code - 1).toString()))
+
+ assert(!MatrixPatterns.isValidOrderString(
+ buildString {
+ for (i in 0..49) {
+ append(StringOrderUtils.DEFAULT_ALPHABET.random())
+ }
+ }
+ ))
+
+ assert(MatrixPatterns.isValidOrderString(
+ buildString {
+ for (i in 0..48) {
+ append(StringOrderUtils.DEFAULT_ALPHABET.random())
+ }
+ }
+ ))
+ }
+
+ @Test
+ fun testAverage() {
+ assertAverage("${StringOrderUtils.DEFAULT_ALPHABET.first()}", "m")
+ assertAverage("aa", "aab")
+ assertAverage("matrix", "element")
+ assertAverage("mmm", "mmmmm")
+ assertAverage("aab", "aa")
+ assertAverage("", "aa")
+ assertAverage("a", "z")
+ assertAverage("ground", "sky")
+ }
+
+ @Test
+ fun testMidPoints() {
+ val orders = StringOrderUtils.midPoints("element", "matrix", 4)
+ assertEquals(4, orders!!.size)
+ assert("element" < orders[0])
+ assert(orders[0] < orders[1])
+ assert(orders[1] < orders[2])
+ assert(orders[2] < orders[3])
+ assert(orders[3] < "matrix")
+
+ println("element < ${orders.joinToString(" < ") { "[$it]" }} < matrix")
+
+ val orders2 = StringOrderUtils.midPoints("a", "d", 4)
+ assertEquals(null, orders2)
+ }
+
+ @Test
+ fun testRenumberNeeded() {
+ assertEquals(null, StringOrderUtils.average("a", "a"))
+ assertEquals(null, StringOrderUtils.average("", ""))
+ assertEquals(null, StringOrderUtils.average("a", "b"))
+ assertEquals(null, StringOrderUtils.average("b", "a"))
+ assertEquals(null, StringOrderUtils.average("mmmm", "mmmm"))
+ assertEquals(null, StringOrderUtils.average("a${Char(0)}", "a"))
+ }
+
+ private fun assertAverage(first: String, second: String) {
+ val left = first.takeIf { first < second } ?: second
+ val right = first.takeIf { first > second } ?: second
+ val av1 = StringOrderUtils.average(left, right)!!
+ println("[$left] < [$av1] < [$right]")
+ Assert.assertTrue(left < av1)
+ Assert.assertTrue(av1 < right)
+ }
+}
diff --git a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/ssss/QuadSTests.kt b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/ssss/QuadSTests.kt
index 25c22bca57..d14de30c90 100644
--- a/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/ssss/QuadSTests.kt
+++ b/matrix-sdk-android/src/androidTest/java/org/matrix/android/sdk/internal/crypto/ssss/QuadSTests.kt
@@ -33,7 +33,7 @@ import org.matrix.android.sdk.common.TestConstants
import org.matrix.android.sdk.internal.crypto.SSSS_ALGORITHM_AES_HMAC_SHA2
import org.matrix.android.sdk.internal.crypto.crosssigning.toBase64NoPadding
import org.matrix.android.sdk.internal.crypto.secrets.DefaultSharedSecretStorageService
-import org.matrix.android.sdk.api.session.accountdata.AccountDataEvent
+import org.matrix.android.sdk.api.session.accountdata.UserAccountDataEvent
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
@@ -73,12 +73,12 @@ class QuadSTests : InstrumentedTest {
// Assert Account data is updated
val accountDataLock = CountDownLatch(1)
- var accountData: AccountDataEvent? = null
+ var accountData: UserAccountDataEvent? = null
val liveAccountData = runBlocking(Dispatchers.Main) {
- aliceSession.userAccountDataService().getLiveAccountDataEvent("${DefaultSharedSecretStorageService.KEY_ID_BASE}.$TEST_KEY_ID")
+ aliceSession.accountDataService().getLiveUserAccountDataEvent("${DefaultSharedSecretStorageService.KEY_ID_BASE}.$TEST_KEY_ID")
}
- val accountDataObserver = Observer?> { t ->
+ val accountDataObserver = Observer?> { t ->
if (t?.getOrNull()?.type == "${DefaultSharedSecretStorageService.KEY_ID_BASE}.$TEST_KEY_ID") {
accountData = t.getOrNull()
accountDataLock.countDown()
@@ -100,13 +100,13 @@ class QuadSTests : InstrumentedTest {
quadS.setDefaultKey(TEST_KEY_ID)
}
- var defaultKeyAccountData: AccountDataEvent? = null
+ var defaultKeyAccountData: UserAccountDataEvent? = null
val defaultDataLock = CountDownLatch(1)
val liveDefAccountData = runBlocking(Dispatchers.Main) {
- aliceSession.userAccountDataService().getLiveAccountDataEvent(DefaultSharedSecretStorageService.DEFAULT_KEY_ID)
+ aliceSession.accountDataService().getLiveUserAccountDataEvent(DefaultSharedSecretStorageService.DEFAULT_KEY_ID)
}
- val accountDefDataObserver = Observer?> { t ->
+ val accountDefDataObserver = Observer?> { t ->
if (t?.getOrNull()?.type == DefaultSharedSecretStorageService.DEFAULT_KEY_ID) {
defaultKeyAccountData = t.getOrNull()!!
defaultDataLock.countDown()
@@ -206,7 +206,7 @@ class QuadSTests : InstrumentedTest {
)
}
- val accountDataEvent = aliceSession.userAccountDataService().getAccountDataEvent("my.secret")
+ val accountDataEvent = aliceSession.accountDataService().getUserAccountDataEvent("my.secret")
val encryptedContent = accountDataEvent?.content?.get("encrypted") as? Map<*, *>
assertEquals("Content should contains two encryptions", 2, encryptedContent?.keys?.size ?: 0)
@@ -275,14 +275,14 @@ class QuadSTests : InstrumentedTest {
mTestHelper.signOutAndClose(aliceSession)
}
- private fun assertAccountData(session: Session, type: String): AccountDataEvent {
+ private fun assertAccountData(session: Session, type: String): UserAccountDataEvent {
val accountDataLock = CountDownLatch(1)
- var accountData: AccountDataEvent? = null
+ var accountData: UserAccountDataEvent? = null
val liveAccountData = runBlocking(Dispatchers.Main) {
- session.userAccountDataService().getLiveAccountDataEvent(type)
+ session.accountDataService().getLiveUserAccountDataEvent(type)
}
- val accountDataObserver = Observer?> { t ->
+ val accountDataObserver = Observer?> { t ->
if (t?.getOrNull()?.type == type) {
accountData = t.getOrNull()
accountDataLock.countDown()
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 d8532c77c8..7f5f3f54ef 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
@@ -71,6 +71,9 @@ object MatrixPatterns {
private const val LINK_TO_APP_ROOM_ALIAS_REGEXP = APP_BASE_REGEX + MATRIX_ROOM_ALIAS_REGEX + SEP_REGEX + MATRIX_EVENT_IDENTIFIER_REGEX
private val PATTERN_CONTAIN_APP_LINK_PERMALINK_ROOM_ALIAS = LINK_TO_APP_ROOM_ALIAS_REGEXP.toRegex(RegexOption.IGNORE_CASE)
+ // ascii characters in the range \x20 (space) to \x7E (~)
+ val ORDER_STRING_REGEX = "[ -~]+".toRegex()
+
// list of patterns to find some matrix item.
val MATRIX_PATTERNS = listOf(
PATTERN_CONTAIN_MATRIX_TO_PERMALINK_ROOM_ID,
@@ -146,4 +149,18 @@ object MatrixPatterns {
fun extractServerNameFromId(matrixId: String?): String? {
return matrixId?.substringAfter(":", missingDelimiterValue = "")?.takeIf { it.isNotEmpty() }
}
+
+ /**
+ * Orders which are not strings, or do not consist solely of ascii characters in the range \x20 (space) to \x7E (~),
+ * or consist of more than 50 characters, are forbidden and the field should be ignored if received.
+ */
+ fun isValidOrderString(order: String?) : Boolean {
+ return order != null && order.length < 50 && order matches ORDER_STRING_REGEX
+ }
+
+ fun candidateAliasFromRoomName(name: String): String {
+ return Regex("\\s").replace(name.lowercase(), "_").let {
+ "[^a-z0-9._%#@=+-]".toRegex().replace(it, "")
+ }
+ }
}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/Session.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/Session.kt
index e888e5d2de..2f981ffbbe 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/Session.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/Session.kt
@@ -24,7 +24,7 @@ import org.matrix.android.sdk.api.failure.GlobalError
import org.matrix.android.sdk.api.federation.FederationService
import org.matrix.android.sdk.api.pushrules.PushRuleService
import org.matrix.android.sdk.api.session.account.AccountService
-import org.matrix.android.sdk.api.session.accountdata.AccountDataService
+import org.matrix.android.sdk.api.session.accountdata.SessionAccountDataService
import org.matrix.android.sdk.api.session.cache.CacheService
import org.matrix.android.sdk.api.session.call.CallSignalingService
import org.matrix.android.sdk.api.session.content.ContentUploadStateTracker
@@ -239,9 +239,9 @@ interface Session :
fun openIdService(): OpenIdService
/**
- * Returns the user account data service associated with the session
+ * Returns the account data service associated with the session
*/
- fun userAccountDataService(): AccountDataService
+ fun accountDataService(): SessionAccountDataService
/**
* Add a listener to the session.
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/accountdata/SessionAccountDataService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/accountdata/SessionAccountDataService.kt
new file mode 100644
index 0000000000..2ffb9112d1
--- /dev/null
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/accountdata/SessionAccountDataService.kt
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2020 The Matrix.org Foundation C.I.C.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.matrix.android.sdk.api.session.accountdata
+
+import androidx.lifecycle.LiveData
+import org.matrix.android.sdk.api.session.events.model.Content
+import org.matrix.android.sdk.api.session.room.accountdata.RoomAccountDataEvent
+import org.matrix.android.sdk.api.util.Optional
+
+/**
+ * This service is attached globally to the session.
+ */
+interface SessionAccountDataService {
+ /**
+ * Retrieve the account data with the provided type or null if not found
+ */
+ fun getUserAccountDataEvent(type: String): UserAccountDataEvent?
+
+ /**
+ * Observe the account data with the provided type
+ */
+ fun getLiveUserAccountDataEvent(type: String): LiveData>
+
+ /**
+ * Retrieve the account data with the provided types. The return list can have a different size that
+ * the size of the types set, because some AccountData may not exist.
+ * If an empty set is provided, all the AccountData are retrieved
+ */
+ fun getUserAccountDataEvents(types: Set): List
+
+ /**
+ * Observe the account data with the provided types. If an empty set is provided, all the AccountData are observed
+ */
+ fun getLiveUserAccountDataEvents(types: Set): LiveData>
+
+ /**
+ * Retrieve the room account data with the provided types. The return list can have a different size that
+ * the size of the types set, because some AccountData may not exist.
+ * If an empty set is provided, all the room AccountData are retrieved
+ */
+ fun getRoomAccountDataEvents(types: Set): List
+
+ /**
+ * Observe the room account data with the provided types. If an empty set is provided, AccountData of every room are observed
+ */
+ fun getLiveRoomAccountDataEvents(types: Set): LiveData>
+
+ /**
+ * Update the account data with the provided type and the provided account data content
+ */
+ suspend fun updateUserAccountData(type: String, content: Content)
+}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/accountdata/AccountDataEvent.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/accountdata/UserAccountDataEvent.kt
similarity index 91%
rename from matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/accountdata/AccountDataEvent.kt
rename to matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/accountdata/UserAccountDataEvent.kt
index e5cbd07aaf..77381a28c4 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/accountdata/AccountDataEvent.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/accountdata/UserAccountDataEvent.kt
@@ -22,10 +22,10 @@ import org.matrix.android.sdk.api.session.events.model.Content
/**
* This is a simplified Event with just a type and a content.
- * Currently used types are defined in [UserAccountDataTypes].
+ * Currently used types are defined in [UserAccountDataTypes]
*/
@JsonClass(generateAdapter = true)
-data class AccountDataEvent(
+data class UserAccountDataEvent(
@Json(name = "type") val type: String,
@Json(name = "content") val content: Content
)
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/call/CallListener.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/call/CallListener.kt
index 303add747f..d17be59cd4 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/call/CallListener.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/call/CallListener.kt
@@ -17,6 +17,7 @@
package org.matrix.android.sdk.api.session.call
import org.matrix.android.sdk.api.session.room.model.call.CallAnswerContent
+import org.matrix.android.sdk.api.session.room.model.call.CallAssertedIdentityContent
import org.matrix.android.sdk.api.session.room.model.call.CallCandidatesContent
import org.matrix.android.sdk.api.session.room.model.call.CallHangupContent
import org.matrix.android.sdk.api.session.room.model.call.CallInviteContent
@@ -61,4 +62,9 @@ interface CallListener {
* Called when the call has been managed by an other session
*/
fun onCallManagedByOtherSession(callId: String)
+
+ /**
+ * Called when an asserted identity event is received
+ */
+ fun onCallAssertedIdentityReceived(callAssertedIdentityContent: CallAssertedIdentityContent)
}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt
index 1b7a5243e2..e3f00a24b6 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/crypto/CryptoService.kt
@@ -42,7 +42,6 @@ import org.matrix.android.sdk.internal.crypto.model.event.RoomKeyWithHeldContent
import org.matrix.android.sdk.internal.crypto.model.rest.DeviceInfo
import org.matrix.android.sdk.internal.crypto.model.rest.DevicesListResponse
import org.matrix.android.sdk.internal.crypto.model.rest.RoomKeyRequestBody
-import kotlin.jvm.Throws
interface CryptoService {
@@ -82,9 +81,11 @@ interface CryptoService {
fun getDeviceTrackingStatus(userId: String): Int
- fun importRoomKeys(roomKeysAsArray: ByteArray, password: String, progressListener: ProgressListener?, callback: MatrixCallback)
+ suspend fun importRoomKeys(roomKeysAsArray: ByteArray,
+ password: String,
+ progressListener: ProgressListener?): ImportRoomKeysResult
- fun exportRoomKeys(password: String, callback: MatrixCallback)
+ suspend fun exportRoomKeys(password: String): ByteArray
fun setRoomBlacklistUnverifiedDevices(roomId: String)
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/EventType.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/EventType.kt
index 229a53fa9d..9c3fdd57da 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/EventType.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/events/model/EventType.kt
@@ -76,6 +76,8 @@ object EventType {
const val CALL_NEGOTIATE = "m.call.negotiate"
const val CALL_REJECT = "m.call.reject"
const val CALL_HANGUP = "m.call.hangup"
+ const val CALL_ASSERTED_IDENTITY = "m.call.asserted_identity"
+ const val CALL_ASSERTED_IDENTITY_PREFIX = "org.matrix.call.asserted_identity"
// This type is not processed by the client, just sent to the server
const val CALL_REPLACES = "m.call.replaces"
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/identity/IdentityService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/identity/IdentityService.kt
index 8f8967e8fb..ae546b6cec 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/identity/IdentityService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/identity/IdentityService.kt
@@ -35,7 +35,7 @@ interface IdentityService {
/**
* Check if the identity server is valid
* See https://matrix.org/docs/spec/identity_service/latest#status-check
- * RiotX SDK only supports identity server API v2
+ * Matrix Android SDK2 only supports identity server API v2
*/
suspend fun isValidIdentityServer(url: String)
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/AliasAvailabilityResult.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/AliasAvailabilityResult.kt
new file mode 100644
index 0000000000..6f607569c0
--- /dev/null
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/AliasAvailabilityResult.kt
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2021 The Matrix.org Foundation C.I.C.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.matrix.android.sdk.api.session.room
+
+import org.matrix.android.sdk.api.session.room.alias.RoomAliasError
+
+sealed class AliasAvailabilityResult {
+ object Available: AliasAvailabilityResult()
+ data class NotAvailable(val roomAliasError: RoomAliasError) : AliasAvailabilityResult()
+}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/Room.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/Room.kt
index 41bcbf8ff6..cb04b05a74 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/Room.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/Room.kt
@@ -17,7 +17,7 @@
package org.matrix.android.sdk.api.session.room
import androidx.lifecycle.LiveData
-import org.matrix.android.sdk.api.session.accountdata.AccountDataService
+import org.matrix.android.sdk.api.session.room.accountdata.RoomAccountDataService
import org.matrix.android.sdk.api.session.room.alias.AliasService
import org.matrix.android.sdk.api.session.room.call.RoomCallService
import org.matrix.android.sdk.api.session.room.crypto.RoomCryptoService
@@ -57,7 +57,7 @@ interface Room :
RelationService,
RoomCryptoService,
RoomPushRuleService,
- AccountDataService {
+ RoomAccountDataService {
/**
* The roomId of this room
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomDirectoryService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomDirectoryService.kt
index 176de8e408..f3e3913bc1 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomDirectoryService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/RoomDirectoryService.kt
@@ -40,4 +40,6 @@ interface RoomDirectoryService {
* Set the visibility of a room in the directory
*/
suspend fun setRoomDirectoryVisibility(roomId: String, roomDirectoryVisibility: RoomDirectoryVisibility)
+
+ suspend fun checkAliasAvailability(aliasLocalPart: String?) : AliasAvailabilityResult
}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/accountdata/RoomAccountDataEvent.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/accountdata/RoomAccountDataEvent.kt
new file mode 100644
index 0000000000..eb676ab5e7
--- /dev/null
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/accountdata/RoomAccountDataEvent.kt
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2020 The Matrix.org Foundation C.I.C.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.matrix.android.sdk.api.session.room.accountdata
+
+import org.matrix.android.sdk.api.session.events.model.Content
+
+/**
+ * This is a simplified Event with just a roomId, a type and a content.
+ * Currently used types are defined in [RoomAccountDataTypes].
+ */
+data class RoomAccountDataEvent(
+ val roomId: String,
+ val type: String,
+ val content: Content
+)
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/accountdata/AccountDataService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/accountdata/RoomAccountDataService.kt
similarity index 81%
rename from matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/accountdata/AccountDataService.kt
rename to matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/accountdata/RoomAccountDataService.kt
index 77f3eb0cd9..190749c85c 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/accountdata/AccountDataService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/accountdata/RoomAccountDataService.kt
@@ -14,37 +14,37 @@
* limitations under the License.
*/
-package org.matrix.android.sdk.api.session.accountdata
+package org.matrix.android.sdk.api.session.room.accountdata
import androidx.lifecycle.LiveData
import org.matrix.android.sdk.api.session.events.model.Content
import org.matrix.android.sdk.api.util.Optional
/**
- * This service can be attached globally to the session so it represents user data or attached to a single room.
+ * This service is attached to a single room.
*/
-interface AccountDataService {
+interface RoomAccountDataService {
/**
* Retrieve the account data with the provided type or null if not found
*/
- fun getAccountDataEvent(type: String): AccountDataEvent?
+ fun getAccountDataEvent(type: String): RoomAccountDataEvent?
/**
* Observe the account data with the provided type
*/
- fun getLiveAccountDataEvent(type: String): LiveData>
+ fun getLiveAccountDataEvent(type: String): LiveData>
/**
* Retrieve the account data with the provided types. The return list can have a different size that
* the size of the types set, because some AccountData may not exist.
* If an empty set is provided, all the AccountData are retrieved
*/
- fun getAccountDataEvents(types: Set): List
+ fun getAccountDataEvents(types: Set): List
/**
* Observe the account data with the provided types. If an empty set is provided, all the AccountData are observed
*/
- fun getLiveAccountDataEvents(types: Set): LiveData>
+ fun getLiveAccountDataEvents(types: Set): LiveData>
/**
* Update the account data with the provided type and the provided account data content
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/accountdata/RoomAccountDataTypes.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/accountdata/RoomAccountDataTypes.kt
index 0e80c307b4..96eb86c0d6 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/accountdata/RoomAccountDataTypes.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/accountdata/RoomAccountDataTypes.kt
@@ -20,4 +20,5 @@ object RoomAccountDataTypes {
const val EVENT_TYPE_VIRTUAL_ROOM = "im.vector.is_virtual_room"
const val EVENT_TYPE_TAG = "m.tag"
const val EVENT_TYPE_FULLY_READ = "m.fully_read"
+ const val EVENT_TYPE_SPACE_ORDER = "org.matrix.msc3230.space_order" // m.space_order
}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/call/CallAssertedIdentityContent.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/call/CallAssertedIdentityContent.kt
new file mode 100644
index 0000000000..4c5413425f
--- /dev/null
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/room/model/call/CallAssertedIdentityContent.kt
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2021 The Matrix.org Foundation C.I.C.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.matrix.android.sdk.api.session.room.model.call
+
+import com.squareup.moshi.Json
+import com.squareup.moshi.JsonClass
+
+/**
+ * This event is sent by the callee when they wish to answer the call.
+ */
+@JsonClass(generateAdapter = true)
+data class CallAssertedIdentityContent(
+ /**
+ * Required. The ID of the call this event relates to.
+ */
+ @Json(name = "call_id") override val callId: String,
+ /**
+ * Required. ID to let user identify remote echo of their own events
+ */
+ @Json(name = "party_id") override val partyId: String? = null,
+ /**
+ * Required. The version of the VoIP specification this messages adheres to.
+ */
+ @Json(name = "version") override val version: String?,
+
+ /**
+ * Optional. Used to inform the transferee who they're now speaking to.
+ */
+ @Json(name = "asserted_identity") val assertedIdentity: AssertedIdentity? = null
+) : CallSignalingContent {
+
+ /**
+ * A user ID may be included if relevant, but unlike target_user, it is purely informational.
+ * The asserted identity may not represent a matrix user at all,
+ * in which case just a display_name may be given, or a perhaps a display_name and avatar_url.
+ */
+ @JsonClass(generateAdapter = true)
+ data class AssertedIdentity(
+ @Json(name = "id") val id: String? = null,
+ @Json(name = "display_name") val displayName: String? = null,
+ @Json(name = "avatar_url") val avatarUrl: String? = null
+ )
+}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/SpaceOrderUtils.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/SpaceOrderUtils.kt
new file mode 100644
index 0000000000..844a5adcb4
--- /dev/null
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/SpaceOrderUtils.kt
@@ -0,0 +1,105 @@
+/*
+ * Copyright 2021 The Matrix.org Foundation C.I.C.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.matrix.android.sdk.api.session.space
+
+import org.matrix.android.sdk.api.util.StringOrderUtils
+
+/**
+ * Adds some utilities to compute correct string orders when ordering spaces.
+ * After moving a space (e.g via DnD), client should limit the number of room account data update.
+ * For example if the space is moved between two other spaces with orders, just update the moved space order by computing
+ * a mid point between the surrounding orders.
+ * If the space is moved after a space with no order, all the previous spaces should be then ordered,
+ * and the computed orders should be chosen so that there is enough gaps in between them to facilitate future re-order.
+ * Re numbering (i.e change all spaces m.space.order account data) should be avoided as much as possible,
+ * as the updates might not be atomic for other clients and would makes spaces jump around.
+ */
+object SpaceOrderUtils {
+
+ data class SpaceReOrderCommand(
+ val spaceId: String,
+ val order: String
+ )
+
+ /**
+ * Returns a minimal list of order change in order to re order the space list as per given move.
+ */
+ fun orderCommandsForMove(orderedSpacesToOrderMap: List>, movedSpaceId: String, delta: Int): List {
+ val movedIndex = orderedSpacesToOrderMap.indexOfFirst { it.first == movedSpaceId }
+ if (movedIndex == -1) return emptyList()
+ if (delta == 0) return emptyList()
+
+ val targetIndex = if (delta > 0) movedIndex + delta else (movedIndex + delta - 1)
+
+ val nodesToReNumber = mutableListOf()
+ var lowerBondOrder: String? = null
+ var index = targetIndex
+ while (index >= 0 && lowerBondOrder == null) {
+ val node = orderedSpacesToOrderMap.getOrNull(index)
+ if (node != null /*null when adding at the end*/) {
+ val nodeOrder = node.second
+ if (node.first == movedSpaceId) break
+ if (nodeOrder == null) {
+ nodesToReNumber.add(0, node.first)
+ } else {
+ lowerBondOrder = nodeOrder
+ }
+ }
+ index--
+ }
+ nodesToReNumber.add(movedSpaceId)
+ val afterSpace: Pair? = if (orderedSpacesToOrderMap.indices.contains(targetIndex + 1)) {
+ orderedSpacesToOrderMap[targetIndex + 1]
+ } else null
+
+ val defaultMaxOrder = CharArray(4) { StringOrderUtils.DEFAULT_ALPHABET.last() }
+ .joinToString("")
+
+ val defaultMinOrder = CharArray(4) { StringOrderUtils.DEFAULT_ALPHABET.first() }
+ .joinToString("")
+
+ val afterOrder = afterSpace?.second ?: defaultMaxOrder
+
+ val beforeOrder = lowerBondOrder ?: defaultMinOrder
+
+ val newOrder = StringOrderUtils.midPoints(beforeOrder, afterOrder, nodesToReNumber.size)
+
+ if (newOrder.isNullOrEmpty()) {
+ // re order all?
+ val expectedList = orderedSpacesToOrderMap.toMutableList()
+ expectedList.removeAt(movedIndex).let {
+ expectedList.add(movedIndex + delta, it)
+ }
+
+ return StringOrderUtils.midPoints(defaultMinOrder, defaultMaxOrder, orderedSpacesToOrderMap.size)?.let { orders ->
+ expectedList.mapIndexed { index, pair ->
+ SpaceReOrderCommand(
+ pair.first,
+ orders[index]
+ )
+ }
+ } ?: emptyList()
+ } else {
+ return nodesToReNumber.mapIndexed { i, s ->
+ SpaceReOrderCommand(
+ s,
+ newOrder[i]
+ )
+ }
+ }
+ }
+}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/SpaceService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/SpaceService.kt
index fedf38fe06..e5288e4045 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/SpaceService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/SpaceService.kt
@@ -36,7 +36,11 @@ interface SpaceService {
/**
* Just a shortcut for space creation for ease of use
*/
- suspend fun createSpace(name: String, topic: String?, avatarUri: Uri?, isPublic: Boolean): String
+ suspend fun createSpace(name: String,
+ topic: String?,
+ avatarUri: Uri?,
+ isPublic: Boolean,
+ roomAliasLocalPart: String? = null): String
/**
* Get a space from a roomId
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/model/SpaceOrderContent.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/model/SpaceOrderContent.kt
new file mode 100644
index 0000000000..a8578347c8
--- /dev/null
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/model/SpaceOrderContent.kt
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2021 The Matrix.org Foundation C.I.C.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.matrix.android.sdk.api.session.space.model
+
+import com.squareup.moshi.JsonClass
+import org.matrix.android.sdk.api.MatrixPatterns
+
+/**
+ * {
+ * "type": "m.space_order",
+ * "content": {
+ * "order": "..."
+ * }
+ * }
+ */
+@JsonClass(generateAdapter = true)
+data class SpaceOrderContent(
+ val order: String? = null
+) {
+ fun safeOrder(): String? {
+ return order?.takeIf { MatrixPatterns.isValidOrderString(it) }
+ }
+}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/model/TopLevelSpaceComparator.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/model/TopLevelSpaceComparator.kt
new file mode 100644
index 0000000000..8af4f3a149
--- /dev/null
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/session/space/model/TopLevelSpaceComparator.kt
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2021 The Matrix.org Foundation C.I.C.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.matrix.android.sdk.api.session.space.model
+
+import org.matrix.android.sdk.api.session.room.model.RoomSummary
+
+// Can't use regular compare by because Null is considered less than any value, and for space order it's the opposite
+class TopLevelSpaceComparator(val orders: Map) : Comparator {
+
+ override fun compare(left: RoomSummary?, right: RoomSummary?): Int {
+ val leftOrder = left?.roomId?.let { orders[it] }
+ val rightOrder = right?.roomId?.let { orders[it] }
+ return if (leftOrder != null && rightOrder != null) {
+ leftOrder.compareTo(rightOrder)
+ } else {
+ if (leftOrder == null) {
+ if (rightOrder == null) {
+ compareValues(left?.roomId, right?.roomId)
+ } else {
+ 1
+ }
+ } else {
+ -1
+ }
+ }
+// .also {
+// Timber.w("VAL: compare(${left?.displayName} | $leftOrder ,${right?.displayName} | $rightOrder) = $it")
+// }
+ }
+}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/StringOrderUtils.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/StringOrderUtils.kt
new file mode 100644
index 0000000000..83c8585941
--- /dev/null
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/util/StringOrderUtils.kt
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2021 The Matrix.org Foundation C.I.C.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.matrix.android.sdk.api.util
+
+import java.math.BigInteger
+
+object StringOrderUtils {
+
+ val DEFAULT_ALPHABET = buildString {
+ for (i in 0x20..0x7E) {
+ append(Char(i))
+ }
+ }.toCharArray()
+
+ // /=Range(0x20, 0x7E)
+
+ fun average(left: String, right: String, alphabet: CharArray = DEFAULT_ALPHABET): String? {
+ return midPoints(left, right, 1, alphabet)?.firstOrNull()
+ }
+
+ fun midPoints(left: String, right: String, count: Int, alphabet: CharArray = DEFAULT_ALPHABET): List? {
+ if (left == right) return null // no space in between..
+ if (left > right) return midPoints(right, left, count, alphabet)
+ val size = maxOf(left.length, right.length)
+ val leftPadded = pad(left, size, alphabet.first())
+ val rightPadded = pad(right, size, alphabet.first())
+ val b1 = stringToBase(leftPadded, alphabet)
+ val b2 = stringToBase(rightPadded, alphabet)
+ val step = (b2.minus(b1)).div(BigInteger("${count + 1}"))
+ val orders = mutableListOf()
+ var previous = left
+ for (i in 0 until count) {
+ val newOrder = baseToString(b1.add(step.multiply(BigInteger("${i + 1}"))), alphabet)
+ orders.add(newOrder)
+ // ensure there was enought precision
+ if (previous >= newOrder) return null
+ previous = newOrder
+ }
+ return orders.takeIf { orders.last() < right }
+ }
+
+ private fun pad(string: String, size: Int, padding: Char): String {
+ val raw = string.toCharArray()
+ return CharArray(size).also {
+ for (index in it.indices) {
+ if (index < raw.size) {
+ it[index] = raw[index]
+ } else {
+ it[index] = padding
+ }
+ }
+ }.joinToString("")
+ }
+
+ fun baseToString(x: BigInteger, alphabet: CharArray): String {
+ val len = alphabet.size.toBigInteger()
+ if (x < len) {
+ return alphabet[x.toInt()].toString()
+ } else {
+ return baseToString(x.div(len), alphabet) + alphabet[x.rem(len).toInt()].toString()
+ }
+ }
+
+ fun stringToBase(x: String, alphabet: CharArray): BigInteger {
+ if (x.isEmpty()) throw IllegalArgumentException()
+ val len = alphabet.size.toBigInteger()
+ var result = BigInteger("0")
+ x.reversed().forEachIndexed { index, c ->
+ result += (alphabet.indexOf(c).toBigInteger() * len.pow(index))
+ }
+ return result
+ }
+}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/SessionManager.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/SessionManager.kt
index 441232f57f..c746ad863a 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/SessionManager.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/SessionManager.kt
@@ -51,7 +51,7 @@ internal class SessionManager @Inject constructor(private val matrixComponent: M
}
}
- private fun getOrCreateSessionComponent(sessionParams: SessionParams): SessionComponent {
+ fun getOrCreateSessionComponent(sessionParams: SessionParams): SessionComponent {
return sessionComponents.getOrPut(sessionParams.credentials.sessionId()) {
DaggerSessionComponent
.factory()
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt
index 7f5cfe8df1..d170ae3dd3 100755
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/DefaultCryptoService.kt
@@ -388,7 +388,7 @@ internal class DefaultCryptoService @Inject constructor(
cryptoStore.close()
}
- // Aways enabled on RiotX
+ // Always enabled on Matrix Android SDK2
override fun isCryptoEnabled() = true
/**
@@ -928,14 +928,10 @@ internal class DefaultCryptoService @Inject constructor(
* Export the crypto keys
*
* @param password the password
- * @param callback the exported keys
+ * @return the exported keys
*/
- override fun exportRoomKeys(password: String, callback: MatrixCallback) {
- cryptoCoroutineScope.launch(coroutineDispatchers.main) {
- runCatching {
- exportRoomKeys(password, MXMegolmExportEncryption.DEFAULT_ITERATION_COUNT)
- }.foldToCallback(callback)
- }
+ override suspend fun exportRoomKeys(password: String): ByteArray {
+ return exportRoomKeys(password, MXMegolmExportEncryption.DEFAULT_ITERATION_COUNT)
}
/**
@@ -963,42 +959,37 @@ internal class DefaultCryptoService @Inject constructor(
* @param roomKeysAsArray the room keys as array.
* @param password the password
* @param progressListener the progress listener
- * @param callback the asynchronous callback.
+ * @return the result ImportRoomKeysResult
*/
- override fun importRoomKeys(roomKeysAsArray: ByteArray,
- password: String,
- progressListener: ProgressListener?,
- callback: MatrixCallback) {
- cryptoCoroutineScope.launch(coroutineDispatchers.main) {
- runCatching {
- withContext(coroutineDispatchers.crypto) {
- Timber.v("## CRYPTO | importRoomKeys starts")
+ override suspend fun importRoomKeys(roomKeysAsArray: ByteArray,
+ password: String,
+ progressListener: ProgressListener?): ImportRoomKeysResult {
+ return withContext(coroutineDispatchers.crypto) {
+ Timber.v("## CRYPTO | importRoomKeys starts")
- val t0 = System.currentTimeMillis()
- val roomKeys = MXMegolmExportEncryption.decryptMegolmKeyFile(roomKeysAsArray, password)
- val t1 = System.currentTimeMillis()
+ val t0 = System.currentTimeMillis()
+ val roomKeys = MXMegolmExportEncryption.decryptMegolmKeyFile(roomKeysAsArray, password)
+ val t1 = System.currentTimeMillis()
- Timber.v("## CRYPTO | importRoomKeys : decryptMegolmKeyFile done in ${t1 - t0} ms")
+ Timber.v("## CRYPTO | importRoomKeys : decryptMegolmKeyFile done in ${t1 - t0} ms")
- val importedSessions = MoshiProvider.providesMoshi()
- .adapter>(Types.newParameterizedType(List::class.java, MegolmSessionData::class.java))
- .fromJson(roomKeys)
+ val importedSessions = MoshiProvider.providesMoshi()
+ .adapter>(Types.newParameterizedType(List::class.java, MegolmSessionData::class.java))
+ .fromJson(roomKeys)
- val t2 = System.currentTimeMillis()
+ val t2 = System.currentTimeMillis()
- Timber.v("## CRYPTO | importRoomKeys : JSON parsing ${t2 - t1} ms")
+ Timber.v("## CRYPTO | importRoomKeys : JSON parsing ${t2 - t1} ms")
- if (importedSessions == null) {
- throw Exception("Error")
- }
+ if (importedSessions == null) {
+ throw Exception("Error")
+ }
- megolmSessionDataImporter.handle(
- megolmSessionsData = importedSessions,
- fromBackup = false,
- progressListener = progressListener
- )
- }
- }.foldToCallback(callback)
+ megolmSessionDataImporter.handle(
+ megolmSessionsData = importedSessions,
+ fromBackup = false,
+ progressListener = progressListener
+ )
}
}
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/algorithms/megolm/MXMegolmDecryption.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/algorithms/megolm/MXMegolmDecryption.kt
index a29ac457fb..70d2022299 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/algorithms/megolm/MXMegolmDecryption.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/algorithms/megolm/MXMegolmDecryption.kt
@@ -155,7 +155,7 @@ internal class MXMegolmDecryption(private val userId: String,
withHeldInfo.code?.value ?: "",
withHeldInfo.reason)
} else {
- // This is un-used in riotX SDK, not sure if needed
+ // This is un-used in Matrix Android SDK2, not sure if needed
// addEventToPendingList(event, timeline)
if (requestKeysOnFail) {
requestKeysForEvent(event, false)
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/secrets/DefaultSharedSecretStorageService.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/secrets/DefaultSharedSecretStorageService.kt
index 1f80ce2c81..fb10cf4482 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/secrets/DefaultSharedSecretStorageService.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/crypto/secrets/DefaultSharedSecretStorageService.kt
@@ -18,7 +18,7 @@ package org.matrix.android.sdk.internal.crypto.secrets
import org.matrix.android.sdk.api.extensions.orFalse
import org.matrix.android.sdk.api.listeners.ProgressListener
-import org.matrix.android.sdk.api.session.accountdata.AccountDataService
+import org.matrix.android.sdk.api.session.accountdata.SessionAccountDataService
import org.matrix.android.sdk.api.session.events.model.toContent
import org.matrix.android.sdk.api.session.securestorage.EncryptedSecretContent
import org.matrix.android.sdk.api.session.securestorage.IntegrityResult
@@ -56,7 +56,7 @@ import kotlin.experimental.and
internal class DefaultSharedSecretStorageService @Inject constructor(
@UserId private val userId: String,
- private val accountDataService: AccountDataService,
+ private val accountDataService: SessionAccountDataService,
private val outgoingGossipingRequestManager: OutgoingGossipingRequestManager,
private val coroutineDispatchers: MatrixCoroutineDispatchers,
private val cryptoCoroutineScope: CoroutineScope
@@ -84,7 +84,7 @@ internal class DefaultSharedSecretStorageService @Inject constructor(
)
} ?: storageKeyContent
- accountDataService.updateAccountData("$KEY_ID_BASE.$keyId", signedContent.toContent())
+ accountDataService.updateUserAccountData("$KEY_ID_BASE.$keyId", signedContent.toContent())
SsssKeyCreationInfo(
keyId = keyId,
content = storageKeyContent,
@@ -113,7 +113,7 @@ internal class DefaultSharedSecretStorageService @Inject constructor(
)
} ?: storageKeyContent
- accountDataService.updateAccountData(
+ accountDataService.updateUserAccountData(
"$KEY_ID_BASE.$keyId",
signedContent.toContent()
)
@@ -127,11 +127,11 @@ internal class DefaultSharedSecretStorageService @Inject constructor(
}
override fun hasKey(keyId: String): Boolean {
- return accountDataService.getAccountDataEvent("$KEY_ID_BASE.$keyId") != null
+ return accountDataService.getUserAccountDataEvent("$KEY_ID_BASE.$keyId") != null
}
override fun getKey(keyId: String): KeyInfoResult {
- val accountData = accountDataService.getAccountDataEvent("$KEY_ID_BASE.$keyId")
+ val accountData = accountDataService.getUserAccountDataEvent("$KEY_ID_BASE.$keyId")
?: return KeyInfoResult.Error(SharedSecretStorageError.UnknownKey(keyId))
return SecretStorageKeyContent.fromJson(accountData.content)?.let {
KeyInfoResult.Success(
@@ -143,14 +143,14 @@ internal class DefaultSharedSecretStorageService @Inject constructor(
override suspend fun setDefaultKey(keyId: String) {
val existingKey = getKey(keyId)
if (existingKey is KeyInfoResult.Success) {
- accountDataService.updateAccountData(DEFAULT_KEY_ID, mapOf("key" to keyId))
+ accountDataService.updateUserAccountData(DEFAULT_KEY_ID, mapOf("key" to keyId))
} else {
throw SharedSecretStorageError.UnknownKey(keyId)
}
}
override fun getDefaultKey(): KeyInfoResult {
- val accountData = accountDataService.getAccountDataEvent(DEFAULT_KEY_ID)
+ val accountData = accountDataService.getUserAccountDataEvent(DEFAULT_KEY_ID)
?: return KeyInfoResult.Error(SharedSecretStorageError.UnknownKey(DEFAULT_KEY_ID))
val keyId = accountData.content["key"] as? String
?: return KeyInfoResult.Error(SharedSecretStorageError.UnknownKey(DEFAULT_KEY_ID))
@@ -178,7 +178,7 @@ internal class DefaultSharedSecretStorageService @Inject constructor(
}
}
- accountDataService.updateAccountData(
+ accountDataService.updateUserAccountData(
type = name,
content = mapOf("encrypted" to encryptedContents)
)
@@ -288,7 +288,7 @@ internal class DefaultSharedSecretStorageService @Inject constructor(
}
override fun getAlgorithmsForSecret(name: String): List {
- val accountData = accountDataService.getAccountDataEvent(name)
+ val accountData = accountDataService.getUserAccountDataEvent(name)
?: return listOf(KeyInfoResult.Error(SharedSecretStorageError.UnknownSecret(name)))
val encryptedContent = accountData.content[ENCRYPTED] as? Map<*, *>
?: return listOf(KeyInfoResult.Error(SharedSecretStorageError.SecretNotEncrypted(name)))
@@ -303,7 +303,7 @@ internal class DefaultSharedSecretStorageService @Inject constructor(
}
override suspend fun getSecret(name: String, keyId: String?, secretKey: SsssKeySpec): String {
- val accountData = accountDataService.getAccountDataEvent(name) ?: throw SharedSecretStorageError.UnknownSecret(name)
+ val accountData = accountDataService.getUserAccountDataEvent(name) ?: throw SharedSecretStorageError.UnknownSecret(name)
val encryptedContent = accountData.content[ENCRYPTED] as? Map<*, *> ?: throw SharedSecretStorageError.SecretNotEncrypted(name)
val key = keyId?.let { getKey(it) } as? KeyInfoResult.Success ?: getDefaultKey() as? KeyInfoResult.Success
?: throw SharedSecretStorageError.UnknownKey(name)
@@ -368,7 +368,7 @@ internal class DefaultSharedSecretStorageService @Inject constructor(
}
secretNames.forEach { secretName ->
- val secretEvent = accountDataService.getAccountDataEvent(secretName)
+ val secretEvent = accountDataService.getUserAccountDataEvent(secretName)
?: return IntegrityResult.Error(SharedSecretStorageError.UnknownSecret(secretName))
if ((secretEvent.content["encrypted"] as? Map<*, *>)?.get(keyInfo.id) == null) {
return IntegrityResult.Error(SharedSecretStorageError.SecretNotEncryptedWithKey(secretName, keyInfo.id))
diff --git a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/mapper/AccountDataMapper.kt b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/mapper/AccountDataMapper.kt
index 4edfdad897..dca0f927ad 100644
--- a/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/mapper/AccountDataMapper.kt
+++ b/matrix-sdk-android/src/main/java/org/matrix/android/sdk/internal/database/mapper/AccountDataMapper.kt
@@ -17,7 +17,8 @@
package org.matrix.android.sdk.internal.database.mapper
import com.squareup.moshi.Moshi
-import org.matrix.android.sdk.api.session.accountdata.AccountDataEvent
+import org.matrix.android.sdk.api.session.accountdata.UserAccountDataEvent
+import org.matrix.android.sdk.api.session.room.accountdata.RoomAccountDataEvent
import org.matrix.android.sdk.api.util.JSON_DICT_PARAMETERIZED_TYPE
import org.matrix.android.sdk.internal.database.model.RoomAccountDataEntity
import org.matrix.android.sdk.internal.database.model.UserAccountDataEntity
@@ -27,15 +28,16 @@ internal class AccountDataMapper @Inject constructor(moshi: Moshi) {
private val adapter = moshi.adapter