DM Details have been updated (#2836)

This commit is contained in:
Mauro
2024-05-14 18:47:20 +02:00
committed by GitHub
parent d66ff02d12
commit 2c038c5969
68 changed files with 314 additions and 169 deletions
+19 -23
View File
@@ -3,7 +3,7 @@
archiveVersion = 1; archiveVersion = 1;
classes = { classes = {
}; };
objectVersion = 54; objectVersion = 56;
objects = { objects = {
/* Begin PBXAggregateTarget section */ /* Begin PBXAggregateTarget section */
@@ -701,6 +701,7 @@
A722F426FD81FC67706BB1E0 /* CustomLayoutLabelStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42236480CF0431535EBE8387 /* CustomLayoutLabelStyle.swift */; }; A722F426FD81FC67706BB1E0 /* CustomLayoutLabelStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42236480CF0431535EBE8387 /* CustomLayoutLabelStyle.swift */; };
A74438ED16F8683A4B793E6A /* AnalyticsSettingsScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCE3FAF40932AC7C7639AC4 /* AnalyticsSettingsScreenViewModel.swift */; }; A74438ED16F8683A4B793E6A /* AnalyticsSettingsScreenViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCE3FAF40932AC7C7639AC4 /* AnalyticsSettingsScreenViewModel.swift */; };
A7D48E44D485B143AADDB77D /* Strings+Untranslated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A18F6CE4D694D21E4EA9B25 /* Strings+Untranslated.swift */; }; A7D48E44D485B143AADDB77D /* Strings+Untranslated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A18F6CE4D694D21E4EA9B25 /* Strings+Untranslated.swift */; };
A7DD6BA12BF3939800C9B260 /* ScaledOffsetModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7DD6BA02BF3939800C9B260 /* ScaledOffsetModifier.swift */; };
A7FD7B992E6EE6E5A8429197 /* RoomSummaryDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 142808B69851451AC32A2CEA /* RoomSummaryDetails.swift */; }; A7FD7B992E6EE6E5A8429197 /* RoomSummaryDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 142808B69851451AC32A2CEA /* RoomSummaryDetails.swift */; };
A816F7087C495D85048AC50E /* RoomMemberDetailsScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6E30BB748F3F480F077969 /* RoomMemberDetailsScreenModels.swift */; }; A816F7087C495D85048AC50E /* RoomMemberDetailsScreenModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B6E30BB748F3F480F077969 /* RoomMemberDetailsScreenModels.swift */; };
A851635B3255C6DC07034A12 /* RoomScreenCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8108C8F0ACF6A7EB72D0117 /* RoomScreenCoordinator.swift */; }; A851635B3255C6DC07034A12 /* RoomScreenCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8108C8F0ACF6A7EB72D0117 /* RoomScreenCoordinator.swift */; };
@@ -1132,12 +1133,12 @@
033DB41C51865A2E83174E87 /* target.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = target.yml; sourceTree = "<group>"; }; 033DB41C51865A2E83174E87 /* target.yml */ = {isa = PBXFileReference; lastKnownFileType = text.yaml; path = target.yml; sourceTree = "<group>"; };
035177BCD8E8308B098AC3C2 /* WindowManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowManager.swift; sourceTree = "<group>"; }; 035177BCD8E8308B098AC3C2 /* WindowManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowManager.swift; sourceTree = "<group>"; };
0376C429FAB1687C3D905F3E /* MockCoder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockCoder.swift; sourceTree = "<group>"; }; 0376C429FAB1687C3D905F3E /* MockCoder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockCoder.swift; sourceTree = "<group>"; };
0392E3FDE372C9B56FEEED8B /* test_voice_message.m4a */ = {isa = PBXFileReference; path = test_voice_message.m4a; sourceTree = "<group>"; }; 0392E3FDE372C9B56FEEED8B /* test_voice_message.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = test_voice_message.m4a; sourceTree = "<group>"; };
03DD998E523D4EC93C7ED703 /* RoomNotificationSettingsScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomNotificationSettingsScreenViewModelProtocol.swift; sourceTree = "<group>"; }; 03DD998E523D4EC93C7ED703 /* RoomNotificationSettingsScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomNotificationSettingsScreenViewModelProtocol.swift; sourceTree = "<group>"; };
03FABD73FD8086EFAB699F42 /* MediaUploadPreviewScreenViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaUploadPreviewScreenViewModelTests.swift; sourceTree = "<group>"; }; 03FABD73FD8086EFAB699F42 /* MediaUploadPreviewScreenViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaUploadPreviewScreenViewModelTests.swift; sourceTree = "<group>"; };
044E501B8331B339874D1B96 /* CompoundIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompoundIcon.swift; sourceTree = "<group>"; }; 044E501B8331B339874D1B96 /* CompoundIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompoundIcon.swift; sourceTree = "<group>"; };
045253F9967A535EE5B16691 /* Label.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Label.swift; sourceTree = "<group>"; }; 045253F9967A535EE5B16691 /* Label.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Label.swift; sourceTree = "<group>"; };
048A21188AB19349D026BECD /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; 048A21188AB19349D026BECD /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
04BB8DDE245ED86C489BA983 /* AccessibilityIdentifiers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessibilityIdentifiers.swift; sourceTree = "<group>"; }; 04BB8DDE245ED86C489BA983 /* AccessibilityIdentifiers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccessibilityIdentifiers.swift; sourceTree = "<group>"; };
04DF593C3F7AF4B2FBAEB05D /* FileManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileManager.swift; sourceTree = "<group>"; }; 04DF593C3F7AF4B2FBAEB05D /* FileManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileManager.swift; sourceTree = "<group>"; };
0516C69708D5CBDE1A8E77EC /* RoomDirectorySearchProxyProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomDirectorySearchProxyProtocol.swift; sourceTree = "<group>"; }; 0516C69708D5CBDE1A8E77EC /* RoomDirectorySearchProxyProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomDirectorySearchProxyProtocol.swift; sourceTree = "<group>"; };
@@ -1196,7 +1197,7 @@
127C8472672A5BA09EF1ACF8 /* CurrentValuePublisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrentValuePublisher.swift; sourceTree = "<group>"; }; 127C8472672A5BA09EF1ACF8 /* CurrentValuePublisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrentValuePublisher.swift; sourceTree = "<group>"; };
128501375217576AF0FE3E92 /* RoomAttachmentPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomAttachmentPicker.swift; sourceTree = "<group>"; }; 128501375217576AF0FE3E92 /* RoomAttachmentPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomAttachmentPicker.swift; sourceTree = "<group>"; };
12F1E7F9C2BE8BB751037826 /* WaitlistScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitlistScreenCoordinator.swift; sourceTree = "<group>"; }; 12F1E7F9C2BE8BB751037826 /* WaitlistScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitlistScreenCoordinator.swift; sourceTree = "<group>"; };
1304D9191300873EADA52D6E /* IntegrationTests.xctestplan */ = {isa = PBXFileReference; path = IntegrationTests.xctestplan; sourceTree = "<group>"; }; 1304D9191300873EADA52D6E /* IntegrationTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = IntegrationTests.xctestplan; sourceTree = "<group>"; };
130ED565A078F7E0B59D9D25 /* UNTextInputNotificationResponse+Creator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UNTextInputNotificationResponse+Creator.swift"; sourceTree = "<group>"; }; 130ED565A078F7E0B59D9D25 /* UNTextInputNotificationResponse+Creator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UNTextInputNotificationResponse+Creator.swift"; sourceTree = "<group>"; };
136F80A613B55BDD071DCEA5 /* JoinRoomScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoinRoomScreenModels.swift; sourceTree = "<group>"; }; 136F80A613B55BDD071DCEA5 /* JoinRoomScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoinRoomScreenModels.swift; sourceTree = "<group>"; };
13802897C7AFA360EA74C0B0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = "<group>"; }; 13802897C7AFA360EA74C0B0 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.stringsdict; name = en; path = en.lproj/Localizable.stringsdict; sourceTree = "<group>"; };
@@ -1284,7 +1285,7 @@
25F7FE40EF7490A7E09D7BE6 /* NotificationItemProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationItemProxy.swift; sourceTree = "<group>"; }; 25F7FE40EF7490A7E09D7BE6 /* NotificationItemProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationItemProxy.swift; sourceTree = "<group>"; };
25F8664F1FB95AF3C4202478 /* PollFormScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollFormScreenCoordinator.swift; sourceTree = "<group>"; }; 25F8664F1FB95AF3C4202478 /* PollFormScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PollFormScreenCoordinator.swift; sourceTree = "<group>"; };
260004737C573A56FA01E86E /* Encodable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Encodable.swift; sourceTree = "<group>"; }; 260004737C573A56FA01E86E /* Encodable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Encodable.swift; sourceTree = "<group>"; };
267BB1D5B08A9511F894CB57 /* PreviewTests.xctestplan */ = {isa = PBXFileReference; path = PreviewTests.xctestplan; sourceTree = "<group>"; }; 267BB1D5B08A9511F894CB57 /* PreviewTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = PreviewTests.xctestplan; sourceTree = "<group>"; };
26B0A96B8FE4849227945067 /* VoiceMessageRecorder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceMessageRecorder.swift; sourceTree = "<group>"; }; 26B0A96B8FE4849227945067 /* VoiceMessageRecorder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoiceMessageRecorder.swift; sourceTree = "<group>"; };
26EAAB54C6CE91D64B69A9F8 /* AppLockServiceProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLockServiceProtocol.swift; sourceTree = "<group>"; }; 26EAAB54C6CE91D64B69A9F8 /* AppLockServiceProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLockServiceProtocol.swift; sourceTree = "<group>"; };
2721D7B051F0159AA919DA05 /* RoomChangePermissionsScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChangePermissionsScreenViewModelProtocol.swift; sourceTree = "<group>"; }; 2721D7B051F0159AA919DA05 /* RoomChangePermissionsScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChangePermissionsScreenViewModelProtocol.swift; sourceTree = "<group>"; };
@@ -1341,7 +1342,7 @@
3558A15CFB934F9229301527 /* RestorationToken.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestorationToken.swift; sourceTree = "<group>"; }; 3558A15CFB934F9229301527 /* RestorationToken.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RestorationToken.swift; sourceTree = "<group>"; };
35AFCF4C05DEED04E3DB1A16 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; }; 35AFCF4C05DEED04E3DB1A16 /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/Localizable.strings; sourceTree = "<group>"; };
35FA991289149D31F4286747 /* UserPreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserPreference.swift; sourceTree = "<group>"; }; 35FA991289149D31F4286747 /* UserPreference.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserPreference.swift; sourceTree = "<group>"; };
36DA824791172B9821EACBED /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; }; 36DA824791172B9821EACBED /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
36FD673E24FBFCFDF398716A /* RoomMemberProxyMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMemberProxyMock.swift; sourceTree = "<group>"; }; 36FD673E24FBFCFDF398716A /* RoomMemberProxyMock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomMemberProxyMock.swift; sourceTree = "<group>"; };
376D941BF8BB294389C0DE24 /* MapTilerURLBuildersTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapTilerURLBuildersTests.swift; sourceTree = "<group>"; }; 376D941BF8BB294389C0DE24 /* MapTilerURLBuildersTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MapTilerURLBuildersTests.swift; sourceTree = "<group>"; };
37A243E04B58DC6E41FDCD82 /* EmojiItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiItem.swift; sourceTree = "<group>"; }; 37A243E04B58DC6E41FDCD82 /* EmojiItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiItem.swift; sourceTree = "<group>"; };
@@ -1674,7 +1675,7 @@
8D55702474F279D910D2D162 /* RoomStateEventStringBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomStateEventStringBuilder.swift; sourceTree = "<group>"; }; 8D55702474F279D910D2D162 /* RoomStateEventStringBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomStateEventStringBuilder.swift; sourceTree = "<group>"; };
8D8169443E5AC5FF71BFB3DB /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; }; 8D8169443E5AC5FF71BFB3DB /* cs */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = cs; path = cs.lproj/Localizable.strings; sourceTree = "<group>"; };
8DC2C9E0E15C79BBDA80F0A2 /* TimelineStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineStyle.swift; sourceTree = "<group>"; }; 8DC2C9E0E15C79BBDA80F0A2 /* TimelineStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineStyle.swift; sourceTree = "<group>"; };
8E088F2A1B9EC529D3221931 /* UITests.xctestplan */ = {isa = PBXFileReference; path = UITests.xctestplan; sourceTree = "<group>"; }; 8E088F2A1B9EC529D3221931 /* UITests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = UITests.xctestplan; sourceTree = "<group>"; };
8F21ED7205048668BEB44A38 /* AppActivityView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppActivityView.swift; sourceTree = "<group>"; }; 8F21ED7205048668BEB44A38 /* AppActivityView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppActivityView.swift; sourceTree = "<group>"; };
8F6210134203BE1F2DD5C679 /* RoomDirectoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomDirectoryCell.swift; sourceTree = "<group>"; }; 8F6210134203BE1F2DD5C679 /* RoomDirectoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomDirectoryCell.swift; sourceTree = "<group>"; };
8F841F219ACDFC1D3F42FEFB /* RoomChangeRolesScreenViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChangeRolesScreenViewModelTests.swift; sourceTree = "<group>"; }; 8F841F219ACDFC1D3F42FEFB /* RoomChangeRolesScreenViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomChangeRolesScreenViewModelTests.swift; sourceTree = "<group>"; };
@@ -1766,6 +1767,7 @@
A73A07BAEDD74C48795A996A /* AsyncSequence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncSequence.swift; sourceTree = "<group>"; }; A73A07BAEDD74C48795A996A /* AsyncSequence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AsyncSequence.swift; sourceTree = "<group>"; };
A7C4EA55DA62F9D0F984A2AE /* CollapsibleTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollapsibleTimelineItem.swift; sourceTree = "<group>"; }; A7C4EA55DA62F9D0F984A2AE /* CollapsibleTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CollapsibleTimelineItem.swift; sourceTree = "<group>"; };
A7D452AF7B5F7E3A0A7DB54C /* SessionVerificationScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionVerificationScreenViewModelProtocol.swift; sourceTree = "<group>"; }; A7D452AF7B5F7E3A0A7DB54C /* SessionVerificationScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionVerificationScreenViewModelProtocol.swift; sourceTree = "<group>"; };
A7DD6BA02BF3939800C9B260 /* ScaledOffsetModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScaledOffsetModifier.swift; sourceTree = "<group>"; };
A84D413BF49F0E980F010A6B /* LogViewerScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogViewerScreenCoordinator.swift; sourceTree = "<group>"; }; A84D413BF49F0E980F010A6B /* LogViewerScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogViewerScreenCoordinator.swift; sourceTree = "<group>"; };
A861DA5932B128FE1DCB5CE2 /* InviteUsersScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InviteUsersScreenCoordinator.swift; sourceTree = "<group>"; }; A861DA5932B128FE1DCB5CE2 /* InviteUsersScreenCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InviteUsersScreenCoordinator.swift; sourceTree = "<group>"; };
A8DF55467ED4CE76B7AE9A33 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = "<group>"; }; A8DF55467ED4CE76B7AE9A33 /* pt */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pt; path = pt.lproj/InfoPlist.strings; sourceTree = "<group>"; };
@@ -1830,7 +1832,7 @@
B53AC78E49A297AC1D72A7CF /* AppMediator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppMediator.swift; sourceTree = "<group>"; }; B53AC78E49A297AC1D72A7CF /* AppMediator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppMediator.swift; sourceTree = "<group>"; };
B590BD4507D4F0A377FDE01A /* LoadableAvatarImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadableAvatarImage.swift; sourceTree = "<group>"; }; B590BD4507D4F0A377FDE01A /* LoadableAvatarImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadableAvatarImage.swift; sourceTree = "<group>"; };
B5B243E7818E5E9F6A4EDC7A /* NoticeRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeRoomTimelineView.swift; sourceTree = "<group>"; }; B5B243E7818E5E9F6A4EDC7A /* NoticeRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeRoomTimelineView.swift; sourceTree = "<group>"; };
B61C339A2FDDBD067FF6635C /* ConfettiScene.scn */ = {isa = PBXFileReference; path = ConfettiScene.scn; sourceTree = "<group>"; }; B61C339A2FDDBD067FF6635C /* ConfettiScene.scn */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; path = ConfettiScene.scn; sourceTree = "<group>"; };
B6311F21F911E23BE4DF51B4 /* ReadMarkerRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadMarkerRoomTimelineView.swift; sourceTree = "<group>"; }; B6311F21F911E23BE4DF51B4 /* ReadMarkerRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReadMarkerRoomTimelineView.swift; sourceTree = "<group>"; };
B63B69F9A2BC74DD40DC75C8 /* AdvancedSettingsScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedSettingsScreenViewModel.swift; sourceTree = "<group>"; }; B63B69F9A2BC74DD40DC75C8 /* AdvancedSettingsScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedSettingsScreenViewModel.swift; sourceTree = "<group>"; };
B6404166CBF5CC88673FF9E2 /* RoomDetails.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomDetails.swift; sourceTree = "<group>"; }; B6404166CBF5CC88673FF9E2 /* RoomDetails.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomDetails.swift; sourceTree = "<group>"; };
@@ -1941,7 +1943,7 @@
CE47A97726F0675DEE387BF9 /* TypingIndicatorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypingIndicatorView.swift; sourceTree = "<group>"; }; CE47A97726F0675DEE387BF9 /* TypingIndicatorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TypingIndicatorView.swift; sourceTree = "<group>"; };
CEE0E6043EFCF6FD2A341861 /* TimelineReplyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineReplyView.swift; sourceTree = "<group>"; }; CEE0E6043EFCF6FD2A341861 /* TimelineReplyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimelineReplyView.swift; sourceTree = "<group>"; };
CEE20623EB4A9B88FB29F2BA /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/SAS.strings; sourceTree = "<group>"; }; CEE20623EB4A9B88FB29F2BA /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = fr.lproj/SAS.strings; sourceTree = "<group>"; };
CEE41494C837AA403A06A5D9 /* UnitTests.xctestplan */ = {isa = PBXFileReference; path = UnitTests.xctestplan; sourceTree = "<group>"; }; CEE41494C837AA403A06A5D9 /* UnitTests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = UnitTests.xctestplan; sourceTree = "<group>"; };
CF48AF076424DBC1615C74AD /* AuthenticationServiceProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationServiceProxy.swift; sourceTree = "<group>"; }; CF48AF076424DBC1615C74AD /* AuthenticationServiceProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthenticationServiceProxy.swift; sourceTree = "<group>"; };
D071F86CD47582B9196C9D16 /* UserDiscoverySection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDiscoverySection.swift; sourceTree = "<group>"; }; D071F86CD47582B9196C9D16 /* UserDiscoverySection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserDiscoverySection.swift; sourceTree = "<group>"; };
D086854995173E897F993C26 /* AdvancedSettingsScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedSettingsScreenViewModelProtocol.swift; sourceTree = "<group>"; }; D086854995173E897F993C26 /* AdvancedSettingsScreenViewModelProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedSettingsScreenViewModelProtocol.swift; sourceTree = "<group>"; };
@@ -2062,7 +2064,7 @@
ED044D00F2176681CC02CD54 /* HomeScreenRoomCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeScreenRoomCell.swift; sourceTree = "<group>"; }; ED044D00F2176681CC02CD54 /* HomeScreenRoomCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeScreenRoomCell.swift; sourceTree = "<group>"; };
ED1D792EB82506A19A72C8DE /* RoomTimelineItemProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomTimelineItemProtocol.swift; sourceTree = "<group>"; }; ED1D792EB82506A19A72C8DE /* RoomTimelineItemProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomTimelineItemProtocol.swift; sourceTree = "<group>"; };
ED33988DA4FD4FC666800106 /* SessionVerificationScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionVerificationScreenViewModel.swift; sourceTree = "<group>"; }; ED33988DA4FD4FC666800106 /* SessionVerificationScreenViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionVerificationScreenViewModel.swift; sourceTree = "<group>"; };
ED482057AE39D5C6D9C5F3D8 /* message.caf */ = {isa = PBXFileReference; path = message.caf; sourceTree = "<group>"; }; ED482057AE39D5C6D9C5F3D8 /* message.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = message.caf; sourceTree = "<group>"; };
ED60E4D2CD678E1EBF16F77A /* BlockedUsersScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockedUsersScreen.swift; sourceTree = "<group>"; }; ED60E4D2CD678E1EBF16F77A /* BlockedUsersScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlockedUsersScreen.swift; sourceTree = "<group>"; };
ED983D4DCA5AFA6E1ED96099 /* StateRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StateRoomTimelineView.swift; sourceTree = "<group>"; }; ED983D4DCA5AFA6E1ED96099 /* StateRoomTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StateRoomTimelineView.swift; sourceTree = "<group>"; };
EDAA4472821985BF868CC21C /* ServerSelectionViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerSelectionViewModelTests.swift; sourceTree = "<group>"; }; EDAA4472821985BF868CC21C /* ServerSelectionViewModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerSelectionViewModelTests.swift; sourceTree = "<group>"; };
@@ -2085,7 +2087,7 @@
F174A5627CDB3CAF280D1880 /* EmojiPickerScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerScreenModels.swift; sourceTree = "<group>"; }; F174A5627CDB3CAF280D1880 /* EmojiPickerScreenModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmojiPickerScreenModels.swift; sourceTree = "<group>"; };
F17EFA1D3D09FC2F9C5E1CB2 /* MediaProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaProvider.swift; sourceTree = "<group>"; }; F17EFA1D3D09FC2F9C5E1CB2 /* MediaProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaProvider.swift; sourceTree = "<group>"; };
F1B8500C152BC59445647DA8 /* UnsupportedRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnsupportedRoomTimelineItem.swift; sourceTree = "<group>"; }; F1B8500C152BC59445647DA8 /* UnsupportedRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnsupportedRoomTimelineItem.swift; sourceTree = "<group>"; };
F2D513D2477B57F90E98EEC0 /* portrait_test_video.mp4 */ = {isa = PBXFileReference; path = portrait_test_video.mp4; sourceTree = "<group>"; }; F2D513D2477B57F90E98EEC0 /* portrait_test_video.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = portrait_test_video.mp4; sourceTree = "<group>"; };
F2E4EF80DFB8FE7C4469B15D /* RoomDirectorySearchScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomDirectorySearchScreen.swift; sourceTree = "<group>"; }; F2E4EF80DFB8FE7C4469B15D /* RoomDirectorySearchScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RoomDirectorySearchScreen.swift; sourceTree = "<group>"; };
F31F59030205A6F65B057E1A /* MatrixEntityRegexTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MatrixEntityRegexTests.swift; sourceTree = "<group>"; }; F31F59030205A6F65B057E1A /* MatrixEntityRegexTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MatrixEntityRegexTests.swift; sourceTree = "<group>"; };
F348B5F2C12F9D4F4B4D3884 /* VideoRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoRoomTimelineItem.swift; sourceTree = "<group>"; }; F348B5F2C12F9D4F4B4D3884 /* VideoRoomTimelineItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoRoomTimelineItem.swift; sourceTree = "<group>"; };
@@ -4708,6 +4710,7 @@
E26C69EC1157D71CC61ADAE4 /* ScaledPaddingModifier.swift */, E26C69EC1157D71CC61ADAE4 /* ScaledPaddingModifier.swift */,
933B074F006F8E930DB98B4E /* TimelineMediaFrame.swift */, 933B074F006F8E930DB98B4E /* TimelineMediaFrame.swift */,
EFF7BF82A950B91BC5469E91 /* ViewFrameReader.swift */, EFF7BF82A950B91BC5469E91 /* ViewFrameReader.swift */,
A7DD6BA02BF3939800C9B260 /* ScaledOffsetModifier.swift */,
); );
path = Layout; path = Layout;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -5816,6 +5819,7 @@
6DC8E43BA04AC2AC4EB2EB97 /* AnalyticsPromptScreenModels.swift in Sources */, 6DC8E43BA04AC2AC4EB2EB97 /* AnalyticsPromptScreenModels.swift in Sources */,
DB65401349C143DFF883E2B0 /* AnalyticsPromptScreenViewModel.swift in Sources */, DB65401349C143DFF883E2B0 /* AnalyticsPromptScreenViewModel.swift in Sources */,
05BAB510CBC2ED35C154ADD0 /* AnalyticsPromptScreenViewModelProtocol.swift in Sources */, 05BAB510CBC2ED35C154ADD0 /* AnalyticsPromptScreenViewModelProtocol.swift in Sources */,
A7DD6BA12BF3939800C9B260 /* ScaledOffsetModifier.swift in Sources */,
3C73442084BF8A6939F0F80B /* AnalyticsService.swift in Sources */, 3C73442084BF8A6939F0F80B /* AnalyticsService.swift in Sources */,
020F7E70167FB2833266F2F0 /* AnalyticsSettingsScreen.swift in Sources */, 020F7E70167FB2833266F2F0 /* AnalyticsSettingsScreen.swift in Sources */,
95690DDD9D547D3D842ACBE3 /* AnalyticsSettingsScreenCoordinator.swift in Sources */, 95690DDD9D547D3D842ACBE3 /* AnalyticsSettingsScreenCoordinator.swift in Sources */,
@@ -6767,9 +6771,7 @@
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = "$(MARKETING_VERSION)"; MARKETING_VERSION = "$(MARKETING_VERSION)";
OTHER_SWIFT_FLAGS = ( OTHER_SWIFT_FLAGS = "-DIS_NSE";
"-DIS_NSE",
);
PRODUCT_BUNDLE_IDENTIFIER = "${BASE_BUNDLE_IDENTIFIER}.nse"; PRODUCT_BUNDLE_IDENTIFIER = "${BASE_BUNDLE_IDENTIFIER}.nse";
PRODUCT_DISPLAY_NAME = "$(APP_DISPLAY_NAME)"; PRODUCT_DISPLAY_NAME = "$(APP_DISPLAY_NAME)";
PRODUCT_NAME = NSE; PRODUCT_NAME = NSE;
@@ -6818,9 +6820,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = "$(MARKETING_VERSION)"; MARKETING_VERSION = "$(MARKETING_VERSION)";
OTHER_SWIFT_FLAGS = ( OTHER_SWIFT_FLAGS = "-DIS_MAIN_APP";
"-DIS_MAIN_APP",
);
PILLS_UT_TYPE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER).pills"; PILLS_UT_TYPE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER).pills";
PRODUCT_BUNDLE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER)"; PRODUCT_BUNDLE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(APP_NAME)"; PRODUCT_NAME = "$(APP_NAME)";
@@ -6846,9 +6846,7 @@
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = "$(MARKETING_VERSION)"; MARKETING_VERSION = "$(MARKETING_VERSION)";
OTHER_SWIFT_FLAGS = ( OTHER_SWIFT_FLAGS = "-DIS_MAIN_APP";
"-DIS_MAIN_APP",
);
PILLS_UT_TYPE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER).pills"; PILLS_UT_TYPE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER).pills";
PRODUCT_BUNDLE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER)"; PRODUCT_BUNDLE_IDENTIFIER = "$(BASE_BUNDLE_IDENTIFIER)";
PRODUCT_NAME = "$(APP_NAME)"; PRODUCT_NAME = "$(APP_NAME)";
@@ -7093,9 +7091,7 @@
"@executable_path/../../Frameworks", "@executable_path/../../Frameworks",
); );
MARKETING_VERSION = "$(MARKETING_VERSION)"; MARKETING_VERSION = "$(MARKETING_VERSION)";
OTHER_SWIFT_FLAGS = ( OTHER_SWIFT_FLAGS = "-DIS_NSE";
"-DIS_NSE",
);
PRODUCT_BUNDLE_IDENTIFIER = "${BASE_BUNDLE_IDENTIFIER}.nse"; PRODUCT_BUNDLE_IDENTIFIER = "${BASE_BUNDLE_IDENTIFIER}.nse";
PRODUCT_DISPLAY_NAME = "$(APP_DISPLAY_NAME)"; PRODUCT_DISPLAY_NAME = "$(APP_DISPLAY_NAME)";
PRODUCT_NAME = NSE; PRODUCT_NAME = NSE;
+5 -2
View File
@@ -46,6 +46,7 @@ enum UserAvatarSizeOnScreen {
case home case home
case settings case settings
case roomDetails case roomDetails
case dmDetails
case startChat case startChat
case memberDetails case memberDetails
case inviteUsers case inviteUsers
@@ -76,11 +77,13 @@ enum UserAvatarSizeOnScreen {
case .startChat: case .startChat:
return 36 return 36
case .memberDetails: case .memberDetails:
return 70 return 96
case .inviteUsers: case .inviteUsers:
return 56 return 56
case .editUserDetails: case .editUserDetails:
return 96 return 96
case .dmDetails:
return 75
} }
} }
} }
@@ -110,7 +113,7 @@ enum RoomAvatarSizeOnScreen {
case .home: case .home:
return 52 return 52
case .details: case .details:
return 70 return 96
case .joinRoom: case .joinRoom:
return 96 return 96
} }
@@ -0,0 +1,37 @@
//
// Copyright 2024 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
extension View {
func scaledOffset(x: CGFloat = 0, y: CGFloat = 0, relativeTo textStyle: Font.TextStyle = .body) -> some View {
modifier(ScaledOffsetModifier(x: x, y: y, relativeTo: textStyle))
}
}
private struct ScaledOffsetModifier: ViewModifier {
@ScaledMetric var x: CGFloat
@ScaledMetric var y: CGFloat
init(x: CGFloat, y: CGFloat, relativeTo textStyle: Font.TextStyle) {
_x = ScaledMetric(wrappedValue: x, relativeTo: textStyle)
_y = ScaledMetric(wrappedValue: y, relativeTo: textStyle)
}
func body(content: Content) -> some View {
content.offset(x: x, y: y)
}
}
@@ -17,31 +17,53 @@
import SwiftUI import SwiftUI
struct AvatarHeaderView<Footer: View>: View { struct AvatarHeaderView<Footer: View>: View {
private struct AvatarInfo {
let id: String
let name: String?
let avatarURL: URL?
init(from room: RoomDetails) {
id = room.id
name = room.name
avatarURL = room.avatarURL
}
init(from member: RoomMemberDetails) {
id = member.id
name = member.isBanned ? nil : member.name
avatarURL = member.isBanned ? nil : member.avatarURL
}
init(from user: UserProfileProxy) {
id = user.userID
name = user.displayName
avatarURL = user.avatarURL
}
}
private enum Badge: Hashable { private enum Badge: Hashable {
case encrypted(Bool) case encrypted(Bool)
case `public` case `public`
} }
let id: String private let mainAvatarInfo: AvatarInfo
let name: String? private let secondaryAvatarInfo: AvatarInfo?
let subtitle: String? private let subtitle: String?
let avatarURL: URL?
private let badges: [Badge] private let badges: [Badge]
let avatarSize: AvatarSize private let avatarSize: AvatarSize
let imageProvider: ImageProviderProtocol? private let imageProvider: ImageProviderProtocol?
var onAvatarTap: (() -> Void)? private var onAvatarTap: (() -> Void)?
@ViewBuilder var footer: () -> Footer @ViewBuilder private var footer: () -> Footer
init(room: RoomDetails, init(room: RoomDetails,
avatarSize: AvatarSize, avatarSize: AvatarSize,
imageProvider: ImageProviderProtocol? = nil, imageProvider: ImageProviderProtocol? = nil,
onAvatarTap: (() -> Void)? = nil, onAvatarTap: (() -> Void)? = nil,
@ViewBuilder footer: @escaping () -> Footer) { @ViewBuilder footer: @escaping () -> Footer) {
id = room.id mainAvatarInfo = .init(from: room)
name = room.name secondaryAvatarInfo = nil
subtitle = room.canonicalAlias subtitle = room.canonicalAlias
avatarURL = room.avatarURL
self.avatarSize = avatarSize self.avatarSize = avatarSize
self.imageProvider = imageProvider self.imageProvider = imageProvider
@@ -56,15 +78,31 @@ struct AvatarHeaderView<Footer: View>: View {
self.badges = badges self.badges = badges
} }
init(accountOwner: RoomMemberDetails,
dmRecipient: RoomMemberDetails,
imageProvider: ImageProviderProtocol? = nil,
onAvatarTap: (() -> Void)? = nil,
@ViewBuilder footer: @escaping () -> Footer) {
mainAvatarInfo = .init(from: dmRecipient)
secondaryAvatarInfo = .init(from: accountOwner)
subtitle = dmRecipient.isBanned ? nil : dmRecipient.name == nil ? nil : dmRecipient.id
avatarSize = .user(on: .dmDetails)
self.imageProvider = imageProvider
self.onAvatarTap = onAvatarTap
self.footer = footer
// In EL-X a DM is by definition always encrypted
badges = [.encrypted(true)]
}
init(member: RoomMemberDetails, init(member: RoomMemberDetails,
avatarSize: AvatarSize, avatarSize: AvatarSize,
imageProvider: ImageProviderProtocol? = nil, imageProvider: ImageProviderProtocol? = nil,
onAvatarTap: (() -> Void)? = nil, onAvatarTap: (() -> Void)? = nil,
@ViewBuilder footer: @escaping () -> Footer) { @ViewBuilder footer: @escaping () -> Footer) {
id = member.id mainAvatarInfo = .init(from: member)
name = member.isBanned ? nil : member.name secondaryAvatarInfo = nil
subtitle = member.isBanned ? nil : member.name == nil ? nil : member.id subtitle = member.isBanned ? nil : member.name == nil ? nil : member.id
avatarURL = member.isBanned ? nil : member.avatarURL
self.avatarSize = avatarSize self.avatarSize = avatarSize
self.imageProvider = imageProvider self.imageProvider = imageProvider
@@ -78,10 +116,9 @@ struct AvatarHeaderView<Footer: View>: View {
imageProvider: ImageProviderProtocol? = nil, imageProvider: ImageProviderProtocol? = nil,
onAvatarTap: (() -> Void)? = nil, onAvatarTap: (() -> Void)? = nil,
@ViewBuilder footer: @escaping () -> Footer) { @ViewBuilder footer: @escaping () -> Footer) {
id = user.userID mainAvatarInfo = .init(from: user)
name = user.displayName secondaryAvatarInfo = nil
subtitle = user.displayName == nil ? nil : user.userID subtitle = user.displayName == nil ? nil : user.userID
avatarURL = user.avatarURL
self.avatarSize = avatarSize self.avatarSize = avatarSize
self.imageProvider = imageProvider self.imageProvider = imageProvider
@@ -112,26 +149,66 @@ struct AvatarHeaderView<Footer: View>: View {
} }
} }
} }
@ViewBuilder
private var avatar: some View {
if let secondaryAvatarInfo {
ZStack {
LoadableAvatarImage(url: mainAvatarInfo.avatarURL,
name: mainAvatarInfo.name,
contentID: mainAvatarInfo.id,
avatarSize: avatarSize,
imageProvider: imageProvider)
.scaledFrame(size: 120, alignment: .topTrailing)
LoadableAvatarImage(url: secondaryAvatarInfo.avatarURL,
name: secondaryAvatarInfo.name,
contentID: secondaryAvatarInfo.id,
avatarSize: avatarSize,
imageProvider: imageProvider)
.mask {
Rectangle()
.fill(Color.white)
.overlay {
Circle()
.inset(by: -4)
.fill(Color.black)
.scaledOffset(x: 120 - avatarSize.value,
y: -120 + avatarSize.value)
}
.compositingGroup()
.luminanceToAlpha()
}
.scaledFrame(size: 120, alignment: .bottomLeading)
}
.scaledFrame(size: 120)
} else {
LoadableAvatarImage(url: mainAvatarInfo.avatarURL,
name: mainAvatarInfo.name,
contentID: mainAvatarInfo.id,
avatarSize: avatarSize,
imageProvider: imageProvider)
}
}
var body: some View { var body: some View {
VStack(spacing: 8.0) { VStack(spacing: 8.0) {
Button { Button {
onAvatarTap?() onAvatarTap?()
} label: { } label: {
LoadableAvatarImage(url: avatarURL, avatar
name: name,
contentID: id,
avatarSize: avatarSize,
imageProvider: imageProvider)
} }
.buttonStyle(.borderless) // Add a button style to stop the whole row being tappable. .buttonStyle(.borderless) // Add a button style to stop the whole row being tappable.
Text(name ?? id) Spacer()
.frame(height: 9)
Text(mainAvatarInfo.name ?? mainAvatarInfo.id)
.foregroundColor(.compound.textPrimary) .foregroundColor(.compound.textPrimary)
.font(.compound.headingLGBold) .font(.compound.headingMDBold)
.multilineTextAlignment(.center) .multilineTextAlignment(.center)
.textSelection(.enabled) .textSelection(.enabled)
if let subtitle { if let subtitle {
Text(subtitle) Text(subtitle)
.foregroundColor(.compound.textSecondary) .foregroundColor(.compound.textSecondary)
@@ -177,6 +254,20 @@ struct AvatarHeaderView_Previews: PreviewProvider, TestablePreview {
} }
.previewDisplayName("Room") .previewDisplayName("Room")
Form {
AvatarHeaderView(accountOwner: RoomMemberDetails(withProxy: RoomMemberProxyMock.mockMe), dmRecipient: RoomMemberDetails(withProxy: RoomMemberProxyMock.mockAlice),
imageProvider: MockMediaProvider()) {
HStack(spacing: 32) {
ShareLink(item: "test") {
Image(systemName: "square.and.arrow.up")
}
.buttonStyle(FormActionButtonStyle(title: "Test"))
}
.padding(.top, 32)
}
}
.previewDisplayName("DM")
VStack(spacing: 16) { VStack(spacing: 16) {
AvatarHeaderView(member: RoomMemberDetails(withProxy: RoomMemberProxyMock.mockAlice), AvatarHeaderView(member: RoomMemberDetails(withProxy: RoomMemberProxyMock.mockAlice),
avatarSize: .room(on: .details), avatarSize: .room(on: .details),
@@ -64,6 +64,7 @@ struct RoomDetailsScreenViewState: BindableState {
var bindings: RoomDetailsScreenViewStateBindings var bindings: RoomDetailsScreenViewStateBindings
var dmRecipient: RoomMemberDetails? var dmRecipient: RoomMemberDetails?
var accountOwner: RoomMemberDetails?
var shortcuts: [RoomDetailsScreenViewShortcut] { var shortcuts: [RoomDetailsScreenViewShortcut] {
var shortcuts: [RoomDetailsScreenViewShortcut] = [.mute] var shortcuts: [RoomDetailsScreenViewShortcut] = [.mute]
@@ -174,9 +174,11 @@ class RoomDetailsScreenViewModel: RoomDetailsScreenViewModelType, RoomDetailsScr
.receive(on: DispatchQueue.main) .receive(on: DispatchQueue.main)
.sink { [weak self, ownUserID = roomProxy.ownUserID] members in .sink { [weak self, ownUserID = roomProxy.ownUserID] members in
guard let self else { return } guard let self else { return }
let accountOwner = members.first(where: { $0.userID == ownUserID })
let dmRecipient = members.first(where: { $0.userID != ownUserID }) let dmRecipient = members.first(where: { $0.userID != ownUserID })
self.dmRecipient = dmRecipient self.dmRecipient = dmRecipient
self.state.dmRecipient = dmRecipient.map(RoomMemberDetails.init(withProxy:)) self.state.dmRecipient = dmRecipient.map(RoomMemberDetails.init(withProxy:))
self.state.accountOwner = accountOwner.map(RoomMemberDetails.init(withProxy:))
} }
.store(in: &cancellables) .store(in: &cancellables)
@@ -24,8 +24,10 @@ struct RoomDetailsScreen: View {
var body: some View { var body: some View {
Form { Form {
if let recipient = context.viewState.dmRecipient { if let recipient = context.viewState.dmRecipient,
dmHeaderSection(recipient: recipient) let accountOwner = context.viewState.accountOwner {
dmHeaderSection(accountOwner: accountOwner,
recipient: recipient)
} else { } else {
normalRoomHeaderSection normalRoomHeaderSection
} }
@@ -82,9 +84,9 @@ struct RoomDetailsScreen: View {
.accessibilityIdentifier(A11yIdentifiers.roomDetailsScreen.avatar) .accessibilityIdentifier(A11yIdentifiers.roomDetailsScreen.avatar)
} }
private func dmHeaderSection(recipient: RoomMemberDetails) -> some View { private func dmHeaderSection(accountOwner: RoomMemberDetails, recipient: RoomMemberDetails) -> some View {
AvatarHeaderView(member: recipient, AvatarHeaderView(accountOwner: accountOwner,
avatarSize: .user(on: .memberDetails), dmRecipient: recipient,
imageProvider: context.imageProvider) { imageProvider: context.imageProvider) {
context.send(viewAction: .displayAvatar) context.send(viewAction: .displayAvatar)
} footer: { } footer: {
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b05797848d320bcb43fba3afb6063ae215aa97d14c0bbd17588dc1050a004784
size 133370
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:e397b937f7f407afccd1b6b98e67ca3c15d743a607c370713f8486d7cf215fa3 oid sha256:ec2b1b617a403cd6e9022f1a25c7c98928db7f53551fc3ad79a2c55bf0e5efd0
size 74639 size 82388
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:98190b28f5a338df5835b3dd379e3ca34acb93fd6bbd3f31d0a8cca49205e595 oid sha256:32cc2748f76baf53c9381577b3df8ad94dc61a46381dc4d7b461230c6697f664
size 134967 size 155899
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1e7114ea0a72f99d269cf65e4f2901c84d0aed974bf00c83fd2866103723d984
size 136836
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:e397b937f7f407afccd1b6b98e67ca3c15d743a607c370713f8486d7cf215fa3 oid sha256:ec2b1b617a403cd6e9022f1a25c7c98928db7f53551fc3ad79a2c55bf0e5efd0
size 74639 size 82388
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:2fd3f5a82ad4646c292817e0cf8d952326e94bccf644e24587366cffeb7db137 oid sha256:1de78718ec47dc82b401bf585c9f81f908e1fc8726bddd398ccd3e28edb85501
size 142181 size 162473
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:15e6be4601c0e76ae48d1bd9fd686b84c88cebf442615ec68ab413651795a81f
size 80910
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:012ed47b68467b49ba5824c021f8b4ae8a0c2eea5dc5477f5b52ce69b185175b oid sha256:6a879da48969258931810b0b2810e2e1833328f55617a36898ae0ba4defb168d
size 51382 size 54981
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:3a0a8c2b9327fd2a01df57d134757f1cf2a197b94f12323c6c399732518fcfa3 oid sha256:9cfb47c1627fcf7416300c41e78f2e86a1512d81c5b6b574550c4999fe70d6a3
size 82683 size 100178
@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ef6435d13417dbe812914489ce47a35920c7c914c78703339124943406e84d36
size 84952
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:012ed47b68467b49ba5824c021f8b4ae8a0c2eea5dc5477f5b52ce69b185175b oid sha256:6a879da48969258931810b0b2810e2e1833328f55617a36898ae0ba4defb168d
size 51382 size 54981
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:2a361f5926d484a00558594fd4ee9d5f39b059136929a8f0a0a7fa762d863be8 oid sha256:736923ab372c79c459687628f2e96af88b2dfa62eaf014e6b9067471e9af671a
size 91565 size 107992
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:c3ac5f7cf5958fc660a67aabac54ed6ec45c8a0e1a49825c626c0dd855dce451 oid sha256:d49d3b73876e58c1cd7a5757a23cbe972004980c9b7705746fb3db26b63d6e06
size 115815 size 117989
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:3dca68909161f254aa2057dbd4c2b16cea1e273dc28d362af53e7b07201f7b4c oid sha256:ef5487e6e1e7a94102687349bb9189a1926eedda795fc46ddf95bdfcba8be880
size 107821 size 109487
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:b25b7fe9df93643a8e3026ddf4e87f65dafb014fff1541848f1fdb3187983929 oid sha256:7c3c24523ebcbc0c15137b41f7960001f85c7ddfa189d6a68de716068684f2a2
size 142066 size 144174
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:2825cd6e24399e45c6235ae98977ea0066faf41a60e9d00f82a3c19986d44606 oid sha256:37898b7bc588f531168db852d52e393e724c5e9f760fef8683ec85a166990701
size 128949 size 130555
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:ebc6b817dfa1d00ea2df807000b31ac6dde10b217ca993870ca35676fbd7f892 oid sha256:c800062819335af6e55e3b661f5c76538e3c20b239c7937a7a9aba8691723cd3
size 68317 size 71219
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:f91f9e4eba3cc887fd0af0855ce3cd871d6839ccaef0d8da81f58383b4efa7fc oid sha256:a0ccc26a675646e277748cbd7797b79a2b3f7c5ed94b894c469aad2c856e3f77
size 60760 size 62501
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:25ad8919a1ea2e61007ace8a390ded6473efcc89dd04814b2cd13d269839ab95 oid sha256:33c52148f1b70078396505f11dd560d329a59189e5c0c50dd4a17fd654be421e
size 92287 size 94761
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:882fe44b1504e8297b0ed3de7fd34ce085f61b42a5ef1809c8f15c0ebadcb8b8 oid sha256:7a0ce9766f211c60696efeb67c4cbe75ffcda25c28749d0005c76c53e9b6c6cd
size 77891 size 79601
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:6de10bafa31813e5bd32e8790c28c7244355c99d1ed48c70331fe2f0d3bfc387 oid sha256:eb8038b4ffe776a593c310719804456baadc6e9c1f21ffc6bc1436c2be523c0b
size 247191 size 248944
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:ff13a1c8939009d762fea6ad0c776b2a044283c37eaa516ef5c5bd1a22ddd96a oid sha256:8ad00c317df348df096ebf9e5c48dd8ac9041c54358758b427b89f7442c4c288
size 241769 size 239381
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:3475d5ab74583d37c51b196d16091eaeb2a081ba58c5c8fefcf03bf65bfbe656 oid sha256:8d6a438f6c2c6e334eb2d681d802919a3fabd11b89dd2d449104e02704dd658c
size 186863 size 178998
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:1f49ec404487e2d2d8470905f4186ac69f8a14452f157c071f2acb2f6eebdc1e oid sha256:a5776f33a3427c3a65d133648b4cf2397a2dde685635ae2f7169cb733683c3f6
size 305919 size 298400
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:e03ea7a2384db8095efeb014a4aeb8b671ba6acf277bef04c732b1001b0c79c0 oid sha256:2a19df3d8b55c61256d119402a3fecec14be20f74893cf048ce21d40a1c0288f
size 290833 size 286019
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:fd457f2402f743b89afaf8379cac76c493110bf4f4faaadcd0359cf00557db9b oid sha256:58cb6e23e75f9b2a18000a37ba097b292ee439362fb6e6f6ed7c670fee793db8
size 244043 size 230964
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:f626b25ce39b6126ea5b53b87e8086387e84ab781f659f957061c2f921a7c0e8 oid sha256:0333c461faf19c733f1a07d984f35906507bf2b92927b81edabd2826d7c29e92
size 184479 size 187332
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:2fa6fe474fbb30b1528e3ba9614f4775f5324c142bd0ec6f3539847a161497d7 oid sha256:36285a4fd7f8583251fabb895d4bcc8e10e26342845ec0a618e87e16918bc27e
size 165013 size 163131
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:710f3ab2b5a85185ab8382ef65bfc6412ae746dcfb15662401e2c3d376a18acc oid sha256:5051aa4244a1c98404f21bc4cbc60e5358ba3dc553af7a64ad8d6b34a834a03e
size 113489 size 114171
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:7131df0a20e4b6971b2bdef13fc0796fd1cffb37bd4ff4309aa17bd771dfa3a3 oid sha256:83399ad21abc75c45ee2ee2e65d0f426c82897588fba7893dc2788f3371ffacb
size 226105 size 199963
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:c503cb74577e0fa802b48fa82f8b599e9aa8d470f2ea5f9bb732e548d53d381d oid sha256:69c6e4054022e044f849f735e574947327f68601fec94e1c693b9826806e8d39
size 205753 size 200961
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:19774b3420c4acdc4ba2ddc4312e5dfdab8bdd3c8e5ee2fefa828df4b2796eb7 oid sha256:d30a989ec468d8587818a4c81bfb820de38e05ad735ed22f823e5d51bafc2eab
size 162838 size 164021
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:b59dc444120d040baba15dc5322e00acf10c8afeba97fddbae2aea31a88ff7bf oid sha256:2e20363888f626702fdd56e4f5206e1d06667d5f50e55b0816adb51408a342a8
size 120302 size 140420
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:e69ee9a2b3e21dce64a57d5664173480b49b49e7e70952ccfb8a74837e7e4297 oid sha256:4baa5757850977a5911e29db9cd1f209c729b5e9dd4cfc6adf75ccf33940320a
size 127058 size 126847
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:00ae153e9298e2171ed34572aa11db1e82faca3a2654c7fd3f76c0cf8509369e oid sha256:d1318f911411fc8849aafb8435fdbd483e97c9474287e8755dbe7b3707efda5b
size 143045 size 163258
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:08b1f2e462d2b3fee6ef422fae0552195efb849dab814174d506f98a7a71a9fb oid sha256:d7fc0b0ae96807fe2cc08467d38d9282ad5495d2841c87219074219c4f5544c0
size 124405 size 144577
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:f47d3d5d886babe9176b2e1641eedd4102525648fe2e04e33db7db587b31d8d9 oid sha256:30f3634ff5b83b651fd5c6ac309828d64a32d221b16bb82fe2ecb693cb9a9e6a
size 142258 size 141822
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:41d004bf2eead94cd40c0ffbb344bc5b471a5aa811a4164b3c5c7513acbb28ad oid sha256:135e4060f573e0eb0a6291241334b546fc02b0c64b2a78795b22a6b4b07a1900
size 158265 size 178261
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:f6f8727b80f45320b3e11a836115a0ee7236a6cf709833b364718679c574cdc5 oid sha256:c2b50b5fcb606cc5c310d526ada37ccb84b2d24d5a7a8a939e2b225f311c8bb8
size 68755 size 85773
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:2c0a42eccfde2736e4ba39ecd0f130a5eea4aa08b824f21eef4d2edc4246b3a0 oid sha256:28971744ea8ee7c3e119ae71c4c6c92273eea9fd29e3e87fda3610f55acd0c34
size 75605 size 76563
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:e3962a70728c6f3c4fd976e3d7d83badfe618094a13fa5f824b93a0bd9836ad3 oid sha256:6fce0791ae4d0a1373701b48173b7af0fa54fc1a4c83f5822a91044f1904c253
size 88597 size 106476
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:17b2d906a1f52c2729b3c0f08f0abba2d1aaa188661df2c559ff6256bf2a6714 oid sha256:f09fc8a52453c43b804750afe52f460b3b8b1a2db4a6cc0a7f76c15c4b7765fb
size 71214 size 88536
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:9552cad4fffb2f1ab0855ecfaa7b1f4968cb83a4501961665cb62f3988fc7054 oid sha256:cff120cdfb32ba0cba9881d71adf855160c8627773f4e4e93181c72a163589b8
size 90543 size 93169
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:4404ca231f490c501c7f134a57757fa7822ceb1a627a50316de829e24c72b7dc oid sha256:248b04045d89792f99ccda810fdb03e3a5a6dfb5e3bb6abce35efa9f2d3a6872
size 103982 size 123613
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:70ef1b8617185a5f4747db8870ae50299a44824dd8cac1f59fcdfc4d20290f7d oid sha256:ee28e239d993ff1999a1acb76f45f88db46382ad8d164c59092c2ab2b22d5f34
size 106897 size 106103
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:2c94184fe1c1bf1d053b420b79bab37a1050df5fd86b5f438ff1cb020716678b oid sha256:82cf417f5ea5d70f6ee5c301a8c0290d9f436b78fa5ba8a19f92a344fd706453
size 153380 size 173069
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:255f9bff986dc36785e0c57d41112605bdb5dd9494a82af74edc713329d9f2b6 oid sha256:49d8c5daa37c3495483fa64bb0e1511c9171da1c80f90707e0e4ba5ae5223e5e
size 111711 size 110866
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:e3a660899dfcda8734a24583a3ee8160ab560e879b4a460083300835360e8428 oid sha256:978e08d2efef242270d0bca7a89aebc96bdf69e2fd8843521fc519a8d712c829
size 176200 size 196066
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:ab0982ace6fae52f6a7c7c7b319f8c9d94aca0851fcbbb8517fe49a9bbe3dc4d oid sha256:f0171f233272d226cd8d99ca39cfee3c2b4ced318da9017205b8eeed9b1f83c4
size 58017 size 55866
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:ddfd56aa2b0dfcb356b94bf715be7fbae536bb7673c55604802a0e95dbd71dea oid sha256:3a24935cf5509876304a5ae240512b5b66e61fd3d87686d18a870cda9d0876e2
size 95840 size 111951
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:7cabf2509c57ee81dfc2fcf04dd0b1acaa742d6fb7dfff0bb73d93b9f98d1ffa oid sha256:94409904b172e7aa78a04e7bf91b56280394e564c4fe42853712876b8f56c0f5
size 63516 size 61217
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:1d90efe7ab2868339a1141fe564f5ef64cfb3f837fe6a86bfa379d86ea731901 oid sha256:c8aa97b192af42d9d4424252b7a92d9d9611820710fcadc0aabcb5d7c68da9a8
size 122725 size 140889
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:ca1cdb9c0f157fe4869240c986f884eebd0b5205812734e07ee034f392a4ca17 oid sha256:8b5f1a0cb63dc83eba22e432f45bd2d5017c6ab6459238e3e7383eaf0f58b558
size 103673 size 104265
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:468214e5bb420cc0536b2b913fc3d45c8fcf795b45a4238a9bd54b9d69036b5b oid sha256:df81dad8956cc471ffe80d5435836f11f67e5fc24ce88e6ef1df592d2363faf9
size 116265 size 116731
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:248b93a7d9532693c451c0f7ffe0597b580f143ff9cc5e5ed638416d51d1f8e6 oid sha256:93617c6dfc12e55ddd7ac020e03b5579d95ff581b9b5d9dd3ea77e403f155313
size 107933 size 108532
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:624bf89fe59faf35f169a18c06cf8985eda4d332c61dacd294cdcafb3a635b1a oid sha256:d967afaa59121a65f40f821216104cb36c9738dacada179c3dd9bbd0cf69cfa5
size 125279 size 125087
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:9a08d07335e8af83c60875a53eda8da7c2e06591cdbe00a2447841c04eec982d oid sha256:4576f9bd4ace37eaf5dbbdb2eb346bac1842de90f357a8b327bb6bf1df7ddd69
size 55310 size 56853
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:61eebfd560410b170993785e0aae41d0e1560e1d0ee6576aadc873329674b30e oid sha256:41dbe4f97f34a7ea843378b3281ff7f4cb069649ce978d652a20731ec0db7b88
size 66231 size 67742
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:4b86bd4439129b9132ad9a317c775b7758171d9391017fad47bc7e42173d93b8 oid sha256:3f66517dbcbe2240838117773697f62ec7ee1d649241b34b680a0a710efea7c9
size 58167 size 59684
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:759ff727547a456b9d1a11b980351afa0fc0e353a167f90855d03d5c4b676807 oid sha256:77d9ae4913749a62e03cdddf34065b54adf76c2fd5b00c7cfe6571f38d66febd
size 75796 size 77761
+1
View File
@@ -0,0 +1 @@
DM Details UI has been updated.