Use ListRow in InviteUsersScreen and MessageForwardingScreen. (#2196)
* Use ListRow in InviteUsersScreen and MessageForwardingScreen. * Remove button styles and fix snapshots.
This commit is contained in:
@@ -199,7 +199,6 @@
|
||||
355B11D08CE0CEF97A813236 /* AppRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27A9E3FBE8A66B5A17AD7F74 /* AppRoutes.swift */; };
|
||||
3582056513A384F110EC8274 /* MediaPlayerProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D7A2C4A3A74F0D2FFE9356A /* MediaPlayerProviderTests.swift */; };
|
||||
35E975CFDA60E05362A7CF79 /* target.yml in Resources */ = {isa = PBXBuildFile; fileRef = 1222DB76B917EB8A55365BA5 /* target.yml */; };
|
||||
3623BACEA8F5BCC63E26A0D3 /* BlanckFormCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F94F70480243CAA65A2008C /* BlanckFormCoordinator.swift */; };
|
||||
366D5BFE52CB79E804C7D095 /* CallScreenViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAD9547E47C58930E2CE8306 /* CallScreenViewModelTests.swift */; };
|
||||
368C8758FCD079E6AAA18C2C /* NoticeRoomTimelineView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5B243E7818E5E9F6A4EDC7A /* NoticeRoomTimelineView.swift */; };
|
||||
36AC963F2F04069B7FF1AA0C /* UIConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6D88E8AFFBF2C1D589C0FA /* UIConstants.swift */; };
|
||||
@@ -241,7 +240,6 @@
|
||||
407DCE030E0F9B7C9861D38A /* Mapbox in Frameworks */ = {isa = PBXBuildFile; productRef = C1BF15833233CD3BDB7E2B1D /* Mapbox */; };
|
||||
40B79D20A873620F7F128A2C /* UserPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35FA991289149D31F4286747 /* UserPreference.swift */; };
|
||||
414F50CFCFEEE2611127DCFB /* RestorationToken.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3558A15CFB934F9229301527 /* RestorationToken.swift */; };
|
||||
4166A7DD2A4E2EFF0EB9369B /* FormRowLabelStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1897720266C036471AD9D1B /* FormRowLabelStyle.swift */; };
|
||||
41CE5E1289C8768FC5B6490C /* RoomTimelineItemViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C2D52E36AD614B3C003EF6 /* RoomTimelineItemViewState.swift */; };
|
||||
41DFDD212D1BE57CA50D783B /* KZFileWatchers in Frameworks */ = {isa = PBXBuildFile; productRef = 81DB3AB6CE996AB3954F4F03 /* KZFileWatchers */; };
|
||||
41F553349AF44567184822D8 /* APNSPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94D670124FC3E84F23A62CCF /* APNSPayload.swift */; };
|
||||
@@ -341,7 +339,6 @@
|
||||
5C02841B2A86327B2C377682 /* NotificationConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = C830A64609CBD152F06E0457 /* NotificationConstants.swift */; };
|
||||
5C164551F7D26E24F09083D3 /* StaticLocationScreenViewModelProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = C616D90B1E2F033CAA325439 /* StaticLocationScreenViewModelProtocol.swift */; };
|
||||
5C8AFBF168A41E20835F3B86 /* LoginScreenUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DB34B0C74CD242FED9DD069 /* LoginScreenUITests.swift */; };
|
||||
5CE74302A0725F56F1E9D2A0 /* FormRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = E80F9E9B93B6ECE9A937B1C6 /* FormRow.swift */; };
|
||||
5D27B6537591471A42C89027 /* EmoteRoomTimelineItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 450E04B2A976CC4C8CC1807C /* EmoteRoomTimelineItem.swift */; };
|
||||
5D2AF8C0DF872E7985F8FE54 /* TimelineDeliveryStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5AC06FC11B6638F7BF1670E /* TimelineDeliveryStatusView.swift */; };
|
||||
5D4643E485C179B2F485C519 /* MentionSuggestionItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FD0E68C42CA7DDCD4CAD68D /* MentionSuggestionItemView.swift */; };
|
||||
@@ -906,11 +903,13 @@
|
||||
EAF2B3E6C6AEC4AD3A8BD454 /* RoomMemberDetailsScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84A87D0471D438A233C2CF4A /* RoomMemberDetailsScreenViewModel.swift */; };
|
||||
EB87DF90CF6F8D5D12404C6E /* SecureBackupLogoutConfirmationScreenViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848F69921527D31CAACB93AF /* SecureBackupLogoutConfirmationScreenViewModelTests.swift */; };
|
||||
EB88DBD77221E2CFE463018C /* NSE.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 0D8F620C8B314840D8602E3F /* NSE.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
EB9F4688006B52E69DF5358F /* BlankFormCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C7F63EB1525E697CAEB002B /* BlankFormCoordinator.swift */; };
|
||||
EBDB339A7C127F068B6E52E5 /* VoiceMessageRecordingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A634D8DD1E10D858CF7995D /* VoiceMessageRecordingView.swift */; };
|
||||
EBE13FAB4E29738AC41BD3E5 /* InfoPlistReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A580295A56B55A856CC4084 /* InfoPlistReader.swift */; };
|
||||
EC280623A42904341363EAAF /* Collections in Frameworks */ = {isa = PBXBuildFile; productRef = A20EA00CCB9DBE0FFB17DD09 /* Collections */; };
|
||||
ECA636DAF071C611FDC2BB57 /* Strings+Untranslated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A18F6CE4D694D21E4EA9B25 /* Strings+Untranslated.swift */; };
|
||||
ED564C8C7C43CF5F67000368 /* PlatformViewVersionPredicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D26813CCE39221FE30BF22CD /* PlatformViewVersionPredicate.swift */; };
|
||||
ED90A59F068FD0CA27E602ED /* UserProfileListRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = E10DA51DBC8C7E1460DBCCBD /* UserProfileListRow.swift */; };
|
||||
EDF8919F15DE0FF00EF99E70 /* DocumentPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F5567A7EF6F2AB9473236F6 /* DocumentPicker.swift */; };
|
||||
EE4E2C1922BBF5169E213555 /* PillAttachmentViewProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B53D6C5C0D14B04D3AB3F6E /* PillAttachmentViewProvider.swift */; };
|
||||
EE4F5601356228FF72FC56B6 /* MockClientProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F40F48279322E504153AB0D /* MockClientProxy.swift */; };
|
||||
@@ -959,7 +958,6 @@
|
||||
F833D5B5BE6707F961FA88DB /* SecureBackupController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A1119E9C63AE530252640D2 /* SecureBackupController.swift */; };
|
||||
F86102DC2C68BBBB0521BAAE /* SoftLogoutScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BB385E148DE55C85C0A02D6 /* SoftLogoutScreenModels.swift */; };
|
||||
F8E725D42023ECA091349245 /* AudioRoomTimelineItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57EAAF82432B0B53881CF826 /* AudioRoomTimelineItem.swift */; };
|
||||
F94000E3D91B11C527DA8807 /* UserProfileCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 923485F85E1D765EF9D20E88 /* UserProfileCell.swift */; };
|
||||
F9842667B68DC6FA1F9ECCBB /* NSItemProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F72EFC8C634469F9262659C7 /* NSItemProvider.swift */; };
|
||||
F99FB21EFC6D99D247FE7CBE /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = DE8DC9B3FBA402117DC4C49F /* Kingfisher */; };
|
||||
F9EA79092C18A8CFE4922DD2 /* PollFormScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F64A8582F65567AC38C2976A /* PollFormScreenViewModel.swift */; };
|
||||
@@ -1145,6 +1143,7 @@
|
||||
1B927CF5EF7FCCDA5EDC474B /* NotificationItemProxyProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationItemProxyProtocol.swift; sourceTree = "<group>"; };
|
||||
1BA5A62DA4B543827FF82354 /* LAContextMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LAContextMock.swift; sourceTree = "<group>"; };
|
||||
1C21A715237F2B6D6E80998C /* SecureBackupControllerProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureBackupControllerProtocol.swift; sourceTree = "<group>"; };
|
||||
1C7F63EB1525E697CAEB002B /* BlankFormCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlankFormCoordinator.swift; sourceTree = "<group>"; };
|
||||
1CC09F30B0E1010951952BDC /* SecureBackupLogoutConfirmationScreenUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureBackupLogoutConfirmationScreenUITests.swift; sourceTree = "<group>"; };
|
||||
1CC575D1895FA62591451A93 /* RoomMemberDetailsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMemberDetailsScreen.swift; sourceTree = "<group>"; };
|
||||
1D56469A9EE0CFA2B7BA9760 /* SessionVerificationControllerProxyProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionVerificationControllerProxyProtocol.swift; sourceTree = "<group>"; };
|
||||
@@ -1533,7 +1532,6 @@
|
||||
8F421E51DF00377DE1A01354 /* CompletionSuggestionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompletionSuggestionView.swift; sourceTree = "<group>"; };
|
||||
8F61A0DD8243B395499C99A2 /* InvitesScreenUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitesScreenUITests.swift; sourceTree = "<group>"; };
|
||||
8F7D42E66E939B709C1EC390 /* MockRoomSummaryProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockRoomSummaryProvider.swift; sourceTree = "<group>"; };
|
||||
8F94F70480243CAA65A2008C /* BlanckFormCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlanckFormCoordinator.swift; sourceTree = "<group>"; };
|
||||
8FC803282F9268D49F4ABF14 /* AppCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppCoordinator.swift; sourceTree = "<group>"; };
|
||||
907FA4DE17DEA1A3738EFB83 /* AudioRecorder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioRecorder.swift; sourceTree = "<group>"; };
|
||||
90A55430639712CFACA34F43 /* TextRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextRoomTimelineItem.swift; sourceTree = "<group>"; };
|
||||
@@ -1541,7 +1539,6 @@
|
||||
913C8E13B8B602C7B6C0C4AE /* PillTextAttachmentData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PillTextAttachmentData.swift; sourceTree = "<group>"; };
|
||||
91831D7042EADD0CC2B5EC36 /* SecureBackupScreenUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureBackupScreenUITests.swift; sourceTree = "<group>"; };
|
||||
91CF6F7D08228D16BA69B63B /* zh-Hant-TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant-TW"; path = "zh-Hant-TW.lproj/Localizable.strings"; sourceTree = "<group>"; };
|
||||
923485F85E1D765EF9D20E88 /* UserProfileCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfileCell.swift; sourceTree = "<group>"; };
|
||||
92390F9FA98255440A6BF5F8 /* OIDCAuthenticationPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OIDCAuthenticationPresenter.swift; sourceTree = "<group>"; };
|
||||
92FCD9116ADDE820E4E30F92 /* UIKitBackgroundTask.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIKitBackgroundTask.swift; sourceTree = "<group>"; };
|
||||
9332DFE9642F0A46ECA0497B /* BlurHashEncode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlurHashEncode.swift; sourceTree = "<group>"; };
|
||||
@@ -1777,7 +1774,6 @@
|
||||
D0A45283CF1DB96E583BECA6 /* ImageRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageRoomTimelineView.swift; sourceTree = "<group>"; };
|
||||
D0C2D52E36AD614B3C003EF6 /* RoomTimelineItemViewState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomTimelineItemViewState.swift; sourceTree = "<group>"; };
|
||||
D121B4FCFC38DBCC17BCC6D6 /* ComposerToolbar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposerToolbar.swift; sourceTree = "<group>"; };
|
||||
D1897720266C036471AD9D1B /* FormRowLabelStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormRowLabelStyle.swift; sourceTree = "<group>"; };
|
||||
D1BC84BA0AF11C2128D58ABD /* Common.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Common.swift; sourceTree = "<group>"; };
|
||||
D263254AFE5B7993FFBBF324 /* NSE.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NSE.entitlements; sourceTree = "<group>"; };
|
||||
D26813CCE39221FE30BF22CD /* PlatformViewVersionPredicate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlatformViewVersionPredicate.swift; sourceTree = "<group>"; };
|
||||
@@ -1826,6 +1822,7 @@
|
||||
DF3D25B3EDB283B5807EADCF /* ReadMarkerRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadMarkerRoomTimelineItem.swift; sourceTree = "<group>"; };
|
||||
E062C1750EFC8627DE4CAB8E /* MapTilerAuthorization.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapTilerAuthorization.swift; sourceTree = "<group>"; };
|
||||
E0FCA0957FAA0E15A9F5579D /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Untranslated.stringsdict; sourceTree = "<group>"; };
|
||||
E10DA51DBC8C7E1460DBCCBD /* UserProfileListRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfileListRow.swift; sourceTree = "<group>"; };
|
||||
E1573D28C8A9FB6399D0EEFB /* SecureBackupLogoutConfirmationScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureBackupLogoutConfirmationScreenCoordinator.swift; sourceTree = "<group>"; };
|
||||
E1A5FEF17ED7E6176D922D4F /* RoomDetailsScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomDetailsScreen.swift; sourceTree = "<group>"; };
|
||||
E1E0B4A34E69BD2132BEC521 /* MessageText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MessageText.swift; sourceTree = "<group>"; };
|
||||
@@ -1854,7 +1851,6 @@
|
||||
E6F5D66F158A6662F953733E /* NotificationSettingsProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationSettingsProxy.swift; sourceTree = "<group>"; };
|
||||
E6FCC416A3BFE73DF7B3E6BF /* RoomTimelineControllerFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomTimelineControllerFactory.swift; sourceTree = "<group>"; };
|
||||
E71C28CF29CD05B6D6AE8580 /* HomeScreenSessionVerificationBanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeScreenSessionVerificationBanner.swift; sourceTree = "<group>"; };
|
||||
E80F9E9B93B6ECE9A937B1C6 /* FormRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FormRow.swift; sourceTree = "<group>"; };
|
||||
E8294DB9E95C0C0630418466 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
E8774CF614849664B5B3C2A1 /* UserSessionFlowCoordinatorStateMachine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSessionFlowCoordinatorStateMachine.swift; sourceTree = "<group>"; };
|
||||
E8A1BBEF7318CA6B6ACCF4AE /* AppLockSetupUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLockSetupUITests.swift; sourceTree = "<group>"; };
|
||||
@@ -2253,8 +2249,6 @@
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
95A1CCDEE545CB6453B084BF /* FormButtonStyles.swift */,
|
||||
E80F9E9B93B6ECE9A937B1C6 /* FormRow.swift */,
|
||||
D1897720266C036471AD9D1B /* FormRowLabelStyle.swift */,
|
||||
);
|
||||
path = "Form Styles";
|
||||
sourceTree = "<group>";
|
||||
@@ -2414,7 +2408,7 @@
|
||||
2ECFF6B05DAA37EB10DBF7E8 /* UITests */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
8F94F70480243CAA65A2008C /* BlanckFormCoordinator.swift */,
|
||||
1C7F63EB1525E697CAEB002B /* BlankFormCoordinator.swift */,
|
||||
46C208DA43CE25D13E670F40 /* UITestsAppCoordinator.swift */,
|
||||
EBEB8D9F4940E161B18FE4BC /* UITestsNotificationCenter.swift */,
|
||||
6CEBE5EA91E8691EDF364EC2 /* UITestsScreenIdentifier.swift */,
|
||||
@@ -2501,7 +2495,7 @@
|
||||
648DD1C10E4957CB791FE0B8 /* OverridableAvatarImage.swift */,
|
||||
C705E605EF57C19DBE86FFA1 /* PlaceholderAvatarImage.swift */,
|
||||
839E2C35DF3F9C7B54C3CE49 /* RoundedCornerShape.swift */,
|
||||
923485F85E1D765EF9D20E88 /* UserProfileCell.swift */,
|
||||
E10DA51DBC8C7E1460DBCCBD /* UserProfileListRow.swift */,
|
||||
);
|
||||
path = Views;
|
||||
sourceTree = "<group>";
|
||||
@@ -5381,7 +5375,7 @@
|
||||
6D046D653DA28ADF1E6E59A4 /* BackgroundTaskServiceProtocol.swift in Sources */,
|
||||
A4B0BAD62A12ED76BD611B79 /* BadgeView.swift in Sources */,
|
||||
38546A6010A2CF240EC9AF73 /* BindableState.swift in Sources */,
|
||||
3623BACEA8F5BCC63E26A0D3 /* BlanckFormCoordinator.swift in Sources */,
|
||||
EB9F4688006B52E69DF5358F /* BlankFormCoordinator.swift in Sources */,
|
||||
5EE1D4E316D66943E97FDCF2 /* BloomView.swift in Sources */,
|
||||
B6DF6B6FA8734B70F9BF261E /* BlurHashDecode.swift in Sources */,
|
||||
E794AB6ABE1FF5AF0573FEA1 /* BlurHashEncode.swift in Sources */,
|
||||
@@ -5478,8 +5472,6 @@
|
||||
1F04C63D4FA95948E3F52147 /* FileRoomTimelineView.swift in Sources */,
|
||||
F5D2270B5021D521C0D22E11 /* FlowCoordinatorProtocol.swift in Sources */,
|
||||
B3EDDEC1839BB5A3747624BB /* FormButtonStyles.swift in Sources */,
|
||||
5CE74302A0725F56F1E9D2A0 /* FormRow.swift in Sources */,
|
||||
4166A7DD2A4E2EFF0EB9369B /* FormRowLabelStyle.swift in Sources */,
|
||||
A0A0D2A9564BDA3FDE2E360F /* FormattedBodyText.swift in Sources */,
|
||||
0ED691ADC9C2EA457E7A9427 /* FormattingToolbar.swift in Sources */,
|
||||
46BA7F4B4D3A7164DED44B88 /* FullscreenDialog.swift in Sources */,
|
||||
@@ -5924,7 +5916,7 @@
|
||||
E3291AD16D7A5CB14781819C /* UserNotificationCenterProtocol.swift in Sources */,
|
||||
40B79D20A873620F7F128A2C /* UserPreference.swift in Sources */,
|
||||
80DEA2A4B20F9E279EAE6B2B /* UserProfile+Mock.swift in Sources */,
|
||||
F94000E3D91B11C527DA8807 /* UserProfileCell.swift in Sources */,
|
||||
ED90A59F068FD0CA27E602ED /* UserProfileListRow.swift in Sources */,
|
||||
E21FE4C5B614F311C0955859 /* UserProfileProxy.swift in Sources */,
|
||||
9CCC77C31CB399661A034739 /* UserProperties+Element.swift in Sources */,
|
||||
8AB8ED1051216546CB35FA0E /* UserSession.swift in Sources */,
|
||||
@@ -6692,7 +6684,7 @@
|
||||
repositoryURL = "https://github.com/vector-im/compound-ios";
|
||||
requirement = {
|
||||
kind = revision;
|
||||
revision = 8774e358ac6927f041400733ac681456f0910c10;
|
||||
revision = 56456508d27b7defef647da15d1bd854d6f88a2d;
|
||||
};
|
||||
};
|
||||
9A472EE0218FE7DCF5283429 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */ = {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
"kind" : "remoteSourceControl",
|
||||
"location" : "https://github.com/vector-im/compound-ios",
|
||||
"state" : {
|
||||
"revision" : "8774e358ac6927f041400733ac681456f0910c10"
|
||||
"revision" : "56456508d27b7defef647da15d1bd854d6f88a2d"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -114,6 +114,7 @@ enum A11yIdentifiers {
|
||||
|
||||
struct InviteUsersScreen {
|
||||
let proceed = "invite_users-proceed"
|
||||
let userProfile = "invite_users-user_profile"
|
||||
}
|
||||
|
||||
struct LoginScreen {
|
||||
|
||||
@@ -14,113 +14,9 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import Compound
|
||||
import SwiftUI
|
||||
|
||||
/// A view to be added on the trailing edge of a form row.
|
||||
struct FormRowAccessory: View {
|
||||
@Environment(\.isEnabled) private var isEnabled
|
||||
|
||||
enum Kind {
|
||||
case navigationLink
|
||||
case progressView
|
||||
case singleSelection(isSelected: Bool)
|
||||
case multipleSelection(isSelected: Bool)
|
||||
}
|
||||
|
||||
let kind: Kind
|
||||
|
||||
static var navigationLink: Self {
|
||||
.init(kind: .navigationLink)
|
||||
}
|
||||
|
||||
static var progressView: Self {
|
||||
.init(kind: .progressView)
|
||||
}
|
||||
|
||||
static func singleSelection(isSelected: Bool) -> Self {
|
||||
.init(kind: .singleSelection(isSelected: isSelected))
|
||||
}
|
||||
|
||||
static func multipleSelection(isSelected: Bool) -> Self {
|
||||
.init(kind: .multipleSelection(isSelected: isSelected))
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
switch kind {
|
||||
case .navigationLink:
|
||||
Image(systemName: "chevron.forward")
|
||||
.font(.compound.bodyMDSemibold)
|
||||
.foregroundColor(.compound.iconTertiaryAlpha)
|
||||
case .progressView:
|
||||
ProgressView()
|
||||
case .singleSelection(let isSelected):
|
||||
if isSelected {
|
||||
Image(systemName: "checkmark.circle.fill")
|
||||
.font(.compound.bodyLG)
|
||||
.foregroundColor(isSelected && isEnabled ? .compound.iconPrimary : .compound.iconTertiary)
|
||||
.accessibilityAddTraits(.isSelected)
|
||||
}
|
||||
case .multipleSelection(let isSelected):
|
||||
Image(systemName: isSelected ? "checkmark.circle.fill" : "circle")
|
||||
.font(.compound.bodyLG)
|
||||
.foregroundColor(isSelected && isEnabled ? .compound.iconPrimary : .compound.iconTertiary)
|
||||
.accessibilityAddTraits(isSelected ? .isSelected : [])
|
||||
}
|
||||
}
|
||||
|
||||
init(kind: Kind) {
|
||||
self.kind = kind
|
||||
}
|
||||
}
|
||||
|
||||
/// Default button styling for form rows.
|
||||
///
|
||||
/// The primitive style is needed to set the list row insets to `0`. The inner style is then needed
|
||||
/// to change the background colour depending on whether the button is currently pressed or not.
|
||||
struct FormButtonStyle: PrimitiveButtonStyle {
|
||||
var iconAlignment: VerticalAlignment = .firstTextBaseline
|
||||
/// An accessory to be added on the trailing side of the row.
|
||||
var accessory: FormRowAccessory?
|
||||
|
||||
func makeBody(configuration: Configuration) -> some View {
|
||||
Button(action: configuration.trigger) {
|
||||
configuration.label
|
||||
.labelStyle(FormRowLabelStyle(alignment: iconAlignment, role: configuration.role))
|
||||
.frame(maxHeight: .infinity) // Make sure the label fills the cell vertically.
|
||||
}
|
||||
.buttonStyle(Style(accessory: accessory))
|
||||
.listRowInsets(EdgeInsets()) // Remove insets so the background fills the cell.
|
||||
}
|
||||
|
||||
/// Inner style used to set the pressed background colour.
|
||||
private struct Style: ButtonStyle {
|
||||
var accessory: FormRowAccessory?
|
||||
|
||||
func makeBody(configuration: Configuration) -> some View {
|
||||
HStack(spacing: 8) {
|
||||
configuration.label
|
||||
.labelStyle(FormRowLabelStyle(role: configuration.role))
|
||||
.foregroundColor(.compound.textPrimary)
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
|
||||
accessory
|
||||
}
|
||||
.contentShape(Rectangle())
|
||||
.padding(FormRow.insets) // Re-apply the normal insets using padding.
|
||||
.background(backgroundColor(for: configuration))
|
||||
}
|
||||
|
||||
private func backgroundColor(for configuration: Configuration) -> Color {
|
||||
switch accessory?.kind {
|
||||
case .none, .navigationLink, .progressView:
|
||||
return configuration.isPressed ? .compound.bgSubtlePrimary : .compound.bgCanvasDefaultLevel1
|
||||
default:
|
||||
return .compound.bgCanvasDefaultLevel1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Small squared action button style for settings screens
|
||||
struct FormActionButtonStyle: ButtonStyle {
|
||||
let title: String
|
||||
@@ -146,88 +42,13 @@ struct FormActionButtonStyle: ButtonStyle {
|
||||
struct FormButtonStyles_Previews: PreviewProvider, TestablePreview {
|
||||
static var previews: some View {
|
||||
Form {
|
||||
Section {
|
||||
Section { } header: {
|
||||
Button { } label: {
|
||||
Label("Hello world", systemImage: "globe")
|
||||
CompoundIcon(asset: Asset.Images.shareIos)
|
||||
}
|
||||
.buttonStyle(FormButtonStyle())
|
||||
|
||||
Button { } label: {
|
||||
Label("Block user", systemImage: "circle.slash")
|
||||
}
|
||||
.buttonStyle(FormButtonStyle(accessory: .progressView))
|
||||
.disabled(true)
|
||||
|
||||
Button { } label: {
|
||||
Label("Show something", systemImage: "rectangle.portrait")
|
||||
}
|
||||
.buttonStyle(FormButtonStyle(accessory: .navigationLink))
|
||||
|
||||
Button(role: .destructive) { } label: {
|
||||
Label("Destroy", systemImage: "trash")
|
||||
}
|
||||
.buttonStyle(FormButtonStyle())
|
||||
|
||||
ShareLink(item: "test")
|
||||
.buttonStyle(FormButtonStyle())
|
||||
.buttonStyle(FormActionButtonStyle(title: "Share"))
|
||||
}
|
||||
.compoundFormSection()
|
||||
|
||||
Section("Single selection") {
|
||||
Button { } label: {
|
||||
Text("Hello world")
|
||||
}
|
||||
.buttonStyle(FormButtonStyle())
|
||||
|
||||
Button { } label: {
|
||||
Text("Selected")
|
||||
}
|
||||
.buttonStyle(FormButtonStyle(accessory: .singleSelection(isSelected: true)))
|
||||
|
||||
Button { } label: {
|
||||
Text("Selected (disabled)")
|
||||
}
|
||||
.buttonStyle(FormButtonStyle(accessory: .singleSelection(isSelected: true)))
|
||||
.disabled(true)
|
||||
|
||||
Button { } label: {
|
||||
Text("Unselected")
|
||||
}
|
||||
.buttonStyle(FormButtonStyle(accessory: .singleSelection(isSelected: false)))
|
||||
}
|
||||
.compoundFormSection()
|
||||
|
||||
Section("Multiple selection") {
|
||||
Button { } label: {
|
||||
Text("Hello world")
|
||||
}
|
||||
.buttonStyle(FormButtonStyle())
|
||||
|
||||
Button { } label: {
|
||||
Text("Selected")
|
||||
}
|
||||
.buttonStyle(FormButtonStyle(accessory: .multipleSelection(isSelected: true)))
|
||||
|
||||
Button { } label: {
|
||||
Text("Selected (disabled)")
|
||||
}
|
||||
.buttonStyle(FormButtonStyle(accessory: .multipleSelection(isSelected: true)))
|
||||
.disabled(true)
|
||||
|
||||
Button { } label: {
|
||||
Text("Unselected")
|
||||
}
|
||||
.buttonStyle(FormButtonStyle(accessory: .multipleSelection(isSelected: false)))
|
||||
}
|
||||
.compoundFormSection()
|
||||
|
||||
Section {
|
||||
Button(role: .destructive) { } label: {
|
||||
Label("Destroy", systemImage: "x.circle")
|
||||
}
|
||||
.buttonStyle(FormButtonStyle())
|
||||
}
|
||||
.compoundFormSection()
|
||||
}
|
||||
.compoundList()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
//
|
||||
// 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 SwiftUI
|
||||
|
||||
enum FormRow {
|
||||
/// Element specific insets that are used for all our Form rows.
|
||||
static let insets = EdgeInsets(top: 7, leading: 16, bottom: 7, trailing: 16)
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
//
|
||||
// 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 SwiftUI
|
||||
|
||||
struct FormRowLabelStyle: LabelStyle {
|
||||
var alignment = VerticalAlignment.firstTextBaseline
|
||||
var role: ButtonRole?
|
||||
|
||||
private var titleColor: Color {
|
||||
if role == .destructive {
|
||||
return .compound.textCriticalPrimary
|
||||
} else {
|
||||
return .compound.textPrimary
|
||||
}
|
||||
}
|
||||
|
||||
private var iconBackgroundColor: Color {
|
||||
if role == .destructive {
|
||||
return .compound._bgCriticalSubtleAlpha
|
||||
} else {
|
||||
return .compound._bgSubtleSecondaryAlpha
|
||||
}
|
||||
}
|
||||
|
||||
private var iconForegroundColor: Color {
|
||||
if role == .destructive {
|
||||
return .compound.textCriticalPrimary
|
||||
} else {
|
||||
return .compound.iconTertiaryAlpha
|
||||
}
|
||||
}
|
||||
|
||||
func makeBody(configuration: Configuration) -> some View {
|
||||
HStack(alignment: alignment, spacing: 16) {
|
||||
configuration.icon
|
||||
.foregroundColor(iconForegroundColor)
|
||||
.padding(4)
|
||||
.scaledFrame(size: 30)
|
||||
.background(iconBackgroundColor)
|
||||
.clipShape(RoundedRectangle(cornerRadius: 8))
|
||||
configuration.title
|
||||
.font(.compound.bodyLG)
|
||||
.foregroundColor(titleColor)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct FormRowLabelStyle_Previews: PreviewProvider, TestablePreview {
|
||||
static var previews: some View {
|
||||
VStack(alignment: .leading, spacing: 12) {
|
||||
Label("Person", systemImage: "person")
|
||||
.labelStyle(FormRowLabelStyle())
|
||||
|
||||
Label("Help", systemImage: "questionmark.circle")
|
||||
.labelStyle(FormRowLabelStyle())
|
||||
|
||||
Label("Camera", systemImage: "camera")
|
||||
.labelStyle(FormRowLabelStyle())
|
||||
|
||||
Label("Help", systemImage: "questionmark")
|
||||
.labelStyle(FormRowLabelStyle())
|
||||
|
||||
Label("Destroy", systemImage: "x.circle")
|
||||
.labelStyle(FormRowLabelStyle(role: .destructive))
|
||||
}
|
||||
.padding()
|
||||
}
|
||||
}
|
||||
@@ -1,130 +0,0 @@
|
||||
//
|
||||
// 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 MatrixRustSDK
|
||||
import SwiftUI
|
||||
|
||||
struct UserProfileCell: View {
|
||||
let user: UserProfileProxy
|
||||
let membership: MembershipState?
|
||||
let imageProvider: ImageProviderProtocol?
|
||||
|
||||
private var subtitle: String? {
|
||||
if let membershipText = membership?.localizedDescription {
|
||||
return membershipText
|
||||
} else if user.displayName != nil {
|
||||
return user.userID
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
HStack(spacing: 16) {
|
||||
LoadableAvatarImage(url: user.avatarURL,
|
||||
name: user.displayName,
|
||||
contentID: user.userID,
|
||||
avatarSize: .user(on: .startChat),
|
||||
imageProvider: imageProvider)
|
||||
.accessibilityHidden(true)
|
||||
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
Text(user.displayName ?? user.userID)
|
||||
.font(.compound.headingSM)
|
||||
.foregroundColor(.compound.textPrimary)
|
||||
|
||||
if let subtitle {
|
||||
Text(subtitle)
|
||||
.font(.compound.bodyMD)
|
||||
.foregroundColor(.compound.textSecondary)
|
||||
}
|
||||
|
||||
warningContent
|
||||
.padding(.top, 2)
|
||||
}
|
||||
.accessibilityElement(children: .combine)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Private
|
||||
|
||||
@ViewBuilder
|
||||
private var warningContent: some View {
|
||||
if !user.isVerified, membership == nil {
|
||||
HStack(alignment: .firstTextBaseline, spacing: 5) {
|
||||
Text(Image(systemName: "exclamationmark.circle.fill"))
|
||||
.foregroundColor(.compound.textCriticalPrimary)
|
||||
|
||||
Text(L10n.commonInviteUnknownProfile)
|
||||
.foregroundColor(.compound.textSecondary)
|
||||
}
|
||||
.font(.compound.bodyXS)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private extension MembershipState {
|
||||
var localizedDescription: String? {
|
||||
switch self {
|
||||
case .join:
|
||||
return L10n.screenRoomDetailsAlreadyAMember
|
||||
case .invite:
|
||||
return L10n.screenRoomDetailsAlreadyInvited
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct UserProfileCell_Previews: PreviewProvider, TestablePreview {
|
||||
static let action: () -> Void = { }
|
||||
|
||||
static var previews: some View {
|
||||
Form {
|
||||
Button(action: action) {
|
||||
UserProfileCell(user: .mockAlice, membership: nil, imageProvider: MockMediaProvider())
|
||||
}
|
||||
.buttonStyle(FormButtonStyle(accessory: .multipleSelection(isSelected: true)))
|
||||
.previewDisplayName("Selected user")
|
||||
|
||||
Button(action: action) {
|
||||
UserProfileCell(user: .mockBob, membership: nil, imageProvider: MockMediaProvider())
|
||||
}
|
||||
.buttonStyle(FormButtonStyle(accessory: .multipleSelection(isSelected: false)))
|
||||
.previewDisplayName("Unselected user")
|
||||
|
||||
Button(action: action) {
|
||||
UserProfileCell(user: .mockCharlie, membership: .join, imageProvider: MockMediaProvider())
|
||||
}
|
||||
.disabled(true)
|
||||
.buttonStyle(FormButtonStyle(accessory: .multipleSelection(isSelected: true)))
|
||||
.previewDisplayName("Selected disabled user")
|
||||
|
||||
Button(action: action) {
|
||||
UserProfileCell(user: .init(userID: "@someone:matrix.org"), membership: .join, imageProvider: MockMediaProvider())
|
||||
}
|
||||
.disabled(true)
|
||||
.buttonStyle(FormButtonStyle(accessory: .multipleSelection(isSelected: true)))
|
||||
.previewDisplayName("Unverified joined user")
|
||||
|
||||
Button(action: action) {
|
||||
UserProfileCell(user: .init(userID: "@someone:matrix.org"), membership: nil, imageProvider: MockMediaProvider())
|
||||
}
|
||||
.buttonStyle(FormButtonStyle(accessory: .multipleSelection(isSelected: false)))
|
||||
.previewDisplayName("Unverified user")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,96 @@
|
||||
//
|
||||
// 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 Compound
|
||||
import MatrixRustSDK
|
||||
import SwiftUI
|
||||
|
||||
struct UserProfileListRow: View {
|
||||
let user: UserProfileProxy
|
||||
let membership: MembershipState?
|
||||
let imageProvider: ImageProviderProtocol?
|
||||
|
||||
let kind: ListRow<LoadableAvatarImage, EmptyView, EmptyView, Bool>.Kind<EmptyView, Bool>
|
||||
|
||||
var isUnknownProfile: Bool { !user.isVerified && membership == nil }
|
||||
|
||||
private var subtitle: String? {
|
||||
guard !isUnknownProfile else { return L10n.commonInviteUnknownProfile }
|
||||
|
||||
if let membershipText = membership?.localizedDescription {
|
||||
return membershipText
|
||||
} else if user.displayName != nil {
|
||||
return user.userID
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
ListRow(label: .avatar(title: user.displayName ?? user.userID,
|
||||
description: subtitle,
|
||||
icon: avatar,
|
||||
role: isUnknownProfile ? .error : nil),
|
||||
kind: kind)
|
||||
}
|
||||
|
||||
var avatar: LoadableAvatarImage {
|
||||
LoadableAvatarImage(url: user.avatarURL,
|
||||
name: user.displayName,
|
||||
contentID: user.userID,
|
||||
avatarSize: .user(on: .startChat),
|
||||
imageProvider: imageProvider)
|
||||
}
|
||||
}
|
||||
|
||||
private extension MembershipState {
|
||||
var localizedDescription: String? {
|
||||
switch self {
|
||||
case .join:
|
||||
return L10n.screenRoomDetailsAlreadyAMember
|
||||
case .invite:
|
||||
return L10n.screenRoomDetailsAlreadyInvited
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
struct UserProfileCell_Previews: PreviewProvider, TestablePreview {
|
||||
static let action: () -> Void = { }
|
||||
|
||||
static var previews: some View {
|
||||
Form {
|
||||
UserProfileListRow(user: .mockAlice, membership: nil, imageProvider: MockMediaProvider(),
|
||||
kind: .multiSelection(isSelected: true, action: action))
|
||||
|
||||
UserProfileListRow(user: .mockBob, membership: nil, imageProvider: MockMediaProvider(),
|
||||
kind: .multiSelection(isSelected: false, action: action))
|
||||
|
||||
UserProfileListRow(user: .mockCharlie, membership: .join, imageProvider: MockMediaProvider(),
|
||||
kind: .multiSelection(isSelected: true, action: action))
|
||||
.disabled(true)
|
||||
|
||||
UserProfileListRow(user: .init(userID: "@someone:matrix.org"), membership: .join, imageProvider: MockMediaProvider(),
|
||||
kind: .multiSelection(isSelected: false, action: action))
|
||||
.disabled(true)
|
||||
|
||||
UserProfileListRow(user: .init(userID: "@someone:matrix.org"), membership: nil, imageProvider: MockMediaProvider(),
|
||||
kind: .multiSelection(isSelected: false, action: action))
|
||||
}
|
||||
.compoundList()
|
||||
}
|
||||
}
|
||||
@@ -20,9 +20,13 @@ import SwiftUI
|
||||
struct InviteUsersScreen: View {
|
||||
@ObservedObject var context: InviteUsersScreenViewModel.Context
|
||||
|
||||
var showTopSection: Bool {
|
||||
!context.viewState.selectedUsers.isEmpty || context.viewState.isSearching
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
mainContent
|
||||
.compoundForm()
|
||||
.compoundList()
|
||||
.scrollDismissesKeyboard(.immediately)
|
||||
.navigationTitle(L10n.screenCreateRoomAddPeopleTitle)
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
@@ -40,19 +44,21 @@ struct InviteUsersScreen: View {
|
||||
private var mainContent: some View {
|
||||
GeometryReader { proxy in
|
||||
Form {
|
||||
// this is a fix for having the carousel not clipped, and inside the form, so when the search is dismissed, it wont break the design
|
||||
Section {
|
||||
EmptyView()
|
||||
} header: {
|
||||
VStack(spacing: 8) {
|
||||
selectedUsersSection
|
||||
.textCase(.none)
|
||||
.frame(width: proxy.size.width)
|
||||
|
||||
if context.viewState.isSearching {
|
||||
ProgressView()
|
||||
.frame(maxWidth: .infinity, alignment: .center)
|
||||
.listRowBackground(Color.clear)
|
||||
if showTopSection {
|
||||
// this is a fix for having the carousel not clipped, and inside the form, so when the search is dismissed, it wont break the design
|
||||
Section {
|
||||
EmptyView()
|
||||
} header: {
|
||||
VStack(spacing: 16) {
|
||||
selectedUsersSection
|
||||
.textCase(.none)
|
||||
.frame(width: proxy.size.width)
|
||||
|
||||
if context.viewState.isSearching {
|
||||
ProgressView()
|
||||
.frame(maxWidth: .infinity, alignment: .center)
|
||||
.listRowBackground(Color.clear)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -80,20 +86,21 @@ struct InviteUsersScreen: View {
|
||||
if !context.viewState.usersSection.users.isEmpty {
|
||||
Section {
|
||||
ForEach(context.viewState.usersSection.users, id: \.userID) { user in
|
||||
Button { context.send(viewAction: .toggleUser(user)) } label: {
|
||||
UserProfileCell(user: user,
|
||||
membership: context.viewState.membershipState(user),
|
||||
imageProvider: context.imageProvider)
|
||||
}
|
||||
.disabled(context.viewState.isUserDisabled(user))
|
||||
.buttonStyle(FormButtonStyle(accessory: .multipleSelection(isSelected: context.viewState.isUserSelected(user))))
|
||||
UserProfileListRow(user: user,
|
||||
membership: context.viewState.membershipState(user),
|
||||
imageProvider: context.imageProvider,
|
||||
kind: .multiSelection(isSelected: context.viewState.isUserSelected(user)) {
|
||||
context.send(viewAction: .toggleUser(user))
|
||||
})
|
||||
.disabled(context.viewState.isUserDisabled(user))
|
||||
.accessibilityIdentifier(A11yIdentifiers.inviteUsersScreen.userProfile)
|
||||
}
|
||||
} header: {
|
||||
if let title = context.viewState.usersSection.title {
|
||||
Text(title)
|
||||
.compoundListSectionHeader()
|
||||
}
|
||||
}
|
||||
.compoundFormSection()
|
||||
} else {
|
||||
Section.empty
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import Compound
|
||||
import SwiftUI
|
||||
|
||||
struct MessageForwardingScreen: View {
|
||||
@@ -23,8 +24,9 @@ struct MessageForwardingScreen: View {
|
||||
Form {
|
||||
Section {
|
||||
ForEach(context.viewState.rooms) { room in
|
||||
MessageForwardingRoomCell(room: room, context: context)
|
||||
.buttonStyle(FormButtonStyle(accessory: .singleSelection(isSelected: context.viewState.selectedRoomID == room.id)))
|
||||
MessageForwardingListRow(room: room,
|
||||
isSelected: context.viewState.selectedRoomID == room.id,
|
||||
context: context)
|
||||
}
|
||||
// Replace these with ScrollView's `scrollPosition` when dropping iOS 16.
|
||||
} header: {
|
||||
@@ -38,9 +40,8 @@ struct MessageForwardingScreen: View {
|
||||
context.send(viewAction: .reachedBottom)
|
||||
}
|
||||
}
|
||||
.compoundFormSection()
|
||||
}
|
||||
.compoundForm()
|
||||
.compoundList()
|
||||
.navigationTitle(L10n.commonForwardMessage)
|
||||
.navigationBarTitleDisplayMode(.inline)
|
||||
.toolbar {
|
||||
@@ -69,32 +70,20 @@ struct MessageForwardingScreen: View {
|
||||
}
|
||||
}
|
||||
|
||||
private struct MessageForwardingRoomCell: View {
|
||||
private struct MessageForwardingListRow: View {
|
||||
@Environment(\.dynamicTypeSize) var dynamicTypeSize
|
||||
|
||||
let room: MessageForwardingRoom
|
||||
let isSelected: Bool
|
||||
let context: MessageForwardingScreenViewModel.Context
|
||||
|
||||
var body: some View {
|
||||
Button {
|
||||
context.send(viewAction: .selectRoom(roomID: room.id))
|
||||
} label: {
|
||||
HStack(spacing: 16.0) {
|
||||
avatar
|
||||
|
||||
VStack(alignment: .leading, spacing: 2.0) {
|
||||
Text(room.name)
|
||||
.font(.compound.bodyMD)
|
||||
.foregroundColor(.compound.textPrimary)
|
||||
.lineLimit(1)
|
||||
Text(room.alias ?? room.id)
|
||||
.font(.compound.bodySM)
|
||||
.foregroundColor(.compound.textSecondary)
|
||||
.lineLimit(1)
|
||||
}
|
||||
}
|
||||
.accessibilityElement(children: .combine)
|
||||
}
|
||||
ListRow(label: .avatar(title: room.name,
|
||||
description: room.alias ?? room.id,
|
||||
icon: avatar),
|
||||
kind: .selection(isSelected: isSelected) {
|
||||
context.send(viewAction: .selectRoom(roomID: room.id))
|
||||
})
|
||||
}
|
||||
|
||||
@ViewBuilder @MainActor
|
||||
|
||||
@@ -17,13 +17,18 @@
|
||||
import SwiftUI
|
||||
|
||||
struct PollOptionView: View {
|
||||
@Environment(\.isEnabled) private var isEnabled
|
||||
|
||||
let pollOption: Poll.Option
|
||||
let showVotes: Bool
|
||||
let isFinalResult: Bool
|
||||
|
||||
var body: some View {
|
||||
HStack(alignment: .firstTextBaseline, spacing: 12) {
|
||||
FormRowAccessory(kind: .multipleSelection(isSelected: pollOption.isSelected))
|
||||
Image(systemSymbol: pollOption.isSelected ? .checkmarkCircleFill : .circle)
|
||||
.font(.compound.bodyLG)
|
||||
.foregroundColor(pollOption.isSelected && isEnabled ? .compound.iconPrimary : .compound.iconTertiary)
|
||||
.accessibilityAddTraits(pollOption.isSelected ? .isSelected : [])
|
||||
|
||||
VStack(spacing: 10) {
|
||||
HStack(alignment: .lastTextBaseline, spacing: 8) {
|
||||
|
||||
@@ -88,14 +88,12 @@ struct StartChatScreen: View {
|
||||
if !context.viewState.usersSection.users.isEmpty {
|
||||
Section {
|
||||
ForEach(context.viewState.usersSection.users, id: \.userID) { user in
|
||||
ListRow(kind: .custom {
|
||||
Button { context.send(viewAction: .selectUser(user)) } label: {
|
||||
UserProfileCell(user: user, membership: nil, imageProvider: context.imageProvider)
|
||||
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading)
|
||||
.padding(.horizontal, ListRowPadding.horizontal)
|
||||
.padding(.vertical, 8)
|
||||
}
|
||||
})
|
||||
UserProfileListRow(user: user,
|
||||
membership: nil,
|
||||
imageProvider: context.imageProvider,
|
||||
kind: .button {
|
||||
context.send(viewAction: .selectUser(user))
|
||||
})
|
||||
}
|
||||
} header: {
|
||||
if let title = context.viewState.usersSection.title {
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
// limitations under the License.
|
||||
//
|
||||
|
||||
import Compound
|
||||
import SwiftUI
|
||||
|
||||
class BlankFormCoordinator: CoordinatorProtocol {
|
||||
@@ -28,7 +29,7 @@ private struct BlankForm: View {
|
||||
Form {
|
||||
Text("Nothing to see here.")
|
||||
}
|
||||
.compoundForm()
|
||||
.compoundList()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,19 +25,19 @@ class InviteUsersScreenUITests: XCTestCase {
|
||||
|
||||
func testSelectedUsers() async throws {
|
||||
let app = Application.launch(.inviteUsers)
|
||||
app.collectionViews.firstMatch.cells.element(boundBy: 1).tap()
|
||||
app.buttons[A11yIdentifiers.inviteUsersScreen.userProfile].firstMatch.tap()
|
||||
try await app.assertScreenshot(.inviteUsers, step: 1)
|
||||
}
|
||||
|
||||
func testInviteUsers() async throws {
|
||||
let app = Application.launch(.inviteUsersInRoom)
|
||||
app.collectionViews.firstMatch.cells.element(boundBy: 1).tap()
|
||||
app.buttons[A11yIdentifiers.inviteUsersScreen.userProfile].firstMatch.tap()
|
||||
try await app.assertScreenshot(.inviteUsersInRoom, step: 1)
|
||||
}
|
||||
|
||||
func testInviteUserExistingMembers() async throws {
|
||||
let app = Application.launch(.inviteUsersInRoomExistingMembers)
|
||||
app.collectionViews.firstMatch.cells.element(boundBy: 1).tap()
|
||||
app.buttons[A11yIdentifiers.inviteUsersScreen.userProfile].firstMatch.tap()
|
||||
try await app.assertScreenshot(.inviteUsersInRoomExistingMembers, step: 1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3fa48241f385c2b3753523823d29471f4ecae890021ec47b01e739783d955a2b
|
||||
size 165984
|
||||
oid sha256:fa4855d3e48bf5600c9673f030bf3dfec98db3d9bb97bb860b5aaab5a51ae21d
|
||||
size 113161
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bfe62fbf4c949e2d67b1920a9df0a1bb7cfd6f2587cf4073a491ae94fc6839d5
|
||||
size 165645
|
||||
oid sha256:83f0b666476f1fc9eb85bafa42ce9ed3109d8e1f24dd03f8f4f2ccfbf75e8642
|
||||
size 112805
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:98fb37018e18b24257791b5e4f67db1ff3701b3ef4afe9d1afcd62323c135bf0
|
||||
size 118118
|
||||
oid sha256:0ae810d0e6d12564f8be12c0304be9bbf088d4e466de7cc4edcf1b74ebc02c81
|
||||
size 118359
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9981e05d8e7b867dd804efeaa97d312b70925d23d959dedfed4e4bc97781eb0a
|
||||
size 74989
|
||||
oid sha256:846c772f6cca4a574636a6dc5d388f7490179ec5cbba50db9a625e55dde69a95
|
||||
size 75237
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:26ffbeae8df9be41d80be48d111ef47fac633bf8c575db6028597c7c5faec2b4
|
||||
size 181587
|
||||
oid sha256:e8c7e0c946e64048b3b270f4adaf2bfe635aa432dbd26da70f77f751d4ab2092
|
||||
size 128411
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4256ee8ceb61e8cd34c8c06cfb97c134b5122ce28de9747cee2b1bf2ed0ff418
|
||||
size 181244
|
||||
oid sha256:80ba839320e3ef2dd120189a8c06520b103f50ffe0aaa6a340680d7f96b5467d
|
||||
size 128074
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7d09d2089cd5d540e12aaa823da60e20806c25202f0f3b60bfd4cebc8978e8a9
|
||||
size 58054
|
||||
oid sha256:32439e9c58f761ed427cc82e72b493d2d50dadeb918a5a114c8f4346090c21fb
|
||||
size 58069
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:74c1eef2dee3b8ebf4f913129cf674c17e21a6d12a20d6c2eae8d699966d8040
|
||||
size 146418
|
||||
oid sha256:cc83c2869e4a36bbaead2afadbd14a30008d3b244ee105d59139793683c34bfd
|
||||
size 83856
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:33b9be6c12c0001b6b3c2115a268a39462f44dbb9b518fc32ee1a973166d7786
|
||||
size 146102
|
||||
oid sha256:ac45c66e0d0986ad11b8e46473358fcdb60ebbc7b3338ca674f29ff5eec77a8c
|
||||
size 83556
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8feec0af9037c406c401a57e26d03e26f4eff43e7a3f43ba34221356c1b722af
|
||||
size 90720
|
||||
oid sha256:1412f5d5cceaee6ff9a09845d0aef1e909edac134821f0af79829dfe643fd9ca
|
||||
size 91010
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f4b8b221641b9d86d3f7e32a650a262cc4a51dbc7cf3b7c65253d6c71d5bb454
|
||||
size 99772
|
||||
oid sha256:2e9c4376566a377fe6e7550aa02e14f4695a39b99ed915c7a797dc7fd159e747
|
||||
size 99902
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:214f8e9caf0d73019f8d1daeabe6f15732d748addca8039c8a9ef2c0ae528482
|
||||
size 108259
|
||||
oid sha256:7df4611bd9e2f673e236f0b5f70df91b0060e1ecec94d67e2abffbc2b8fe5ba0
|
||||
size 105433
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3b6525d4723fab1d1fb4427a96af512549daaed89f294a0936cdf5b60576add3
|
||||
size 98375
|
||||
oid sha256:6caae22557a376372cc80a520f574dad25d0a3ffe9bc4015f0b95b96fd186e13
|
||||
size 95699
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2fcd3a8eaca6db796bbe59936cdbb9904d3ff6380cab78d9f3a8e4e4b4e9b19a
|
||||
size 109895
|
||||
oid sha256:c3f8cd03eb57875402afe6320915fe247e33205e24cdffd99334ca6c7d017215
|
||||
size 107065
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0d780b6b967316b699c34b80caf2d1cebc3b4c72e2b048389cb96fad2313398c
|
||||
size 98710
|
||||
oid sha256:4380762f5d2ecfebe278deaad65dbc1e4a5b40ff5936db9425bb0087b6701cb7
|
||||
size 95503
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5dff3594ab9a16df58dda69b3d322b41006b3465528ac95d62897a3c798492bc
|
||||
size 63009
|
||||
oid sha256:28a73fa5588f532d48b2b9342540a625fc7534a0ac511b0ed0003524628a03d7
|
||||
size 65221
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fa7d430446c88421f0e06b47ad6e9e9867ec56217c25ba3c59b9715ea603b4a8
|
||||
size 90656
|
||||
oid sha256:8dc1aa9420f14506003211eadbb58394f2233bdd21796a4abdb8d829aea1eb59
|
||||
size 78733
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:aac17790267f0b5fc37827cd6ab745b7ea483f4e1b6de9ae8d9fa304330ac791
|
||||
size 105853
|
||||
oid sha256:5bbc69959f073b4d5c074cc3effa07912bcbefaa43b0ed775457491806e16e3c
|
||||
size 103078
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f65a97c728faec3735d6fcb51b482af57c7158193734a011e703936d14f50ed3
|
||||
size 137591
|
||||
oid sha256:b3374c943258f00f654122130caa23197fb92a924cc9b3d43ce266fa235c5b4c
|
||||
size 97362
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:62b02511b19c2ede3866f769eea6e1d65e267ae3da2c8faede3df9b3f18b825e
|
||||
size 137206
|
||||
oid sha256:da98360a9877e18260ef1576a7ad459f7f6e8ca5c7d60d5e5031181fd5543951
|
||||
size 96995
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a46bf902af6a4220639073f83ff1db87a4ac8187521b7ae296639c56d7a85367
|
||||
size 96519
|
||||
oid sha256:672183773e83e3d56f9751e4f2524399eb77e22727331992eadd2b28bcbcccd6
|
||||
size 92979
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6038391cadd1f8d589f07d21a743a6ad708295ebe127a45c13720ddd464e1bfd
|
||||
size 55754
|
||||
oid sha256:0300d84651e423884f56cc13d6bf82b78a9c86953e2bca3d050e66ec1a5be618
|
||||
size 55799
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2ea0c189224d0c048d385966c9a5e2d911cc9176379014adefa9b62cbad462db
|
||||
size 128199
|
||||
oid sha256:e4492c6844b95b6f30a8942c7d4f8fda9312bcb8b7652969dc63e804789b486c
|
||||
size 92320
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c65a6e90789c3bf126aebe2adf6bef05f0546da9a467f3cb04da2dad98cd52dd
|
||||
size 127762
|
||||
oid sha256:ef739de088b19a5c9d81c4e7076e99807959d708b7fc5a0785aa3766fba2e153
|
||||
size 91905
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:05500566e71142c4c80b9781f3cb3fe20412690c9bcc11156d14fbbb1ac3812c
|
||||
size 81393
|
||||
oid sha256:a87c090807454a4444b06a94d6aea2928b32eccbf40bd7a87a5f1f9c590692bf
|
||||
size 77158
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:95f5c45062a79206c3cbdc1d078c3a8e2cc2fe32e2f7d69da490d9a341b2f100
|
||||
size 130243
|
||||
oid sha256:abc0d764c74dbf4a1424bfb0ebf22d30e481a395efedca489f4eea01d4dcf561
|
||||
size 125908
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:424c9cb13f232e17df297870c384b6fab7aabfbb779bb953a5eef77f136338b5
|
||||
size 115310
|
||||
oid sha256:3376eeab4934aabd2520774eb489ab40d81cfa803de49851141cd05bf54662ae
|
||||
size 111448
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:57b10e265226b2926bf770dd8cedb6654cc5d87ff1ebbaa69afeb0538f4691b9
|
||||
size 135228
|
||||
oid sha256:95fa99a10f32b2bd70ed9f547c6b5e6904799d197653376f61155fc7a737245f
|
||||
size 128675
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c606925ebe12261907e9311107ca53075fdcd021746653f37a21f54c9ea29ec1
|
||||
size 115134
|
||||
oid sha256:5d49688083fd896d8f60a437a657e5b047b9e2eea5746910380e141b961ff739
|
||||
size 111576
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:48bdfc2561aa894208e8670a0d172e418fdcf7db3de5a8ac7fb6969334997ddf
|
||||
size 88923
|
||||
oid sha256:c40fdac241722cb70799c4e4f70989f837b79296c74eae9268b30067ae7d14fa
|
||||
size 66290
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a2c8b5272e01ad21bfeb701a8591ee4f5df06a51f50a03eab8923726aefc1f01
|
||||
size 111079
|
||||
oid sha256:30a1f00b977cbcf1576518869f1090a4d016a490ecf48b88bf412e43ad2e08b2
|
||||
size 84801
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a5bbbb6622c0936efe7b18423aa31c2c641bfd24457ba865e74e3a18540edb52
|
||||
size 127040
|
||||
oid sha256:da7ed614bc6c00574ab7959a351c070b84ee17ecaaf6afa7bfe1ee50b22faf86
|
||||
size 125770
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:44c3f9224626c915af17c0c9358b5049490b4fdfc56e1a0f132ee138a7cd0f3f
|
||||
size 187197
|
||||
oid sha256:21c2ae847c2cc62d72df77bccf4bdca832bf16a883ec2e538ad2c0592339548a
|
||||
size 133531
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ce09ad0d0ef60d14807709fd9194ba1ea7863280545c6bcf183534411bab850c
|
||||
size 186740
|
||||
oid sha256:52bc191abfb4e91f062db87e72d6f9c0fcd014dcb07e11d81d39fd1378063ae7
|
||||
size 133088
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ee6a9bf60a1d58da80cfe07847586917d9d7220eff61072c9ca1c975b3054d10
|
||||
size 134319
|
||||
oid sha256:a915abef8bd04c75f0b4999ab010e6f577429a103a2b34650cfc14672bedc136
|
||||
size 134573
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0cbfbd855a17721fc7ec0886127154971225f4fb7aefcfd8e334ef49a0ee17c1
|
||||
size 79354
|
||||
oid sha256:a9c5de0ceddacb4d4afd57ee314adcd64e173404677f78514cfdbc92150fd6d9
|
||||
size 79736
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:88a548c90dcc19b981719b92648cb017b803c2e6c367c9614a06d59e5da83c72
|
||||
size 203681
|
||||
oid sha256:dcc2c0ebd6225f740868be48c0d384cdabf30b3d6662db82c3ec4b86349ac6df
|
||||
size 149679
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5f4094e6baaebfd781e8cf5bc3f6dfbc8f1e51b16d875e1812248e71c57b92be
|
||||
size 203186
|
||||
oid sha256:09c92bb7697131582b681d494be8fec5b264458ecc97a9e5baf42b96159e5b10
|
||||
size 149191
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e4f8dfd9c3e7bf9c5b7fe6ccd94c7a710b331ee9920a658c664287fa4d6403f7
|
||||
size 58873
|
||||
oid sha256:3ec304e3589235cb6bf3e4123c3e1ca9d19c54f98012e01875d6bc9ff31d64f8
|
||||
size 58877
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:70f114ac9bd51da1095b352d1fcf9a16e018e5ac529c8d3bf2d9780bf2525109
|
||||
size 164955
|
||||
oid sha256:fefa32e1e286f1c01ad54c6333f5cad8bf53f410c2f712881eeb913ba8eb44f0
|
||||
size 102362
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0e720812f57e7f5f29be0d33c52a8a6628a95985c52172e08a2d1f5162d0bd9c
|
||||
size 164530
|
||||
oid sha256:36b36742a6cdf82c6c46e7eb6fb2e8d5a017fd33c8fc436ae02487a749e8f9ae
|
||||
size 101940
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:59e577b405c86f7bef34d7e244696de5a84a092d5dcff9b0c034edcfd293d55d
|
||||
size 105390
|
||||
oid sha256:db9e1e46c2a3853400e35c54d7dd1804aaddad17a1717f78216a9d430063501c
|
||||
size 105697
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:869f30858095d8e245a2efc84ef996ddcf11864112123b68e4a784c55770e618
|
||||
size 101543
|
||||
oid sha256:caea26e63181cde85bee5154d1273e64c045acf33866a8157584229ab85c4246
|
||||
size 101665
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6a19aaf08fb9f2e1d103911f350ba0d5e6949ac45c51f71461b6a8188c5727b3
|
||||
size 110404
|
||||
oid sha256:4e2ea9cb24ceeccbc3989999704a5ecd8c07b35cd81b00945407c37730b9b361
|
||||
size 109114
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a67b425b5adcea41ed6fc90620ccb547d913850c9bfeb2cff5f353e58ca53156
|
||||
size 100666
|
||||
oid sha256:baf46e031df4ca38e250d145ba251d5dff0151521173faa72144fd04e30ae541
|
||||
size 99541
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:52607d58796c7422a0fd1ee26b036f763dfe12ff692a4c9a07dcf580124d6c74
|
||||
size 112395
|
||||
oid sha256:9c0f3eed1c78e3b734c787fa6d47ea09347303dc132289b993a72c9d823332e0
|
||||
size 111097
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:51aed0797dc6816123c20edc2a337c04adc514c2590649f57e9e6e95a350a2bb
|
||||
size 104882
|
||||
oid sha256:1fcde6c5a8783a21d5f0683b850fbb8c95c88bc6e3ca5994fd4e769e92ccec36
|
||||
size 102638
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9988b9290b76f3192b032cc01740b6c7b86065140b0e0035ea3848e6fa809669
|
||||
size 63516
|
||||
oid sha256:29f3d5e2833b712a7f515ca17fb9e669ac759544417fb940dda29f5e9224c5eb
|
||||
size 66186
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:24838e99570f82f28aac4304cd55ef3c52a71fe7fab64ec1b33ae48cdf151191
|
||||
size 77605
|
||||
oid sha256:d462831868a943edd08732edbf1fbb7f81c40cefb228043b2636a69f88f9cb42
|
||||
size 79440
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6054c38af31f675a6eed2e4a7596445f0aba70a0d0bd94119a839abe7cbb89ed
|
||||
size 113786
|
||||
oid sha256:2c1d4c40717ad7c7291009d0458b4737d93d77c404e7f88cf9445148f9bcbfe9
|
||||
size 111160
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1d5cb48de5d8d0c1f04a0a12488249871c128b87e3dffe4e025ded9a26fc8555
|
||||
size 168378
|
||||
oid sha256:d731344f28483441a59c63bde117e3636e0edf76a03c25a7e441b1979825f5d7
|
||||
size 128142
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6501ff36b6204c2083c0121468fcdeef5e0d5a873c86693c1a8757091ece7915
|
||||
size 168194
|
||||
oid sha256:7279aab844439bac92f2779e12522deb7f98c5a167c9edb3bcaf1876cdc056d0
|
||||
size 127995
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a7c4ca0ea8597654e7974ca38e5a1e17b8dd07b0660dc3c6082357fcd871976e
|
||||
size 120377
|
||||
oid sha256:2772919a9b4059ed484549601beab29e7abc7ed66e78c1e557b551306fc13653
|
||||
size 115871
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ec887b50b32e86584eabe49019c387eb506c7f619f96239ea3ace251411e03f2
|
||||
size 158026
|
||||
oid sha256:bca0b5af5d71a4d8a8c42b26ae1dde796cd56de2116cc6df59a0b04ae53a13e8
|
||||
size 122400
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2501a44a9cb3457ec861016f5ab3fdcd8a8c2e9b00d2299f1ad902d366ac0b76
|
||||
size 157869
|
||||
oid sha256:f036b1da1efc13819d16a762481abcb8a9be78f62ea1e4c9b827054bafb3db7b
|
||||
size 122246
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4ea1cbd5eb3bd03cfe2fb1358c796634de153bf6b492c9e8602ec4a1d27e4ad4
|
||||
size 82102
|
||||
oid sha256:d958282348bb6a7e55d43c70e237e4906e92e93dbf095775035802b03fe7813f
|
||||
size 77936
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6316162e67302f33e034b9da36f9039f7d540fa84994136e5c3a85650ee3131d
|
||||
size 136612
|
||||
oid sha256:23889a3f018de42f1d43672488a99d82c379356b93c64e2b464e6dc8e301579d
|
||||
size 132289
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3fbf913d6cb7a9db7c21438f2fcd1674d360e8ab22f8a654a08e002297d1340c
|
||||
size 118989
|
||||
oid sha256:b95cf05146a78f0300fce52071c14cd1a7e22ac77b73242b6979fe6742029da1
|
||||
size 113297
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:202e452cc3be7013dc0c5cbe9874d238022394d7b99e0c6cb10b8c77b56049af
|
||||
size 138969
|
||||
oid sha256:683d1b9b97925e38e99eb1484b1b60fb8dd8a966a843338f2930d46b37869f63
|
||||
size 134683
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2e1dea7cbc0cf1615fe3a8f9de5cfcf953937c6f43d657c3b370133254922200
|
||||
size 122545
|
||||
oid sha256:ec7e0d2f7a28ea69ce3f79abe7b46044626a38b9d2d9c36a2d9a4a9b27c53327
|
||||
size 116295
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:51792912ecf67bce854a3d23b1703341ebefe7f733a5f8965ce614b685fd07b7
|
||||
size 87922
|
||||
oid sha256:801732f764efe660d7d87ea437dede56a337f518b8e87b3f43e17a979d4ce7f9
|
||||
size 67913
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f8d7c0f638bc6a5f2a76738eb7a7ddbac0ad0d2107cea4c1fae73fb99bc9c457
|
||||
size 109877
|
||||
oid sha256:21e086793fe3f97a78392a08d74eaa41fdaea09444ff8a1d984cdfefd47ef6bc
|
||||
size 85683
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7c1fe39ec8997b9984c22deb2c9fe383b2d9c88b19d44b0653652526db735be5
|
||||
size 138994
|
||||
oid sha256:facd745ec4ffb852684629d6d2a3283a04e5de896e2e87952b6a4e9e487ea82b
|
||||
size 135609
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a9f72356a0e0952300e2980d47e2eab2097267f732427efaf13fe034ff2b9bf5
|
||||
size 176733
|
||||
oid sha256:ae585f2202e9c1d95cedd195ff1420f6d8d47e8d71f3fbc181e3a54afb113199
|
||||
size 68492
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:afbc0d42973b4360949b551b5e7d34543a262eef3ea29c3bc1219c06d2249f5a
|
||||
size 170537
|
||||
oid sha256:9eafc4604f3d3dabdbf85d97ca643be13cb83111ad98def8cc383108067a0269
|
||||
size 181066
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ebfdc3655581cbc21f18873ee644c506ccecd2de4d89856b24aa85f329da9e33
|
||||
size 151588
|
||||
oid sha256:7819c17cf316c4bb89571b95dfd7c6e1bb8497e8d759bc29900682d33cae4b71
|
||||
size 145712
|
||||
|
||||
@@ -49,7 +49,7 @@ packages:
|
||||
# path: ../matrix-rust-sdk
|
||||
Compound:
|
||||
url: https://github.com/vector-im/compound-ios
|
||||
revision: 8774e358ac6927f041400733ac681456f0910c10
|
||||
revision: 56456508d27b7defef647da15d1bd854d6f88a2d
|
||||
# path: ../compound-ios
|
||||
AnalyticsEvents:
|
||||
url: https://github.com/matrix-org/matrix-analytics-events
|
||||
|
||||
Reference in New Issue
Block a user