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) 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. * Device verification: Fix inactive cancel action issue in self verification flow.
* Fix floating action buttons' images. * Fix floating action buttons' images.
* Various theme fixes. * Various theme fixes.
* Room: Fix message not shown after push issue (#3672).
⚠️ API Changes ⚠️ 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 # - `{ {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 # 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 = :local
# $matrixKitVersion = {'develop' => 'develop'} # $matrixKitVersion = {'develop' => 'develop'}

View file

@ -1957,6 +1957,9 @@
B1E5368821FB1E20001F3AFF /* UIButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIButton.swift; sourceTree = "<group>"; }; 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>"; }; 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>"; }; 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>"; }; 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>"; }; 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>"; }; 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, pl,
cy, cy,
it, it,
et,
); );
mainGroup = F094A9991B78D8F000B1FBBF; mainGroup = F094A9991B78D8F000B1FBBF;
productRefGroup = F094A9A31B78D8F000B1FBBF /* Products */; productRefGroup = F094A9A31B78D8F000B1FBBF /* Products */;
@ -6928,6 +6932,7 @@
32DAF8DD231813E100654A44 /* pl */, 32DAF8DD231813E100654A44 /* pl */,
325789A7237AB297009388E6 /* cy */, 325789A7237AB297009388E6 /* cy */,
B1C6FFE923954D4B0055347B /* it */, B1C6FFE923954D4B0055347B /* it */,
B1EDFDF32525E9690020EEFF /* et */,
); );
name = Vector.strings; name = Vector.strings;
sourceTree = "<group>"; sourceTree = "<group>";
@ -6953,6 +6958,7 @@
32DAF8DB231813C800654A44 /* pl */, 32DAF8DB231813C800654A44 /* pl */,
325789A5237AB241009388E6 /* cy */, 325789A5237AB241009388E6 /* cy */,
B1C6FFE723954CE70055347B /* it */, B1C6FFE723954CE70055347B /* it */,
B1EDFDF42525E9690020EEFF /* et */,
); );
name = InfoPlist.strings; name = InfoPlist.strings;
sourceTree = "<group>"; sourceTree = "<group>";
@ -6978,6 +6984,7 @@
32DAF8DC231813D500654A44 /* pl */, 32DAF8DC231813D500654A44 /* pl */,
325789A6237AB27F009388E6 /* cy */, 325789A6237AB27F009388E6 /* cy */,
B1C6FFE823954D3B0055347B /* it */, B1C6FFE823954D3B0055347B /* it */,
B1EDFDF52525E96A0020EEFF /* et */,
); );
name = Localizable.strings; name = Localizable.strings;
sourceTree = "<group>"; sourceTree = "<group>";
@ -7270,7 +7277,7 @@
CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO; COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1.0.13; CURRENT_PROJECT_VERSION = 1.0.14;
DEFINES_MODULE = YES; DEFINES_MODULE = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
@ -7290,7 +7297,7 @@
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MARKETING_VERSION = 1.0.13; MARKETING_VERSION = 1.0.14;
MTL_ENABLE_DEBUG_INFO = YES; MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos; SDKROOT = iphoneos;
@ -7329,7 +7336,7 @@
CODE_SIGN_IDENTITY = "iPhone Distribution"; CODE_SIGN_IDENTITY = "iPhone Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
COPY_PHASE_STRIP = YES; COPY_PHASE_STRIP = YES;
CURRENT_PROJECT_VERSION = 1.0.13; CURRENT_PROJECT_VERSION = 1.0.14;
DEFINES_MODULE = YES; DEFINES_MODULE = YES;
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
@ -7342,7 +7349,7 @@
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
MARKETING_VERSION = 1.0.13; MARKETING_VERSION = 1.0.14;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos; SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule; SWIFT_COMPILATION_MODE = wholemodule;

View file

@ -88,12 +88,6 @@
return NO; 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 // Accept to create a setup only if we have the 3 cross-signing keys
// This is the path to have a sane state // This is the path to have a sane state
// TODO: What about missing MSK that was not gossiped before? // 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 cfBundleVersion: String = _document["CFBundleVersion"]
internal static let itsAppUsesNonExemptEncryption: Bool = _document["ITSAppUsesNonExemptEncryption"] internal static let itsAppUsesNonExemptEncryption: Bool = _document["ITSAppUsesNonExemptEncryption"]
internal static let itsEncryptionExportComplianceCode: String = _document["ITSEncryptionExportComplianceCode"] internal static let itsEncryptionExportComplianceCode: String = _document["ITSEncryptionExportComplianceCode"]
internal static let lsApplicationQueriesSchemes: [String] = _document["LSApplicationQueriesSchemes"]
internal static let lsRequiresIPhoneOS: Bool = _document["LSRequiresIPhoneOS"] internal static let lsRequiresIPhoneOS: Bool = _document["LSRequiresIPhoneOS"]
internal static let nsAppTransportSecurity: [String: Any] = _document["NSAppTransportSecurity"] internal static let nsAppTransportSecurity: [String: Any] = _document["NSAppTransportSecurity"]
internal static let nsCalendarsUsageDescription: String = _document["NSCalendarsUsageDescription"] 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]; [session.callManager.callKitAdapter reportIncomingCall:call];
NSLog(@"[PushNotificationService] didReceiveIncomingPushWithPayload: Reporting new call in room %@ for the event: %@", roomId, eventId); 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 else
{ {

View file

@ -73,6 +73,12 @@ extern NSString *const AppDelegateUniversalLinkDidChangeNotification;
@property (nonatomic) BOOL isAppForeground; @property (nonatomic) BOOL isAppForeground;
@property (nonatomic) BOOL isOffline; @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. 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 - (void)pushNotificationService:(PushNotificationService *)pushNotificationService shouldNavigateToRoomWithId:(NSString *)roomId
{ {
_lastNavigatedRoomIdFromPush = roomId;
[self navigateToRoomById:roomId]; [self navigateToRoomById:roomId];
} }

View file

@ -189,7 +189,10 @@ NSString *const kRecentsDataSourceTapOnDirectoryServerChange = @"kRecentsDataSou
{ {
SecureBackupBannerPreferences *secureBackupBannersPreferences = SecureBackupBannerPreferences.shared; 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; secureBackupBanner = SecureBackupBannerDisplaySetup;
} }

View file

@ -75,6 +75,21 @@ static NSAttributedString *timestampVerticalWhitespace = nil;
// Collapse them by default // Collapse them by default
self.collapsed = YES; 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; break;
case MXEventTypeRoomCreate: case MXEventTypeRoomCreate:
@ -214,12 +229,7 @@ static NSAttributedString *timestampVerticalWhitespace = nil;
return NO; return NO;
} }
else if (self.tag == RoomBubbleCellDataTagRoomCreateConfiguration && else if (self.tag == RoomBubbleCellDataTagRoomCreateConfiguration && cellData.tag == RoomBubbleCellDataTagRoomCreateConfiguration)
(cellData.tag == RoomBubbleCellDataTagRoomCreateConfiguration || cellData.tag == RoomBubbleCellDataTagMembership))
{
return YES;
}
else if (self.tag == RoomBubbleCellDataTagMembership && cellData.tag == RoomBubbleCellDataTagRoomCreateConfiguration)
{ {
return YES; return YES;
} }
@ -736,6 +746,15 @@ static NSAttributedString *timestampVerticalWhitespace = nil;
case MXEventTypeRoomCreate: case MXEventTypeRoomCreate:
shouldAddEvent = NO; shouldAddEvent = NO;
break; break;
case MXEventTypeRoomTopic:
case MXEventTypeRoomName:
case MXEventTypeRoomEncryption:
case MXEventTypeRoomHistoryVisibility:
case MXEventTypeRoomGuestAccess:
case MXEventTypeRoomAvatar:
case MXEventTypeRoomJoinRules:
shouldAddEvent = NO;
break;
default: default:
break; break;
} }

View file

@ -71,7 +71,7 @@
</constraints> </constraints>
</view> </view>
</subviews> </subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints> <constraints>
<constraint firstItem="eyI-bY-amr" firstAttribute="top" secondItem="M84-br-bHM" secondAttribute="top" constant="16" id="10e-aB-X62"/> <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"/> <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.isScrollEnabled = false
cell.textView.isEditable = false cell.textView.isEditable = false
cell.textView.isSelectable = false cell.textView.isSelectable = false
cell.textView.backgroundColor = .clear
cell.backgroundColor = theme.backgroundColor cell.backgroundColor = theme.backgroundColor
cell.contentView.backgroundColor = .clear cell.contentView.backgroundColor = .clear
cell.tintColor = theme.tintColor 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]; [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 - (void)viewWillDisappear:(BOOL)animated

View file

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

View file

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

View file

@ -28,7 +28,9 @@
[super customizeTableViewCellRendering]; [super customizeTableViewCellRendering];
self.mxkLabel.textColor = ThemeService.shared.theme.textPrimaryColor; 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; _countryCodeButton.tintColor = ThemeService.shared.theme.textSecondaryColor;
_isoCountryCodeLabel.textColor = ThemeService.shared.theme.textPrimaryColor; _isoCountryCodeLabel.textColor = ThemeService.shared.theme.textPrimaryColor;

View file

@ -1,12 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?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"> <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"> <device id="retina4_7" orientation="portrait" appearance="light"/>
<adaptation id="fullscreen"/>
</device>
<dependencies> <dependencies>
<deployment identifier="iOS"/> <deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14088"/> <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/> <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies> </dependencies>
<objects> <objects>
@ -16,11 +13,11 @@
<rect key="frame" x="0.0" y="0.0" width="600" height="44"/> <rect key="frame" x="0.0" y="0.0" width="600" height="44"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/> <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"> <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"/> <autoresizingMask key="autoresizingMask"/>
<subviews> <subviews>
<textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" minimumFontSize="14" clearButtonMode="whileEditing" translatesAutoresizingMaskIntoConstraints="NO" id="SBE-PS-i6p"> <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"/> <fontDescription key="fontDescription" type="system" pointSize="14"/>
<textInputTraits key="textInputTraits" returnKeyType="done"/> <textInputTraits key="textInputTraits" returnKeyType="done"/>
<connections> <connections>
@ -28,7 +25,7 @@
</connections> </connections>
</textField> </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"> <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"/> <color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints> <constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="10" id="Qzq-Ej-Wdb"/> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="10" id="Qzq-Ej-Wdb"/>
@ -38,18 +35,18 @@
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="right" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8KD-C4-hzY"> <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> <constraints>
<constraint firstAttribute="width" constant="44" id="IXc-6F-gtQ"/> <constraint firstAttribute="width" constant="44" id="IXc-6F-gtQ"/>
</constraints> </constraints>
<state key="normal" image="shrink_icon"/> <state key="normal" image="shrink_icon"/>
</button> </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"> <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> <constraints>
<constraint firstAttribute="width" constant="30" id="ioP-sM-wA4"/> <constraint firstAttribute="width" constant="30" id="ioP-sM-wA4"/>
</constraints> </constraints>
<fontDescription key="fontDescription" type="system" pointSize="17"/> <fontDescription key="fontDescription" type="system" pointSize="18"/>
<nil key="textColor"/> <nil key="textColor"/>
<nil key="highlightedColor"/> <nil key="highlightedColor"/>
</label> </label>
@ -59,11 +56,11 @@
<constraint firstAttribute="trailing" secondItem="SBE-PS-i6p" secondAttribute="trailing" constant="8" id="7NM-6p-4fc"/> <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 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 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="DE7-uC-Oz2" firstAttribute="leading" secondItem="8KD-C4-hzY" secondAttribute="trailing" constant="6" 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="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="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="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> </constraints>
</tableViewCellContentView> </tableViewCellContentView>
<constraints> <constraints>
@ -78,6 +75,7 @@
<outlet property="mxkTextFieldLeadingConstraint" destination="h1v-HS-kzp" id="Sx7-JU-SeG"/> <outlet property="mxkTextFieldLeadingConstraint" destination="h1v-HS-kzp" id="Sx7-JU-SeG"/>
<outlet property="mxkTextFieldTrailingConstraint" destination="7NM-6p-4fc" id="tBw-Gt-9pm"/> <outlet property="mxkTextFieldTrailingConstraint" destination="7NM-6p-4fc" id="tBw-Gt-9pm"/>
</connections> </connections>
<point key="canvasLocation" x="139" y="152"/>
</tableViewCell> </tableViewCell>
</objects> </objects>
<resources> <resources>

View file

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