diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index c45428232..d9c3901ec 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,8 +1,10 @@ ### Pull Request Checklist -* [ ] I read the [contributing guide](https://github.com/vector-im/element-ios/blob/develop/CONTRIBUTING.md) -* [ ] UI change has been tested on both light and dark themes, in portrait and landscape orientations and on iPhone and iPad simulators +- [ ] I read the [contributing guide](https://github.com/vector-im/element-ios/blob/develop/CONTRIBUTING.md) +- [ ] UI change has been tested on both light and dark themes, in portrait and landscape orientations and on iPhone and iPad simulators +- [ ] Accessibility has been taken into account. * [ ] Pull request is based on the develop branch -* [ ] Pull request contains a [changelog file](https://github.com/matrix-org/matrix-ios-sdk/blob/develop/CONTRIBUTING.md#changelog) in ./changelog.d -* [ ] Pull request includes screenshots or videos of UI changes -* [ ] Pull request includes a [sign off](https://github.com/matrix-org/matrix-ios-sdk/blob/develop/CONTRIBUTING.md#sign-off) +- [ ] Pull request contains a [changelog file](https://github.com/matrix-org/matrix-ios-sdk/blob/develop/CONTRIBUTING.md#changelog) in ./changelog.d +- [ ] You've made a self review of your PR +- [ ] Pull request includes screenshots or videos of UI changes +- [ ] Pull request includes a [sign off](https://github.com/matrix-org/matrix-ios-sdk/blob/develop/CONTRIBUTING.md#sign-off) diff --git a/.github/workflows/release-alpha.yml b/.github/workflows/release-alpha.yml index af74f4827..ed175fe20 100644 --- a/.github/workflows/release-alpha.yml +++ b/.github/workflows/release-alpha.yml @@ -15,7 +15,7 @@ env: jobs: build: name: Release - runs-on: macos-latest + runs-on: macos-11 steps: - uses: actions/checkout@v2 diff --git a/CHANGES.md b/CHANGES.md index 652320daf..7ace58680 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,3 +1,18 @@ +## Changes in 1.6.1 (2021-09-30) + +🙌 Improvements + +- Upgrade MatrixKit version ([v0.16.4](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.16.4)). +- Upgrade MatrixKit version ([v0.16.3](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.16.3)). +- AvatarViewData: Make `mediaManager` property optional (#4930). ([#4930](https://github.com/vector-im/element-ios/issues/4930)) + +🐛 Bugfixes + +- fixed Spaces still visible after logging in with another account ([#4916](https://github.com/vector-im/element-ios/issues/4916)) +- fixed App may not start in 1.6.0 ([#4919](https://github.com/vector-im/element-ios/issues/4919)) +- AppDelegate: Fix a crash when backgrounding the app. ([#4932](https://github.com/vector-im/element-ios/issues/4932)) + + ## Changes in 1.6.0 (2021-09-24) ✨ Features diff --git a/Config/AppVersion.xcconfig b/Config/AppVersion.xcconfig index 51e60cfea..2f0eca71b 100644 --- a/Config/AppVersion.xcconfig +++ b/Config/AppVersion.xcconfig @@ -15,5 +15,5 @@ // // Version -MARKETING_VERSION = 1.6.1 -CURRENT_PROJECT_VERSION = 1.6.1 +MARKETING_VERSION = 1.6.2 +CURRENT_PROJECT_VERSION = 1.6.2 diff --git a/Gemfile b/Gemfile index 3ba15fb52..53efbaf92 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source "https://rubygems.org" gem "xcode-install" gem "fastlane" -gem "cocoapods", '~>1.10.1' +gem "cocoapods", '~>1.11.2' plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile') eval_gemfile(plugins_path) if File.exist?(plugins_path) diff --git a/Gemfile.lock b/Gemfile.lock index d1cdbdf51..a8674758c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,12 +1,14 @@ GEM remote: https://rubygems.org/ specs: - CFPropertyList (3.0.3) - activesupport (5.2.4.5) + CFPropertyList (3.0.4) + rexml + activesupport (6.1.4.1) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) addressable (2.8.0) public_suffix (>= 2.0.2, < 5.0) algoliasearch (1.27.5) @@ -14,28 +16,28 @@ GEM json (>= 1.5.1) artifactory (3.0.15) atomos (0.1.3) - aws-eventstream (1.1.1) - aws-partitions (1.487.0) - aws-sdk-core (3.119.0) + aws-eventstream (1.2.0) + aws-partitions (1.510.0) + aws-sdk-core (3.121.1) aws-eventstream (~> 1, >= 1.0.2) aws-partitions (~> 1, >= 1.239.0) aws-sigv4 (~> 1.1) jmespath (~> 1.0) - aws-sdk-kms (1.46.0) - aws-sdk-core (~> 3, >= 3.119.0) + aws-sdk-kms (1.48.0) + aws-sdk-core (~> 3, >= 3.120.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.98.0) - aws-sdk-core (~> 3, >= 3.119.0) + aws-sdk-s3 (1.103.0) + aws-sdk-core (~> 3, >= 3.120.0) aws-sdk-kms (~> 1) - aws-sigv4 (~> 1.1) - aws-sigv4 (1.2.4) + aws-sigv4 (~> 1.4) + aws-sigv4 (1.4.0) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) claide (1.0.3) - cocoapods (1.10.1) - addressable (~> 2.6) + cocoapods (1.11.2) + addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.10.1) + cocoapods-core (= 1.11.2) cocoapods-deintegrate (>= 1.0.3, < 2.0) cocoapods-downloader (>= 1.4.0, < 2.0) cocoapods-plugins (>= 1.0.0, < 2.0) @@ -46,26 +48,26 @@ GEM escape (~> 0.0.4) fourflusher (>= 2.3.0, < 3.0) gh_inspector (~> 1.0) - molinillo (~> 0.6.6) + molinillo (~> 0.8.0) nap (~> 1.0) - ruby-macho (~> 1.4) - xcodeproj (>= 1.19.0, < 2.0) - cocoapods-core (1.10.1) - activesupport (> 5.0, < 6) - addressable (~> 2.6) + ruby-macho (>= 1.0, < 3.0) + xcodeproj (>= 1.21.0, < 2.0) + cocoapods-core (1.11.2) + activesupport (>= 5.0, < 7) + addressable (~> 2.8) algoliasearch (~> 1.0) concurrent-ruby (~> 1.1) fuzzy_match (~> 2.0.4) nap (~> 1.0) netrc (~> 0.11) - public_suffix + public_suffix (~> 4.0) typhoeus (~> 1.0) - cocoapods-deintegrate (1.0.4) - cocoapods-downloader (1.4.0) + cocoapods-deintegrate (1.0.5) + cocoapods-downloader (1.5.1) cocoapods-plugins (1.0.0) nap - cocoapods-search (1.0.0) - cocoapods-trunk (1.5.0) + cocoapods-search (1.0.1) + cocoapods-trunk (1.6.0) nap (>= 0.8, < 2.0) netrc (~> 0.11) cocoapods-try (1.2.0) @@ -73,19 +75,19 @@ GEM colored2 (3.1.2) commander (4.6.0) highline (~> 2.0.0) - concurrent-ruby (1.1.8) + concurrent-ruby (1.1.9) declarative (0.0.20) digest-crc (0.6.4) 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) + emoji_regex (3.2.3) escape (0.0.4) - ethon (0.12.0) - ffi (>= 1.3.0) - excon (0.85.0) - faraday (1.7.0) + ethon (0.14.0) + ffi (>= 1.15.0) + excon (0.86.0) + faraday (1.8.0) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) faraday-excon (~> 1.1) @@ -110,7 +112,7 @@ GEM faraday_middleware (1.1.0) faraday (~> 1.0) fastimage (2.2.5) - fastlane (2.191.0) + fastlane (2.195.0) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -136,6 +138,7 @@ GEM mini_magick (>= 4.9.4, < 5.0.0) multipart-post (~> 2.0.0) naturally (~> 2.2) + optparse (~> 0.1.1) plist (>= 3.1.0, < 4.0.0) rubyzip (>= 2.0.0, < 3.0.0) security (= 0.1.3) @@ -152,13 +155,13 @@ GEM fastlane-plugin-diawi (2.1.0) rest-client (>= 2.0.0) fastlane-plugin-versioning (0.5.0) - fastlane-plugin-xcodegen (1.0.0) + fastlane-plugin-xcodegen (1.1.0) fastlane-plugin-brew (~> 0.1.1) - ffi (1.13.1) + ffi (1.15.4) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.10.0) + google-apis-androidpublisher_v3 (0.11.0) google-apis-core (>= 0.4, < 2.a) google-apis-core (0.4.1) addressable (~> 2.5, >= 2.5.1) @@ -169,18 +172,18 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-iamcredentials_v1 (0.6.0) + google-apis-iamcredentials_v1 (0.7.0) google-apis-core (>= 0.4, < 2.a) google-apis-playcustomapp_v1 (0.5.0) google-apis-core (>= 0.4, < 2.a) - google-apis-storage_v1 (0.6.0) + google-apis-storage_v1 (0.8.0) google-apis-core (>= 0.4, < 2.a) google-cloud-core (1.6.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) google-cloud-env (1.5.0) faraday (>= 0.17.3, < 2.0) - google-cloud-errors (1.1.0) + google-cloud-errors (1.2.0) google-cloud-storage (1.34.1) addressable (~> 2.5) digest-crc (~> 0.4) @@ -189,37 +192,38 @@ GEM google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (0.17.0) + googleauth (1.0.0) 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) + signet (>= 0.16, < 2.a) highline (2.0.3) http-accept (1.7.0) http-cookie (1.0.4) domain_name (~> 0.5) httpclient (2.8.3) - i18n (1.8.9) + i18n (1.8.10) concurrent-ruby (~> 1.0) jmespath (1.4.0) json (2.5.1) - jwt (2.2.3) + jwt (2.3.0) memoist (0.16.2) mime-types (3.3.1) mime-types-data (~> 3.2015) - mime-types-data (3.2021.0704) + mime-types-data (3.2021.0901) mini_magick (4.11.0) - mini_mime (1.1.0) + mini_mime (1.1.1) minitest (5.14.4) - molinillo (0.6.6) + molinillo (0.8.0) multi_json (1.15.0) multipart-post (2.0.0) nanaimo (0.3.0) nap (1.1.0) naturally (2.2.1) netrc (0.11.0) + optparse (0.1.1) os (1.1.1) plist (3.6.0) public_suffix (4.0.6) @@ -236,12 +240,12 @@ GEM retriable (3.1.2) rexml (3.2.5) rouge (2.0.7) - ruby-macho (1.4.0) + ruby-macho (2.5.1) ruby2_keywords (0.0.5) rubyzip (2.3.2) security (0.1.3) - signet (0.15.0) - addressable (~> 2.3) + signet (0.16.0) + addressable (~> 2.8) faraday (>= 0.17.3, < 2.0) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) @@ -251,7 +255,6 @@ GEM terminal-notifier (2.0.0) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) - thread_safe (0.3.6) trailblazer-option (0.1.1) tty-cursor (0.7.1) tty-screen (0.8.1) @@ -259,16 +262,16 @@ GEM tty-cursor (~> 0.7) typhoeus (1.4.0) ethon (>= 0.9.0) - tzinfo (1.2.9) - thread_safe (~> 0.1) + tzinfo (2.0.4) + concurrent-ruby (~> 1.0) uber (0.1.0) unf (0.1.4) unf_ext - unf_ext (0.0.7.7) - unicode-display_width (1.7.0) + unf_ext (0.0.8) + unicode-display_width (1.8.0) webrick (1.7.0) word_wrap (1.0.0) - xcode-install (2.6.7) + xcode-install (2.8.0) claide (>= 0.9.1, < 1.1.0) fastlane (>= 2.1.0, < 3.0.0) xcodeproj (1.21.0) @@ -282,12 +285,13 @@ GEM rouge (~> 2.0.7) xcpretty-travis-formatter (1.0.1) xcpretty (~> 0.2, >= 0.0.7) + zeitwerk (2.4.2) PLATFORMS ruby DEPENDENCIES - cocoapods (~> 1.10.1) + cocoapods (~> 1.11.2) fastlane fastlane-plugin-diawi fastlane-plugin-versioning @@ -295,4 +299,4 @@ DEPENDENCIES xcode-install BUNDLED WITH - 2.2.24 + 2.2.28 diff --git a/Podfile b/Podfile index 25f66d6c7..b06b5f92b 100644 --- a/Podfile +++ b/Podfile @@ -13,7 +13,7 @@ use_frameworks! # - `{ {kit spec hash} => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for each repo. Used by Fastfile during CI # # Warning: our internal tooling depends on the name of this variable name, so be sure not to change it -$matrixKitVersion = '= 0.16.3' +$matrixKitVersion = '= 0.16.4' # $matrixKitVersion = :local # $matrixKitVersion = {'develop' => 'develop'} @@ -59,22 +59,22 @@ abstract_target 'RiotPods' do # Tools pod 'SwiftGen', '~> 6.3' - pod 'SwiftLint', '~> 0.43.0' + pod 'SwiftLint', '~> 0.44.0' target "Riot" do import_MatrixKit pod 'DGCollectionViewLeftAlignFlowLayout', '~> 1.0.4' pod 'KTCenterFlowLayout', '~> 1.3.1' pod 'ZXingObjC', '~> 3.6.5' - pod 'FlowCommoniOS', '~> 1.10.0' + pod 'FlowCommoniOS', '~> 1.12.0' pod 'ReadMoreTextView', '~> 3.0.1' pod 'SwiftBase32', '~> 0.9.0' pod 'SwiftJWT', '~> 3.6.200' pod 'SideMenu', '~> 6.5' pod 'DSWaveformImage', '~> 6.1.1' - pod 'ffmpeg-kit-ios-audio', '~> 4.4' + pod 'ffmpeg-kit-ios-audio', '~> 4.5' - pod 'FLEX', '~> 4.4.1', :configurations => ['Debug'] + pod 'FLEX', '~> 4.5.0', :configurations => ['Debug'] target 'RiotTests' do inherit! :search_paths diff --git a/Podfile.lock b/Podfile.lock index 095f1d632..27e8a2ced 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -37,9 +37,9 @@ PODS: - DTFoundation/Core - DTFoundation/UIKit (1.7.18): - DTFoundation/Core - - ffmpeg-kit-ios-audio (4.4) - - FLEX (4.4.1) - - FlowCommoniOS (1.10.0) + - ffmpeg-kit-ios-audio (4.5) + - FLEX (4.5.0) + - FlowCommoniOS (1.12.0) - GBDeviceInfo (6.6.0): - GBDeviceInfo/Core (= 6.6.0) - GBDeviceInfo/Core (6.6.0) @@ -58,29 +58,29 @@ PODS: - MatomoTracker (7.4.1): - MatomoTracker/Core (= 7.4.1) - MatomoTracker/Core (7.4.1) - - MatrixKit (0.16.3): + - MatrixKit (0.16.4): - Down (~> 0.11.0) - DTCoreText (~> 1.6.25) - HPGrowingTextView (~> 1.1) - libPhoneNumber-iOS (~> 0.9.13) - - MatrixKit/Core (= 0.16.3) - - MatrixSDK (= 0.20.3) - - MatrixKit/Core (0.16.3): + - MatrixKit/Core (= 0.16.4) + - MatrixSDK (= 0.20.4) + - MatrixKit/Core (0.16.4): - Down (~> 0.11.0) - DTCoreText (~> 1.6.25) - HPGrowingTextView (~> 1.1) - libPhoneNumber-iOS (~> 0.9.13) - - MatrixSDK (= 0.20.3) - - MatrixSDK (0.20.3): - - MatrixSDK/Core (= 0.20.3) - - MatrixSDK/Core (0.20.3): + - MatrixSDK (= 0.20.4) + - MatrixSDK (0.20.4): + - MatrixSDK/Core (= 0.20.4) + - MatrixSDK/Core (0.20.4): - AFNetworking (~> 4.0.0) - GZIP (~> 1.3.0) - libbase58 (~> 0.1.4) - OLMKit (~> 3.2.5) - Realm (= 10.7.6) - SwiftyBeaver (= 1.9.5) - - MatrixSDK/JingleCallStack (0.20.3): + - MatrixSDK/JingleCallStack (0.20.4): - JitsiMeetSDK (= 3.5.0) - MatrixSDK/Core - OLMKit (3.2.5): @@ -92,11 +92,11 @@ PODS: - Realm (10.7.6): - Realm/Headers (= 10.7.6) - Realm/Headers (10.7.6) - - Reusable (4.1.1): - - Reusable/Storyboard (= 4.1.1) - - Reusable/View (= 4.1.1) - - Reusable/Storyboard (4.1.1) - - Reusable/View (4.1.1) + - Reusable (4.1.2): + - Reusable/Storyboard (= 4.1.2) + - Reusable/View (= 4.1.2) + - Reusable/Storyboard (4.1.2) + - Reusable/View (4.1.2) - SideMenu (6.5.0) - SwiftBase32 (0.9.0) - SwiftGen (6.4.0) @@ -106,7 +106,7 @@ PODS: - BlueRSA (~> 1.0) - KituraContracts (~> 1.2) - LoggerAPI (~> 1.7) - - SwiftLint (0.43.1) + - SwiftLint (0.44.0) - SwiftyBeaver (1.9.5) - zxcvbn-ios (1.0.4) - ZXingObjC (3.6.5): @@ -116,15 +116,15 @@ PODS: DEPENDENCIES: - DGCollectionViewLeftAlignFlowLayout (~> 1.0.4) - DSWaveformImage (~> 6.1.1) - - ffmpeg-kit-ios-audio (~> 4.4) - - FLEX (~> 4.4.1) - - FlowCommoniOS (~> 1.10.0) + - ffmpeg-kit-ios-audio (~> 4.5) + - FLEX (~> 4.5.0) + - FlowCommoniOS (~> 1.12.0) - GBDeviceInfo (~> 6.6.0) - HPGrowingTextView - KeychainAccess (~> 4.2.2) - KTCenterFlowLayout (~> 1.3.1) - MatomoTracker (~> 7.4.1) - - MatrixKit (= 0.16.3) + - MatrixKit (= 0.16.4) - MatrixSDK - MatrixSDK/JingleCallStack - OLMKit @@ -134,7 +134,7 @@ DEPENDENCIES: - SwiftBase32 (~> 0.9.0) - SwiftGen (~> 6.3) - SwiftJWT (~> 3.6.200) - - SwiftLint (~> 0.43.0) + - SwiftLint (~> 0.44.0) - zxcvbn-ios - ZXingObjC (~> 3.6.5) @@ -189,9 +189,9 @@ SPEC CHECKSUMS: DSWaveformImage: 3c718a0cf99291887ee70d1d0c18d80101d3d9ce DTCoreText: ec749e013f2e1f76de5e7c7634642e600a7467ce DTFoundation: a53f8cda2489208cbc71c648be177f902ee17536 - ffmpeg-kit-ios-audio: ddfc3dac6f574e83d53f8ae33586711162685d3e - FLEX: 7ca2c8cd3a435ff501ff6d2f2141e9bdc934eaab - FlowCommoniOS: bcdf81a5f30717e711af08a8c812eb045411ba94 + ffmpeg-kit-ios-audio: 8c44d93054e1a9743a7014ec3dd26cd1ad8f2a59 + FLEX: e51461dd6f0bfb00643c262acdfea5d5d12c596b + FlowCommoniOS: e9ecbc97fb9ce5c593fb3da0e1073b65a3902026 GBDeviceInfo: ed0db16230d2fa280e1cbb39a5a7f60f6946aaec GZIP: 416858efbe66b41b206895ac6dfd5493200d95b3 HPGrowingTextView: 88a716d97fb853bcb08a4a08e4727da17efc9b19 @@ -204,21 +204,21 @@ SPEC CHECKSUMS: LoggerAPI: ad9c4a6f1e32f518fdb43a1347ac14d765ab5e3d Logging: beeb016c9c80cf77042d62e83495816847ef108b MatomoTracker: 24a846c9d3aa76933183fe9d47fd62c9efa863fb - MatrixKit: 509ef502d0f9b13d15a90cfd5ec9dc566f5ecc29 - MatrixSDK: de1158691a3b3bfb0cc7a294f358f9def3d3cd9c + MatrixKit: e2836912d2dc2072a276526e92679d094b2bd6b5 + MatrixSDK: 317928f6ef7bbffebbf7dbf9ca9dad4920695f1e OLMKit: 9fb4799c4a044dd2c06bda31ec31a12191ad30b5 ReadMoreTextView: 19147adf93abce6d7271e14031a00303fe28720d Realm: ed860452717c8db8f4bf832b6807f7f2ce708839 - Reusable: 53a9acf5c536f229b31b5865782414b508252ddb + Reusable: 6bae6a5e8aa793c9c441db0213c863a64bce9136 SideMenu: f583187d21c5b1dd04c72002be544b555a2627a2 SwiftBase32: 9399c25a80666dc66b51e10076bf591e3bbb8f17 SwiftGen: 67860cc7c3cfc2ed25b9b74cfd55495fc89f9108 SwiftJWT: 88c412708f58c169d431d344c87bc79a87c830ae - SwiftLint: 99f82d07b837b942dd563c668de129a03fc3fb52 + SwiftLint: e96c0a8c770c7ebbc4d36c55baf9096bb65c4584 SwiftyBeaver: 84069991dd5dca07d7069100985badaca7f0ce82 zxcvbn-ios: fef98b7c80f1512ff0eec47ac1fa399fc00f7e3c ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb -PODFILE CHECKSUM: 6f7703d99b03d02d52dee9fcacb32d08c42cfbde +PODFILE CHECKSUM: 367d7a514c7d8ea3cc4b0adb5878c8a192c7c2c8 COCOAPODS: 1.10.1 diff --git a/Riot/Assets/en.lproj/Vector.strings b/Riot/Assets/en.lproj/Vector.strings index 8691d30a2..63b974866 100644 --- a/Riot/Assets/en.lproj/Vector.strings +++ b/Riot/Assets/en.lproj/Vector.strings @@ -541,7 +541,7 @@ Tap the + to start adding people."; "settings_calls_stun_server_fallback_description" = "Allow fallback call assist server %@ when your homeserver does not offer one (your IP address would be shared during a call)."; "settings_integrations_allow_button" = "Manage integrations"; -"settings_integrations_allow_description" = "Use an Integration Manager (%@) to manage bots, bridges, widgets and sticker packs.\n\nIntegration Managers receive configuration data, and can modify widgets, send room invites and set power levels on your behalf."; +"settings_integrations_allow_description" = "Use an integration manager (%@) to manage bots, bridges, widgets and sticker packs.\n\nIntegration managers receive configuration data, and can modify widgets, send room invites and set power levels on your behalf."; "settings_ui_language" = "Language"; "settings_ui_theme" = "Theme"; @@ -627,7 +627,7 @@ Tap the + to start adding people."; "settings_devices_description" = "A session's public name is visible to people you communicate with"; "settings_discovery_no_identity_server" = "You are not currently using an identity server. To be discoverable by existing contacts you known, add one."; -"settings_discovery_terms_not_signed" = "Agree to the Identity Server (%@) Terms of Service to allow yourself to be discoverable by email address or phone number."; +"settings_discovery_terms_not_signed" = "Agree to the identity server (%@) Terms of Service to allow yourself to be discoverable by email address or phone number."; "settings_discovery_three_pids_management_information_part1" = "Manage which email addresses or phone numbers other users can use to discover you and use to invite you to rooms. Add or remove email addresses or phone numbers from this list in "; "settings_discovery_three_pids_management_information_part2" = "User Settings"; "settings_discovery_three_pids_management_information_part3" = "."; @@ -700,7 +700,7 @@ Tap the + to start adding people."; "authenticated_session_flow_not_supported" = "This app does not support the authentication mechanism on your homeserver."; // Identity server settings -"identity_server_settings_title" = "Identity Server"; +"identity_server_settings_title" = "Identity server"; "identity_server_settings_description" = "You are currently using %@ to discover and be discoverable by existing contacts you know."; "identity_server_settings_no_is_description" = "You are not currently using an identity server. To discover and be discoverable by existing contacts, add one above."; @@ -991,7 +991,7 @@ Tap the + to start adding people."; "widget_integration_missing_room_id" = "Missing room_id in request."; "widget_integration_missing_user_id" = "Missing user_id in request."; "widget_integration_room_not_visible" = "Room %@ is not visible."; -"widget_integration_manager_disabled" = "You need to enable Integration Manager in settings"; +"widget_integration_manager_disabled" = "You need to enable integration manager in settings"; // Widget Picker "widget_picker_title" = "Integrations"; diff --git a/Riot/Generated/Strings.swift b/Riot/Generated/Strings.swift index efa5d379c..f23c03d2a 100644 --- a/Riot/Generated/Strings.swift +++ b/Riot/Generated/Strings.swift @@ -1623,7 +1623,7 @@ public class VectorL10n: NSObject { public static var identityServerSettingsPlaceHolder: String { return VectorL10n.tr("Vector", "identity_server_settings_place_holder") } - /// Identity Server + /// Identity server public static var identityServerSettingsTitle: String { return VectorL10n.tr("Vector", "identity_server_settings_title") } @@ -4251,7 +4251,7 @@ public class VectorL10n: NSObject { public static var settingsDiscoverySettings: String { return VectorL10n.tr("Vector", "settings_discovery_settings") } - /// Agree to the Identity Server (%@) Terms of Service to allow yourself to be discoverable by email address or phone number. + /// Agree to the identity server (%@) Terms of Service to allow yourself to be discoverable by email address or phone number. public static func settingsDiscoveryTermsNotSigned(_ p1: String) -> String { return VectorL10n.tr("Vector", "settings_discovery_terms_not_signed", p1) } @@ -4383,7 +4383,7 @@ public class VectorL10n: NSObject { public static var settingsIntegrationsAllowButton: String { return VectorL10n.tr("Vector", "settings_integrations_allow_button") } - /// Use an Integration Manager (%@) to manage bots, bridges, widgets and sticker packs.\n\nIntegration Managers receive configuration data, and can modify widgets, send room invites and set power levels on your behalf. + /// Use an integration manager (%@) to manage bots, bridges, widgets and sticker packs.\n\nIntegration managers receive configuration data, and can modify widgets, send room invites and set power levels on your behalf. public static func settingsIntegrationsAllowDescription(_ p1: String) -> String { return VectorL10n.tr("Vector", "settings_integrations_allow_description", p1) } @@ -5231,7 +5231,7 @@ public class VectorL10n: NSObject { public static var widgetIntegrationFailedToSendRequest: String { return VectorL10n.tr("Vector", "widget_integration_failed_to_send_request") } - /// You need to enable Integration Manager in settings + /// You need to enable integration manager in settings public static var widgetIntegrationManagerDisabled: String { return VectorL10n.tr("Vector", "widget_integration_manager_disabled") } diff --git a/Riot/Managers/Analytics/Analytics.h b/Riot/Managers/Analytics/Analytics.h index 03870bef7..5ad851929 100644 --- a/Riot/Managers/Analytics/Analytics.h +++ b/Riot/Managers/Analytics/Analytics.h @@ -22,6 +22,10 @@ // Metrics related to notifications FOUNDATION_EXPORT NSString *const AnalyticsNoficationsCategory; FOUNDATION_EXPORT NSString *const AnalyticsNoficationsTimeToDisplayContent; +/** + The analytics value for accept/decline of the identity server's terms. + */ +FOUNDATION_EXPORT NSString *const AnalyticsContactsIdentityServerAccepted; /** diff --git a/Riot/Managers/Analytics/Analytics.m b/Riot/Managers/Analytics/Analytics.m index fc7c3576c..cb7062932 100644 --- a/Riot/Managers/Analytics/Analytics.m +++ b/Riot/Managers/Analytics/Analytics.m @@ -21,6 +21,7 @@ NSString *const AnalyticsNoficationsCategory = @"notifications"; NSString *const AnalyticsNoficationsTimeToDisplayContent = @"timelineDisplay"; +NSString *const AnalyticsContactsIdentityServerAccepted = @"identityServerAccepted"; // Duration data will be visible under the Piwik category called "Performance". diff --git a/Riot/Managers/Widgets/WidgetManager.m b/Riot/Managers/Widgets/WidgetManager.m index 1a181046f..416d5f4f6 100644 --- a/Riot/Managers/Widgets/WidgetManager.m +++ b/Riot/Managers/Widgets/WidgetManager.m @@ -262,7 +262,7 @@ NSString *const WidgetManagerErrorDomain = @"WidgetManagerErrorDomain"; WidgetManagerConfig *config = [self configForUser:userId]; if (!config.hasUrls) { - MXLogDebug(@"[WidgetManager] createJitsiWidgetInRoom: Error: no Integrations Manager API URL for user %@", userId); + MXLogDebug(@"[WidgetManager] createJitsiWidgetInRoom: Error: no integration manager API URL for user %@", userId); failure(self.errorForNonConfiguredIntegrationManager); return nil; } @@ -574,7 +574,7 @@ NSString *const WidgetManagerErrorDomain = @"WidgetManagerErrorDomain"; WidgetManagerConfig *config = [self configForUser:userId]; if (!config.hasUrls) { - MXLogDebug(@"[WidgetManager] registerForScalarToken: Error: no Integrations Manager API URL for user %@", mxSession.myUser.userId); + MXLogDebug(@"[WidgetManager] registerForScalarToken: Error: no integration manager API URL for user %@", mxSession.myUser.userId); failure(self.errorForNonConfiguredIntegrationManager); return nil; } @@ -654,7 +654,7 @@ NSString *const WidgetManagerErrorDomain = @"WidgetManagerErrorDomain"; WidgetManagerConfig *config = [self configForUser:userId]; if (!config.hasUrls) { - MXLogDebug(@"[WidgetManager] validateScalarToken: Error: no Integrations Manager API URL for user %@", mxSession.myUser.userId); + MXLogDebug(@"[WidgetManager] validateScalarToken: Error: no integration manager API URL for user %@", mxSession.myUser.userId); failure(self.errorForNonConfiguredIntegrationManager); return nil; } diff --git a/Riot/Modules/Application/LegacyAppDelegate.m b/Riot/Modules/Application/LegacyAppDelegate.m index 81e4489ad..2052c6a6a 100644 --- a/Riot/Modules/Application/LegacyAppDelegate.m +++ b/Riot/Modules/Application/LegacyAppDelegate.m @@ -1169,7 +1169,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni return YES; } - // Manage email validation link from Identity Server v1 or v2 + // Manage email validation link from identity server v1 or v2 else if ([webURL.path isEqualToString:validateEmailSubmitTokenAPIPathV1] || [webURL.path isEqualToString:validateEmailSubmitTokenAPIPathV2]) { @@ -2264,6 +2264,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni } else { + MXLogDebug(@"[AppDelegate] handleAppState: mainSession.state: %@", [MXTools readableSessionState:mainSession.state]); switch (mainSession.state) { case MXSessionStateClosed: @@ -2316,32 +2317,8 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni return; } - if (mainSession.crypto.crossSigning) - { - // Get the up-to-date cross-signing state - MXWeakify(self); - [mainSession.crypto.crossSigning refreshStateWithSuccess:^(BOOL stateUpdated) { - MXStrongifyAndReturnIfNil(self); - - MXLogDebug(@"[AppDelegate] handleAppState: crossSigning.state: %@", @(mainSession.crypto.crossSigning.state)); - - switch (mainSession.crypto.crossSigning.state) - { - case MXCrossSigningStateCrossSigningExists: - MXLogDebug(@"[AppDelegate] handleAppState: presentVerifyCurrentSessionAlertIfNeededWithSession"); - [self.masterTabBarController presentVerifyCurrentSessionAlertIfNeededWithSession:mainSession]; - break; - case MXCrossSigningStateCanCrossSign: - MXLogDebug(@"[AppDelegate] handleAppState: presentReviewUnverifiedSessionsAlertIfNeededWithSession"); - [self.masterTabBarController presentReviewUnverifiedSessionsAlertIfNeededWithSession:mainSession]; - break; - default: - break; - } - } failure:^(NSError * _Nonnull error) { - MXLogDebug(@"[AppDelegate] handleAppState: crossSigning.state: %@. Error: %@", @(mainSession.crypto.crossSigning.state), error); - }]; - } + MXLogDebug(@"[AppDelegate] handleAppState: Check cross-signing"); + [self checkCrossSigningForSession:mainSession]; // TODO: We should wait that cross-signing screens are done before going further but it seems fine. Those screens // protect each other. @@ -3311,6 +3288,46 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni [callEventsListeners removeObjectForKey:@(mxSession.hash)]; } + +#pragma mark - Cross-signing + +- (void)checkCrossSigningForSession:(MXSession*)mxSession +{ + if ([UIApplication sharedApplication].applicationState != UIApplicationStateActive) + { + MXLogDebug(@"[AppDelegate] checkCrossSigningForSession called while the app is not active. Ignore it."); + return; + } + + if (mxSession.crypto.crossSigning) + { + // Get the up-to-date cross-signing state + MXWeakify(self); + [mxSession.crypto.crossSigning refreshStateWithSuccess:^(BOOL stateUpdated) { + MXStrongifyAndReturnIfNil(self); + + MXLogDebug(@"[AppDelegate] handleAppState: crossSigning.state: %@", @(mxSession.crypto.crossSigning.state)); + + switch (mxSession.crypto.crossSigning.state) + { + case MXCrossSigningStateCrossSigningExists: + MXLogDebug(@"[AppDelegate] handleAppState: presentVerifyCurrentSessionAlertIfNeededWithSession"); + [self.masterTabBarController presentVerifyCurrentSessionAlertIfNeededWithSession:mxSession]; + break; + case MXCrossSigningStateCanCrossSign: + MXLogDebug(@"[AppDelegate] handleAppState: presentReviewUnverifiedSessionsAlertIfNeededWithSession"); + [self.masterTabBarController presentReviewUnverifiedSessionsAlertIfNeededWithSession:mxSession]; + break; + default: + break; + } + } failure:^(NSError * _Nonnull error) { + MXLogDebug(@"[AppDelegate] handleAppState: crossSigning.state: %@. Error: %@", @(mxSession.crypto.crossSigning.state), error); + }]; + } +} + + #pragma mark - Incoming room key requests handling - (void)enableRoomKeyRequestObserver:(MXSession*)mxSession diff --git a/Riot/Modules/Authentication/AuthenticationViewController.m b/Riot/Modules/Authentication/AuthenticationViewController.m index 6c5f7aa47..d40090c3d 100644 --- a/Riot/Modules/Authentication/AuthenticationViewController.m +++ b/Riot/Modules/Authentication/AuthenticationViewController.m @@ -739,7 +739,7 @@ static const CGFloat kAuthInputContainerViewMinHeightConstraintConstant = 150.0; } alert = [UIAlertController alertControllerWithTitle:[VectorL10n authSoftlogoutClearDataSignOutTitle] - message:[VectorL10n authSoftlogoutClearDataSignOutMsg] + message:[VectorL10n authSoftlogoutClearDataSignOutMsg] preferredStyle:UIAlertControllerStyleAlert]; diff --git a/Riot/Modules/Authentication/AuthenticationViewController.xib b/Riot/Modules/Authentication/AuthenticationViewController.xib index c654446fc..4080c755d 100644 --- a/Riot/Modules/Authentication/AuthenticationViewController.xib +++ b/Riot/Modules/Authentication/AuthenticationViewController.xib @@ -294,7 +294,7 @@ -