Merge branch 'release/1.11.2/master'

This commit is contained in:
Stefan Ceriu
2023-09-12 10:56:34 +03:00
19 changed files with 188 additions and 60 deletions

View File

@@ -38,5 +38,6 @@ targets:
sources:
- path: .
- path: ../Config/BuildSettings.swift
- path: ../Config/MDMSettings.swift
- path: ../Riot/Categories/Bundle.swift
- path: ../Riot/Modules/Room/TimelineCells/Styles/RoomTimelineStyleIdentifier.swift

View File

@@ -1,3 +1,15 @@
## Changes in 1.11.2 (2023-09-12)
🙌 Improvements
- Upgrade MatrixSDK version ([v0.27.2](https://github.com/matrix-org/matrix-ios-sdk/releases/tag/v0.27.2)).
🐛 Bugfixes
- Fix an issue where rooms were not correctly sorted after forwarding a message. ([#7641](https://github.com/vector-im/element-ios/issues/7641))
- Add phone number UI and explanatory text is hidden if the 3 pid changes capability is disabled. ([#7670](https://github.com/vector-im/element-ios/issues/7670))
## Changes in 1.11.1 (2023-08-29)
✨ Features

View File

@@ -15,5 +15,5 @@
//
// Version
MARKETING_VERSION = 1.11.1
CURRENT_PROJECT_VERSION = 1.11.1
MARKETING_VERSION = 1.11.2
CURRENT_PROJECT_VERSION = 1.11.2

View File

@@ -102,13 +102,16 @@ final class BuildSettings: NSObject {
static let forceHomeserverSelection = false
/// Default server proposed on the authentication screen
static let serverConfigDefaultHomeserverUrlString = "https://matrix.org"
static var serverConfigDefaultHomeserverUrlString: String {
MDMSettings.serverConfigDefaultHomeserverUrlString ?? "https://matrix.org"
}
/// Default identity server
static let serverConfigDefaultIdentityServerUrlString = "https://vector.im"
static let serverConfigSygnalAPIUrlString = "https://matrix.org/_matrix/push/v1/notify"
static var serverConfigSygnalAPIUrlString: String {
MDMSettings.serverConfigSygnalAPIUrlString ?? "https://matrix.org/_matrix/push/v1/notify"
}
// MARK: - Legal URLs
@@ -144,7 +147,9 @@ final class BuildSettings: NSObject {
// This baseURL is used to generate permalinks within the app (E.g. timeline message permalinks).
// Optional String that when set is used as permalink base, when nil matrix.to format is used.
// Example value would be "https://www.example.com", note there is no trailing '/'.
static let clientPermalinkBaseUrl: String? = nil
static var clientPermalinkBaseUrl: String? {
MDMSettings.clientPermalinkBaseUrl
}
// MARK: - VoIP
static var allowVoIPUsage: Bool {

52
Config/MDMSettings.swift Normal file
View File

@@ -0,0 +1,52 @@
//
// Copyright 2023 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
enum MDMSettings {
private static let appleManagedConfigurationKey = "com.apple.configuration.managed"
private enum Key: String {
case serverConfigDefaultHomeserverUrlString = "im.vector.app.serverConfigDefaultHomeserverUrlString"
case serverConfigSygnalAPIUrlString = "im.vector.app.serverConfigSygnalAPIUrlString"
case clientPermalinkBaseUrl = "im.vector.app.clientPermalinkBaseUrl"
}
static var serverConfigDefaultHomeserverUrlString: String? {
valueForKey(.serverConfigDefaultHomeserverUrlString) as? String
}
static var serverConfigSygnalAPIUrlString: String? {
valueForKey(.serverConfigSygnalAPIUrlString) as? String
}
static var clientPermalinkBaseUrl: String? {
valueForKey(.clientPermalinkBaseUrl) as? String
}
// MARK: - Private
static private func valueForKey(_ key: Key) -> Any? {
guard let managedConfiguration = UserDefaults.standard.dictionary(forKey: appleManagedConfigurationKey) else {
print("MDM configuration missing")
return nil
}
print("Retrieved MDM configuration: \(managedConfiguration)")
return managedConfiguration[key.rawValue]
}
}

View File

@@ -71,6 +71,25 @@ Be sure to use compatible branches for Element iOS and MatrixSDK. For example, i
**Important**: By working with [XcodeGen](https://github.com/yonaskolb/XcodeGen) you will need to use the _New Build System_ in Xcode, to have your some of the xcconfig variables taken into account. It should be enabled by default on the latest Xcode versions, but if you need to enable it go to Xcode menu and select `File > Workspace Settings… > Build System` and then choose `New Build System`.
- **Running a local rust MatrixCryptoSDK locally**
If you want to debug locally or test local changes of the rust `MatrixSDKCrypto` with a local `MatrixSDK`, you must checkout [matrix-rust-sdk](https://github.com/matrix-org/matrix-rust-sdk), and follow the [instructions in the repository](https://github.com/matrix-org/matrix-rust-sdk/tree/main/bindings/apple).
Once the framework is built using `./build_crypto_xcframework.sh` you will have to move `bindings/apple/MatrixSDKCrypto-Local.podspec` to the root of the `matrix-rust-sdk` folder and rename it to `MatrixSDKCrypto.podspec` then update `s.version` with the current pod version:
```
s.version = "0.3.12"
```
Then in the element-ios `Podfile`, add the following line under the existing `pod 'MatrixSDK' [..]`:
```
pod 'MatrixSDKCrypto', :path => '../matrix-rust-sdk/MatrixSDKCrypto.podspec'
```
Run `pod install` to refresh all.
### `$matrixSDKVersion` Modification
Every time you change the `$matrixSDKVersion` variable in the `Podfile`, you have to run the `pod install` command again.

View File

@@ -16,7 +16,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.27.1'
$matrixSDKVersion = '= 0.27.2'
# $matrixSDKVersion = :local
# $matrixSDKVersion = { :branch => 'develop'}
# $matrixSDKVersion = { :specHash => { git: 'https://git.io/fork123', branch: 'fix' } }

View File

@@ -39,9 +39,9 @@ PODS:
- LoggerAPI (1.9.200):
- Logging (~> 1.1)
- Logging (1.4.0)
- MatrixSDK (0.27.1):
- MatrixSDK/Core (= 0.27.1)
- MatrixSDK/Core (0.27.1):
- MatrixSDK (0.27.2):
- MatrixSDK/Core (= 0.27.2)
- MatrixSDK/Core (0.27.2):
- AFNetworking (~> 4.0.0)
- GZIP (~> 1.3.0)
- libbase58 (~> 0.1.4)
@@ -49,7 +49,7 @@ PODS:
- OLMKit (~> 3.2.5)
- Realm (= 10.27.0)
- SwiftyBeaver (= 1.9.5)
- MatrixSDK/JingleCallStack (0.27.1):
- MatrixSDK/JingleCallStack (0.27.2):
- JitsiMeetSDKLite (= 8.1.2-lite)
- MatrixSDK/Core
- MatrixSDKCrypto (0.3.12)
@@ -102,8 +102,8 @@ DEPENDENCIES:
- KeychainAccess (~> 4.2.2)
- KTCenterFlowLayout (~> 1.3.1)
- libPhoneNumber-iOS (~> 0.9.13)
- MatrixSDK (= 0.27.1)
- MatrixSDK/JingleCallStack (= 0.27.1)
- MatrixSDK (= 0.27.2)
- MatrixSDK/JingleCallStack (= 0.27.2)
- OLMKit
- PostHog (~> 2.0.0)
- ReadMoreTextView (~> 3.0.1)
@@ -187,7 +187,7 @@ SPEC CHECKSUMS:
libPhoneNumber-iOS: 0a32a9525cf8744fe02c5206eb30d571e38f7d75
LoggerAPI: ad9c4a6f1e32f518fdb43a1347ac14d765ab5e3d
Logging: beeb016c9c80cf77042d62e83495816847ef108b
MatrixSDK: f6c197ca06aab29ff69d1105965a57d277dfcd9d
MatrixSDK: a39e229a03a00394e055ffa7490e9602d45f8a44
MatrixSDKCrypto: 25929a40733b4ab54f659aaf6a730552a0a06504
OLMKit: da115f16582e47626616874e20f7bb92222c7a51
PostHog: 660ec6c9d80cec17b685e148f17f6785a88b597d
@@ -208,6 +208,6 @@ SPEC CHECKSUMS:
zxcvbn-ios: fef98b7c80f1512ff0eec47ac1fa399fc00f7e3c
ZXingObjC: fdbb269f25dd2032da343e06f10224d62f537bdb
PODFILE CHECKSUM: ce6afe3dea7ea9b073a7ad0406b2cc5615646746
PODFILE CHECKSUM: b926e281576aabcdbc2bdcb40ef3ad3e0991abe8
COCOAPODS: 1.11.3

View File

@@ -4577,7 +4577,8 @@ static CGSize kThreadListBarButtonItemImageSize;
{
ForwardingShareItemSender *shareItemSender = [[ForwardingShareItemSender alloc] initWithEvent:selectedEvent];
self.shareManager = [[ShareManager alloc] initWithShareItemSender:shareItemSender
type:ShareManagerTypeForward];
type:ShareManagerTypeForward
session:self.mainSession];
MXWeakify(self);
[self.shareManager setCompletionCallback:^(ShareManagerResult result) {

View File

@@ -371,23 +371,24 @@ ChangePasswordCoordinatorBridgePresenterDelegate>
{
[sectionUserSettings addRowWithTag: USER_SETTINGS_PHONENUMBERS_OFFSET + index];
}
if (BuildSettings.settingsScreenAllowAddingEmailThreepids &&
// If the threePidChanges is nil we assume the capability to be true
(!self.mainSession.homeserverCapabilities.threePidChanges ||
self.mainSession.homeserverCapabilities.threePidChanges.enabled))
{
[sectionUserSettings addRowWithTag:USER_SETTINGS_ADD_EMAIL_INDEX];
}
if (BuildSettings.settingsScreenAllowAddingPhoneThreepids)
{
[sectionUserSettings addRowWithTag:USER_SETTINGS_ADD_PHONENUMBER_INDEX];
}
if (BuildSettings.settingsScreenShowThreepidExplanatory)
{
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:[VectorL10n settingsThreePidsManagementInformationPart1] attributes:@{}];
[attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:[VectorL10n settingsThreePidsManagementInformationPart2] attributes:@{NSForegroundColorAttributeName: ThemeService.shared.theme.tintColor}]];
[attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:[VectorL10n settingsThreePidsManagementInformationPart3] attributes:@{}]];
sectionUserSettings.attributedFooterTitle = attributedString;
// If the threePidChanges is nil we assume the capability to be true
if (!self.mainSession.homeserverCapabilities.threePidChanges ||
self.mainSession.homeserverCapabilities.threePidChanges.enabled) {
if (BuildSettings.settingsScreenAllowAddingEmailThreepids)
{
[sectionUserSettings addRowWithTag:USER_SETTINGS_ADD_EMAIL_INDEX];
}
if (BuildSettings.settingsScreenAllowAddingPhoneThreepids)
{
[sectionUserSettings addRowWithTag:USER_SETTINGS_ADD_PHONENUMBER_INDEX];
}
if (BuildSettings.settingsScreenShowThreepidExplanatory)
{
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:[VectorL10n settingsThreePidsManagementInformationPart1] attributes:@{}];
[attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:[VectorL10n settingsThreePidsManagementInformationPart2] attributes:@{NSForegroundColorAttributeName: ThemeService.shared.theme.tintColor}]];
[attributedString appendAttributedString:[[NSAttributedString alloc] initWithString:[VectorL10n settingsThreePidsManagementInformationPart3] attributes:@{}]];
sectionUserSettings.attributedFooterTitle = attributedString;
}
}
sectionUserSettings.headerTitle = [VectorL10n settingsUserSettings];

View File

@@ -44,6 +44,7 @@ targets:
- path: .
- path: ../Riot/Managers/Settings/RiotSettings.swift
- path: ../Config/BuildSettings.swift
- path: ../Config/MDMSettings.swift
- path: ../Riot/Utils/DataProtectionHelper.swift
- path: ../Config/CommonConfiguration.swift
- path: ../Riot/Experiments/

View File

@@ -56,6 +56,7 @@ class ForwardingShareItemSender: NSObject, ShareItemSenderProtocol {
case .failure(let innerError):
errors.append(innerError)
default:
room.summary.resetLastMessage(nil, failure: nil, commit: false)
break
}

View File

@@ -36,7 +36,9 @@ typedef NS_ENUM(NSUInteger, ShareManagerResult) {
@property (nonatomic, copy) void (^completionCallback)(ShareManagerResult);
- (instancetype)initWithShareItemSender:(id<ShareItemSenderProtocol>)itemSender
type:(ShareManagerType)type;
type:(ShareManagerType)type
session:(nullable MXSession*)session;
- (UIViewController *)mainViewController;

View File

@@ -31,6 +31,8 @@
@property (nonatomic, strong, readonly) ShareViewController *shareViewController;
@property (nonatomic) BOOL useCustomSession;
@property (nonatomic, strong) MXSession* session;
@property (nonatomic, strong) MXKAccount *userAccount;
@property (nonatomic, strong) MXFileStore *fileStore;
@@ -51,11 +53,14 @@ static MXSession *fakeSession;
- (instancetype)initWithShareItemSender:(id<ShareItemSenderProtocol>)itemSender
type:(ShareManagerType)type
session:(MXSession*)session
{
if (self = [super init])
{
_shareItemSender = itemSender;
_shareItemSender.delegate = self;
_session = session;
_useCustomSession = _session == nil;
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(checkUserAccount) name:kMXKAccountManagerDidRemoveAccountNotification object:nil];
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(checkUserAccount) name:NSExtensionHostWillEnterForegroundNotification object:nil];
@@ -71,7 +76,20 @@ static MXSession *fakeSession;
[NSBundle mxk_setLanguage:language];
[NSBundle mxk_setFallbackLanguage:@"en"];
[self checkUserAccount];
if (!_useCustomSession)
{
// If we don't use a custom session, we can initialize the shareViewController with our existing session
self.userAccount = [MXKAccountManager sharedManager].activeAccounts.firstObject;
ShareDataSource *roomDataSource = [[ShareDataSource alloc] initWithFileStore:_session.store
session:_session];
[self.shareViewController configureWithState:ShareViewControllerAccountStateConfigured
roomDataSource:roomDataSource];
}
else
{
[self checkUserAccount];
}
}
return self;
@@ -95,32 +113,23 @@ static MXSession *fakeSession;
MXStrongifyAndReturnIfNil(self);
[self.userAccount handleUnauthenticatedWithError:error isSoftLogout:isSoftLogout isRefreshTokenAuth:isRefreshTokenAuth andCompletion:completion];
}];
MXSession *session = [[MXSession alloc] initWithMatrixRestClient:restClient];
[MXFileStore setPreloadOptions:0];
MXWeakify(session);
[session setStore:self.fileStore success:^{
MXStrongifyAndReturnIfNil(session);
self.selectedRooms = [NSMutableArray array];
for (NSString *roomIdentifier in roomIdentifiers) {
MXRoom *room = [MXRoom loadRoomFromStore:self.fileStore withRoomId:roomIdentifier matrixSession:session];
if (room) {
[self.selectedRooms addObject:room];
}
}
[self.shareItemSender sendItemsToRooms:self.selectedRooms success:^{
self.selectedRooms = nil;
self.completionCallback(ShareManagerResultFinished);
} failure:^(NSArray<NSError *> *errors) {
self.selectedRooms = nil;
[self showFailureAlert:[VectorL10n roomEventFailedToSend]];
if (self.useCustomSession || !self.session)
{
MXSession* session = [[MXSession alloc] initWithMatrixRestClient:restClient];
[MXFileStore setPreloadOptions:0];
MXWeakify(session);
[session setStore:self.fileStore success:^{
MXStrongifyAndReturnIfNil(session);
[self shareForRoomIdentifiers:roomIdentifiers usingSession:session];
} failure:^(NSError *error) {
MXLogError(@"[ShareManager] Failed preparing matrix session");
}];
} failure:^(NSError *error) {
MXLogError(@"[ShareManager] Failed preparing matrix session");
}];
}
else
{
[self shareForRoomIdentifiers:roomIdentifiers usingSession:self.session];
}
}
- (void)shareViewControllerDidRequestDismissal:(ShareViewController *)shareViewController
@@ -142,6 +151,25 @@ static MXSession *fakeSession;
#pragma mark - Private
- (void)shareForRoomIdentifiers:(NSSet<NSString *> *)roomIdentifiers usingSession:(MXSession*)session
{
self.selectedRooms = [NSMutableArray array];
for (NSString *roomIdentifier in roomIdentifiers) {
MXRoom *room = [MXRoom loadRoomFromStore:session.store withRoomId:roomIdentifier matrixSession:session];
if (room) {
[self.selectedRooms addObject:room];
}
}
[self.shareItemSender sendItemsToRooms:self.selectedRooms success:^{
self.selectedRooms = nil;
self.completionCallback(ShareManagerResultFinished);
} failure:^(NSArray<NSError *> *errors) {
self.selectedRooms = nil;
[self showFailureAlert:[VectorL10n roomEventFailedToSend]];
}];
}
- (void)showFailureAlert:(NSString *)title
{
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:title message:nil preferredStyle:UIAlertControllerStyleAlert];

View File

@@ -48,6 +48,7 @@ targets:
- path: ../Riot/Managers/Theme/
- path: ../Riot/Utils/AvatarGenerator.m
- path: ../Config/BuildSettings.swift
- path: ../Config/MDMSettings.swift
- path: ../Riot/Categories/Character.swift
- path: ../Riot/Categories/MXKImageView.swift
- path: ../Riot/Categories/MXRoom+Riot.m

View File

@@ -52,6 +52,7 @@ targets:
- path: ../Riot/Managers/Theme/
- path: ../Riot/Managers/Locale/LocaleProviderType.swift
- path: ../Config/BuildSettings.swift
- path: ../Config/MDMSettings.swift
- path: ../Riot/Modules/Room/TimelineCells/Styles/RoomTimelineStyleIdentifier.swift
- path: ../Riot/Categories/String.swift
- path: ../Riot/Categories/Character.swift

View File

@@ -61,6 +61,7 @@ targets:
- path: ../Riot/Managers/Theme/
- path: ../Riot/Managers/Locale/LocaleProviderType.swift
- path: ../Config/BuildSettings.swift
- path: ../Config/MDMSettings.swift
- path: ../Riot/Modules/Room/TimelineCells/Styles/RoomTimelineStyleIdentifier.swift
- path: ../Riot/Categories/String.swift
- path: ../Riot/Categories/Character.swift

View File

@@ -61,6 +61,7 @@ targets:
- path: .
- path: ../Config/Configurable.swift
- path: ../Config/BuildSettings.swift
- path: ../Config/MDMSettings.swift
- path: ../Riot/Categories/Bundle.swift
- path: ../Riot/Managers/AppInfo/AppInfo.swift
- path: ../Riot/Managers/AppInfo/AppVersion.swift

View File

@@ -48,6 +48,7 @@ targets:
- path: ../Config/CommonConfiguration.swift
- path: ../Riot/Experiments/
- path: ../Config/BuildSettings.swift
- path: ../Config/MDMSettings.swift
- path: ../Config/Configurable.swift
- path: ../Riot/Managers/Settings/RiotSettings.swift
- path: ../Riot/Managers/EncryptionKeyManager/EncryptionKeyManager.swift