Merge pull request #5895 from vector-im/release/1.8.8/release
Release 1.8.8
@@ -1,3 +1,58 @@
|
||||
## Changes in 1.8.8 (2022-03-22)
|
||||
|
||||
✨ Features
|
||||
|
||||
- Invite to Space in room landing ([#5225](https://github.com/vector-im/element-ios/issues/5225))
|
||||
- Implement FAB journeys & rough edge warnings ([#5226](https://github.com/vector-im/element-ios/issues/5226))
|
||||
- Space panel overflow journeys & rough edge warnings ([#5227](https://github.com/vector-im/element-ios/issues/5227))
|
||||
- Let people know when rooms have moved. ([#5228](https://github.com/vector-im/element-ios/issues/5228))
|
||||
- Room Settings bottom sheet ([#5229](https://github.com/vector-im/element-ios/issues/5229))
|
||||
- Adding Rooms to Spaces ([#5230](https://github.com/vector-im/element-ios/issues/5230))
|
||||
- Spaces: Update room settings for Spaces ([#5231](https://github.com/vector-im/element-ios/issues/5231))
|
||||
- Spaces: Long press on rooms in space room lists ([#5232](https://github.com/vector-im/element-ios/issues/5232))
|
||||
- Space Settings ([#5233](https://github.com/vector-im/element-ios/issues/5233))
|
||||
|
||||
🙌 Improvements
|
||||
|
||||
- Upgrade MatrixSDK version ([v0.23.0](https://github.com/matrix-org/matrix-ios-sdk/releases/tag/v0.23.0)).
|
||||
- Space creation: Added entire space creation flow. ([#5224](https://github.com/vector-im/element-ios/issues/5224))
|
||||
- Instrument metrics for the IA project. ([#5401](https://github.com/vector-im/element-ios/issues/5401))
|
||||
- RoomDataSource: Reload thread screen for the first message. ([#5441](https://github.com/vector-im/element-ios/issues/5441))
|
||||
- Change behaviour of avatar/self in left menu to match common paradigm and take user to their own profile/settings ([#5500](https://github.com/vector-im/element-ios/issues/5500))
|
||||
- Secure Backup: Add support for mandatory backup/verification ([#5745](https://github.com/vector-im/element-ios/issues/5745))
|
||||
- Thread Notifications: Open thread & reply to thread from notifications. ([#5749](https://github.com/vector-im/element-ios/issues/5749))
|
||||
- IA Metrics: added trigger to JoinedRoom event and implemented ViewRoom event ([#5769](https://github.com/vector-im/element-ios/issues/5769))
|
||||
- Activity Indicators: Replace user indicator presenting view controller with context ([#5780](https://github.com/vector-im/element-ios/issues/5780))
|
||||
- MXKEventFormatter: Extend reply fallback for also non-thread events. ([#5816](https://github.com/vector-im/element-ios/issues/5816))
|
||||
- Location sharing: Support multiple user annotation views on the map. ([#5827](https://github.com/vector-im/element-ios/issues/5827))
|
||||
- MXKRoomDataSource: Pass threadId of room data source for replies. ([#5829](https://github.com/vector-im/element-ios/issues/5829))
|
||||
- MXKEventFormatter: Fix edit fallback usage for edited events. ([#5841](https://github.com/vector-im/element-ios/issues/5841))
|
||||
- RoomViewController: Remove thread list bar button item badge count. ([#5853](https://github.com/vector-im/element-ios/issues/5853))
|
||||
|
||||
🐛 Bugfixes
|
||||
|
||||
- Fix user suggestions not showing up when re-entering a room. ([#5876](https://github.com/vector-im/element-ios/pull/5876))
|
||||
- Prevent the homescreen from resetting on every appearance. ([#5885](https://github.com/vector-im/element-ios/pull/5885))
|
||||
- UserSuggestionViewModel: Fix retain cycle ([#5058](https://github.com/vector-im/element-ios/issues/5058))
|
||||
- Green launch spinner is sometimes dismissed too early causing the incorrect onboarding screen to be displayed. ([#5472](https://github.com/vector-im/element-ios/issues/5472))
|
||||
- Home: Fix crash when pressing tabs ([#5547](https://github.com/vector-im/element-ios/issues/5547))
|
||||
- Selection impossible when filtering in add room screen. ([#5757](https://github.com/vector-im/element-ios/issues/5757))
|
||||
- Room: Refresh header when call actions become available (member count changes) ([#5800](https://github.com/vector-im/element-ios/issues/5800))
|
||||
- Share Extension: Stop logging crashes due to intentional exception that frees up memory and handle changes to MXRoom in the SDK. ([#5805](https://github.com/vector-im/element-ios/issues/5805))
|
||||
- Crash after leaving last space. ([#5825](https://github.com/vector-im/element-ios/issues/5825))
|
||||
- Authentication: Fix a crash that occurred when using the app with an account that had a soft logout. ([#5846](https://github.com/vector-im/element-ios/issues/5846))
|
||||
- MXAccount: Do not clear cache if there are no stored filters ([#5873](https://github.com/vector-im/element-ios/issues/5873))
|
||||
|
||||
⚠️ API Changes
|
||||
|
||||
- Rename scrollEdgesAppearance → scrollEdgeAppearance to match UIKit. ([#5826](https://github.com/vector-im/element-ios/pull/5826))
|
||||
|
||||
🚧 In development 🚧
|
||||
|
||||
- Onboarding: Add screens for setting a display name and avatar when signing up for the first time. ([#5652](https://github.com/vector-im/element-ios/issues/5652))
|
||||
- Location sharing: Handle live location banner view in room screen. ([#5857](https://github.com/vector-im/element-ios/issues/5857))
|
||||
|
||||
|
||||
## Changes in 1.8.7 (2022-03-18)
|
||||
|
||||
🙌 Improvements
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// Copyright 2022 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.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
/// The presentation context is used by `UserIndicatorViewPresentable`s to display content
|
||||
/// on the screen and it serves two primary purposes:
|
||||
///
|
||||
/// - abstraction on top of UIKit (passing context instead of view controllers)
|
||||
/// - immutable context passed at init with variable presenting view controller
|
||||
/// (e.g. depending on collapsed / uncollapsed iPad presentation that changes
|
||||
/// at runtime)
|
||||
public protocol UserIndicatorPresentationContext {
|
||||
var indicatorPresentingViewController: UIViewController? { get }
|
||||
}
|
||||
|
||||
/// A simple implementation of `UserIndicatorPresentationContext` that uses a weak reference
|
||||
/// to the passed-in view controller as the presentation context.
|
||||
public class StaticUserIndicatorPresentationContext: UserIndicatorPresentationContext {
|
||||
// The presenting view controller will be the parent of the user indicator,
|
||||
// and the indicator holds a strong reference to the context, so the view controller
|
||||
// must be decleared `weak` to avoid a retain cycle
|
||||
public private(set) weak var indicatorPresentingViewController: UIViewController?
|
||||
|
||||
public init(viewController: UIViewController) {
|
||||
self.indicatorPresentingViewController = viewController
|
||||
}
|
||||
}
|
||||
@@ -15,5 +15,5 @@
|
||||
//
|
||||
|
||||
// Version
|
||||
MARKETING_VERSION = 1.8.7
|
||||
CURRENT_PROJECT_VERSION = 1.8.7
|
||||
MARKETING_VERSION = 1.8.8
|
||||
CURRENT_PROJECT_VERSION = 1.8.8
|
||||
|
||||
@@ -369,7 +369,7 @@ final class BuildSettings: NSObject {
|
||||
static let authEnableRefreshTokens = false
|
||||
|
||||
// MARK: - Onboarding
|
||||
static let onboardingShowAccountPersonalisation = false
|
||||
static let onboardingShowAccountPersonalization = false
|
||||
|
||||
// MARK: - Unified Search
|
||||
static let unifiedSearchScreenShowPublicDirectory = true
|
||||
|
||||
@@ -110,10 +110,10 @@ extension ElementFonts: Fonts {
|
||||
public var title2: SharedFont {
|
||||
let uiFont = self.font(forTextStyle: .title2)
|
||||
|
||||
if #available(iOS 13.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: Font(uiFont))
|
||||
} else if #available(iOS 14.0, *) {
|
||||
if #available(iOS 14.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: .title2)
|
||||
} else if #available(iOS 13.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: Font(uiFont))
|
||||
} else {
|
||||
return SharedFont(uiFont: uiFont)
|
||||
}
|
||||
@@ -122,10 +122,10 @@ extension ElementFonts: Fonts {
|
||||
public var title2B: SharedFont {
|
||||
let uiFont = self.title2.uiFont.vc_bold
|
||||
|
||||
if #available(iOS 13.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: Font(uiFont))
|
||||
} else if #available(iOS 14.0, *) {
|
||||
if #available(iOS 14.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: .title2.bold())
|
||||
} else if #available(iOS 13.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: Font(uiFont))
|
||||
} else {
|
||||
return SharedFont(uiFont: uiFont)
|
||||
}
|
||||
@@ -134,10 +134,10 @@ extension ElementFonts: Fonts {
|
||||
public var title3: SharedFont {
|
||||
let uiFont = self.font(forTextStyle: .title3)
|
||||
|
||||
if #available(iOS 13.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: Font(uiFont))
|
||||
} else if #available(iOS 14.0, *) {
|
||||
if #available(iOS 14.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: .title3)
|
||||
} else if #available(iOS 13.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: Font(uiFont))
|
||||
} else {
|
||||
return SharedFont(uiFont: uiFont)
|
||||
}
|
||||
@@ -146,10 +146,10 @@ extension ElementFonts: Fonts {
|
||||
public var title3SB: SharedFont {
|
||||
let uiFont = self.title3.uiFont.vc_semiBold
|
||||
|
||||
if #available(iOS 13.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: Font(uiFont))
|
||||
} else if #available(iOS 14.0, *) {
|
||||
if #available(iOS 14.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: .title3.weight(.semibold))
|
||||
} else if #available(iOS 13.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: Font(uiFont))
|
||||
} else {
|
||||
return SharedFont(uiFont: uiFont)
|
||||
}
|
||||
@@ -258,10 +258,10 @@ extension ElementFonts: Fonts {
|
||||
public var caption2: SharedFont {
|
||||
let uiFont = self.font(forTextStyle: .caption2)
|
||||
|
||||
if #available(iOS 13.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: Font(uiFont))
|
||||
} else if #available(iOS 14.0, *) {
|
||||
if #available(iOS 14.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: .caption2)
|
||||
} else if #available(iOS 13.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: Font(uiFont))
|
||||
} else {
|
||||
return SharedFont(uiFont: uiFont)
|
||||
}
|
||||
@@ -270,10 +270,10 @@ extension ElementFonts: Fonts {
|
||||
public var caption2SB: SharedFont {
|
||||
let uiFont = self.caption2.uiFont.vc_semiBold
|
||||
|
||||
if #available(iOS 13.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: Font(uiFont))
|
||||
} else if #available(iOS 14.0, *) {
|
||||
if #available(iOS 14.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: .caption2.weight(.semibold))
|
||||
} else if #available(iOS 13.0, *) {
|
||||
return SharedFont(uiFont: uiFont, font: Font(uiFont))
|
||||
} else {
|
||||
return SharedFont(uiFont: uiFont)
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ GEM
|
||||
specs:
|
||||
CFPropertyList (3.0.5)
|
||||
rexml
|
||||
activesupport (6.1.4.4)
|
||||
activesupport (6.1.5)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 1.6, < 2)
|
||||
minitest (>= 5.1)
|
||||
@@ -17,27 +17,27 @@ GEM
|
||||
artifactory (3.0.15)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.2.0)
|
||||
aws-partitions (1.541.0)
|
||||
aws-sdk-core (3.124.0)
|
||||
aws-partitions (1.568.0)
|
||||
aws-sdk-core (3.130.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.525.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
jmespath (~> 1.0)
|
||||
aws-sdk-kms (1.52.0)
|
||||
aws-sdk-core (~> 3, >= 3.122.0)
|
||||
aws-sdk-kms (1.55.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.109.0)
|
||||
aws-sdk-core (~> 3, >= 3.122.0)
|
||||
aws-sdk-s3 (1.113.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
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.11.2)
|
||||
cocoapods (1.11.3)
|
||||
addressable (~> 2.8)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
cocoapods-core (= 1.11.2)
|
||||
cocoapods-core (= 1.11.3)
|
||||
cocoapods-deintegrate (>= 1.0.3, < 2.0)
|
||||
cocoapods-downloader (>= 1.4.0, < 2.0)
|
||||
cocoapods-plugins (>= 1.0.0, < 2.0)
|
||||
@@ -52,7 +52,7 @@ GEM
|
||||
nap (~> 1.0)
|
||||
ruby-macho (>= 1.0, < 3.0)
|
||||
xcodeproj (>= 1.21.0, < 2.0)
|
||||
cocoapods-core (1.11.2)
|
||||
cocoapods-core (1.11.3)
|
||||
activesupport (>= 5.0, < 7)
|
||||
addressable (~> 2.8)
|
||||
algoliasearch (~> 1.0)
|
||||
@@ -86,17 +86,18 @@ GEM
|
||||
escape (0.0.4)
|
||||
ethon (0.15.0)
|
||||
ffi (>= 1.15.0)
|
||||
excon (0.89.0)
|
||||
faraday (1.8.0)
|
||||
excon (0.92.1)
|
||||
faraday (1.10.0)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
faraday-httpclient (~> 1.0.1)
|
||||
faraday-httpclient (~> 1.0)
|
||||
faraday-multipart (~> 1.0)
|
||||
faraday-net_http (~> 1.0)
|
||||
faraday-net_http_persistent (~> 1.1)
|
||||
faraday-net_http_persistent (~> 1.0)
|
||||
faraday-patron (~> 1.0)
|
||||
faraday-rack (~> 1.0)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
faraday-retry (~> 1.0)
|
||||
ruby2_keywords (>= 0.0.4)
|
||||
faraday-cookie_jar (0.0.7)
|
||||
faraday (>= 0.8.0)
|
||||
@@ -105,14 +106,17 @@ GEM
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.0.3)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
faraday-net_http (1.0.1)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday-patron (1.0.0)
|
||||
faraday-rack (1.0.0)
|
||||
faraday-retry (1.0.3)
|
||||
faraday_middleware (1.2.0)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.2.6)
|
||||
fastlane (2.199.0)
|
||||
fastlane (2.205.0)
|
||||
CFPropertyList (>= 2.3, < 4.0.0)
|
||||
addressable (>= 2.8, < 3.0.0)
|
||||
artifactory (~> 3.0)
|
||||
@@ -157,13 +161,13 @@ GEM
|
||||
fastlane-plugin-versioning (0.5.0)
|
||||
fastlane-plugin-xcodegen (1.1.0)
|
||||
fastlane-plugin-brew (~> 0.1.1)
|
||||
ffi (1.15.4)
|
||||
ffi (1.15.5)
|
||||
fourflusher (2.3.1)
|
||||
fuzzy_match (2.0.4)
|
||||
gh_inspector (1.1.3)
|
||||
google-apis-androidpublisher_v3 (0.14.0)
|
||||
google-apis-androidpublisher_v3 (0.16.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-core (0.4.1)
|
||||
google-apis-core (0.4.2)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
httpclient (>= 2.8.1, < 3.a)
|
||||
@@ -172,11 +176,11 @@ GEM
|
||||
retriable (>= 2.0, < 4.a)
|
||||
rexml
|
||||
webrick
|
||||
google-apis-iamcredentials_v1 (0.9.0)
|
||||
google-apis-iamcredentials_v1 (0.10.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.6.0)
|
||||
google-apis-playcustomapp_v1 (0.7.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-storage_v1 (0.10.0)
|
||||
google-apis-storage_v1 (0.11.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-cloud-core (1.6.0)
|
||||
google-cloud-env (~> 1.0)
|
||||
@@ -184,7 +188,7 @@ GEM
|
||||
google-cloud-env (1.5.0)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
google-cloud-errors (1.2.0)
|
||||
google-cloud-storage (1.35.0)
|
||||
google-cloud-storage (1.36.1)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
google-apis-iamcredentials_v1 (~> 0.1)
|
||||
@@ -192,8 +196,8 @@ GEM
|
||||
google-cloud-core (~> 1.6)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
mini_mime (~> 1.0)
|
||||
googleauth (1.1.0)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
googleauth (1.1.2)
|
||||
faraday (>= 0.17.3, < 3.a)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
memoist (~> 0.16)
|
||||
multi_json (~> 1.11)
|
||||
@@ -204,15 +208,15 @@ GEM
|
||||
http-cookie (1.0.4)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
i18n (1.8.11)
|
||||
i18n (1.10.0)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jmespath (1.4.0)
|
||||
jmespath (1.6.1)
|
||||
json (2.6.1)
|
||||
jwt (2.3.0)
|
||||
memoist (0.16.2)
|
||||
mime-types (3.4.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2021.1115)
|
||||
mime-types-data (3.2022.0105)
|
||||
mini_magick (4.11.0)
|
||||
mini_mime (1.1.2)
|
||||
minitest (5.15.0)
|
||||
@@ -244,9 +248,9 @@ GEM
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.3.2)
|
||||
security (0.1.3)
|
||||
signet (0.16.0)
|
||||
signet (0.16.1)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.3, < 2.0)
|
||||
faraday (>= 0.17.5, < 3.0)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
simctl (1.6.8)
|
||||
@@ -267,7 +271,7 @@ GEM
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.8)
|
||||
unf_ext (0.0.8.1)
|
||||
unicode-display_width (1.8.0)
|
||||
webrick (1.7.0)
|
||||
word_wrap (1.0.0)
|
||||
@@ -285,7 +289,7 @@ GEM
|
||||
rouge (~> 2.0.7)
|
||||
xcpretty-travis-formatter (1.0.1)
|
||||
xcpretty (~> 0.2, >= 0.0.7)
|
||||
zeitwerk (2.5.1)
|
||||
zeitwerk (2.5.4)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
@@ -299,4 +303,4 @@ DEPENDENCIES
|
||||
xcode-install
|
||||
|
||||
BUNDLED WITH
|
||||
2.2.32
|
||||
2.3.9
|
||||
|
||||
@@ -13,7 +13,7 @@ use_frameworks!
|
||||
# - `{ :specHash => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for MatrixSDK 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
|
||||
$matrixSDKVersion = '= 0.22.6'
|
||||
$matrixSDKVersion = '= 0.23.0'
|
||||
# $matrixSDKVersion = :local
|
||||
# $matrixSDKVersion = { :branch => 'develop'}
|
||||
# $matrixSDKVersion = { :specHash => { git: 'https://git.io/fork123', branch: 'fix' } }
|
||||
|
||||
@@ -45,7 +45,7 @@ PODS:
|
||||
- GBDeviceInfo/Core (= 6.6.0)
|
||||
- GBDeviceInfo/Core (6.6.0)
|
||||
- GZIP (1.3.0)
|
||||
- Introspect (0.1.3)
|
||||
- Introspect (0.1.4)
|
||||
- JitsiMeetSDK (3.10.2)
|
||||
- KeychainAccess (4.2.2)
|
||||
- KituraContracts (1.2.1):
|
||||
@@ -180,7 +180,7 @@ EXTERNAL SOURCES:
|
||||
|
||||
CHECKOUT OPTIONS:
|
||||
AnalyticsEvents:
|
||||
:commit: 0101e4fd25ded5fb2cba8a9119cb061e36296369
|
||||
:commit: f37a2f243270bffdcddfa5cbaeb4379e0db581c2
|
||||
:git: https://github.com/matrix-org/matrix-analytics-events.git
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
@@ -199,7 +199,7 @@ SPEC CHECKSUMS:
|
||||
FlowCommoniOS: ca92071ab526dc89905495a37844fd7e78d1a7f2
|
||||
GBDeviceInfo: ed0db16230d2fa280e1cbb39a5a7f60f6946aaec
|
||||
GZIP: 416858efbe66b41b206895ac6dfd5493200d95b3
|
||||
Introspect: 2be020f30f084ada52bb4387fff83fa52c5c400e
|
||||
Introspect: b62c4dd2063072327c21d618ef2bedc3c87bc366
|
||||
JitsiMeetSDK: 2f118fa770f23e518f3560fc224fae3ac7062223
|
||||
KeychainAccess: c0c4f7f38f6fc7bbe58f5702e25f7bd2f65abf51
|
||||
KituraContracts: e845e60dc8627ad0a76fa55ef20a45451d8f830b
|
||||
@@ -227,4 +227,4 @@ SPEC CHECKSUMS:
|
||||
|
||||
PODFILE CHECKSUM: 16aaf5e59ec902619fbfd799939f044728a92ab7
|
||||
|
||||
COCOAPODS: 1.11.2
|
||||
COCOAPODS: 1.11.3
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "coach_mark.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "coach_mark@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "coach_mark@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "onboarding_avatar_camera.svg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"preserves-vector-representation" : true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<svg width="23" height="19" viewBox="0 0 23 19" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.26126 0.625C7.93955 0.625 6.8205 1.56156 6.56548 2.83072C6.52727 3.02086 6.45364 3.20457 6.32574 3.35036L5.77376 3.97953C5.59971 4.17792 5.3486 4.29167 5.08469 4.29167H2.16659C1.15406 4.29167 0.333252 5.11248 0.333252 6.125V16.2083C0.333252 17.2209 1.15406 18.0417 2.16658 18.0417H20.4999C21.5124 18.0417 22.3333 17.2209 22.3333 16.2083V6.125C22.3333 5.11248 21.5124 4.29167 20.4999 4.29167H17.5818C17.3179 4.29167 17.0668 4.17792 16.8927 3.97953L16.3408 3.35036C16.2129 3.20457 16.1392 3.02086 16.101 2.83071C15.846 1.56156 14.727 0.625 13.4052 0.625H9.26126ZM14.9999 10.7083C14.9999 12.7333 13.3583 14.3749 11.3333 14.3749C9.30821 14.3749 7.66659 12.7333 7.66659 10.7083C7.66659 8.68321 9.30821 7.04159 11.3333 7.04159C13.3583 7.04159 14.9999 8.68321 14.9999 10.7083Z" fill="#737D8C"/>
|
||||
<path d="M2.62492 2.91659C2.37179 2.91659 2.16659 3.12179 2.16659 3.37492C2.16659 3.62805 2.37179 3.83325 2.62492 3.83325H4.45825C4.71138 3.83325 4.91659 3.62805 4.91659 3.37492C4.91659 3.12179 4.71138 2.91659 4.45825 2.91659H2.62492Z" fill="#737D8C"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "onboarding_avatar_edit.svg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"preserves-vector-representation" : true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
<svg width="22" height="21" viewBox="0 0 22 21" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M3.63013 13.0435C3.64248 12.9655 3.67763 12.8929 3.73116 12.8349L15.1405 0.462333C15.2903 0.299929 15.5434 0.289681 15.7058 0.439442L18.0582 2.60876C18.2206 2.75852 18.2309 3.01158 18.0811 3.17399L6.67174 15.5465C6.6182 15.6046 6.54868 15.6455 6.47192 15.6641L3.66863 16.3437C3.39123 16.411 3.13469 16.1744 3.1793 15.8925L3.63013 13.0435Z" fill="#737D8C"/>
|
||||
<path d="M1.83301 17.2204C1.00458 17.2204 0.333008 17.892 0.333008 18.7204C0.333008 19.5488 1.00458 20.2204 1.83301 20.2204L19.833 20.2204C20.6614 20.2204 21.333 19.5488 21.333 18.7204C21.333 17.892 20.6614 17.2204 19.833 17.2204L1.83301 17.2204Z" fill="#737D8C"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 734 B |
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "live_location_icon.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "live_location_icon@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "live_location_icon@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 390 B |
|
After Width: | Height: | Size: 710 B |
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "dark-theme-no-mentions.svg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "original"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="none" viewBox="0 0 28 28"><circle cx="23" cy="5" r="5" fill="#A9B2BC"/><path fill="#0DBD8B" fill-rule="evenodd" d="M16.07 6A7.004 7.004 0 0 0 22 11.93V21a3 3 0 0 1-3 3H7.667a1 1 0 0 0-.6.2L3.6 26.8A1 1 0 0 1 2 26V9a3 3 0 0 1 3-3h11.07ZM6 12a1 1 0 1 0 0 2h12a1 1 0 1 0 0-2H6Zm-1 5a1 1 0 0 1 1-1h6a1 1 0 1 1 0 2H6a1 1 0 0 1-1-1Z" clip-rule="evenodd"/></svg>
|
||||
|
After Width: | Height: | Size: 424 B |
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "light-theme-no-mentions.svg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "original"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="none" viewBox="0 0 28 28"><circle cx="23" cy="5" r="5" fill="#737D8C"/><path fill="#0DBD8B" fill-rule="evenodd" d="M16.07 6A7.004 7.004 0 0 0 22 11.93V21a3 3 0 0 1-3 3H7.667a1 1 0 0 0-.6.2L3.6 26.8A1 1 0 0 1 2 26V9a3 3 0 0 1 3-3h11.07ZM6 12a1 1 0 1 0 0 2h12a1 1 0 1 0 0-2H6Zm-1 5a1 1 0 0 1 1-1h6a1 1 0 1 1 0 2H6a1 1 0 0 1-1-1Z" clip-rule="evenodd"/></svg>
|
||||
|
After Width: | Height: | Size: 424 B |
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "light-and-dark-theme-mentions.svg",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "original"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="none" viewBox="0 0 28 28"><circle cx="23" cy="5" r="5" fill="#FF5B55"/><path fill="#0DBD8B" fill-rule="evenodd" d="M16.07 6A7.004 7.004 0 0 0 22 11.93V21a3 3 0 0 1-3 3H7.667a1 1 0 0 0-.6.2L3.6 26.8A1 1 0 0 1 2 26V9a3 3 0 0 1 3-3h11.07ZM6 12a1 1 0 1 0 0 2h12a1 1 0 1 0 0-2H6Zm-1 5a1 1 0 0 1 1-1h6a1 1 0 1 1 0 2H6a1 1 0 0 1-1-1Z" clip-rule="evenodd"/></svg>
|
||||
|
After Width: | Height: | Size: 424 B |
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "room_access_info_header_icon.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_access_info_header_icon@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_access_info_header_icon@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 432 B |
|
After Width: | Height: | Size: 785 B |
|
After Width: | Height: | Size: 1.0 KiB |
@@ -1,17 +1,17 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "space_home_icon.png",
|
||||
"filename" : "space_add_room.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_home_icon@2x.png",
|
||||
"filename" : "space_add_room@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_home_icon@3x.png",
|
||||
"filename" : "space_add_room@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 2.3 KiB |
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "space_creation_camera.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_creation_camera@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_creation_camera@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 391 B |
|
After Width: | Height: | Size: 525 B |
|
After Width: | Height: | Size: 760 B |
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "space_creation_private.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_creation_private@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_creation_private@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 384 B |
|
After Width: | Height: | Size: 597 B |
|
After Width: | Height: | Size: 865 B |
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "space_creation_public.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_creation_public@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_creation_public@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 733 B |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 328 B |
|
Before Width: | Height: | Size: 541 B |
|
Before Width: | Height: | Size: 703 B |
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "space_home_icon_dark.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_home_icon_dark@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_home_icon_dark@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 244 B |
|
After Width: | Height: | Size: 389 B |
|
After Width: | Height: | Size: 515 B |
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "space_home_icon_light.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_home_icon_light@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_home_icon_light@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 358 B |
|
After Width: | Height: | Size: 540 B |
|
After Width: | Height: | Size: 685 B |
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "space_invite_user.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_invite_user@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_invite_user@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 496 B |
|
After Width: | Height: | Size: 865 B |
|
After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "space_menu_plus_icon.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_menu_plus_icon@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "space_menu_plus_icon@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 321 B |
|
After Width: | Height: | Size: 443 B |
|
After Width: | Height: | Size: 563 B |
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "spaces_add_space_dark.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "spaces_add_space_dark@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "spaces_add_space_dark@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 172 B |
|
After Width: | Height: | Size: 206 B |
|
After Width: | Height: | Size: 247 B |
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "spaces_add_space_light.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "spaces_add_space_light@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "spaces_add_space_light@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 179 B |
|
After Width: | Height: | Size: 227 B |
|
After Width: | Height: | Size: 274 B |
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "spaces_invite_users.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "spaces_invite_users@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "spaces_invite_users@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 474 B |
|
After Width: | Height: | Size: 803 B |
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "spaces_modal_back.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "spaces_modal_back@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "spaces_modal_back@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 319 B |
|
After Width: | Height: | Size: 445 B |
|
After Width: | Height: | Size: 595 B |
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "spaces_modal_close.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "spaces_modal_close@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "spaces_modal_close@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 363 B |
|
After Width: | Height: | Size: 552 B |
|
After Width: | Height: | Size: 720 B |
@@ -16,8 +16,23 @@
|
||||
|
||||
/** These strings will be ignored by Weblate. Useful for WIP **/
|
||||
|
||||
// MARK: Onboarding Personalisation WIP
|
||||
// MARK: Onboarding Personalization WIP
|
||||
"onboarding_congratulations_title" = "Congratulations!";
|
||||
"onboarding_congratulations_message" = "Your account\n%@\nhas been created.";
|
||||
"onboarding_congratulations_personalise_button" = "Personalise profile";
|
||||
"onboarding_congratulations_message" = "Your account %@ has been created.";
|
||||
"onboarding_congratulations_personalize_button" = "Personalise profile";
|
||||
"onboarding_congratulations_home_button" = "Take me home";
|
||||
|
||||
"onboarding_personalization_save" = "Save and continue";
|
||||
"onboarding_personalization_skip" = "Skip this step";
|
||||
|
||||
"onboarding_display_name_title" = "Choose a display name";
|
||||
"onboarding_display_name_message" = "This will be shown when you send messages.";
|
||||
"onboarding_display_name_placeholder" = "Display Name";
|
||||
"onboarding_display_name_hint" = "You can change this later";
|
||||
"onboarding_display_name_max_length" = "Your display name must be less than 256 characters";
|
||||
|
||||
"onboarding_avatar_title" = "Add a profile picture";
|
||||
"onboarding_avatar_message" = "You can change this anytime.";
|
||||
"onboarding_avatar_accessibility_label" = "Profile picture";
|
||||
|
||||
"image_picker_action_files" = "Choose from files";
|
||||
|
||||
@@ -57,7 +57,6 @@
|
||||
"rename" = "Rename";
|
||||
"collapse" = "collapse";
|
||||
"send_to" = "Send to %@";
|
||||
"sending" = "Sending";
|
||||
"close" = "Close";
|
||||
"skip" = "Skip";
|
||||
"joined" = "Joined";
|
||||
@@ -66,7 +65,21 @@
|
||||
"less" = "Less";
|
||||
"open" = "Open";
|
||||
"done" = "Done";
|
||||
"private" = "Private";
|
||||
"public" = "Public";
|
||||
"stop" = "Stop";
|
||||
"new_word" = "New";
|
||||
"existing" = "Existing";
|
||||
"add" = "Add";
|
||||
"ok" = "OK";
|
||||
"error" = "Error";
|
||||
"suggest" = "Suggest";
|
||||
"edit" = "Edit";
|
||||
|
||||
// Activities
|
||||
"loading" = "Loading";
|
||||
"sending" = "Sending";
|
||||
"saving" = "Saving";
|
||||
|
||||
// Call Bar
|
||||
"callbar_only_single_active" = "Tap to return to the call (%@)";
|
||||
@@ -297,6 +310,7 @@ Tap the + to start adding people.";
|
||||
"room_participants_remove_third_party_invite_prompt_msg" = "Are you sure you want to revoke this invite?";
|
||||
"room_participants_invite_prompt_title" = "Confirmation";
|
||||
"room_participants_invite_prompt_msg" = "Are you sure you want to invite %@ to this chat?";
|
||||
"room_participants_invite_prompt_to_msg" = "Are you sure you want to invite %@ to %@?";
|
||||
"room_participants_filter_room_members" = "Filter room members";
|
||||
"room_participants_filter_room_members_for_dm" = "Filter members";
|
||||
"room_participants_invite_another_user" = "Search / invite by User ID, Name or email";
|
||||
@@ -809,8 +823,11 @@ Tap the + to start adding people.";
|
||||
"room_details_access_section_anyone"="Anyone who knows the room's link, including guests";
|
||||
"room_details_access_section_anyone_for_dm"="Anyone who knows the link, including guests";
|
||||
"room_details_access_section_no_address_warning" = "To link to a room it must have an address";
|
||||
"room_details_access_row_title" = "Access";
|
||||
"room_details_promote_room_title" = "Promote room";
|
||||
"room_details_access_section_directory_toggle"="List this room in room directory";
|
||||
"room_details_access_section_directory_toggle_for_dm"="List in room directory";
|
||||
"room_details_promote_room_suggest_title" = "Suggest to space members";
|
||||
"room_details_history_section"="Who can read history?";
|
||||
"room_details_history_section_anyone"="Anyone";
|
||||
"room_details_history_section_members_only"="Members only (since the point in time of selecting this option)";
|
||||
@@ -861,6 +878,32 @@ Tap the + to start adding people.";
|
||||
"room_details_copy_room_address" = "Copy Room Address";
|
||||
"room_details_copy_room_url" = "Copy Room URL";
|
||||
|
||||
// Room Access Settings
|
||||
"room_access_settings_screen_nav_title" = "Room access";
|
||||
"room_access_settings_screen_title" = "Who can access this room?";
|
||||
"room_access_settings_screen_message" = "Decide who can find and join %@.";
|
||||
"room_access_settings_screen_private_message" = "Only invited people can find and join.";
|
||||
"room_access_settings_screen_restricted_message" = "Let anyone in a space find and join.\nYou’ll be asked to confirm which spaces.";
|
||||
"room_access_settings_screen_upgrade_required" = "Upgrade required";
|
||||
"room_access_settings_screen_edit_spaces" = "Edit spaces";
|
||||
"room_access_settings_screen_public_message" = "Anyone can find and join.";
|
||||
|
||||
"room_access_settings_screen_upgrade_alert_title" = "Upgrade room";
|
||||
"room_access_settings_screen_upgrade_alert_message" = "Anyone in Space name will be able to find and join this room - no need to manually invite everyone. You’ll be able to change this in room settings anytime.\n\nPlease note upgrading will make a new version of the room. All current messages will stay in this archived room.";
|
||||
"room_access_settings_screen_upgrade_alert_auto_invite_switch" = "Automatically invite members to new room";
|
||||
"room_access_settings_screen_upgrade_alert_upgrade_button" = "Upgrade";
|
||||
"room_access_settings_screen_upgrade_alert_upgrading" = "Upgrading room";
|
||||
"room_access_settings_screen_setting_room_access" = "Setting room access";
|
||||
|
||||
"room_access_space_chooser_known_spaces_section" = "Spaces you know containing %@";
|
||||
"room_access_space_chooser_other_spaces_section" = "Other spaces or rooms";
|
||||
"room_access_space_chooser_other_spaces_section_info" = "These are likely things other admins of %@ are a part of.";
|
||||
|
||||
// Room suggestion Settings
|
||||
"room_suggestion_settings_screen_nav_title" = "Suggest room";
|
||||
"room_suggestion_settings_screen_title" = "Make a room suggested in a space";
|
||||
"room_suggestion_settings_screen_message" = "Suggested rooms are promoted to space members as good ones to join.";
|
||||
|
||||
// Room Notification Settings
|
||||
"room_notifs_settings_notify_me_for" = "Notify me for";
|
||||
"room_notifs_settings_all_messages" = "All Messages";
|
||||
@@ -1700,20 +1743,27 @@ Tap the + to start adding people.";
|
||||
// MARK: - Create Room
|
||||
|
||||
"create_room_title" = "New Room";
|
||||
"create_room_section_header_name" = "Room name";
|
||||
"create_room_section_header_name" = "NAME";
|
||||
"create_room_placeholder_name" = "Name";
|
||||
"create_room_section_header_topic" = "Room topic (optional)";
|
||||
"create_room_placeholder_topic" = "Topic";
|
||||
"create_room_section_header_encryption" = "Room encryption";
|
||||
"create_room_section_header_topic" = "TOPIC (OPTIONAL)";
|
||||
"create_room_placeholder_topic" = "What is this room about?";
|
||||
"create_room_section_header_encryption" = "ENCRYPTION";
|
||||
"create_room_enable_encryption" = "Enable Encryption";
|
||||
"create_room_section_footer_encryption" = "Encryption can’t be disabled afterwards.";
|
||||
"create_room_section_header_type" = "Room type";
|
||||
"create_room_type_private" = "Private Room";
|
||||
"create_room_type_public" = "Public Room";
|
||||
"create_room_section_footer_type" = "People join a private room only with the room invitation.";
|
||||
"create_room_show_in_directory" = "Show the room in the directory";
|
||||
"create_room_section_header_address" = "Room address";
|
||||
"create_room_section_header_type" = "WHO CAN ACCESS";
|
||||
"create_room_type_private" = "Private Room (invite only)";
|
||||
"create_room_type_restricted" = "Space members";
|
||||
"create_room_type_public" = "Public Room (anyone)";
|
||||
"create_room_section_footer_type_private" = "Only people invited can find and join.";
|
||||
"create_room_section_footer_type_restricted" = "Anyone in Space name can find and join.";
|
||||
"create_room_section_footer_type_public" = "Only people invited can find and join, not just people in Space name.";
|
||||
"create_room_promotion_header" = "PROMOTION";
|
||||
"create_room_show_in_directory" = "Show in room directory";
|
||||
"create_room_show_in_directory_footer" = "This will help people find and join.";
|
||||
"create_room_section_header_address" = "ADDRESS";
|
||||
"create_room_placeholder_address" = "#testroom:matrix.org";
|
||||
"create_room_suggest_room" = "Suggest to space members";
|
||||
"create_room_suggest_room_footer" = "Suggested rooms are promoted to space members as good to join.";
|
||||
|
||||
// MARK: - Room Info
|
||||
|
||||
@@ -1759,6 +1809,12 @@ Tap the + to start adding people.";
|
||||
"invite_friends_action" = "Invite friends to %@";
|
||||
"invite_friends_share_text" = "Hey, talk to me on %@: %@";
|
||||
|
||||
// MARK: - Share invite link
|
||||
|
||||
"share_invite_link_action" = "Share invite link";
|
||||
"share_invite_link_room_text" = "Hey, join this room on %@";
|
||||
"share_invite_link_space_text" = "Hey, join this space on %@";
|
||||
|
||||
// Mark: - Room avatar view
|
||||
|
||||
"room_avatar_view_accessibility_label" = "avatar";
|
||||
@@ -1781,6 +1837,15 @@ Tap the + to start adding people.";
|
||||
"room_intro_cell_information_dm_sentence2" = "Only the two of you are in this conversation, no one else can join.";
|
||||
"room_intro_cell_information_multiple_dm_sentence2" = "Only you are in this conversation, unless any of you invites someone to join.";
|
||||
|
||||
// Mark: - Room invite
|
||||
|
||||
"room_invite_to_space_option_title" = "To %@";
|
||||
"room_invite_to_space_option_detail" = "They can explore %@, but won’t be a member of %@.";
|
||||
"room_invite_to_room_option_title" = "To just this room";
|
||||
"room_invite_to_room_option_detail" = "They won’t be a part of %@.";
|
||||
"room_invite_not_enough_permission" = "You do not have permission to invite people to this room";
|
||||
"space_invite_not_enough_permission" = "You do not have permission to invite people to this space";
|
||||
|
||||
// Mark: - Spaces
|
||||
|
||||
"space_feature_unavailable_title" = "Spaces aren’t here yet";
|
||||
@@ -1793,6 +1858,8 @@ Tap the + to start adding people.";
|
||||
"space_beta_announce_information" = "Spaces are a new way to group rooms and people. They’re not on iOS yet, but you can use them now on Web and Desktop.";
|
||||
|
||||
"spaces_home_space_title" = "Home";
|
||||
"spaces_add_space_title" = "Create space";
|
||||
"spaces_create_space_title" = "Create a space";
|
||||
"spaces_left_panel_title" = "Spaces";
|
||||
"leave_space_title" = "Leave %@";
|
||||
"leave_space_message" = "Are you sure you want to leave %@? Do you also want to leave all rooms and spaces of this space?";
|
||||
@@ -1801,6 +1868,8 @@ Tap the + to start adding people.";
|
||||
"leave_space_and_all_rooms_action" = "Leave all rooms and spaces";
|
||||
"spaces_explore_rooms" = "Explore rooms";
|
||||
"spaces_suggested_room" = "Suggested";
|
||||
"spaces_explore_rooms_room_number" = "%@ rooms";
|
||||
"spaces_explore_rooms_one_room" = "1 room";
|
||||
"space_tag" = "space";
|
||||
"spaces_empty_space_title" = "This space has no rooms (yet)";
|
||||
"spaces_empty_space_detail" = "Some rooms may be hidden because they’re private and you need an invite.";
|
||||
@@ -1816,7 +1885,78 @@ Tap the + to start adding people.";
|
||||
"space_home_show_all_rooms" = "Show all rooms";
|
||||
|
||||
"space_private_join_rule" = "Private space";
|
||||
"space_private_join_rule_detail" = "Invite only, best for yourself or teams";
|
||||
"space_public_join_rule" = "Public space";
|
||||
"spaces_invite_people" = "Invite people";
|
||||
"spaces_add_room" = "Add room";
|
||||
"spaces_add_space" = "Add space";
|
||||
"space_public_join_rule_detail" = "Open to anyone, best for communities";
|
||||
|
||||
"space_topic" = "Description";
|
||||
|
||||
"space_settings_access_section" = "Who can access this space?";
|
||||
"space_settings_update_failed_message" = "Failed to update space settings. Do you want to retry?";
|
||||
"space_settings_current_address_message" = "Your space is viewable at\n%@";
|
||||
|
||||
// Mark: - Space Creation
|
||||
|
||||
"spaces_creation_hint" = "Spaces are a new way to group rooms and people.";
|
||||
"spaces_creation_visibility_title" = "What type of space do you want to create?";
|
||||
"spaces_creation_visibility_message" = "To join an existing space, you need an invite.";
|
||||
"spaces_creation_footer" = "You can change this later";
|
||||
"spaces_creation_settings_message" = "Add some details to help it stand out. You can change these at any point.";
|
||||
"spaces_creation_address" = "Address";
|
||||
"spaces_creation_empty_room_name_error" = "Name required";
|
||||
"spaces_creation_address_default_message" = "Your space will be viewable at\n%@";
|
||||
"spaces_creation_address_invalid_characters" = "%@\nhas invalid characters";
|
||||
"spaces_creation_address_already_exists" = "%@\nalready exists";
|
||||
"spaces_creation_public_space_title" = "Your public space";
|
||||
"spaces_creation_private_space_title" = "Your private space";
|
||||
"spaces_creation_cancel_title" = "Stop creating a space?";
|
||||
"spaces_creation_cancel_message" = "Your progress will be lost.";
|
||||
|
||||
"spaces_creation_new_rooms_title" = "What are some discussions you’ll have?";
|
||||
"spaces_creation_new_rooms_message" = "We’ll create a room for each one.";
|
||||
"spaces_creation_new_rooms_room_name_title" = "Room name";
|
||||
"spaces_creation_new_rooms_general" = "General";
|
||||
"spaces_creation_new_rooms_random" = "Random";
|
||||
"spaces_creation_new_rooms_support" = "Support";
|
||||
|
||||
"spaces_creation_email_invites_title" = "Invite your team";
|
||||
"spaces_creation_email_invites_message" = "You can invite them later too.";
|
||||
"spaces_creation_email_invites_email_title" = "Email";
|
||||
|
||||
"spaces_creation_sharing_type_title" = "Who are you working with?";
|
||||
"spaces_creation_sharing_type_message" = "Make sure the right people have access %@. You can change this later.";
|
||||
"spaces_creation_sharing_type_just_me_title" = "Just me";
|
||||
"spaces_creation_sharing_type_just_me_detail" = "A private space to organise your rooms";
|
||||
"spaces_creation_sharing_type_me_and_teammates_title" = "Me and teammates";
|
||||
"spaces_creation_sharing_type_me_and_teammates_detail" = "A private space for you & your teammates";
|
||||
|
||||
"spaces_creation_add_rooms_title" = "What do you want to add?";
|
||||
"spaces_creation_add_rooms_message" = "As this space is just for you, no one will be informed. You can add more later.";
|
||||
|
||||
"spaces_creation_invite_by_username" = "Invite by username";
|
||||
"spaces_creation_invite_by_username_title" = "Invite your team";
|
||||
"spaces_creation_invite_by_username_message" = "You can invite them later too.";
|
||||
|
||||
"spaces_creation_post_process_creating_space" = "Creating space";
|
||||
"spaces_creation_post_process_creating_space_task" = "Creating %@";
|
||||
"spaces_creation_post_process_uploading_avatar" = "Uploading avatar";
|
||||
"spaces_creation_post_process_creating_room" = "Creating %@";
|
||||
"spaces_creation_post_process_adding_rooms" = "Adding %@ rooms";
|
||||
"spaces_creation_post_process_inviting_users" = "Inviting %@ users";
|
||||
|
||||
"spaces_creation_in_spacename" = "in %@";
|
||||
"spaces_creation_in_spacename_plus_one" = "in %@ + 1 space";
|
||||
"spaces_creation_in_spacename_plus_many" = "in %@ + %@ spaces";
|
||||
"spaces_creation_in_many_spaces" = "in %@ spaces";
|
||||
"spaces_creation_in_one_space" = "in 1 space";
|
||||
|
||||
"spaces_invite_people" = "Invite people";
|
||||
"spaces_add_room" = "Add room";
|
||||
"spaces_add_room_missing_permission_message" = "You do not have permissions to add rooms to this space.";
|
||||
"spaces_add_space" = "Add space";
|
||||
|
||||
// Mark: Avatar
|
||||
|
||||
@@ -1836,6 +1976,7 @@ Tap the + to start adding people.";
|
||||
"side_menu_action_help" = "Help";
|
||||
"side_menu_action_feedback" = "Feedback";
|
||||
"side_menu_app_version" = "Version %@";
|
||||
"side_menu_coach_message" = "Swipe right or tap to see all rooms";
|
||||
|
||||
// Mark: - Voice Messages
|
||||
|
||||
@@ -1952,6 +2093,11 @@ Tap the + to start adding people.";
|
||||
|
||||
"location_sharing_settings_toggle_title" = "Enable location sharing";
|
||||
|
||||
// MARK: Live location sharing
|
||||
|
||||
"live_location_sharing_banner_title" = "Live location enabled";
|
||||
"live_location_sharing_banner_stop" = "Stop";
|
||||
|
||||
|
||||
// MARK: - MatrixKit
|
||||
|
||||
|
||||
@@ -30,4 +30,9 @@ public extension Bundle {
|
||||
}
|
||||
return bundle
|
||||
}
|
||||
|
||||
/// Whether or not the bundle is the RiotShareExtension.
|
||||
var isShareExtension: Bool {
|
||||
bundleURL.lastPathComponent.contains("RiotShareExtension.appex")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
success:(void (^)(BOOL canEnableE2E))success
|
||||
failure:(void (^)(NSError *error))failure;
|
||||
{
|
||||
if ([self vc_homeserverConfiguration].isE2EEByDefaultEnabled)
|
||||
if ([self vc_homeserverConfiguration].encryption.isE2EEByDefaultEnabled)
|
||||
{
|
||||
return [self canEnableE2EByDefaultInNewRoomWithUsers:userIds success:success failure:failure];
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
|
||||
extension UIButton {
|
||||
|
||||
@@ -51,4 +51,10 @@ extension UIButton {
|
||||
self.titleLabel?.adjustsFontForContentSizeCategory = newValue
|
||||
}
|
||||
}
|
||||
|
||||
/// Set title font and enable Dynamic Type support
|
||||
func vc_setTitleFont(_ font: UIFont) {
|
||||
self.vc_adjustsFontForContentSizeCategory = true
|
||||
self.titleLabel?.font = font
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,28 +44,50 @@ extension UIViewController {
|
||||
/// - Parameters:
|
||||
/// - viewController: The child view controller to add.
|
||||
/// - view: The view on which to add the child view controller view.
|
||||
func vc_addChildViewController(viewController: UIViewController, onView view: UIView) {
|
||||
/// - animated: true to add a fade in animation
|
||||
func vc_addChildViewController(viewController: UIViewController, onView view: UIView, animated: Bool = false) {
|
||||
self.addChild(viewController)
|
||||
|
||||
viewController.view.frame = view.bounds
|
||||
if animated {
|
||||
viewController.view.alpha = 0
|
||||
}
|
||||
view.vc_addSubViewMatchingParent(viewController.view)
|
||||
if animated {
|
||||
UIView.animate(withDuration: 0.2) {
|
||||
viewController.view.alpha = 1
|
||||
}
|
||||
}
|
||||
viewController.didMove(toParent: self)
|
||||
}
|
||||
|
||||
|
||||
/// Remove a child view controller from current view controller.
|
||||
///
|
||||
/// - Parameter viewController: The child view controller to remove.
|
||||
func vc_removeChildViewController(viewController: UIViewController) {
|
||||
/// - Parameters:
|
||||
/// - viewController: The child view controller to remove.
|
||||
/// - animated: true to add a fade out animation
|
||||
func vc_removeChildViewController(viewController: UIViewController, animated: Bool = false) {
|
||||
viewController.willMove(toParent: nil)
|
||||
viewController.view.removeFromSuperview()
|
||||
if animated {
|
||||
UIView.animate(withDuration: 0.2) {
|
||||
viewController.view.alpha = 0
|
||||
} completion: { finished in
|
||||
viewController.view.removeFromSuperview()
|
||||
viewController.view.alpha = 1
|
||||
}
|
||||
} else {
|
||||
viewController.view.removeFromSuperview()
|
||||
}
|
||||
viewController.removeFromParent()
|
||||
}
|
||||
|
||||
|
||||
/// Remove current view controller from parent.
|
||||
func vc_removeFromParent() {
|
||||
self.vc_removeChildViewController(viewController: self)
|
||||
///
|
||||
/// - Parameter animated: true to add a fade out animation
|
||||
func vc_removeFromParent(animated: Bool = false) {
|
||||
self.vc_removeChildViewController(viewController: self, animated: animated)
|
||||
}
|
||||
|
||||
/// Adds a floating action button to the bottom-right of the page.
|
||||
@@ -115,4 +137,18 @@ extension UIViewController {
|
||||
// set split view display mode button as left bar button item
|
||||
self.navigationItem.leftBarButtonItem = splitViewController.displayModeButtonItem
|
||||
}
|
||||
|
||||
/// Set the view controller to be displayed in fullscreen modal presentation style on any iOS version.
|
||||
///
|
||||
/// - Parameters:
|
||||
/// - isFullScreen: whether view controller should be displayed full screen
|
||||
/// - Returns: the view controller
|
||||
@discardableResult
|
||||
func vc_setModalFullScreen(_ isFullScreen: Bool) -> UIViewController {
|
||||
if #available(iOS 13.0, *) {
|
||||
self.modalPresentationStyle = isFullScreen ? .fullScreen : .automatic
|
||||
}
|
||||
|
||||
return self
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,6 +60,7 @@ internal class Asset: NSObject {
|
||||
internal static let checkmark = ImageAsset(name: "checkmark")
|
||||
internal static let chevron = ImageAsset(name: "chevron")
|
||||
internal static let closeButton = ImageAsset(name: "close_button")
|
||||
internal static let coachMark = ImageAsset(name: "coach_mark")
|
||||
internal static let disclosureIcon = ImageAsset(name: "disclosure_icon")
|
||||
internal static let errorIcon = ImageAsset(name: "error_icon")
|
||||
internal static let faceidIcon = ImageAsset(name: "faceid_icon")
|
||||
@@ -123,6 +124,8 @@ internal class Asset: NSObject {
|
||||
internal static let onboardingSplashScreenPage3Dark = ImageAsset(name: "OnboardingSplashScreenPage3Dark")
|
||||
internal static let onboardingSplashScreenPage4 = ImageAsset(name: "OnboardingSplashScreenPage4")
|
||||
internal static let onboardingSplashScreenPage4Dark = ImageAsset(name: "OnboardingSplashScreenPage4Dark")
|
||||
internal static let onboardingAvatarCamera = ImageAsset(name: "onboarding_avatar_camera")
|
||||
internal static let onboardingAvatarEdit = ImageAsset(name: "onboarding_avatar_edit")
|
||||
internal static let onboardingCongratulationsIcon = ImageAsset(name: "onboarding_congratulations_icon")
|
||||
internal static let onboardingUseCaseCommunity = ImageAsset(name: "onboarding_use_case_community")
|
||||
internal static let onboardingUseCaseCommunityDark = ImageAsset(name: "onboarding_use_case_community_dark")
|
||||
@@ -168,6 +171,7 @@ internal class Asset: NSObject {
|
||||
internal static let videoCall = ImageAsset(name: "video_call")
|
||||
internal static let voiceCallHangonIcon = ImageAsset(name: "voice_call_hangon_icon")
|
||||
internal static let voiceCallHangupIcon = ImageAsset(name: "voice_call_hangup_icon")
|
||||
internal static let liveLocationIcon = ImageAsset(name: "live_location_icon")
|
||||
internal static let locationMarkerIcon = ImageAsset(name: "location_marker_icon")
|
||||
internal static let locationShareIcon = ImageAsset(name: "location_share_icon")
|
||||
internal static let locationUserMarker = ImageAsset(name: "location_user_marker")
|
||||
@@ -183,6 +187,9 @@ internal class Asset: NSObject {
|
||||
internal static let threadsFilter = ImageAsset(name: "threads_filter")
|
||||
internal static let threadsFilterApplied = ImageAsset(name: "threads_filter_applied")
|
||||
internal static let threadsIcon = ImageAsset(name: "threads_icon")
|
||||
internal static let threadsIconGrayDotDark = ImageAsset(name: "threads_icon_gray_dot_dark")
|
||||
internal static let threadsIconGrayDotLight = ImageAsset(name: "threads_icon_gray_dot_light")
|
||||
internal static let threadsIconRedDot = ImageAsset(name: "threads_icon_red_dot")
|
||||
internal static let urlPreviewClose = ImageAsset(name: "url_preview_close")
|
||||
internal static let urlPreviewCloseDark = ImageAsset(name: "url_preview_close_dark")
|
||||
internal static let voiceMessageCancelGradient = ImageAsset(name: "voice_message_cancel_gradient")
|
||||
@@ -207,6 +214,7 @@ internal class Asset: NSObject {
|
||||
internal static let modIcon = ImageAsset(name: "mod_icon")
|
||||
internal static let moreReactions = ImageAsset(name: "more_reactions")
|
||||
internal static let notifications = ImageAsset(name: "notifications")
|
||||
internal static let roomAccessInfoHeaderIcon = ImageAsset(name: "room_access_info_header_icon")
|
||||
internal static let scrollup = ImageAsset(name: "scrollup")
|
||||
internal static let roomsEmptyScreenArtwork = ImageAsset(name: "rooms_empty_screen_artwork")
|
||||
internal static let roomsEmptyScreenArtworkDark = ImageAsset(name: "rooms_empty_screen_artwork_dark")
|
||||
@@ -232,15 +240,27 @@ internal class Asset: NSObject {
|
||||
internal static let sideMenuNotifIcon = ImageAsset(name: "side_menu_notif_icon")
|
||||
internal static let featureUnavaibleArtwork = ImageAsset(name: "feature_unavaible_artwork")
|
||||
internal static let featureUnavaibleArtworkDark = ImageAsset(name: "feature_unavaible_artwork_dark")
|
||||
internal static let spaceHomeIcon = ImageAsset(name: "space_home_icon")
|
||||
internal static let spaceAddRoom = ImageAsset(name: "space_add_room")
|
||||
internal static let spaceCreationCamera = ImageAsset(name: "space_creation_camera")
|
||||
internal static let spaceCreationPrivate = ImageAsset(name: "space_creation_private")
|
||||
internal static let spaceCreationPublic = ImageAsset(name: "space_creation_public")
|
||||
internal static let spaceHomeIconDark = ImageAsset(name: "space_home_icon_dark")
|
||||
internal static let spaceHomeIconLight = ImageAsset(name: "space_home_icon_light")
|
||||
internal static let spaceInviteUser = ImageAsset(name: "space_invite_user")
|
||||
internal static let spaceMenuClose = ImageAsset(name: "space_menu_close")
|
||||
internal static let spaceMenuLeave = ImageAsset(name: "space_menu_leave")
|
||||
internal static let spaceMenuMembers = ImageAsset(name: "space_menu_members")
|
||||
internal static let spaceMenuPlusIcon = ImageAsset(name: "space_menu_plus_icon")
|
||||
internal static let spaceMenuRooms = ImageAsset(name: "space_menu_rooms")
|
||||
internal static let spacePrivateIcon = ImageAsset(name: "space_private_icon")
|
||||
internal static let spaceRoomIcon = ImageAsset(name: "space_room_icon")
|
||||
internal static let spaceTypeIcon = ImageAsset(name: "space_type_icon")
|
||||
internal static let spaceUserIcon = ImageAsset(name: "space_user_icon")
|
||||
internal static let spacesAddSpaceDark = ImageAsset(name: "spaces_add_space_dark")
|
||||
internal static let spacesAddSpaceLight = ImageAsset(name: "spaces_add_space_light")
|
||||
internal static let spacesInviteUsers = ImageAsset(name: "spaces_invite_users")
|
||||
internal static let spacesModalBack = ImageAsset(name: "spaces_modal_back")
|
||||
internal static let spacesModalClose = ImageAsset(name: "spaces_modal_close")
|
||||
internal static let spacesMore = ImageAsset(name: "spaces_more")
|
||||
internal static let tabFavourites = ImageAsset(name: "tab_favourites")
|
||||
internal static let tabGroups = ImageAsset(name: "tab_groups")
|
||||
|
||||
@@ -147,6 +147,11 @@ internal enum StoryboardScene {
|
||||
|
||||
internal static let initialScene = InitialSceneType<Riot.MajorUpdateViewController>(storyboard: MajorUpdateViewController.self)
|
||||
}
|
||||
internal enum OptionListViewController: StoryboardType {
|
||||
internal static let storyboardName = "OptionListViewController"
|
||||
|
||||
internal static let initialScene = InitialSceneType<Riot.OptionListViewController>(storyboard: OptionListViewController.self)
|
||||
}
|
||||
internal enum QRCodeReaderViewController: StoryboardType {
|
||||
internal static let storyboardName = "QRCodeReaderViewController"
|
||||
|
||||
@@ -274,6 +279,11 @@ internal enum StoryboardScene {
|
||||
|
||||
internal static let initialScene = InitialSceneType<Riot.SpaceMenuViewController>(storyboard: SpaceMenuViewController.self)
|
||||
}
|
||||
internal enum SpaceRoomPreviewViewController: StoryboardType {
|
||||
internal static let storyboardName = "SpaceRoomPreviewViewController"
|
||||
|
||||
internal static let initialScene = InitialSceneType<Riot.SpaceRoomPreviewViewController>(storyboard: SpaceRoomPreviewViewController.self)
|
||||
}
|
||||
internal enum TemplateScreenViewController: StoryboardType {
|
||||
internal static let storyboardName = "TemplateScreenViewController"
|
||||
|
||||
|
||||
@@ -111,6 +111,10 @@ public class VectorL10n: NSObject {
|
||||
public static func activeCallDetails(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "active_call_details", p1)
|
||||
}
|
||||
/// Add
|
||||
public static var add: String {
|
||||
return VectorL10n.tr("Vector", "add")
|
||||
}
|
||||
/// Help us identify issues and improve %@ by sharing anonymous usage data. To understand how people use multiple devices, we’ll generate a random identifier, shared by your devices.
|
||||
public static func analyticsPromptMessageNewUser(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "analytics_prompt_message_new_user", p1)
|
||||
@@ -923,54 +927,82 @@ public class VectorL10n: NSObject {
|
||||
public static var createRoomPlaceholderName: String {
|
||||
return VectorL10n.tr("Vector", "create_room_placeholder_name")
|
||||
}
|
||||
/// Topic
|
||||
/// What is this room about?
|
||||
public static var createRoomPlaceholderTopic: String {
|
||||
return VectorL10n.tr("Vector", "create_room_placeholder_topic")
|
||||
}
|
||||
/// PROMOTION
|
||||
public static var createRoomPromotionHeader: String {
|
||||
return VectorL10n.tr("Vector", "create_room_promotion_header")
|
||||
}
|
||||
/// Encryption can’t be disabled afterwards.
|
||||
public static var createRoomSectionFooterEncryption: String {
|
||||
return VectorL10n.tr("Vector", "create_room_section_footer_encryption")
|
||||
}
|
||||
/// People join a private room only with the room invitation.
|
||||
public static var createRoomSectionFooterType: String {
|
||||
return VectorL10n.tr("Vector", "create_room_section_footer_type")
|
||||
/// Only people invited can find and join.
|
||||
public static var createRoomSectionFooterTypePrivate: String {
|
||||
return VectorL10n.tr("Vector", "create_room_section_footer_type_private")
|
||||
}
|
||||
/// Room address
|
||||
/// Only people invited can find and join, not just people in Space name.
|
||||
public static var createRoomSectionFooterTypePublic: String {
|
||||
return VectorL10n.tr("Vector", "create_room_section_footer_type_public")
|
||||
}
|
||||
/// Anyone in Space name can find and join.
|
||||
public static var createRoomSectionFooterTypeRestricted: String {
|
||||
return VectorL10n.tr("Vector", "create_room_section_footer_type_restricted")
|
||||
}
|
||||
/// ADDRESS
|
||||
public static var createRoomSectionHeaderAddress: String {
|
||||
return VectorL10n.tr("Vector", "create_room_section_header_address")
|
||||
}
|
||||
/// Room encryption
|
||||
/// ENCRYPTION
|
||||
public static var createRoomSectionHeaderEncryption: String {
|
||||
return VectorL10n.tr("Vector", "create_room_section_header_encryption")
|
||||
}
|
||||
/// Room name
|
||||
/// NAME
|
||||
public static var createRoomSectionHeaderName: String {
|
||||
return VectorL10n.tr("Vector", "create_room_section_header_name")
|
||||
}
|
||||
/// Room topic (optional)
|
||||
/// TOPIC (OPTIONAL)
|
||||
public static var createRoomSectionHeaderTopic: String {
|
||||
return VectorL10n.tr("Vector", "create_room_section_header_topic")
|
||||
}
|
||||
/// Room type
|
||||
/// WHO CAN ACCESS
|
||||
public static var createRoomSectionHeaderType: String {
|
||||
return VectorL10n.tr("Vector", "create_room_section_header_type")
|
||||
}
|
||||
/// Show the room in the directory
|
||||
/// Show in room directory
|
||||
public static var createRoomShowInDirectory: String {
|
||||
return VectorL10n.tr("Vector", "create_room_show_in_directory")
|
||||
}
|
||||
/// This will help people find and join.
|
||||
public static var createRoomShowInDirectoryFooter: String {
|
||||
return VectorL10n.tr("Vector", "create_room_show_in_directory_footer")
|
||||
}
|
||||
/// Suggest to space members
|
||||
public static var createRoomSuggestRoom: String {
|
||||
return VectorL10n.tr("Vector", "create_room_suggest_room")
|
||||
}
|
||||
/// Suggested rooms are promoted to space members as good to join.
|
||||
public static var createRoomSuggestRoomFooter: String {
|
||||
return VectorL10n.tr("Vector", "create_room_suggest_room_footer")
|
||||
}
|
||||
/// New Room
|
||||
public static var createRoomTitle: String {
|
||||
return VectorL10n.tr("Vector", "create_room_title")
|
||||
}
|
||||
/// Private Room
|
||||
/// Private Room (invite only)
|
||||
public static var createRoomTypePrivate: String {
|
||||
return VectorL10n.tr("Vector", "create_room_type_private")
|
||||
}
|
||||
/// Public Room
|
||||
/// Public Room (anyone)
|
||||
public static var createRoomTypePublic: String {
|
||||
return VectorL10n.tr("Vector", "create_room_type_public")
|
||||
}
|
||||
/// Space members
|
||||
public static var createRoomTypeRestricted: String {
|
||||
return VectorL10n.tr("Vector", "create_room_type_restricted")
|
||||
}
|
||||
/// Verify your other devices easier
|
||||
public static var crossSigningSetupBannerSubtitle: String {
|
||||
return VectorL10n.tr("Vector", "cross_signing_setup_banner_subtitle")
|
||||
@@ -1619,6 +1651,10 @@ public class VectorL10n: NSObject {
|
||||
public static var e2eRoomKeyRequestTitle: String {
|
||||
return VectorL10n.tr("Vector", "e2e_room_key_request_title")
|
||||
}
|
||||
/// Edit
|
||||
public static var edit: String {
|
||||
return VectorL10n.tr("Vector", "edit")
|
||||
}
|
||||
/// Activities
|
||||
public static var emojiPickerActivityCategory: String {
|
||||
return VectorL10n.tr("Vector", "emoji_picker_activity_category")
|
||||
@@ -1827,6 +1863,10 @@ public class VectorL10n: NSObject {
|
||||
public static func eventFormatterWidgetRemovedByYou(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "event_formatter_widget_removed_by_you", p1)
|
||||
}
|
||||
/// Existing
|
||||
public static var existing: String {
|
||||
return VectorL10n.tr("Vector", "existing")
|
||||
}
|
||||
/// The link %@ is taking you to another site: %@\n\nAre you sure you want to continue?
|
||||
public static func externalLinkConfirmationMessage(_ p1: String, _ p2: String) -> String {
|
||||
return VectorL10n.tr("Vector", "external_link_confirmation_message", p1, p2)
|
||||
@@ -2667,6 +2707,18 @@ public class VectorL10n: NSObject {
|
||||
public static var less: String {
|
||||
return VectorL10n.tr("Vector", "less")
|
||||
}
|
||||
/// Stop
|
||||
public static var liveLocationSharingBannerStop: String {
|
||||
return VectorL10n.tr("Vector", "live_location_sharing_banner_stop")
|
||||
}
|
||||
/// Live location enabled
|
||||
public static var liveLocationSharingBannerTitle: String {
|
||||
return VectorL10n.tr("Vector", "live_location_sharing_banner_title")
|
||||
}
|
||||
/// Loading
|
||||
public static var loading: String {
|
||||
return VectorL10n.tr("Vector", "loading")
|
||||
}
|
||||
/// To discover contacts already using Matrix, %@ can send email addresses and phone numbers in your address book to your chosen Matrix identity server. Where supported, personal data is hashed before sending - please check your identity server's privacy policy for more details.
|
||||
public static func localContactsAccessDiscoveryWarning(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "local_contacts_access_discovery_warning", p1)
|
||||
@@ -3047,6 +3099,10 @@ public class VectorL10n: NSObject {
|
||||
public static var networkOfflinePrompt: String {
|
||||
return VectorL10n.tr("Vector", "network_offline_prompt")
|
||||
}
|
||||
/// New
|
||||
public static var newWord: String {
|
||||
return VectorL10n.tr("Vector", "new_word")
|
||||
}
|
||||
/// Next
|
||||
public static var next: String {
|
||||
return VectorL10n.tr("Vector", "next")
|
||||
@@ -4099,6 +4155,74 @@ public class VectorL10n: NSObject {
|
||||
public static var retry: String {
|
||||
return VectorL10n.tr("Vector", "retry")
|
||||
}
|
||||
/// Edit spaces
|
||||
public static var roomAccessSettingsScreenEditSpaces: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_edit_spaces")
|
||||
}
|
||||
/// Decide who can find and join %@.
|
||||
public static func roomAccessSettingsScreenMessage(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_message", p1)
|
||||
}
|
||||
/// Room access
|
||||
public static var roomAccessSettingsScreenNavTitle: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_nav_title")
|
||||
}
|
||||
/// Only invited people can find and join.
|
||||
public static var roomAccessSettingsScreenPrivateMessage: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_private_message")
|
||||
}
|
||||
/// Anyone can find and join.
|
||||
public static var roomAccessSettingsScreenPublicMessage: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_public_message")
|
||||
}
|
||||
/// Let anyone in a space find and join.\nYou’ll be asked to confirm which spaces.
|
||||
public static var roomAccessSettingsScreenRestrictedMessage: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_restricted_message")
|
||||
}
|
||||
/// Setting room access
|
||||
public static var roomAccessSettingsScreenSettingRoomAccess: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_setting_room_access")
|
||||
}
|
||||
/// Who can access this room?
|
||||
public static var roomAccessSettingsScreenTitle: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_title")
|
||||
}
|
||||
/// Automatically invite members to new room
|
||||
public static var roomAccessSettingsScreenUpgradeAlertAutoInviteSwitch: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_upgrade_alert_auto_invite_switch")
|
||||
}
|
||||
/// Anyone in Space name will be able to find and join this room - no need to manually invite everyone. You’ll be able to change this in room settings anytime.\n\nPlease note upgrading will make a new version of the room. All current messages will stay in this archived room.
|
||||
public static var roomAccessSettingsScreenUpgradeAlertMessage: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_upgrade_alert_message")
|
||||
}
|
||||
/// Upgrade room
|
||||
public static var roomAccessSettingsScreenUpgradeAlertTitle: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_upgrade_alert_title")
|
||||
}
|
||||
/// Upgrade
|
||||
public static var roomAccessSettingsScreenUpgradeAlertUpgradeButton: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_upgrade_alert_upgrade_button")
|
||||
}
|
||||
/// Upgrading room
|
||||
public static var roomAccessSettingsScreenUpgradeAlertUpgrading: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_upgrade_alert_upgrading")
|
||||
}
|
||||
/// Upgrade required
|
||||
public static var roomAccessSettingsScreenUpgradeRequired: String {
|
||||
return VectorL10n.tr("Vector", "room_access_settings_screen_upgrade_required")
|
||||
}
|
||||
/// Spaces you know containing %@
|
||||
public static func roomAccessSpaceChooserKnownSpacesSection(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "room_access_space_chooser_known_spaces_section", p1)
|
||||
}
|
||||
/// Other spaces or rooms
|
||||
public static var roomAccessSpaceChooserOtherSpacesSection: String {
|
||||
return VectorL10n.tr("Vector", "room_access_space_chooser_other_spaces_section")
|
||||
}
|
||||
/// These are likely things other admins of %@ are a part of.
|
||||
public static func roomAccessSpaceChooserOtherSpacesSectionInfo(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "room_access_space_chooser_other_spaces_section_info", p1)
|
||||
}
|
||||
/// Call
|
||||
public static var roomAccessibilityCall: String {
|
||||
return VectorL10n.tr("Vector", "room_accessibility_call")
|
||||
@@ -4267,6 +4391,10 @@ public class VectorL10n: NSObject {
|
||||
public static var roomDeleteUnsentMessages: String {
|
||||
return VectorL10n.tr("Vector", "room_delete_unsent_messages")
|
||||
}
|
||||
/// Access
|
||||
public static var roomDetailsAccessRowTitle: String {
|
||||
return VectorL10n.tr("Vector", "room_details_access_row_title")
|
||||
}
|
||||
/// Who can access this room?
|
||||
public static var roomDetailsAccessSection: String {
|
||||
return VectorL10n.tr("Vector", "room_details_access_section")
|
||||
@@ -4531,6 +4659,14 @@ public class VectorL10n: NSObject {
|
||||
public static var roomDetailsPhotoForDm: String {
|
||||
return VectorL10n.tr("Vector", "room_details_photo_for_dm")
|
||||
}
|
||||
/// Suggest to space members
|
||||
public static var roomDetailsPromoteRoomSuggestTitle: String {
|
||||
return VectorL10n.tr("Vector", "room_details_promote_room_suggest_title")
|
||||
}
|
||||
/// Promote room
|
||||
public static var roomDetailsPromoteRoomTitle: String {
|
||||
return VectorL10n.tr("Vector", "room_details_promote_room_title")
|
||||
}
|
||||
/// Room Name
|
||||
public static var roomDetailsRoomName: String {
|
||||
return VectorL10n.tr("Vector", "room_details_room_name")
|
||||
@@ -4915,6 +5051,26 @@ public class VectorL10n: NSObject {
|
||||
public static var roomIntroCellInformationRoomWithoutTopicSentence2Part2: String {
|
||||
return VectorL10n.tr("Vector", "room_intro_cell_information_room_without_topic_sentence2_part2")
|
||||
}
|
||||
/// You do not have permission to invite people to this room
|
||||
public static var roomInviteNotEnoughPermission: String {
|
||||
return VectorL10n.tr("Vector", "room_invite_not_enough_permission")
|
||||
}
|
||||
/// They won’t be a part of %@.
|
||||
public static func roomInviteToRoomOptionDetail(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "room_invite_to_room_option_detail", p1)
|
||||
}
|
||||
/// To just this room
|
||||
public static var roomInviteToRoomOptionTitle: String {
|
||||
return VectorL10n.tr("Vector", "room_invite_to_room_option_title")
|
||||
}
|
||||
/// They can explore %@, but won’t be a member of %@.
|
||||
public static func roomInviteToSpaceOptionDetail(_ p1: String, _ p2: String) -> String {
|
||||
return VectorL10n.tr("Vector", "room_invite_to_space_option_detail", p1, p2)
|
||||
}
|
||||
/// To %@
|
||||
public static func roomInviteToSpaceOptionTitle(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "room_invite_to_space_option_title", p1)
|
||||
}
|
||||
/// Join
|
||||
public static var roomJoinGroupCall: String {
|
||||
return VectorL10n.tr("Vector", "room_join_group_call")
|
||||
@@ -5219,6 +5375,10 @@ public class VectorL10n: NSObject {
|
||||
public static var roomParticipantsInvitePromptTitle: String {
|
||||
return VectorL10n.tr("Vector", "room_participants_invite_prompt_title")
|
||||
}
|
||||
/// Are you sure you want to invite %@ to %@?
|
||||
public static func roomParticipantsInvitePromptToMsg(_ p1: String, _ p2: String) -> String {
|
||||
return VectorL10n.tr("Vector", "room_participants_invite_prompt_to_msg", p1, p2)
|
||||
}
|
||||
/// INVITED
|
||||
public static var roomParticipantsInvitedSection: String {
|
||||
return VectorL10n.tr("Vector", "room_participants_invited_section")
|
||||
@@ -5463,6 +5623,18 @@ public class VectorL10n: NSObject {
|
||||
public static var roomSlideToEndGroupCall: String {
|
||||
return VectorL10n.tr("Vector", "room_slide_to_end_group_call")
|
||||
}
|
||||
/// Suggested rooms are promoted to space members as good ones to join.
|
||||
public static var roomSuggestionSettingsScreenMessage: String {
|
||||
return VectorL10n.tr("Vector", "room_suggestion_settings_screen_message")
|
||||
}
|
||||
/// Suggest room
|
||||
public static var roomSuggestionSettingsScreenNavTitle: String {
|
||||
return VectorL10n.tr("Vector", "room_suggestion_settings_screen_nav_title")
|
||||
}
|
||||
/// Make a room suggested in a space
|
||||
public static var roomSuggestionSettingsScreenTitle: String {
|
||||
return VectorL10n.tr("Vector", "room_suggestion_settings_screen_title")
|
||||
}
|
||||
/// Thread
|
||||
public static var roomThreadTitle: String {
|
||||
return VectorL10n.tr("Vector", "room_thread_title")
|
||||
@@ -5567,6 +5739,10 @@ public class VectorL10n: NSObject {
|
||||
public static var save: String {
|
||||
return VectorL10n.tr("Vector", "save")
|
||||
}
|
||||
/// Saving
|
||||
public static var saving: String {
|
||||
return VectorL10n.tr("Vector", "saving")
|
||||
}
|
||||
/// Search
|
||||
public static var searchDefaultPlaceholder: String {
|
||||
return VectorL10n.tr("Vector", "search_default_placeholder")
|
||||
@@ -6811,6 +6987,18 @@ public class VectorL10n: NSObject {
|
||||
public static var shareExtensionSendNow: String {
|
||||
return VectorL10n.tr("Vector", "share_extension_send_now")
|
||||
}
|
||||
/// Share invite link
|
||||
public static var shareInviteLinkAction: String {
|
||||
return VectorL10n.tr("Vector", "share_invite_link_action")
|
||||
}
|
||||
/// Hey, join this room on %@
|
||||
public static func shareInviteLinkRoomText(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "share_invite_link_room_text", p1)
|
||||
}
|
||||
/// Hey, join this space on %@
|
||||
public static func shareInviteLinkSpaceText(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "share_invite_link_space_text", p1)
|
||||
}
|
||||
/// Show Details
|
||||
public static var showDetails: String {
|
||||
return VectorL10n.tr("Vector", "show_details")
|
||||
@@ -6835,6 +7023,10 @@ public class VectorL10n: NSObject {
|
||||
public static func sideMenuAppVersion(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "side_menu_app_version", p1)
|
||||
}
|
||||
/// Swipe right or tap to see all rooms
|
||||
public static var sideMenuCoachMessage: String {
|
||||
return VectorL10n.tr("Vector", "side_menu_coach_message")
|
||||
}
|
||||
/// Left panel
|
||||
public static var sideMenuRevealActionAccessibilityLabel: String {
|
||||
return VectorL10n.tr("Vector", "side_menu_reveal_action_accessibility_label")
|
||||
@@ -6959,6 +7151,10 @@ public class VectorL10n: NSObject {
|
||||
public static var spaceHomeShowAllRooms: String {
|
||||
return VectorL10n.tr("Vector", "space_home_show_all_rooms")
|
||||
}
|
||||
/// You do not have permission to invite people to this space
|
||||
public static var spaceInviteNotEnoughPermission: String {
|
||||
return VectorL10n.tr("Vector", "space_invite_not_enough_permission")
|
||||
}
|
||||
/// Ban from this space
|
||||
public static var spaceParticipantsActionBan: String {
|
||||
return VectorL10n.tr("Vector", "space_participants_action_ban")
|
||||
@@ -6971,18 +7167,58 @@ public class VectorL10n: NSObject {
|
||||
public static var spacePrivateJoinRule: String {
|
||||
return VectorL10n.tr("Vector", "space_private_join_rule")
|
||||
}
|
||||
/// Invite only, best for yourself or teams
|
||||
public static var spacePrivateJoinRuleDetail: String {
|
||||
return VectorL10n.tr("Vector", "space_private_join_rule_detail")
|
||||
}
|
||||
/// Public space
|
||||
public static var spacePublicJoinRule: String {
|
||||
return VectorL10n.tr("Vector", "space_public_join_rule")
|
||||
}
|
||||
/// Open to anyone, best for communities
|
||||
public static var spacePublicJoinRuleDetail: String {
|
||||
return VectorL10n.tr("Vector", "space_public_join_rule_detail")
|
||||
}
|
||||
/// Who can access this space?
|
||||
public static var spaceSettingsAccessSection: String {
|
||||
return VectorL10n.tr("Vector", "space_settings_access_section")
|
||||
}
|
||||
/// Your space is viewable at\n%@
|
||||
public static func spaceSettingsCurrentAddressMessage(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "space_settings_current_address_message", p1)
|
||||
}
|
||||
/// Failed to update space settings. Do you want to retry?
|
||||
public static var spaceSettingsUpdateFailedMessage: String {
|
||||
return VectorL10n.tr("Vector", "space_settings_update_failed_message")
|
||||
}
|
||||
/// space
|
||||
public static var spaceTag: String {
|
||||
return VectorL10n.tr("Vector", "space_tag")
|
||||
}
|
||||
/// Description
|
||||
public static var spaceTopic: String {
|
||||
return VectorL10n.tr("Vector", "space_topic")
|
||||
}
|
||||
/// Add room
|
||||
public static var spacesAddRoom: String {
|
||||
return VectorL10n.tr("Vector", "spaces_add_room")
|
||||
}
|
||||
/// You do not have permissions to add rooms to this space.
|
||||
public static var spacesAddRoomMissingPermissionMessage: String {
|
||||
return VectorL10n.tr("Vector", "spaces_add_room_missing_permission_message")
|
||||
}
|
||||
/// Adding rooms coming soon
|
||||
public static var spacesAddRoomsComingSoonTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_add_rooms_coming_soon_title")
|
||||
}
|
||||
/// Add space
|
||||
public static var spacesAddSpace: String {
|
||||
return VectorL10n.tr("Vector", "spaces_add_space")
|
||||
}
|
||||
/// Create space
|
||||
public static var spacesAddSpaceTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_add_space_title")
|
||||
}
|
||||
/// This feature hasn’t been implemented here, but it’s on the way. For now, you can do that with %@ on your computer.
|
||||
public static func spacesComingSoonDetail(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_coming_soon_detail", p1)
|
||||
@@ -6991,6 +7227,190 @@ public class VectorL10n: NSObject {
|
||||
public static var spacesComingSoonTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_coming_soon_title")
|
||||
}
|
||||
/// Create a space
|
||||
public static var spacesCreateSpaceTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_create_space_title")
|
||||
}
|
||||
/// As this space is just for you, no one will be informed. You can add more later.
|
||||
public static var spacesCreationAddRoomsMessage: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_add_rooms_message")
|
||||
}
|
||||
/// What do you want to add?
|
||||
public static var spacesCreationAddRoomsTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_add_rooms_title")
|
||||
}
|
||||
/// Address
|
||||
public static var spacesCreationAddress: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_address")
|
||||
}
|
||||
/// %@\nalready exists
|
||||
public static func spacesCreationAddressAlreadyExists(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_address_already_exists", p1)
|
||||
}
|
||||
/// Your space will be viewable at\n%@
|
||||
public static func spacesCreationAddressDefaultMessage(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_address_default_message", p1)
|
||||
}
|
||||
/// %@\nhas invalid characters
|
||||
public static func spacesCreationAddressInvalidCharacters(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_address_invalid_characters", p1)
|
||||
}
|
||||
/// Your progress will be lost.
|
||||
public static var spacesCreationCancelMessage: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_cancel_message")
|
||||
}
|
||||
/// Stop creating a space?
|
||||
public static var spacesCreationCancelTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_cancel_title")
|
||||
}
|
||||
/// Email
|
||||
public static var spacesCreationEmailInvitesEmailTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_email_invites_email_title")
|
||||
}
|
||||
/// You can invite them later too.
|
||||
public static var spacesCreationEmailInvitesMessage: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_email_invites_message")
|
||||
}
|
||||
/// Invite your team
|
||||
public static var spacesCreationEmailInvitesTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_email_invites_title")
|
||||
}
|
||||
/// Name required
|
||||
public static var spacesCreationEmptyRoomNameError: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_empty_room_name_error")
|
||||
}
|
||||
/// You can change this later
|
||||
public static var spacesCreationFooter: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_footer")
|
||||
}
|
||||
/// Spaces are a new way to group rooms and people.
|
||||
public static var spacesCreationHint: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_hint")
|
||||
}
|
||||
/// in %@ spaces
|
||||
public static func spacesCreationInManySpaces(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_in_many_spaces", p1)
|
||||
}
|
||||
/// in 1 space
|
||||
public static var spacesCreationInOneSpace: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_in_one_space")
|
||||
}
|
||||
/// in %@
|
||||
public static func spacesCreationInSpacename(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_in_spacename", p1)
|
||||
}
|
||||
/// in %@ + %@ spaces
|
||||
public static func spacesCreationInSpacenamePlusMany(_ p1: String, _ p2: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_in_spacename_plus_many", p1, p2)
|
||||
}
|
||||
/// in %@ + 1 space
|
||||
public static func spacesCreationInSpacenamePlusOne(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_in_spacename_plus_one", p1)
|
||||
}
|
||||
/// Invite by username
|
||||
public static var spacesCreationInviteByUsername: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_invite_by_username")
|
||||
}
|
||||
/// You can invite them later too.
|
||||
public static var spacesCreationInviteByUsernameMessage: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_invite_by_username_message")
|
||||
}
|
||||
/// Invite your team
|
||||
public static var spacesCreationInviteByUsernameTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_invite_by_username_title")
|
||||
}
|
||||
/// General
|
||||
public static var spacesCreationNewRoomsGeneral: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_new_rooms_general")
|
||||
}
|
||||
/// We’ll create a room for each one.
|
||||
public static var spacesCreationNewRoomsMessage: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_new_rooms_message")
|
||||
}
|
||||
/// Random
|
||||
public static var spacesCreationNewRoomsRandom: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_new_rooms_random")
|
||||
}
|
||||
/// Room name
|
||||
public static var spacesCreationNewRoomsRoomNameTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_new_rooms_room_name_title")
|
||||
}
|
||||
/// Support
|
||||
public static var spacesCreationNewRoomsSupport: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_new_rooms_support")
|
||||
}
|
||||
/// What are some discussions you’ll have?
|
||||
public static var spacesCreationNewRoomsTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_new_rooms_title")
|
||||
}
|
||||
/// Adding %@ rooms
|
||||
public static func spacesCreationPostProcessAddingRooms(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_post_process_adding_rooms", p1)
|
||||
}
|
||||
/// Creating %@
|
||||
public static func spacesCreationPostProcessCreatingRoom(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_post_process_creating_room", p1)
|
||||
}
|
||||
/// Creating space
|
||||
public static var spacesCreationPostProcessCreatingSpace: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_post_process_creating_space")
|
||||
}
|
||||
/// Creating %@
|
||||
public static func spacesCreationPostProcessCreatingSpaceTask(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_post_process_creating_space_task", p1)
|
||||
}
|
||||
/// Inviting %@ users
|
||||
public static func spacesCreationPostProcessInvitingUsers(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_post_process_inviting_users", p1)
|
||||
}
|
||||
/// Uploading avatar
|
||||
public static var spacesCreationPostProcessUploadingAvatar: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_post_process_uploading_avatar")
|
||||
}
|
||||
/// Your private space
|
||||
public static var spacesCreationPrivateSpaceTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_private_space_title")
|
||||
}
|
||||
/// Your public space
|
||||
public static var spacesCreationPublicSpaceTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_public_space_title")
|
||||
}
|
||||
/// Add some details to help it stand out. You can change these at any point.
|
||||
public static var spacesCreationSettingsMessage: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_settings_message")
|
||||
}
|
||||
/// A private space to organise your rooms
|
||||
public static var spacesCreationSharingTypeJustMeDetail: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_sharing_type_just_me_detail")
|
||||
}
|
||||
/// Just me
|
||||
public static var spacesCreationSharingTypeJustMeTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_sharing_type_just_me_title")
|
||||
}
|
||||
/// A private space for you & your teammates
|
||||
public static var spacesCreationSharingTypeMeAndTeammatesDetail: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_sharing_type_me_and_teammates_detail")
|
||||
}
|
||||
/// Me and teammates
|
||||
public static var spacesCreationSharingTypeMeAndTeammatesTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_sharing_type_me_and_teammates_title")
|
||||
}
|
||||
/// Make sure the right people have access %@. You can change this later.
|
||||
public static func spacesCreationSharingTypeMessage(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_sharing_type_message", p1)
|
||||
}
|
||||
/// Who are you working with?
|
||||
public static var spacesCreationSharingTypeTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_sharing_type_title")
|
||||
}
|
||||
/// To join an existing space, you need an invite.
|
||||
public static var spacesCreationVisibilityMessage: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_visibility_message")
|
||||
}
|
||||
/// What type of space do you want to create?
|
||||
public static var spacesCreationVisibilityTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_creation_visibility_title")
|
||||
}
|
||||
/// Some rooms may be hidden because they’re private and you need an invite.
|
||||
public static var spacesEmptySpaceDetail: String {
|
||||
return VectorL10n.tr("Vector", "spaces_empty_space_detail")
|
||||
@@ -7003,10 +7423,22 @@ public class VectorL10n: NSObject {
|
||||
public static var spacesExploreRooms: String {
|
||||
return VectorL10n.tr("Vector", "spaces_explore_rooms")
|
||||
}
|
||||
/// 1 room
|
||||
public static var spacesExploreRoomsOneRoom: String {
|
||||
return VectorL10n.tr("Vector", "spaces_explore_rooms_one_room")
|
||||
}
|
||||
/// %@ rooms
|
||||
public static func spacesExploreRoomsRoomNumber(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "spaces_explore_rooms_room_number", p1)
|
||||
}
|
||||
/// Home
|
||||
public static var spacesHomeSpaceTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_home_space_title")
|
||||
}
|
||||
/// Invite people
|
||||
public static var spacesInvitePeople: String {
|
||||
return VectorL10n.tr("Vector", "spaces_invite_people")
|
||||
}
|
||||
/// Invites coming soon
|
||||
public static var spacesInvitesComingSoonTitle: String {
|
||||
return VectorL10n.tr("Vector", "spaces_invites_coming_soon_title")
|
||||
@@ -7091,6 +7523,10 @@ public class VectorL10n: NSObject {
|
||||
public static var startVoiceCall: String {
|
||||
return VectorL10n.tr("Vector", "start_voice_call")
|
||||
}
|
||||
/// Stop
|
||||
public static var stop: String {
|
||||
return VectorL10n.tr("Vector", "stop")
|
||||
}
|
||||
/// Element is a new type of messenger and collaboration app that:\n\n1. Puts you in control to preserve your privacy\n2. Lets you communicate with anyone in the Matrix network, and even beyond by integrating with apps such as Slack\n3. Protects you from advertising, datamining, backdoors and walled gardens\n4. Secures you through end-to-end encryption, with cross-signing to verify others\n\nElement is completely different from other messaging and collaboration apps because it is decentralised and open source.\n\nElement lets you self-host - or choose a host - so that you have privacy, ownership and control of your data and conversations. It gives you access to an open network; so you’re not just stuck speaking to other Element users only. And it is very secure.\n\nElement is able to do all this because it operates on Matrix - the standard for open, decentralised communication. \n\nElement puts you in control by letting you choose who hosts your conversations. From the Element app, you can choose to host in different ways:\n\n1. Get a free account on the matrix.org public server\n2. Self-host your account by running a server on your own hardware\n3. Sign up for an account on a custom server by simply subscribing to the Element Matrix Services hosting platform\n\nWhy choose Element?\n\nOWN YOUR DATA: You decide where to keep your data and messages. You own it and control it, not some MEGACORP that mines your data or gives access to third parties.\n\nOPEN MESSAGING AND COLLABORATION: You can chat with anyone else in the Matrix network, whether they’re using Element or another Matrix app, and even if they are using a different messaging system of the likes of Slack, IRC or XMPP.\n\nSUPER-SECURE: Real end-to-end encryption (only those in the conversation can decrypt messages), and cross-signing to verify the devices of conversation participants.\n\nCOMPLETE COMMUNICATION: Messaging, voice and video calls, file sharing, screen sharing and a whole bunch of integrations, bots and widgets. Build rooms, communities, stay in touch and get things done.\n\nEVERYWHERE YOU ARE: Stay in touch wherever you are with fully synchronised message history across all your devices and on the web at https://element.io/app.
|
||||
public static var storeFullDescription: String {
|
||||
return VectorL10n.tr("Vector", "store_full_description")
|
||||
@@ -7111,6 +7547,10 @@ public class VectorL10n: NSObject {
|
||||
public static var submitCode: String {
|
||||
return VectorL10n.tr("Vector", "submit_code")
|
||||
}
|
||||
/// Suggest
|
||||
public static var suggest: String {
|
||||
return VectorL10n.tr("Vector", "suggest")
|
||||
}
|
||||
/// Switch
|
||||
public static var `switch`: String {
|
||||
return VectorL10n.tr("Vector", "switch")
|
||||
|
||||
@@ -10,22 +10,66 @@ import Foundation
|
||||
|
||||
// swiftlint:disable function_parameter_count identifier_name line_length type_body_length
|
||||
public extension VectorL10n {
|
||||
/// Choose from files
|
||||
static var imagePickerActionFiles: String {
|
||||
return VectorL10n.tr("Untranslated", "image_picker_action_files")
|
||||
}
|
||||
/// Profile picture
|
||||
static var onboardingAvatarAccessibilityLabel: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_avatar_accessibility_label")
|
||||
}
|
||||
/// You can change this anytime.
|
||||
static var onboardingAvatarMessage: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_avatar_message")
|
||||
}
|
||||
/// Add a profile picture
|
||||
static var onboardingAvatarTitle: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_avatar_title")
|
||||
}
|
||||
/// Take me home
|
||||
static var onboardingCongratulationsHomeButton: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_congratulations_home_button")
|
||||
}
|
||||
/// Your account\n%@\nhas been created.
|
||||
/// Your account %@ has been created.
|
||||
public static func onboardingCongratulationsMessage(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_congratulations_message", p1)
|
||||
}
|
||||
/// Personalise profile
|
||||
static var onboardingCongratulationsPersonaliseButton: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_congratulations_personalise_button")
|
||||
static var onboardingCongratulationsPersonalizeButton: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_congratulations_personalize_button")
|
||||
}
|
||||
/// Congratulations!
|
||||
static var onboardingCongratulationsTitle: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_congratulations_title")
|
||||
}
|
||||
/// You can change this later
|
||||
static var onboardingDisplayNameHint: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_display_name_hint")
|
||||
}
|
||||
/// Your display name must be less than 256 characters
|
||||
static var onboardingDisplayNameMaxLength: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_display_name_max_length")
|
||||
}
|
||||
/// This will be shown when you send messages.
|
||||
static var onboardingDisplayNameMessage: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_display_name_message")
|
||||
}
|
||||
/// Display Name
|
||||
static var onboardingDisplayNamePlaceholder: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_display_name_placeholder")
|
||||
}
|
||||
/// Choose a display name
|
||||
static var onboardingDisplayNameTitle: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_display_name_title")
|
||||
}
|
||||
/// Save and continue
|
||||
static var onboardingPersonalizationSave: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_personalization_save")
|
||||
}
|
||||
/// Skip this step
|
||||
static var onboardingPersonalizationSkip: String {
|
||||
return VectorL10n.tr("Untranslated", "onboarding_personalization_skip")
|
||||
}
|
||||
}
|
||||
// swiftlint:enable function_parameter_count identifier_name line_length type_body_length
|
||||
|
||||
|
||||
@@ -110,7 +110,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@param roomId Room identifier to be navigated.
|
||||
*/
|
||||
- (void)pushNotificationService:(PushNotificationService *)pushNotificationService
|
||||
shouldNavigateToRoomWithId:(NSString *)roomId;
|
||||
shouldNavigateToRoomWithId:(NSString *)roomId
|
||||
threadId:(nullable NSString *)threadId;
|
||||
|
||||
@end;
|
||||
|
||||
|
||||
@@ -363,6 +363,7 @@ Matrix session observer used to detect new opened sessions.
|
||||
UNNotificationContent *content = notification.request.content;
|
||||
NSString *actionIdentifier = [response actionIdentifier];
|
||||
NSString *roomId = content.userInfo[@"room_id"];
|
||||
NSString *threadId = content.userInfo[@"thread_id"];
|
||||
|
||||
if ([actionIdentifier isEqualToString:@"inline-reply"])
|
||||
{
|
||||
@@ -371,7 +372,10 @@ Matrix session observer used to detect new opened sessions.
|
||||
UNTextInputNotificationResponse *textInputNotificationResponse = (UNTextInputNotificationResponse *)response;
|
||||
NSString *responseText = [textInputNotificationResponse userText];
|
||||
|
||||
[self handleNotificationInlineReplyForRoomId:roomId withResponseText:responseText success:^(NSString *eventId) {
|
||||
[self handleNotificationInlineReplyForRoomId:roomId
|
||||
threadId:threadId
|
||||
withResponseText:responseText
|
||||
success:^(NSString *eventId) {
|
||||
completionHandler();
|
||||
} failure:^(NSError *error) {
|
||||
|
||||
@@ -399,7 +403,7 @@ Matrix session observer used to detect new opened sessions.
|
||||
}
|
||||
else if ([actionIdentifier isEqualToString:UNNotificationDefaultActionIdentifier])
|
||||
{
|
||||
[self notifyNavigateToRoomById:roomId];
|
||||
[self notifyNavigateToRoomById:roomId threadId:threadId];
|
||||
completionHandler();
|
||||
}
|
||||
else
|
||||
@@ -412,6 +416,7 @@ Matrix session observer used to detect new opened sessions.
|
||||
#pragma mark - Other Methods
|
||||
|
||||
- (void)handleNotificationInlineReplyForRoomId:(NSString*)roomId
|
||||
threadId:(NSString*)threadId
|
||||
withResponseText:(NSString*)responseText
|
||||
success:(void(^)(NSString *eventId))success
|
||||
failure:(void(^)(NSError *error))failure
|
||||
@@ -424,35 +429,35 @@ Matrix session observer used to detect new opened sessions.
|
||||
|
||||
NSArray* mxAccounts = [MXKAccountManager sharedManager].activeAccounts;
|
||||
|
||||
__block MXKRoomDataSourceManager* manager;
|
||||
dispatch_group_t group = dispatch_group_create();
|
||||
__block MXSession *mxSession;
|
||||
dispatch_group_t dispatchGroupSession = dispatch_group_create();
|
||||
|
||||
for (MXKAccount* account in mxAccounts)
|
||||
{
|
||||
void(^storeDataReadyBlock)(void) = ^{
|
||||
MXRoom* room = [account.mxSession roomWithRoomId:roomId];
|
||||
MXRoom *room = [account.mxSession roomWithRoomId:roomId];
|
||||
if (room)
|
||||
{
|
||||
manager = [MXKRoomDataSourceManager sharedManagerForMatrixSession:account.mxSession];
|
||||
mxSession = account.mxSession;
|
||||
}
|
||||
};
|
||||
|
||||
if (account.mxSession.state >= MXSessionStateStoreDataReady)
|
||||
{
|
||||
storeDataReadyBlock();
|
||||
if (manager)
|
||||
if (mxSession)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dispatch_group_enter(group);
|
||||
dispatch_group_enter(dispatchGroupSession);
|
||||
|
||||
// wait for session state to be store data ready
|
||||
id sessionStateObserver = nil;
|
||||
sessionStateObserver = [[NSNotificationCenter defaultCenter] addObserverForName:kMXSessionStateDidChangeNotification object:account.mxSession queue:nil usingBlock:^(NSNotification * _Nonnull note) {
|
||||
if (manager)
|
||||
if (mxSession)
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:sessionStateObserver];
|
||||
return;
|
||||
@@ -462,25 +467,51 @@ Matrix session observer used to detect new opened sessions.
|
||||
{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:sessionStateObserver];
|
||||
storeDataReadyBlock();
|
||||
dispatch_group_leave(group);
|
||||
dispatch_group_leave(dispatchGroupSession);
|
||||
}
|
||||
}];
|
||||
}
|
||||
}
|
||||
|
||||
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
|
||||
if (manager == nil)
|
||||
dispatch_group_notify(dispatchGroupSession, dispatch_get_main_queue(), ^{
|
||||
if (mxSession == nil)
|
||||
{
|
||||
MXLogDebug(@"[PushNotificationService][Push] didReceiveNotificationResponse: room with id %@ not found", roomId);
|
||||
failure(nil);
|
||||
}
|
||||
else
|
||||
{
|
||||
[manager roomDataSourceForRoom:roomId create:YES onComplete:^(MXKRoomDataSource *roomDataSource) {
|
||||
// initialize data source for a thread or a room
|
||||
__block MXKRoomDataSource *dataSource;
|
||||
dispatch_group_t dispatchGroupDataSource = dispatch_group_create();
|
||||
if (RiotSettings.shared.enableThreads && threadId)
|
||||
{
|
||||
dispatch_group_enter(dispatchGroupDataSource);
|
||||
[ThreadDataSource loadRoomDataSourceWithRoomId:roomId
|
||||
initialEventId:nil
|
||||
threadId:threadId
|
||||
andMatrixSession:mxSession
|
||||
onComplete:^(MXKRoomDataSource *threadDataSource) {
|
||||
dataSource = threadDataSource;
|
||||
dispatch_group_leave(dispatchGroupDataSource);
|
||||
}];
|
||||
}
|
||||
else
|
||||
{
|
||||
dispatch_group_enter(dispatchGroupDataSource);
|
||||
MXKRoomDataSourceManager *manager = [MXKRoomDataSourceManager sharedManagerForMatrixSession:mxSession];
|
||||
[manager roomDataSourceForRoom:roomId create:YES onComplete:^(MXKRoomDataSource *roomDataSource) {
|
||||
dataSource = roomDataSource;
|
||||
dispatch_group_leave(dispatchGroupDataSource);
|
||||
}];
|
||||
}
|
||||
|
||||
dispatch_group_notify(dispatchGroupDataSource, dispatch_get_main_queue(), ^{
|
||||
if (responseText != nil && responseText.length != 0)
|
||||
{
|
||||
MXLogDebug(@"[PushNotificationService][Push] didReceiveNotificationResponse: sending message to room: %@", roomId);
|
||||
[roomDataSource sendTextMessage:responseText success:^(NSString* eventId) {
|
||||
NSString *logForThread = threadId ? [NSString stringWithFormat:@", thread: %@", threadId] : nil;
|
||||
MXLogDebug(@"[PushNotificationService][Push] didReceiveNotificationResponse: sending message to room: %@%@", roomId, logForThread);
|
||||
[dataSource sendTextMessage:responseText success:^(NSString* eventId) {
|
||||
success(eventId);
|
||||
} failure:^(NSError* error) {
|
||||
failure(error);
|
||||
@@ -490,7 +521,7 @@ Matrix session observer used to detect new opened sessions.
|
||||
{
|
||||
failure(nil);
|
||||
}
|
||||
}];
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -536,11 +567,11 @@ Matrix session observer used to detect new opened sessions.
|
||||
|
||||
#pragma mark - Delegate Notifiers
|
||||
|
||||
- (void)notifyNavigateToRoomById:(NSString *)roomId
|
||||
- (void)notifyNavigateToRoomById:(NSString *)roomId threadId:(NSString *)threadId
|
||||
{
|
||||
if ([_delegate respondsToSelector:@selector(pushNotificationService:shouldNavigateToRoomWithId:)])
|
||||
if ([_delegate respondsToSelector:@selector(pushNotificationService:shouldNavigateToRoomWithId:threadId:)])
|
||||
{
|
||||
[_delegate pushNotificationService:self shouldNavigateToRoomWithId:roomId];
|
||||
[_delegate pushNotificationService:self shouldNavigateToRoomWithId:roomId threadId:threadId];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -352,4 +352,13 @@ final class RiotSettings: NSObject {
|
||||
|
||||
@UserDefault(key: "versionCheckNextDisplayDateTimeInterval", defaultValue: 0.0, storage: defaults)
|
||||
var versionCheckNextDisplayDateTimeInterval
|
||||
|
||||
@UserDefault(key: "slideMenuRoomsCoachMessageHasBeenDisplayed", defaultValue: false, storage: defaults)
|
||||
var slideMenuRoomsCoachMessageHasBeenDisplayed
|
||||
|
||||
// MARK: - Metrics
|
||||
|
||||
/// Number of spaces previously tracked by the `AnalyticsSpaceTracker` instance.
|
||||
@UserDefault(key: "lastNumberOfTrackedSpaces", defaultValue: nil, storage: defaults)
|
||||
var lastNumberOfTrackedSpaces: Int?
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ import DesignKit
|
||||
/// - Parameter tabBar: The tab bar to customise.
|
||||
func applyStyle(onTabBar tabBar: UITabBar)
|
||||
|
||||
/// Apply the theme on a navigation bar, without enabling the iOS 15's scroll edges appearance.
|
||||
/// Apply the theme on a navigation bar, without enabling the iOS 15's scroll edge appearance.
|
||||
///
|
||||
/// - Parameter navigationBar: the navigation bar to customise.
|
||||
func applyStyle(onNavigationBar navigationBar: UINavigationBar)
|
||||
@@ -120,9 +120,9 @@ import DesignKit
|
||||
/// Apply the theme on a navigation bar.
|
||||
///
|
||||
/// - Parameter navigationBar: the navigation bar to customise.
|
||||
/// - Parameter modernScrollEdgesAppearance: whether or not to use the iOS 15 style scroll edges appearance
|
||||
/// - Parameter modernScrollEdgeAppearance: whether or not to use the iOS 15 style scroll edge appearance
|
||||
func applyStyle(onNavigationBar navigationBar: UINavigationBar,
|
||||
withModernScrollEdgesAppearance modernScrollEdgesAppearance: Bool)
|
||||
withModernScrollEdgeAppearance modernScrollEdgeAppearance: Bool)
|
||||
|
||||
/// Apply the theme on a search bar.
|
||||
///
|
||||
|
||||