Merge pull request #3717 from vector-im/release/1.0.14/release

Release 1.0.14
This commit is contained in:
SBiOSoftWhare 2020-10-02 15:25:35 +02:00 committed by GitHub
commit 8376ff577b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
18 changed files with 118 additions and 36 deletions

View file

@ -1,3 +1,35 @@
Changes in 1.0.14 (2020-10-02)
=================================================
✨ Features
*
🙌 Improvements
* i18n: Add Estonian (et).
* MXSession: Make vc_canSetupSecureBackup reusable.
🐛 Bugfix
* Settings: New phone number is invisible in dark theme (#3218).
* Handle call actions on other devices on VoIP pushes (#3677).
* Fix "Unable to open the link" error when using non-Safari browsers (#3673).
* Biometrics: Handle retry case.
* Room: Remove membership events from room creation modal (#3679).
⚠️ API Changes
*
🗣 Translations
*
🧱 Build
*
Others
*
Improvements:
* Upgrade MatrixKit version ([v0.12.22](https://github.com/matrix-org/matrix-ios-kit/releases/tag/v0.12.22)).
Changes in 1.0.13 (2020-09-30)
=================================================
@ -22,6 +54,7 @@ Changes in 1.0.13 (2020-09-30)
* Device verification: Fix inactive cancel action issue in self verification flow.
* Fix floating action buttons' images.
* Various theme fixes.
* Room: Fix message not shown after push issue (#3672).
⚠️ API Changes
*

View file

@ -11,7 +11,7 @@ use_frameworks!
# - `{ {kit spec hash} => {sdk spec hash}` to depend on specific pod options (:git => …, :podspec => …) for each repo. Used by Fastfile during CI
#
# Warning: our internal tooling depends on the name of this variable name, so be sure not to change it
$matrixKitVersion = '= 0.12.21'
$matrixKitVersion = '= 0.12.22'
# $matrixKitVersion = :local
# $matrixKitVersion = {'develop' => 'develop'}

View file

@ -1957,6 +1957,9 @@
B1E5368821FB1E20001F3AFF /* UIButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButton.swift; sourceTree = "<group>"; };
B1E5368C21FB7245001F3AFF /* KeyBackupRecoverFromPassphraseViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupRecoverFromPassphraseViewController.swift; sourceTree = "<group>"; };
B1E5368E21FB7258001F3AFF /* KeyBackupRecoverFromPassphraseViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = KeyBackupRecoverFromPassphraseViewController.storyboard; sourceTree = "<group>"; };
B1EDFDF32525E9690020EEFF /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/Vector.strings; sourceTree = "<group>"; };
B1EDFDF42525E9690020EEFF /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/InfoPlist.strings; sourceTree = "<group>"; };
B1EDFDF52525E96A0020EEFF /* et */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = et; path = et.lproj/Localizable.strings; sourceTree = "<group>"; };
B1FDF55F21F5FE5500BA3834 /* KeyBackupSetupPassphraseViewAction.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyBackupSetupPassphraseViewAction.swift; sourceTree = "<group>"; };
B43DC75D1590BB8A4243BD4D /* Pods-RiotPods-Riot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotPods-Riot.release.xcconfig"; path = "Target Support Files/Pods-RiotPods-Riot/Pods-RiotPods-Riot.release.xcconfig"; sourceTree = "<group>"; };
BABB6681FBD79219B1213D6C /* Pods-RiotTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RiotTests.debug.xcconfig"; path = "Target Support Files/Pods-RiotTests/Pods-RiotTests.debug.xcconfig"; sourceTree = "<group>"; };
@ -5666,6 +5669,7 @@
pl,
cy,
it,
et,
);
mainGroup = F094A9991B78D8F000B1FBBF;
productRefGroup = F094A9A31B78D8F000B1FBBF /* Products */;
@ -6928,6 +6932,7 @@
32DAF8DD231813E100654A44 /* pl */,
325789A7237AB297009388E6 /* cy */,
B1C6FFE923954D4B0055347B /* it */,
B1EDFDF32525E9690020EEFF /* et */,
);
name = Vector.strings;
sourceTree = "<group>";
@ -6953,6 +6958,7 @@
32DAF8DB231813C800654A44 /* pl */,
325789A5237AB241009388E6 /* cy */,
B1C6FFE723954CE70055347B /* it */,
B1EDFDF42525E9690020EEFF /* et */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
@ -6978,6 +6984,7 @@
32DAF8DC231813D500654A44 /* pl */,
325789A6237AB27F009388E6 /* cy */,
B1C6FFE823954D3B0055347B /* it */,
B1EDFDF52525E96A0020EEFF /* et */,
);
name = Localizable.strings;
sourceTree = "<group>";
@ -7270,7 +7277,7 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1.0.13;
CURRENT_PROJECT_VERSION = 1.0.14;
DEFINES_MODULE = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@ -7290,7 +7297,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MARKETING_VERSION = 1.0.13;
MARKETING_VERSION = 1.0.14;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@ -7329,7 +7336,7 @@
CODE_SIGN_IDENTITY = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
COPY_PHASE_STRIP = YES;
CURRENT_PROJECT_VERSION = 1.0.13;
CURRENT_PROJECT_VERSION = 1.0.14;
DEFINES_MODULE = YES;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
@ -7342,7 +7349,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MARKETING_VERSION = 1.0.13;
MARKETING_VERSION = 1.0.14;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;

View file

@ -88,12 +88,6 @@
return NO;
}
if (!self.crypto.backup.hasKeysToBackup)
{
// Do not create secure key backup if they are no keys to backup.
return NO;
}
// Accept to create a setup only if we have the 3 cross-signing keys
// This is the path to have a sane state
// TODO: What about missing MSK that was not gossiped before?

View file

@ -24,6 +24,7 @@ internal enum InfoPlist {
internal static let cfBundleVersion: String = _document["CFBundleVersion"]
internal static let itsAppUsesNonExemptEncryption: Bool = _document["ITSAppUsesNonExemptEncryption"]
internal static let itsEncryptionExportComplianceCode: String = _document["ITSEncryptionExportComplianceCode"]
internal static let lsApplicationQueriesSchemes: [String] = _document["LSApplicationQueriesSchemes"]
internal static let lsRequiresIPhoneOS: Bool = _document["LSRequiresIPhoneOS"]
internal static let nsAppTransportSecurity: [String: Any] = _document["NSAppTransportSecurity"]
internal static let nsCalendarsUsageDescription: String = _document["NSCalendarsUsageDescription"]

View file

@ -562,6 +562,9 @@ Matrix session observer used to detect new opened sessions.
{
[session.callManager.callKitAdapter reportIncomingCall:call];
NSLog(@"[PushNotificationService] didReceiveIncomingPushWithPayload: Reporting new call in room %@ for the event: %@", roomId, eventId);
// After reporting the call, we can continue async. Launch a background sync to handle call answers/declines on other devices of the user.
[self launchBackgroundSync];
}
else
{

View file

@ -73,6 +73,12 @@ extern NSString *const AppDelegateUniversalLinkDidChangeNotification;
@property (nonatomic) BOOL isAppForeground;
@property (nonatomic) BOOL isOffline;
/**
Last navigated room's identifier from a push notification.
*/
// TODO: This property is introduced to fix #3672. Remove it when a better solution revealed to the problem.
@property (nonatomic, copy) NSString *lastNavigatedRoomIdFromPush;
/**
Let the AppDelegate handle and display self verification requests.

View file

@ -1096,6 +1096,7 @@ NSString *const AppDelegateUniversalLinkDidChangeNotification = @"AppDelegateUni
- (void)pushNotificationService:(PushNotificationService *)pushNotificationService shouldNavigateToRoomWithId:(NSString *)roomId
{
_lastNavigatedRoomIdFromPush = roomId;
[self navigateToRoomById:roomId];
}

View file

@ -189,7 +189,10 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou
{
SecureBackupBannerPreferences *secureBackupBannersPreferences = SecureBackupBannerPreferences.shared;
if (!secureBackupBannersPreferences.hideSetupBanner && [self.mxSession vc_canSetupSecureBackup])
// Display the banner if only we can set up 4S and if there are messages keys to backup
if (!secureBackupBannersPreferences.hideSetupBanner
&& [self.mxSession vc_canSetupSecureBackup]
&& self.mxSession.crypto.backup.hasKeysToBackup)
{
secureBackupBanner = SecureBackupBannerDisplaySetup;
}

View file

@ -75,6 +75,21 @@ static NSAttributedString *timestampVerticalWhitespace = nil;
// Collapse them by default
self.collapsed = YES;
// find the room create event in stateEvents
MXEvent *roomCreateEvent = [roomState.stateEvents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"wireType == %@", kMXEventTypeStringRoomCreate]].firstObject;
NSString *creatorUserId = [MXRoomCreateContent modelFromJSON:roomCreateEvent.content].creatorUserId;
if (creatorUserId)
{
MXRoomMemberEventContent *content = [MXRoomMemberEventContent modelFromJSON:event.content];
if ([kMXMembershipStringJoin isEqualToString:content.membership] &&
[creatorUserId isEqualToString:event.sender])
{
// join event of the room creator
// group it with room creation events
self.tag = RoomBubbleCellDataTagRoomCreateConfiguration;
}
}
}
break;
case MXEventTypeRoomCreate:
@ -214,12 +229,7 @@ static NSAttributedString *timestampVerticalWhitespace = nil;
return NO;
}
else if (self.tag == RoomBubbleCellDataTagRoomCreateConfiguration &&
(cellData.tag == RoomBubbleCellDataTagRoomCreateConfiguration || cellData.tag == RoomBubbleCellDataTagMembership))
{
return YES;
}
else if (self.tag == RoomBubbleCellDataTagMembership && cellData.tag == RoomBubbleCellDataTagRoomCreateConfiguration)
else if (self.tag == RoomBubbleCellDataTagRoomCreateConfiguration && cellData.tag == RoomBubbleCellDataTagRoomCreateConfiguration)
{
return YES;
}
@ -736,6 +746,15 @@ static NSAttributedString *timestampVerticalWhitespace = nil;
case MXEventTypeRoomCreate:
shouldAddEvent = NO;
break;
case MXEventTypeRoomTopic:
case MXEventTypeRoomName:
case MXEventTypeRoomEncryption:
case MXEventTypeRoomHistoryVisibility:
case MXEventTypeRoomGuestAccess:
case MXEventTypeRoomAvatar:
case MXEventTypeRoomJoinRules:
shouldAddEvent = NO;
break;
default:
break;
}

View file

@ -71,7 +71,7 @@
</constraints>
</view>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="eyI-bY-amr" firstAttribute="top" secondItem="M84-br-bHM" secondAttribute="top" constant="16" id="10e-aB-X62"/>
<constraint firstItem="NAg-Nv-eHX" firstAttribute="trailing" secondItem="YaZ-Pv-7g9" secondAttribute="trailing" constant="2" id="Ard-6C-AbE"/>

View file

@ -194,6 +194,7 @@ extension RoomCreationEventsModalViewController: UITableViewDataSource {
cell.textView.isScrollEnabled = false
cell.textView.isEditable = false
cell.textView.isSelectable = false
cell.textView.backgroundColor = .clear
cell.backgroundColor = theme.backgroundColor
cell.contentView.backgroundColor = .clear
cell.tintColor = theme.tintColor

View file

@ -503,6 +503,13 @@
[self setBubbleTableViewContentOffset:CGPointMake(-self.bubblesTableView.mxk_adjustedContentInset.left, -self.bubblesTableView.mxk_adjustedContentInset.top) animated:YES];
}];
if ([self.roomDataSource.roomId isEqualToString:[LegacyAppDelegate theDelegate].lastNavigatedRoomIdFromPush])
{
[self startActivityIndicator];
[self.roomDataSource reload];
[LegacyAppDelegate theDelegate].lastNavigatedRoomIdFromPush = nil;
}
}
- (void)viewWillDisappear:(BOOL)animated

View file

@ -106,6 +106,8 @@ final class SetupBiometricsViewModel: SetupBiometricsViewModelType {
self.coordinatorDelegate?.setupBiometricsViewModelDidCompleteWithReset(self, dueToTooManyErrors: true)
} else if nsError.code == LAError.Code.userCancel.rawValue || nsError.code == LAError.Code.userFallback.rawValue {
self.userCancelledUnlockWithBiometrics()
} else {
self.update(viewState: .cantUnlocked)
}
}
}

View file

@ -1345,6 +1345,7 @@ TableViewSectionsDelegate>
cell.mxkTextField.borderStyle = UITextBorderStyleNone;
cell.mxkTextField.textAlignment = NSTextAlignmentRight;
cell.mxkTextField.textColor = ThemeService.shared.theme.textSecondaryColor;
cell.mxkTextField.tintColor = ThemeService.shared.theme.tintColor;
cell.mxkTextField.font = [UIFont systemFontOfSize:16];
cell.mxkTextField.placeholder = nil;
@ -1645,7 +1646,6 @@ TableViewSectionsDelegate>
newPhoneCell.countryCodeButton.accessibilityIdentifier = @"SettingsVCPhoneCountryButton";
newPhoneCell.mxkLabel.font = newPhoneCell.mxkTextField.font = [UIFont systemFontOfSize:16];
newPhoneCell.mxkTextField.textColor = ThemeService.shared.theme.textSecondaryColor;
newPhoneCell.mxkTextField.userInteractionEnabled = YES;
newPhoneCell.mxkTextField.keyboardType = UIKeyboardTypePhonePad;

View file

@ -28,7 +28,9 @@
[super customizeTableViewCellRendering];
self.mxkLabel.textColor = ThemeService.shared.theme.textPrimaryColor;
self.mxkTextField.textColor = ThemeService.shared.theme.textPrimaryColor;
self.mxkTextField.textColor = ThemeService.shared.theme.textSecondaryColor;
self.mxkTextField.tintColor = ThemeService.shared.theme.tintColor;
self.mxkTextField.backgroundColor = ThemeService.shared.theme.baseColor;
_countryCodeButton.tintColor = ThemeService.shared.theme.textSecondaryColor;
_isoCountryCodeLabel.textColor = ThemeService.shared.theme.textPrimaryColor;

View file

@ -1,12 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14113" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="16097.3" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina4_7" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@ -16,11 +13,11 @@
<rect key="frame" x="0.0" y="0.0" width="600" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="5Je-1y-foH" id="hCm-wd-Yup">
<rect key="frame" x="0.0" y="0.0" width="600" height="43.5"/>
<rect key="frame" x="0.0" y="0.0" width="600" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="14" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="SBE-PS-i6p">
<rect key="frame" x="110" y="7" width="482" height="30"/>
<rect key="frame" x="114" y="5" width="478" height="34"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" returnKeyType="done"/>
<connections>
@ -28,7 +25,7 @@
</connections>
</textField>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" preferredMaxLayoutWidth="584" translatesAutoresizingMaskIntoConstraints="NO" id="DE7-uC-Oz2">
<rect key="frame" x="60" y="11" width="42" height="21"/>
<rect key="frame" x="64" y="11.5" width="42" height="21"/>
<color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="10" id="Qzq-Ej-Wdb"/>
@ -38,18 +35,18 @@
<nil key="highlightedColor"/>
</label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="right" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8KD-C4-hzY">
<rect key="frame" x="8" y="-0.5" width="44" height="44"/>
<rect key="frame" x="14" y="0.0" width="44" height="44"/>
<constraints>
<constraint firstAttribute="width" constant="44" id="IXc-6F-gtQ"/>
</constraints>
<state key="normal" image="shrink_icon"/>
</button>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="FR" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="h7J-Li-Rej">
<rect key="frame" x="25" y="11" width="30" height="21"/>
<rect key="frame" x="20" y="11.5" width="30" height="21.5"/>
<constraints>
<constraint firstAttribute="width" constant="30" id="ioP-sM-wA4"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<fontDescription key="fontDescription" type="system" pointSize="18"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
@ -59,11 +56,11 @@
<constraint firstAttribute="trailing" secondItem="SBE-PS-i6p" secondAttribute="trailing" constant="8" id="7NM-6p-4fc"/>
<constraint firstItem="SBE-PS-i6p" firstAttribute="centerY" secondItem="DE7-uC-Oz2" secondAttribute="centerY" id="LEG-PI-Zmz"/>
<constraint firstAttribute="centerY" secondItem="DE7-uC-Oz2" secondAttribute="centerY" id="PU3-ZA-23J"/>
<constraint firstItem="DE7-uC-Oz2" firstAttribute="leading" secondItem="8KD-C4-hzY" secondAttribute="trailing" constant="8" id="XNM-HZ-lBf"/>
<constraint firstItem="8KD-C4-hzY" firstAttribute="leading" secondItem="hCm-wd-Yup" secondAttribute="leading" constant="8" id="buh-ht-pIX"/>
<constraint firstItem="DE7-uC-Oz2" firstAttribute="leading" secondItem="8KD-C4-hzY" secondAttribute="trailing" constant="6" id="XNM-HZ-lBf"/>
<constraint firstItem="h7J-Li-Rej" firstAttribute="leading" secondItem="8KD-C4-hzY" secondAttribute="trailing" constant="-38" id="bSX-La-Jem"/>
<constraint firstItem="SBE-PS-i6p" firstAttribute="leading" secondItem="DE7-uC-Oz2" secondAttribute="trailing" constant="8" id="h1v-HS-kzp"/>
<constraint firstItem="h7J-Li-Rej" firstAttribute="centerY" secondItem="8KD-C4-hzY" secondAttribute="centerY" id="mPr-EN-Ne5"/>
<constraint firstItem="h7J-Li-Rej" firstAttribute="leading" secondItem="hCm-wd-Yup" secondAttribute="leadingMargin" constant="5" id="tPe-Md-GPg"/>
<constraint firstItem="h7J-Li-Rej" firstAttribute="leading" secondItem="hCm-wd-Yup" secondAttribute="leading" constant="20" id="qQ5-VP-Vfn"/>
</constraints>
</tableViewCellContentView>
<constraints>
@ -78,6 +75,7 @@
<outlet property="mxkTextFieldLeadingConstraint" destination="h1v-HS-kzp" id="Sx7-JU-SeG"/>
<outlet property="mxkTextFieldTrailingConstraint" destination="7NM-6p-4fc" id="tBw-Gt-9pm"/>
</connections>
<point key="canvasLocation" x="139" y="152"/>
</tableViewCell>
</objects>
<resources>

View file

@ -94,5 +94,10 @@
<string>$(BASE_BUNDLE_IDENTIFIER)</string>
<key>keychainAccessGroup</key>
<string>$(KEYCHAIN_ACCESS_GROUP)</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>http</string>
<string>https</string>
</array>
</dict>
</plist>