End-to-end encryption UI/UX

#723

- Chat screen: Display a padlock in the bottom tool bar in case of encrypted room.
This commit is contained in:
giomfo 2016-11-07 11:36:32 +01:00
parent 9cab08e8f3
commit 3a77967085
17 changed files with 95 additions and 11 deletions

View file

@ -276,6 +276,18 @@
F0989F4F1CD7769000FA6EAC /* ForgotPasswordInputsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = F0989F4D1CD7769000FA6EAC /* ForgotPasswordInputsView.xib */; };
F09E24ED1C6DE24900D39503 /* RoomMemberTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = F09E24EB1C6DE24900D39503 /* RoomMemberTitleView.m */; };
F09E24EE1C6DE24900D39503 /* RoomMemberTitleView.xib in Resources */ = {isa = PBXBuildFile; fileRef = F09E24EC1C6DE24900D39503 /* RoomMemberTitleView.xib */; };
F09EAF031DCCEE1D009C7EFB /* e2e_blocked.png in Resources */ = {isa = PBXBuildFile; fileRef = F09EAEF71DCCEE1D009C7EFB /* e2e_blocked.png */; };
F09EAF041DCCEE1D009C7EFB /* e2e_blocked@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F09EAEF81DCCEE1D009C7EFB /* e2e_blocked@2x.png */; };
F09EAF051DCCEE1D009C7EFB /* e2e_blocked@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F09EAEF91DCCEE1D009C7EFB /* e2e_blocked@3x.png */; };
F09EAF061DCCEE1D009C7EFB /* e2e_unencrypted.png in Resources */ = {isa = PBXBuildFile; fileRef = F09EAEFA1DCCEE1D009C7EFB /* e2e_unencrypted.png */; };
F09EAF071DCCEE1D009C7EFB /* e2e_unencrypted@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F09EAEFB1DCCEE1D009C7EFB /* e2e_unencrypted@2x.png */; };
F09EAF081DCCEE1D009C7EFB /* e2e_unencrypted@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F09EAEFC1DCCEE1D009C7EFB /* e2e_unencrypted@3x.png */; };
F09EAF091DCCEE1D009C7EFB /* e2e_verified.png in Resources */ = {isa = PBXBuildFile; fileRef = F09EAEFD1DCCEE1D009C7EFB /* e2e_verified.png */; };
F09EAF0A1DCCEE1D009C7EFB /* e2e_verified@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F09EAEFE1DCCEE1D009C7EFB /* e2e_verified@2x.png */; };
F09EAF0B1DCCEE1D009C7EFB /* e2e_verified@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F09EAEFF1DCCEE1D009C7EFB /* e2e_verified@3x.png */; };
F09EAF0C1DCCEE1D009C7EFB /* e2e_warning.png in Resources */ = {isa = PBXBuildFile; fileRef = F09EAF001DCCEE1D009C7EFB /* e2e_warning.png */; };
F09EAF0D1DCCEE1D009C7EFB /* e2e_warning@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = F09EAF011DCCEE1D009C7EFB /* e2e_warning@2x.png */; };
F09EAF0E1DCCEE1D009C7EFB /* e2e_warning@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = F09EAF021DCCEE1D009C7EFB /* e2e_warning@3x.png */; };
F09EE0021C5134BE0078712F /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F09EDFF71C5134BE0078712F /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.m */; };
F09EE0031C5134BE0078712F /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F09EDFF81C5134BE0078712F /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.xib */; };
F09EE0041C5134BE0078712F /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F09EDFFA1C5134BE0078712F /* RoomIncomingTextMsgWithPaginationTitleWithoutSenderNameBubbleCell.m */; };
@ -681,6 +693,18 @@
F09E24EA1C6DE24900D39503 /* RoomMemberTitleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomMemberTitleView.h; sourceTree = "<group>"; };
F09E24EB1C6DE24900D39503 /* RoomMemberTitleView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomMemberTitleView.m; sourceTree = "<group>"; };
F09E24EC1C6DE24900D39503 /* RoomMemberTitleView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomMemberTitleView.xib; sourceTree = "<group>"; };
F09EAEF71DCCEE1D009C7EFB /* e2e_blocked.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = e2e_blocked.png; sourceTree = "<group>"; };
F09EAEF81DCCEE1D009C7EFB /* e2e_blocked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "e2e_blocked@2x.png"; sourceTree = "<group>"; };
F09EAEF91DCCEE1D009C7EFB /* e2e_blocked@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "e2e_blocked@3x.png"; sourceTree = "<group>"; };
F09EAEFA1DCCEE1D009C7EFB /* e2e_unencrypted.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = e2e_unencrypted.png; sourceTree = "<group>"; };
F09EAEFB1DCCEE1D009C7EFB /* e2e_unencrypted@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "e2e_unencrypted@2x.png"; sourceTree = "<group>"; };
F09EAEFC1DCCEE1D009C7EFB /* e2e_unencrypted@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "e2e_unencrypted@3x.png"; sourceTree = "<group>"; };
F09EAEFD1DCCEE1D009C7EFB /* e2e_verified.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = e2e_verified.png; sourceTree = "<group>"; };
F09EAEFE1DCCEE1D009C7EFB /* e2e_verified@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "e2e_verified@2x.png"; sourceTree = "<group>"; };
F09EAEFF1DCCEE1D009C7EFB /* e2e_verified@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "e2e_verified@3x.png"; sourceTree = "<group>"; };
F09EAF001DCCEE1D009C7EFB /* e2e_warning.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = e2e_warning.png; sourceTree = "<group>"; };
F09EAF011DCCEE1D009C7EFB /* e2e_warning@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "e2e_warning@2x.png"; sourceTree = "<group>"; };
F09EAF021DCCEE1D009C7EFB /* e2e_warning@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "e2e_warning@3x.png"; sourceTree = "<group>"; };
F09EDFF61C5134BE0078712F /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RoomIncomingTextMsgWithoutSenderNameBubbleCell.h; sourceTree = "<group>"; };
F09EDFF71C5134BE0078712F /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RoomIncomingTextMsgWithoutSenderNameBubbleCell.m; sourceTree = "<group>"; };
F09EDFF81C5134BE0078712F /* RoomIncomingTextMsgWithoutSenderNameBubbleCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = RoomIncomingTextMsgWithoutSenderNameBubbleCell.xib; sourceTree = "<group>"; };
@ -1004,6 +1028,18 @@
F03BF5B41D8BF5B1002EF6A7 /* Images */ = {
isa = PBXGroup;
children = (
F09EAEF71DCCEE1D009C7EFB /* e2e_blocked.png */,
F09EAEF81DCCEE1D009C7EFB /* e2e_blocked@2x.png */,
F09EAEF91DCCEE1D009C7EFB /* e2e_blocked@3x.png */,
F09EAEFA1DCCEE1D009C7EFB /* e2e_unencrypted.png */,
F09EAEFB1DCCEE1D009C7EFB /* e2e_unencrypted@2x.png */,
F09EAEFC1DCCEE1D009C7EFB /* e2e_unencrypted@3x.png */,
F09EAEFD1DCCEE1D009C7EFB /* e2e_verified.png */,
F09EAEFE1DCCEE1D009C7EFB /* e2e_verified@2x.png */,
F09EAEFF1DCCEE1D009C7EFB /* e2e_verified@3x.png */,
F09EAF001DCCEE1D009C7EFB /* e2e_warning.png */,
F09EAF011DCCEE1D009C7EFB /* e2e_warning@2x.png */,
F09EAF021DCCEE1D009C7EFB /* e2e_warning@3x.png */,
F08714D51DC384810075F633 /* start_chat.png */,
F08714D61DC384810075F633 /* start_chat@2x.png */,
F08714D71DC384810075F633 /* start_chat@3x.png */,
@ -1590,6 +1626,7 @@
F03BF65F1D8BF5B1002EF6A7 /* call_speaker_off_icon@2x.png in Resources */,
F03BF6B41D8BF5B1002EF6A7 /* priorityLow@2x.png in Resources */,
F08294691DB503FE00CEAB63 /* direct_icon@2x.png in Resources */,
F09EAF0B1DCCEE1D009C7EFB /* e2e_verified@3x.png in Resources */,
F03BF6971D8BF5B1002EF6A7 /* leave@3x.png in Resources */,
F03BF69A1D8BF5B1002EF6A7 /* logo@3x.png in Resources */,
F03BF67C1D8BF5B1002EF6A7 /* create_room@3x.png in Resources */,
@ -1601,6 +1638,7 @@
F03BF6A01D8BF5B1002EF6A7 /* mod_icon@3x.png in Resources */,
F03BF68E1D8BF5B1002EF6A7 /* favouriteOff@3x.png in Resources */,
F03BF6C31D8BF5B1002EF6A7 /* search_icon@2x.png in Resources */,
F09EAF091DCCEE1D009C7EFB /* e2e_verified.png in Resources */,
F03BF6AF1D8BF5B1002EF6A7 /* plus_icon@3x.png in Resources */,
F03BF6C91D8BF5B1002EF6A7 /* selection_untick@2x.png in Resources */,
71046D601C0C86C600DCA984 /* RoomTitleView.xib in Resources */,
@ -1608,9 +1646,11 @@
F083C4681D9E9F8800E5246C /* MessagesSearchResultTextMsgBubbleCell.xib in Resources */,
F03BF6D51D8BF5B1002EF6A7 /* upload_icon@2x.png in Resources */,
F03BF6CE1D8BF5B1002EF6A7 /* shrink_icon.png in Resources */,
F09EAF0C1DCCEE1D009C7EFB /* e2e_warning.png in Resources */,
F0DD2C7C1D18386300654345 /* ContactDetailsViewController.xib in Resources */,
F03BF68A1D8BF5B1002EF6A7 /* favourite@2x.png in Resources */,
F03BF6BC1D8BF5B1002EF6A7 /* scrollup.png in Resources */,
F09EAF031DCCEE1D009C7EFB /* e2e_blocked.png in Resources */,
F0C47F071D7766F200A7929E /* ring.mp3 in Resources */,
F003AA811C690628008B430C /* RoomAvatarTitleView.xib in Resources */,
F03BF67F1D8BF5B1002EF6A7 /* details_icon@3x.png in Resources */,
@ -1633,6 +1673,7 @@
F03BF6951D8BF5B1002EF6A7 /* leave.png in Resources */,
F03BF6711D8BF5B1002EF6A7 /* camera_stop.png in Resources */,
F03BF6D61D8BF5B1002EF6A7 /* upload_icon@3x.png in Resources */,
F09EAF051DCCEE1D009C7EFB /* e2e_blocked@3x.png in Resources */,
F03BF67B1D8BF5B1002EF6A7 /* create_room@2x.png in Resources */,
F03BF64C1D8BF5B1002EF6A7 /* back_icon.png in Resources */,
F0BE3DF21C6CE28300AC3111 /* RoomMemberDetailsViewController.xib in Resources */,
@ -1665,15 +1706,18 @@
F03BF6D11D8BF5B1002EF6A7 /* typing.png in Resources */,
F03BF67D1D8BF5B1002EF6A7 /* details_icon.png in Resources */,
F0C47F051D7766F200A7929E /* callend.mp3 in Resources */,
F09EAF0E1DCCEE1D009C7EFB /* e2e_warning@3x.png in Resources */,
F03BF69F1D8BF5B1002EF6A7 /* mod_icon@2x.png in Resources */,
F03BF6781D8BF5B1002EF6A7 /* chevron@2x.png in Resources */,
F094AA2E1B78E42600B1FBBF /* countryCodes.plist in Resources */,
F03BF6A71D8BF5B1002EF6A7 /* notificationsOff.png in Resources */,
F094AA2B1B78E42600B1FBBF /* Localizable.strings in Resources */,
F083C48D1D9EAFC500E5246C /* file_doc_icon.png in Resources */,
F09EAF0D1DCCEE1D009C7EFB /* e2e_warning@2x.png in Resources */,
F03BF6B71D8BF5B1002EF6A7 /* remove_icon@2x.png in Resources */,
F056417C1C7C9FD7002276ED /* TableViewCellWithButton.xib in Resources */,
F03BF64F1D8BF5B1002EF6A7 /* bubbles_bg_landscape.png in Resources */,
F09EAF041DCCEE1D009C7EFB /* e2e_blocked@2x.png in Resources */,
F03BF6931D8BF5B1002EF6A7 /* Icon-170@2x.png in Resources */,
F03BF67A1D8BF5B1002EF6A7 /* create_room.png in Resources */,
F03BF6DB1D8BF5B1002EF6A7 /* voice_call_icon@2x.png in Resources */,
@ -1684,6 +1728,7 @@
F03BF6AD1D8BF5B1002EF6A7 /* plus_icon.png in Resources */,
F03BF6D81D8BF5B1002EF6A7 /* video_icon@2x.png in Resources */,
717928481C03852C00407D96 /* TableViewCellWithLabelAndLargeTextView.xib in Resources */,
F09EAF081DCCEE1D009C7EFB /* e2e_unencrypted@3x.png in Resources */,
F03BF66E1D8BF5B1002EF6A7 /* camera_play.png in Resources */,
F03BF6821D8BF5B1002EF6A7 /* disclosure_icon@3x.png in Resources */,
F0C34CB41C16269D00C36F09 /* RoomIncomingTextMsgWithPaginationTitleBubbleCell.xib in Resources */,
@ -1705,6 +1750,7 @@
F03BF6511D8BF5B1002EF6A7 /* bubbles_bg_landscape@3x.png in Resources */,
F03BF65D1D8BF5B1002EF6A7 /* call_hangup_icon@3x.png in Resources */,
F03BF6981D8BF5B1002EF6A7 /* logo.png in Resources */,
F09EAF0A1DCCEE1D009C7EFB /* e2e_verified@2x.png in Resources */,
F03BF6AA1D8BF5B1002EF6A7 /* placeholder.png in Resources */,
F082946A1DB503FE00CEAB63 /* direct_icon@3x.png in Resources */,
F03BF6BA1D8BF5B1002EF6A7 /* scrolldown@2x.png in Resources */,
@ -1724,6 +1770,7 @@
F03BF68F1D8BF5B1002EF6A7 /* group.png in Resources */,
F03BF6611D8BF5B1002EF6A7 /* call_speaker_on_icon.png in Resources */,
F023A0241D91382600C517FB /* camera_video_capture@3x.png in Resources */,
F09EAF071DCCEE1D009C7EFB /* e2e_unencrypted@2x.png in Resources */,
F083C4911D9EAFC500E5246C /* file_music_icon@2x.png in Resources */,
F03BF6491D8BF5B1002EF6A7 /* admin_icon.png in Resources */,
F08294681DB503FE00CEAB63 /* direct_icon.png in Resources */,
@ -1752,6 +1799,7 @@
F083C4971D9EAFC500E5246C /* file_video_icon@2x.png in Resources */,
716FDC8B1C186A3A001034CB /* InviteRecentTableViewCell.xib in Resources */,
F03BF6501D8BF5B1002EF6A7 /* bubbles_bg_landscape@2x.png in Resources */,
F09EAF061DCCEE1D009C7EFB /* e2e_unencrypted.png in Resources */,
F03BF6CA1D8BF5B1002EF6A7 /* selection_untick@3x.png in Resources */,
F09E24EE1C6DE24900D39503 /* RoomMemberTitleView.xib in Resources */,
F03BF6CD1D8BF5B1002EF6A7 /* settings_icon@3x.png in Resources */,

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 511 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 457 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 556 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 387 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 642 B

View file

@ -956,6 +956,9 @@
// Hide the call button if there is an active call in another room
roomInputToolbarView.supportCallOption &= ([[AppDelegate theDelegate] callStatusBarWindow] == nil);
}
// Encrypted?
roomInputToolbarView.isEncrypted = self.roomDataSource.room.state.isEncrypted;
}
}

View file

@ -29,9 +29,12 @@
@property (weak, nonatomic) IBOutlet UIView *separatorView;
@property (strong, nonatomic) IBOutlet MXKImageView *pictureView;
@property (strong, nonatomic) IBOutlet UIImageView *encryptedRoomIcon;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *mainToolbarMinHeightConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *mainToolbarHeightConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *messageComposerContainerLeadingConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *messageComposerContainerTrailingConstraint;
@property (weak, nonatomic) IBOutlet UIButton *attachMediaButton;
@ -45,6 +48,11 @@
*/
@property (nonatomic) BOOL supportCallOption;
/**
Tell whether the room data is encrypted. NO by default.
*/
@property (nonatomic) BOOL isEncrypted;
/**
Tell whether a call is active.
*/

View file

@ -24,6 +24,9 @@
#import <Photos/Photos.h>
#define ROOM_INPUT_TOOLBAR_VIEW_DEFAULT_MESSAGE_COMPOSER_CONTAINER_LEADING 51
#define ROOM_INPUT_TOOLBAR_VIEW_ENCRYPTED_MESSAGE_COMPOSER_CONTAINER_LEADING 56
@interface RoomInputToolbarView()
{
MediaPickerViewController *mediaPicker;
@ -101,6 +104,22 @@
}
}
- (void)setIsEncrypted:(BOOL)isEncrypted
{
if (isEncrypted)
{
self.encryptedRoomIcon.hidden = NO;
self.messageComposerContainerLeadingConstraint.constant = ROOM_INPUT_TOOLBAR_VIEW_ENCRYPTED_MESSAGE_COMPOSER_CONTAINER_LEADING;
}
else
{
self.encryptedRoomIcon.hidden = YES;
self.messageComposerContainerLeadingConstraint.constant = ROOM_INPUT_TOOLBAR_VIEW_DEFAULT_MESSAGE_COMPOSER_CONTAINER_LEADING;
}
_isEncrypted = isEncrypted;
}
- (void)setActiveCall:(BOOL)activeCall
{
if (_activeCall != activeCall)

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="10117" systemVersion="16A323" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
@ -30,11 +30,18 @@
<constraint firstAttribute="height" constant="30" id="wMB-Ec-D9s"/>
</constraints>
</view>
<imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="e2e_verified.png" translatesAutoresizingMaskIntoConstraints="NO" id="fRI-9x-jgw">
<rect key="frame" x="46" y="17" width="10" height="12"/>
<constraints>
<constraint firstAttribute="height" constant="12" id="JHs-nc-tML"/>
<constraint firstAttribute="width" constant="10" id="K0H-Va-ZsL"/>
</constraints>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QWp-NV-uh5" userLabel="Message Composer Container">
<rect key="frame" x="56" y="4" width="449" height="38"/>
<rect key="frame" x="51" y="4" width="454" height="38"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="wgb-ON-N29" customClass="HPGrowingTextView">
<rect key="frame" x="0.0" y="0.0" width="449" height="38"/>
<rect key="frame" x="0.0" y="0.0" width="454" height="38"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
</view>
</subviews>
@ -103,9 +110,11 @@
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="46" id="1FO-iu-urG"/>
<constraint firstItem="G8Z-CM-tGs" firstAttribute="top" secondItem="a84-Vc-6ud" secondAttribute="top" id="8cV-eb-Kog"/>
<constraint firstItem="3ln-yI-ef9" firstAttribute="leading" secondItem="a84-Vc-6ud" secondAttribute="leading" constant="10" id="BwP-sF-qE1"/>
<constraint firstItem="QWp-NV-uh5" firstAttribute="leading" secondItem="a84-Vc-6ud" secondAttribute="leading" constant="56" id="ErD-eB-stF"/>
<constraint firstItem="QWp-NV-uh5" firstAttribute="leading" secondItem="a84-Vc-6ud" secondAttribute="leading" constant="51" id="ErD-eB-stF"/>
<constraint firstItem="fRI-9x-jgw" firstAttribute="centerY" secondItem="dd4-pE-Es1" secondAttribute="centerY" id="Fpg-hn-3Nc"/>
<constraint firstItem="Owf-M8-qJi" firstAttribute="leading" secondItem="Hga-l8-Wua" secondAttribute="trailing" id="GKh-R5-jqV"/>
<constraint firstItem="dd4-pE-Es1" firstAttribute="leading" secondItem="a84-Vc-6ud" secondAttribute="leading" constant="13" id="Jem-U2-oEq"/>
<constraint firstItem="fRI-9x-jgw" firstAttribute="leading" secondItem="dd4-pE-Es1" secondAttribute="trailing" constant="3" id="Jr8-Zb-Sce"/>
<constraint firstAttribute="bottom" secondItem="QWp-NV-uh5" secondAttribute="bottom" constant="4" id="NGr-2o-sOP"/>
<constraint firstAttribute="trailing" secondItem="3ln-yI-ef9" secondAttribute="trailing" constant="10" id="RXB-PN-3n8"/>
<constraint firstAttribute="trailing" secondItem="G8Z-CM-tGs" secondAttribute="trailing" constant="4" id="Sua-LC-3yW"/>
@ -120,14 +129,8 @@
<constraint firstAttribute="trailing" secondItem="Owf-M8-qJi" secondAttribute="trailing" id="vCd-Md-dvr"/>
<constraint firstAttribute="bottom" secondItem="G8Z-CM-tGs" secondAttribute="bottom" id="vpk-lw-TnO"/>
<constraint firstItem="dd4-pE-Es1" firstAttribute="top" secondItem="a84-Vc-6ud" secondAttribute="top" constant="8" id="xjT-If-1cd"/>
<constraint firstItem="2nY-YP-BvA" firstAttribute="width" secondItem="2nY-YP-BvA" secondAttribute="height" multiplier="1:1" id="yBV-cL-cfq"/>
<constraint firstItem="3ln-yI-ef9" firstAttribute="top" secondItem="a84-Vc-6ud" secondAttribute="top" id="yUF-5t-x03"/>
</constraints>
<variation key="default">
<mask key="constraints">
<exclude reference="yBV-cL-cfq"/>
</mask>
</variation>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
@ -142,6 +145,7 @@
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="attachMediaButton" destination="Hga-l8-Wua" id="Osr-ek-c91"/>
<outlet property="encryptedRoomIcon" destination="fRI-9x-jgw" id="cfG-Sr-Fga"/>
<outlet property="growingTextView" destination="wgb-ON-N29" id="nwF-uV-Ng9"/>
<outlet property="hangupCallButton" destination="2nY-YP-BvA" id="a0m-xv-sVg"/>
<outlet property="mainToolbarHeightConstraint" destination="Yjj-ua-rbe" id="Lu8-UC-Vbo"/>
@ -149,6 +153,7 @@
<outlet property="mainToolbarView" destination="a84-Vc-6ud" id="5p3-Ft-0gv"/>
<outlet property="messageComposerContainer" destination="QWp-NV-uh5" id="APR-B5-ogC"/>
<outlet property="messageComposerContainerBottomConstraint" destination="NGr-2o-sOP" id="oez-6D-IKA"/>
<outlet property="messageComposerContainerLeadingConstraint" destination="ErD-eB-stF" id="Ha9-DG-Nw2"/>
<outlet property="messageComposerContainerTopConstraint" destination="WyZ-3i-OHi" id="OcO-1f-bNA"/>
<outlet property="messageComposerContainerTrailingConstraint" destination="hXO-cY-Jgz" id="lHZ-MU-vyC"/>
<outlet property="pictureView" destination="dd4-pE-Es1" id="rb6-z2-pJ9"/>
@ -161,6 +166,7 @@
</objects>
<resources>
<image name="call_hangup_icon.png" width="26" height="27"/>
<image name="e2e_verified.png" width="10" height="12"/>
<image name="upload_icon.png" width="21" height="26"/>
<image name="voice_call_icon.png" width="24" height="27"/>
</resources>