From a98a02d865e8729908866441b71e813f34ba6c41 Mon Sep 17 00:00:00 2001 From: Egor Egorov Date: Wed, 11 Sep 2024 11:36:06 +0300 Subject: [PATCH] Revert breaking style changes Since the breaking style changes were made in minor 2.7.0 release and caused problems for integrators, it was decided to revert these changes back, include it into 2.8.0 and re-mark as unavailable in 3.0.0 MOB-3570 --- GliaWidgets.xcodeproj/project.pbxproj | 122 ++++++-- .../Theme/Chat/Theme.ChoiceCardStyle.swift | 61 ++++ .../Chat/Theme.OperatorChatMessageStyle.swift | 21 ++ .../Theme/Chat/Theme.SystemMessageStyle.swift | 20 ++ .../Chat/Theme.VisitorChatMessageStyle.swift | 25 ++ GliaWidgets/Sources/Unavailable.swift | 265 ------------------ .../View/Chat/ChatStyle.Deprecated.swift | 117 ++++++++ .../View/Chat/Message/ChatMessageStyle.swift | 34 +++ .../ChoiceCardStyle.Accessibility.swift | 16 ++ .../Content/ChoiceCard/ChoiceCardStyle.swift | 169 +++++++++++ .../Message/OperatorChatMessageStyle.swift | 85 ++++++ .../Chat/Message/SystemMessageStyle.swift | 70 +++++ ...isitorChatMessageStyle.Accessibility.swift | 16 ++ .../Message/VisitorChatMessageStyle.swift | 124 ++++++++ 14 files changed, 861 insertions(+), 284 deletions(-) create mode 100644 GliaWidgets/Sources/View/Chat/ChatStyle.Deprecated.swift create mode 100644 GliaWidgets/Sources/View/Chat/Message/ChatMessageStyle.swift create mode 100644 GliaWidgets/Sources/View/Chat/Message/Content/ChoiceCard/ChoiceCardStyle.Accessibility.swift create mode 100644 GliaWidgets/Sources/View/Chat/Message/Content/ChoiceCard/ChoiceCardStyle.swift create mode 100644 GliaWidgets/Sources/View/Chat/Message/OperatorChatMessageStyle.swift create mode 100644 GliaWidgets/Sources/View/Chat/Message/SystemMessageStyle.swift create mode 100644 GliaWidgets/Sources/View/Chat/Message/VisitorChatMessageStyle.Accessibility.swift create mode 100644 GliaWidgets/Sources/View/Chat/Message/VisitorChatMessageStyle.swift diff --git a/GliaWidgets.xcodeproj/project.pbxproj b/GliaWidgets.xcodeproj/project.pbxproj index 925684327..197e6ce00 100644 --- a/GliaWidgets.xcodeproj/project.pbxproj +++ b/GliaWidgets.xcodeproj/project.pbxproj @@ -52,6 +52,8 @@ 1A2DA72D25EF9DD900032611 /* FileUpload.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2DA72C25EF9DD900032611 /* FileUpload.swift */; }; 1A2DA73125EFA77E00032611 /* FileUploader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2DA73025EFA77E00032611 /* FileUploader.swift */; }; 1A2DA73B25EFC00500032611 /* FileUploadListStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A2DA73A25EFC00500032611 /* FileUploadListStyle.swift */; }; + 1A38A8A8258B652B0089DE7B /* OperatorChatMessageStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A38A8A7258B652B0089DE7B /* OperatorChatMessageStyle.swift */; }; + 1A38A8AC258B65D00089DE7B /* ChatMessageStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A38A8AB258B65D00089DE7B /* ChatMessageStyle.swift */; }; 1A38A8BA258B94D60089DE7B /* ImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A38A8B9258B94D60089DE7B /* ImageView.swift */; }; 1A4674A725E905AC0078FA1C /* AttachmentSourceListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4674A625E905AC0078FA1C /* AttachmentSourceListView.swift */; }; 1A4674AC25E905D00078FA1C /* AttachmentSourceItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4674AB25E905D00078FA1C /* AttachmentSourceItemView.swift */; }; @@ -65,6 +67,7 @@ 1A475BB725DE833200296D55 /* BadgeStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A475BB625DE833200296D55 /* BadgeStyle.swift */; }; 1A475BBC25DFA10100296D55 /* UnreadMessagesHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A475BBB25DFA10100296D55 /* UnreadMessagesHandler.swift */; }; 1A4AD3AF256D283700468BFB /* ChatMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4AD3AE256D283700468BFB /* ChatMessageView.swift */; }; + 1A4AD3B3256D2A7600468BFB /* VisitorChatMessageStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4AD3B2256D2A7600468BFB /* VisitorChatMessageStyle.swift */; }; 1A4AD3BE256D37FD00468BFB /* UITableView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4AD3BD256D37FD00468BFB /* UITableView+Extensions.swift */; }; 1A4AD3C1256E74C600468BFB /* ThemeFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4AD3C0256E74C600468BFB /* ThemeFont.swift */; }; 1A4AD3C4256E7A0C00468BFB /* ThemeFontStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4AD3C3256E7A0C00468BFB /* ThemeFontStyle.swift */; }; @@ -196,6 +199,7 @@ 3189DD9629E4331200D68E9F /* SecureConversations.WelcomeViewModel.Mock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3189DD9529E4331200D68E9F /* SecureConversations.WelcomeViewModel.Mock.swift */; }; 3197F7AD29E6A5C8008EE9F7 /* SecureConversations.FileUploadListView.Mock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3197F7AC29E6A5C8008EE9F7 /* SecureConversations.FileUploadListView.Mock.swift */; }; 3197F7AF29E95527008EE9F7 /* SystemMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3197F7AE29E95527008EE9F7 /* SystemMessageView.swift */; }; + 3197F7B129E958F4008EE9F7 /* SystemMessageStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3197F7B029E958F4008EE9F7 /* SystemMessageStyle.swift */; }; 3197F7B429F7C26A008EE9F7 /* SecureConversations.ChatWithTranscriptViewModel.Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3197F7B329F7C26A008EE9F7 /* SecureConversations.ChatWithTranscriptViewModel.Hashable.swift */; }; 3197F7B629F7C2E5008EE9F7 /* SecureConversations.SecureChatModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3197F7B529F7C2E5008EE9F7 /* SecureConversations.SecureChatModel.swift */; }; 3197F7B829F7C318008EE9F7 /* SecureConversations.CommonEngagementModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3197F7B729F7C318008EE9F7 /* SecureConversations.CommonEngagementModel.swift */; }; @@ -369,6 +373,7 @@ 845A28FC28AFF092008558EA /* URLScheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845A28FB28AFF092008558EA /* URLScheme.swift */; }; 845E2F6C2837EF2E00C04D56 /* FilePreviewStyle.Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845E2F6B2837EF2E00C04D56 /* FilePreviewStyle.Accessibility.swift */; }; 845E2F6E283BD69B00C04D56 /* ChatTextContentStyle.Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845E2F6D283BD69B00C04D56 /* ChatTextContentStyle.Accessibility.swift */; }; + 845E2F70283CF94100C04D56 /* VisitorChatMessageStyle.Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845E2F6F283CF94100C04D56 /* VisitorChatMessageStyle.Accessibility.swift */; }; 845E2F72283D068000C04D56 /* HeaderStyle.Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845E2F71283D068000C04D56 /* HeaderStyle.Accessibility.swift */; }; 845E2F74283D43FA00C04D56 /* AlertStyle.Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845E2F73283D43FA00C04D56 /* AlertStyle.Accessibility.swift */; }; 845E2F76283D48BC00C04D56 /* AttachmentSourceItemStyle.Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 845E2F75283D48BC00C04D56 /* AttachmentSourceItemStyle.Accessibility.swift */; }; @@ -427,6 +432,7 @@ 8491AF1D2A7D01BF00CC3E72 /* Theme.ChatMessageStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8491AF1C2A7D01BF00CC3E72 /* Theme.ChatMessageStyle.swift */; }; 8491AF1F2A7D027D00CC3E72 /* Theme.ChatTextContentStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8491AF1E2A7D027D00CC3E72 /* Theme.ChatTextContentStyle.swift */; }; 8491AF212A7D1F7900CC3E72 /* ChatView.GvaGallery.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8491AF202A7D1F7900CC3E72 /* ChatView.GvaGallery.swift */; }; + 8491AF232A8A3EA800CC3E72 /* ChatStyle.Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8491AF222A8A3EA800CC3E72 /* ChatStyle.Deprecated.swift */; }; 8491AF272A8E3F6A00CC3E72 /* CGColor+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8491AF262A8E3F6A00CC3E72 /* CGColor+Extensions.swift */; }; 8491AF2A2A9394D000CC3E72 /* DeeplinkService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8491AF292A9394D000CC3E72 /* DeeplinkService.swift */; }; 8491AF2E2A93975100CC3E72 /* ConfigurationDeeplinkHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8491AF2D2A93975100CC3E72 /* ConfigurationDeeplinkHandler.swift */; }; @@ -528,6 +534,7 @@ 9AB196EA27C5390100FD60AB /* ChatAttachment.Mock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AB196E927C5390100FD60AB /* ChatAttachment.Mock.swift */; }; 9AB3401327F71D5D006E0FE2 /* BubbleViewVoiceOverTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AB3401227F71D5D006E0FE2 /* BubbleViewVoiceOverTests.swift */; }; 9AB3401527F724BC006E0FE2 /* CallStyle.Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AB3401427F724BC006E0FE2 /* CallStyle.Accessibility.swift */; }; + 9AB3401727F74D66006E0FE2 /* ChoiceCardStyle.Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AB3401627F74D66006E0FE2 /* ChoiceCardStyle.Accessibility.swift */; }; 9AB3401927FB2F2A006E0FE2 /* UnreadMessageIndicatorStyle.Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AB3401827FB2F2A006E0FE2 /* UnreadMessageIndicatorStyle.Accessibility.swift */; }; 9AB3401B27FB4720006E0FE2 /* OperatorTypingIndicatorStyle.Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AB3401A27FB4720006E0FE2 /* OperatorTypingIndicatorStyle.Accessibility.swift */; }; 9AB3401D27FB4F3C006E0FE2 /* ConnectOperatorStyle.Accessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AB3401C27FB4F3C006E0FE2 /* ConnectOperatorStyle.Accessibility.swift */; }; @@ -873,24 +880,35 @@ C0D6C9F72C0D2F6D00D4709B /* AlertPlacement.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6C9F62C0D2F6D00D4709B /* AlertPlacement.swift */; }; C0D6C9FB2C0D2F9A00D4709B /* AlertInputType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6C9FA2C0D2F9A00D4709B /* AlertInputType.swift */; }; C0D6CA002C106A1F00D4709B /* AlertManager.Failing.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6C9FF2C106A1F00D4709B /* AlertManager.Failing.swift */; }; - C0D6CA052C172F8F00D4709B /* CallCoordinator.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA042C172F8F00D4709B /* CallCoordinator.Environment.swift */; }; - C0D6CA072C1843A900D4709B /* EngagementViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA062C1843A900D4709B /* EngagementViewController.Environment.swift */; }; - C0D6CA092C18451800D4709B /* CallViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA082C18451800D4709B /* CallViewController.Environment.swift */; }; + C0D6CA232C1861F400D4709B /* VideoCallView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA222C1861F400D4709B /* VideoCallView.Environment.swift */; }; + C0D6CA3D2C19A82100D4709B /* VideoCallViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA3C2C19A82100D4709B /* VideoCallViewController.Environment.swift */; }; + C0D6CA0B2C18472400D4709B /* SecureConversations.Coordinator.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA0A2C18472400D4709B /* SecureConversations.Coordinator.Environment.swift */; }; + C0D6CA0F2C184AB700D4709B /* SecureConversations.WelcomeViewModel.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA0E2C184AB700D4709B /* SecureConversations.WelcomeViewModel.Environment.swift */; }; + C0D6CA112C184CCA00D4709B /* SecureConversations.WelcomeViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA102C184CCA00D4709B /* SecureConversations.WelcomeViewController.Environment.swift */; }; + C0D6CA132C184DFF00D4709B /* FileDownloader.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA122C184DFF00D4709B /* FileDownloader.Environment.swift */; }; C0D6CA0B2C18472400D4709B /* SecureConversations.Coordinator.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA0A2C18472400D4709B /* SecureConversations.Coordinator.Environment.swift */; }; - C0D6CA0D2C1848E700D4709B /* GliaViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA0C2C1848E700D4709B /* GliaViewController.Environment.swift */; }; C0D6CA0F2C184AB700D4709B /* SecureConversations.WelcomeViewModel.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA0E2C184AB700D4709B /* SecureConversations.WelcomeViewModel.Environment.swift */; }; C0D6CA112C184CCA00D4709B /* SecureConversations.WelcomeViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA102C184CCA00D4709B /* SecureConversations.WelcomeViewController.Environment.swift */; }; C0D6CA132C184DFF00D4709B /* FileDownloader.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA122C184DFF00D4709B /* FileDownloader.Environment.swift */; }; - C0D6CA152C184F1900D4709B /* SecureConversations.MessagesWithUnreadCountLoader.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA142C184F1900D4709B /* SecureConversations.MessagesWithUnreadCountLoader.Environment.swift */; }; C0D6CA172C18584E00D4709B /* SecureConversations.WelcomeView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA162C18584E00D4709B /* SecureConversations.WelcomeView.Environment.swift */; }; C0D6CA192C18590400D4709B /* UserImageView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA182C18590400D4709B /* UserImageView.Environment.swift */; }; + C0D6CA052C172F8F00D4709B /* CallCoordinator.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA042C172F8F00D4709B /* CallCoordinator.Environment.swift */; }; + C0D6CA072C1843A900D4709B /* EngagementViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA062C1843A900D4709B /* EngagementViewController.Environment.swift */; }; + C0D6CA092C18451800D4709B /* CallViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA082C18451800D4709B /* CallViewController.Environment.swift */; }; C0D6CA1B2C185BDE00D4709B /* EngagementView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA1A2C185BDE00D4709B /* EngagementView.Environment.swift */; }; C0D6CA1D2C185D2900D4709B /* CallView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA1C2C185D2900D4709B /* CallView.Environment.swift */; }; + C0D6CA0D2C1848E700D4709B /* GliaViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA0C2C1848E700D4709B /* GliaViewController.Environment.swift */; }; C0D6CA1F2C185E3500D4709B /* BubbleView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA1E2C185E3500D4709B /* BubbleView.Environment.swift */; }; C0D6CA212C185F1000D4709B /* AlertTypeComposer.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA202C185F1000D4709B /* AlertTypeComposer.Environment.swift */; }; C0D6CA232C1861F400D4709B /* VideoCallView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA222C1861F400D4709B /* VideoCallView.Environment.swift */; }; C0D6CA252C1862C900D4709B /* AlertManager.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA242C1862C900D4709B /* AlertManager.Environment.swift */; }; C0D6CA272C18743E00D4709B /* CallDurationCounter.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA262C18743E00D4709B /* CallDurationCounter.Environment.swift */; }; + C0D6CA3F2C19A8DA00D4709B /* SecureConversations.FileUploadView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA3E2C19A8DA00D4709B /* SecureConversations.FileUploadView.Environment.swift */; }; + C0D6CA412C19A97100D4709B /* SecureConversations.FileUploadListView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA402C19A97100D4709B /* SecureConversations.FileUploadListView.Environment.swift */; }; + C0D6CA3F2C19A8DA00D4709B /* SecureConversations.FileUploadView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA3E2C19A8DA00D4709B /* SecureConversations.FileUploadView.Environment.swift */; }; + C0D6CA412C19A97100D4709B /* SecureConversations.FileUploadListView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA402C19A97100D4709B /* SecureConversations.FileUploadListView.Environment.swift */; }; + C0D6CA432C19AA0900D4709B /* SecureConversations.MessageTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA422C19AA0900D4709B /* SecureConversations.MessageTextView.swift */; }; + C0D6CA452C19AA8000D4709B /* SecureConversations.MessageTextView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA442C19AA8000D4709B /* SecureConversations.MessageTextView.Environment.swift */; }; C0D6CA292C199A4700D4709B /* UnreadMessageIndicatorView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA282C199A4700D4709B /* UnreadMessageIndicatorView.Environment.swift */; }; C0D6CA2B2C19A0E800D4709B /* OperatorChatMessageView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA2A2C19A0E800D4709B /* OperatorChatMessageView.Environment.swift */; }; C0D6CA2D2C19A19000D4709B /* ChoiceCardView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA2C2C19A19000D4709B /* ChoiceCardView.Environment.swift */; }; @@ -901,26 +919,41 @@ C0D6CA372C19A4EB00D4709B /* GvaPersistentButtonView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA362C19A4EB00D4709B /* GvaPersistentButtonView.Environment.swift */; }; C0D6CA392C19A57200D4709B /* ChatMessageEntryView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA382C19A57200D4709B /* ChatMessageEntryView.Environment.swift */; }; C0D6CA3B2C19A61900D4709B /* ChatMessageView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA3A2C19A61900D4709B /* ChatMessageView.Environment.swift */; }; - C0D6CA3D2C19A82100D4709B /* VideoCallViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA3C2C19A82100D4709B /* VideoCallViewController.Environment.swift */; }; + C0D6CA272C18743E00D4709B /* CallDurationCounter.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA262C18743E00D4709B /* CallDurationCounter.Environment.swift */; }; + C0D6CA472C19B35B00D4709B /* BubbleWindow.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA462C19B35B00D4709B /* BubbleWindow.Environment.swift */; }; + C0D6CA0B2C18472400D4709B /* SecureConversations.Coordinator.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA0A2C18472400D4709B /* SecureConversations.Coordinator.Environment.swift */; }; + C0D6CA0F2C184AB700D4709B /* SecureConversations.WelcomeViewModel.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA0E2C184AB700D4709B /* SecureConversations.WelcomeViewModel.Environment.swift */; }; + C0D6CA112C184CCA00D4709B /* SecureConversations.WelcomeViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA102C184CCA00D4709B /* SecureConversations.WelcomeViewController.Environment.swift */; }; + C0D6CA152C184F1900D4709B /* SecureConversations.MessagesWithUnreadCountLoader.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA142C184F1900D4709B /* SecureConversations.MessagesWithUnreadCountLoader.Environment.swift */; }; + C0D6CA172C18584E00D4709B /* SecureConversations.WelcomeView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA162C18584E00D4709B /* SecureConversations.WelcomeView.Environment.swift */; }; C0D6CA3F2C19A8DA00D4709B /* SecureConversations.FileUploadView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA3E2C19A8DA00D4709B /* SecureConversations.FileUploadView.Environment.swift */; }; C0D6CA412C19A97100D4709B /* SecureConversations.FileUploadListView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA402C19A97100D4709B /* SecureConversations.FileUploadListView.Environment.swift */; }; C0D6CA432C19AA0900D4709B /* SecureConversations.MessageTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA422C19AA0900D4709B /* SecureConversations.MessageTextView.swift */; }; C0D6CA452C19AA8000D4709B /* SecureConversations.MessageTextView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA442C19AA8000D4709B /* SecureConversations.MessageTextView.Environment.swift */; }; - C0D6CA472C19B35B00D4709B /* BubbleWindow.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA462C19B35B00D4709B /* BubbleWindow.Environment.swift */; }; + C0D6CA532C19BC0300D4709B /* FilePreviewView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA522C19BC0300D4709B /* FilePreviewView.Environment.swift */; }; + C0D6CA552C19BCDB00D4709B /* SecureConversations.FilePreviewView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA542C19BCDB00D4709B /* SecureConversations.FilePreviewView.Environment.swift */; }; + C0D6CA5B2C19BF1D00D4709B /* SecureConversations.ConfirmationViewModel.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA5A2C19BF1D00D4709B /* SecureConversations.ConfirmationViewModel.Environment.swift */; }; + C0D6CA5F2C19C34F00D4709B /* ChatFileDownloadContentView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA5E2C19C34F00D4709B /* ChatFileDownloadContentView.Environment.swift */; }; C0D6CA492C19B64700D4709B /* ImageView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA482C19B64700D4709B /* ImageView.Environment.swift */; }; C0D6CA4B2C19B6D100D4709B /* GvaGalleryListView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA4A2C19B6D100D4709B /* GvaGalleryListView.Environment.swift */; }; C0D6CA4D2C19B86000D4709B /* OnHoldOverlayView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA4C2C19B86000D4709B /* OnHoldOverlayView.Environment.swift */; }; - C0D6CA4F2C19B9A300D4709B /* GliaPresenter.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA4E2C19B9A300D4709B /* GliaPresenter.Environment.swift */; }; - C0D6CA512C19BB5600D4709B /* SurveyViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA502C19BB5600D4709B /* SurveyViewController.Environment.swift */; }; + C0D6CA5D2C19C07200D4709B /* ConnectOperatorView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA5C2C19C07200D4709B /* ConnectOperatorView.Environment.swift */; }; + C0D6CA5F2C19C34F00D4709B /* ChatFileDownloadContentView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA5E2C19C34F00D4709B /* ChatFileDownloadContentView.Environment.swift */; }; C0D6CA532C19BC0300D4709B /* FilePreviewView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA522C19BC0300D4709B /* FilePreviewView.Environment.swift */; }; C0D6CA552C19BCDB00D4709B /* SecureConversations.FilePreviewView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA542C19BCDB00D4709B /* SecureConversations.FilePreviewView.Environment.swift */; }; C0D6CA572C19BDCD00D4709B /* FilePickerViewModel.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA562C19BDCD00D4709B /* FilePickerViewModel.Environment.swift */; }; C0D6CA592C19BE9D00D4709B /* FilePickerController.Envrionment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA582C19BE9D00D4709B /* FilePickerController.Envrionment.swift */; }; - C0D6CA5B2C19BF1D00D4709B /* SecureConversations.ConfirmationViewModel.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA5A2C19BF1D00D4709B /* SecureConversations.ConfirmationViewModel.Environment.swift */; }; + C0D6CA4D2C19B86000D4709B /* OnHoldOverlayView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA4C2C19B86000D4709B /* OnHoldOverlayView.Environment.swift */; }; C0D6CA5D2C19C07200D4709B /* ConnectOperatorView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA5C2C19C07200D4709B /* ConnectOperatorView.Environment.swift */; }; - C0D6CA5F2C19C34F00D4709B /* ChatFileDownloadContentView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA5E2C19C34F00D4709B /* ChatFileDownloadContentView.Environment.swift */; }; C0D6CA612C19C4D900D4709B /* OnHoldOverlayVisualEffectView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA602C19C4D900D4709B /* OnHoldOverlayVisualEffectView.Environment.swift */; }; + C0D6CA612C19C4D900D4709B /* OnHoldOverlayVisualEffectView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA602C19C4D900D4709B /* OnHoldOverlayVisualEffectView.Environment.swift */; }; + C0D6CA4F2C19B9A300D4709B /* GliaPresenter.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA4E2C19B9A300D4709B /* GliaPresenter.Environment.swift */; }; + C0D6CA512C19BB5600D4709B /* SurveyViewController.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA502C19BB5600D4709B /* SurveyViewController.Environment.swift */; }; + C0D6CA532C19BC0300D4709B /* FilePreviewView.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA522C19BC0300D4709B /* FilePreviewView.Environment.swift */; }; C0D6CA632C19C59100D4709B /* Glia.OpaqueAuthentication.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA622C19C59100D4709B /* Glia.OpaqueAuthentication.Environment.swift */; }; + C0D6CA572C19BDCD00D4709B /* FilePickerViewModel.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA562C19BDCD00D4709B /* FilePickerViewModel.Environment.swift */; }; + C0D6CA592C19BE9D00D4709B /* FilePickerController.Envrionment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA582C19BE9D00D4709B /* FilePickerController.Envrionment.swift */; }; + C0D6CA5B2C19BF1D00D4709B /* SecureConversations.ConfirmationViewModel.Environment.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0D6CA5A2C19BF1D00D4709B /* SecureConversations.ConfirmationViewModel.Environment.swift */; }; C0E948042AB1D5D200890026 /* ActionButtonSwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0E948032AB1D5D200890026 /* ActionButtonSwiftUI.swift */; }; C0E948062AB1D64700890026 /* HeaderButtonSwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0E948052AB1D64700890026 /* HeaderButtonSwiftUI.swift */; }; C0E948092AB1D6AB00890026 /* HeaderSwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0E948082AB1D6AB00890026 /* HeaderSwiftUI.swift */; }; @@ -932,6 +965,7 @@ C42463742673ABE10082C135 /* ScreenShareHandler.Interface.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42463732673ABE10082C135 /* ScreenShareHandler.Interface.swift */; }; C43C12F92694B14900C37E1B /* GliaPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C43C12F82694B14900C37E1B /* GliaPresenter.swift */; }; C43D7A0D25FF92530064B1DA /* ChoiceCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C43D7A0C25FF92530064B1DA /* ChoiceCardView.swift */; }; + C43D7A1125FF92680064B1DA /* ChoiceCardStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C43D7A1025FF92680064B1DA /* ChoiceCardStyle.swift */; }; C43D7A1525FF9A590064B1DA /* ChatChoiceCardOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = C43D7A1425FF9A590064B1DA /* ChatChoiceCardOption.swift */; }; C460C7782600BCF400449851 /* ChoiceCardOptionStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = C460C7772600BCF400449851 /* ChoiceCardOptionStyle.swift */; }; C47901B325ED2F31007EE195 /* ScreenShareOfferAlertConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C47901B225ED2F31007EE195 /* ScreenShareOfferAlertConfiguration.swift */; }; @@ -1061,6 +1095,8 @@ 1A2DA72C25EF9DD900032611 /* FileUpload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileUpload.swift; sourceTree = ""; }; 1A2DA73025EFA77E00032611 /* FileUploader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileUploader.swift; sourceTree = ""; }; 1A2DA73A25EFC00500032611 /* FileUploadListStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileUploadListStyle.swift; sourceTree = ""; }; + 1A38A8A7258B652B0089DE7B /* OperatorChatMessageStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperatorChatMessageStyle.swift; sourceTree = ""; }; + 1A38A8AB258B65D00089DE7B /* ChatMessageStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageStyle.swift; sourceTree = ""; }; 1A38A8B9258B94D60089DE7B /* ImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageView.swift; sourceTree = ""; }; 1A4674A625E905AC0078FA1C /* AttachmentSourceListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentSourceListView.swift; sourceTree = ""; }; 1A4674AB25E905D00078FA1C /* AttachmentSourceItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentSourceItemView.swift; sourceTree = ""; }; @@ -1074,6 +1110,7 @@ 1A475BB625DE833200296D55 /* BadgeStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BadgeStyle.swift; sourceTree = ""; }; 1A475BBB25DFA10100296D55 /* UnreadMessagesHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnreadMessagesHandler.swift; sourceTree = ""; }; 1A4AD3AE256D283700468BFB /* ChatMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageView.swift; sourceTree = ""; }; + 1A4AD3B2256D2A7600468BFB /* VisitorChatMessageStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VisitorChatMessageStyle.swift; sourceTree = ""; }; 1A4AD3BD256D37FD00468BFB /* UITableView+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UITableView+Extensions.swift"; sourceTree = ""; }; 1A4AD3C0256E74C600468BFB /* ThemeFont.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeFont.swift; sourceTree = ""; }; 1A4AD3C3256E7A0C00468BFB /* ThemeFontStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeFontStyle.swift; sourceTree = ""; }; @@ -1204,6 +1241,7 @@ 3189DD9529E4331200D68E9F /* SecureConversations.WelcomeViewModel.Mock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.WelcomeViewModel.Mock.swift; sourceTree = ""; }; 3197F7AC29E6A5C8008EE9F7 /* SecureConversations.FileUploadListView.Mock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.FileUploadListView.Mock.swift; sourceTree = ""; }; 3197F7AE29E95527008EE9F7 /* SystemMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemMessageView.swift; sourceTree = ""; }; + 3197F7B029E958F4008EE9F7 /* SystemMessageStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SystemMessageStyle.swift; sourceTree = ""; }; 3197F7B329F7C26A008EE9F7 /* SecureConversations.ChatWithTranscriptViewModel.Hashable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.ChatWithTranscriptViewModel.Hashable.swift; sourceTree = ""; }; 3197F7B529F7C2E5008EE9F7 /* SecureConversations.SecureChatModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.SecureChatModel.swift; sourceTree = ""; }; 3197F7B729F7C318008EE9F7 /* SecureConversations.CommonEngagementModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.CommonEngagementModel.swift; sourceTree = ""; }; @@ -1368,6 +1406,7 @@ 845A28FB28AFF092008558EA /* URLScheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = URLScheme.swift; sourceTree = ""; }; 845E2F6B2837EF2E00C04D56 /* FilePreviewStyle.Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilePreviewStyle.Accessibility.swift; sourceTree = ""; }; 845E2F6D283BD69B00C04D56 /* ChatTextContentStyle.Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTextContentStyle.Accessibility.swift; sourceTree = ""; }; + 845E2F6F283CF94100C04D56 /* VisitorChatMessageStyle.Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VisitorChatMessageStyle.Accessibility.swift; sourceTree = ""; }; 845E2F71283D068000C04D56 /* HeaderStyle.Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeaderStyle.Accessibility.swift; sourceTree = ""; }; 845E2F73283D43FA00C04D56 /* AlertStyle.Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertStyle.Accessibility.swift; sourceTree = ""; }; 845E2F75283D48BC00C04D56 /* AttachmentSourceItemStyle.Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttachmentSourceItemStyle.Accessibility.swift; sourceTree = ""; }; @@ -1426,6 +1465,7 @@ 8491AF1C2A7D01BF00CC3E72 /* Theme.ChatMessageStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Theme.ChatMessageStyle.swift; sourceTree = ""; }; 8491AF1E2A7D027D00CC3E72 /* Theme.ChatTextContentStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Theme.ChatTextContentStyle.swift; sourceTree = ""; }; 8491AF202A7D1F7900CC3E72 /* ChatView.GvaGallery.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatView.GvaGallery.swift; sourceTree = ""; }; + 8491AF222A8A3EA800CC3E72 /* ChatStyle.Deprecated.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatStyle.Deprecated.swift; sourceTree = ""; }; 8491AF262A8E3F6A00CC3E72 /* CGColor+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CGColor+Extensions.swift"; sourceTree = ""; }; 8491AF292A9394D000CC3E72 /* DeeplinkService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeeplinkService.swift; sourceTree = ""; }; 8491AF2D2A93975100CC3E72 /* ConfigurationDeeplinkHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConfigurationDeeplinkHandler.swift; sourceTree = ""; }; @@ -1531,6 +1571,7 @@ 9AB196E927C5390100FD60AB /* ChatAttachment.Mock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatAttachment.Mock.swift; sourceTree = ""; }; 9AB3401227F71D5D006E0FE2 /* BubbleViewVoiceOverTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleViewVoiceOverTests.swift; sourceTree = ""; }; 9AB3401427F724BC006E0FE2 /* CallStyle.Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallStyle.Accessibility.swift; sourceTree = ""; }; + 9AB3401627F74D66006E0FE2 /* ChoiceCardStyle.Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChoiceCardStyle.Accessibility.swift; sourceTree = ""; }; 9AB3401827FB2F2A006E0FE2 /* UnreadMessageIndicatorStyle.Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnreadMessageIndicatorStyle.Accessibility.swift; sourceTree = ""; }; 9AB3401A27FB4720006E0FE2 /* OperatorTypingIndicatorStyle.Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperatorTypingIndicatorStyle.Accessibility.swift; sourceTree = ""; }; 9AB3401C27FB4F3C006E0FE2 /* ConnectOperatorStyle.Accessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectOperatorStyle.Accessibility.swift; sourceTree = ""; }; @@ -1880,15 +1921,29 @@ C0D6C9F62C0D2F6D00D4709B /* AlertPlacement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertPlacement.swift; sourceTree = ""; }; C0D6C9FA2C0D2F9A00D4709B /* AlertInputType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertInputType.swift; sourceTree = ""; }; C0D6C9FF2C106A1F00D4709B /* AlertManager.Failing.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertManager.Failing.swift; sourceTree = ""; }; + C0D6CA0A2C18472400D4709B /* SecureConversations.Coordinator.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.Coordinator.Environment.swift; sourceTree = ""; }; + C0D6CA0E2C184AB700D4709B /* SecureConversations.WelcomeViewModel.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.WelcomeViewModel.Environment.swift; sourceTree = ""; }; + C0D6CA102C184CCA00D4709B /* SecureConversations.WelcomeViewController.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.WelcomeViewController.Environment.swift; sourceTree = ""; }; + C0D6CA142C184F1900D4709B /* SecureConversations.MessagesWithUnreadCountLoader.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.MessagesWithUnreadCountLoader.Environment.swift; sourceTree = ""; }; + C0D6CA162C18584E00D4709B /* SecureConversations.WelcomeView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.WelcomeView.Environment.swift; sourceTree = ""; }; + C0D6CA3E2C19A8DA00D4709B /* SecureConversations.FileUploadView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.FileUploadView.Environment.swift; sourceTree = ""; }; + C0D6CA402C19A97100D4709B /* SecureConversations.FileUploadListView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.FileUploadListView.Environment.swift; sourceTree = ""; }; + C0D6CA422C19AA0900D4709B /* SecureConversations.MessageTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.MessageTextView.swift; sourceTree = ""; }; + C0D6CA442C19AA8000D4709B /* SecureConversations.MessageTextView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.MessageTextView.Environment.swift; sourceTree = ""; }; + C0D6CA522C19BC0300D4709B /* FilePreviewView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilePreviewView.Environment.swift; sourceTree = ""; }; + C0D6CA542C19BCDB00D4709B /* SecureConversations.FilePreviewView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.FilePreviewView.Environment.swift; sourceTree = ""; }; + C0D6CA5A2C19BF1D00D4709B /* SecureConversations.ConfirmationViewModel.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.ConfirmationViewModel.Environment.swift; sourceTree = ""; }; + C0D6CA5E2C19C34F00D4709B /* ChatFileDownloadContentView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatFileDownloadContentView.Environment.swift; sourceTree = ""; }; + C0D6CA182C18590400D4709B /* UserImageView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserImageView.Environment.swift; sourceTree = ""; }; C0D6CA042C172F8F00D4709B /* CallCoordinator.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallCoordinator.Environment.swift; sourceTree = ""; }; C0D6CA062C1843A900D4709B /* EngagementViewController.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementViewController.Environment.swift; sourceTree = ""; }; C0D6CA082C18451800D4709B /* CallViewController.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallViewController.Environment.swift; sourceTree = ""; }; - C0D6CA0A2C18472400D4709B /* SecureConversations.Coordinator.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.Coordinator.Environment.swift; sourceTree = ""; }; + C0D6CA1A2C185BDE00D4709B /* EngagementView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementView.Environment.swift; sourceTree = ""; }; + C0D6CA1C2C185D2900D4709B /* CallView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallView.Environment.swift; sourceTree = ""; }; C0D6CA0C2C1848E700D4709B /* GliaViewController.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GliaViewController.Environment.swift; sourceTree = ""; }; C0D6CA0E2C184AB700D4709B /* SecureConversations.WelcomeViewModel.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.WelcomeViewModel.Environment.swift; sourceTree = ""; }; C0D6CA102C184CCA00D4709B /* SecureConversations.WelcomeViewController.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.WelcomeViewController.Environment.swift; sourceTree = ""; }; C0D6CA122C184DFF00D4709B /* FileDownloader.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileDownloader.Environment.swift; sourceTree = ""; }; - C0D6CA142C184F1900D4709B /* SecureConversations.MessagesWithUnreadCountLoader.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.MessagesWithUnreadCountLoader.Environment.swift; sourceTree = ""; }; C0D6CA162C18584E00D4709B /* SecureConversations.WelcomeView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.WelcomeView.Environment.swift; sourceTree = ""; }; C0D6CA182C18590400D4709B /* UserImageView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserImageView.Environment.swift; sourceTree = ""; }; C0D6CA1A2C185BDE00D4709B /* EngagementView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementView.Environment.swift; sourceTree = ""; }; @@ -1898,6 +1953,12 @@ C0D6CA222C1861F400D4709B /* VideoCallView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoCallView.Environment.swift; sourceTree = ""; }; C0D6CA242C1862C900D4709B /* AlertManager.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertManager.Environment.swift; sourceTree = ""; }; C0D6CA262C18743E00D4709B /* CallDurationCounter.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallDurationCounter.Environment.swift; sourceTree = ""; }; + C0D6CA0E2C184AB700D4709B /* SecureConversations.WelcomeViewModel.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.WelcomeViewModel.Environment.swift; sourceTree = ""; }; + C0D6CA102C184CCA00D4709B /* SecureConversations.WelcomeViewController.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.WelcomeViewController.Environment.swift; sourceTree = ""; }; + C0D6CA122C184DFF00D4709B /* FileDownloader.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileDownloader.Environment.swift; sourceTree = ""; }; + C0D6CA222C1861F400D4709B /* VideoCallView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoCallView.Environment.swift; sourceTree = ""; }; + C0D6CA3C2C19A82100D4709B /* VideoCallViewController.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoCallViewController.Environment.swift; sourceTree = ""; }; + C0D6CA1E2C185E3500D4709B /* BubbleView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleView.Environment.swift; sourceTree = ""; }; C0D6CA282C199A4700D4709B /* UnreadMessageIndicatorView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UnreadMessageIndicatorView.Environment.swift; sourceTree = ""; }; C0D6CA2A2C19A0E800D4709B /* OperatorChatMessageView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OperatorChatMessageView.Environment.swift; sourceTree = ""; }; C0D6CA2C2C19A19000D4709B /* ChoiceCardView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChoiceCardView.Environment.swift; sourceTree = ""; }; @@ -1908,25 +1969,31 @@ C0D6CA362C19A4EB00D4709B /* GvaPersistentButtonView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GvaPersistentButtonView.Environment.swift; sourceTree = ""; }; C0D6CA382C19A57200D4709B /* ChatMessageEntryView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageEntryView.Environment.swift; sourceTree = ""; }; C0D6CA3A2C19A61900D4709B /* ChatMessageView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageView.Environment.swift; sourceTree = ""; }; - C0D6CA3C2C19A82100D4709B /* VideoCallViewController.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoCallViewController.Environment.swift; sourceTree = ""; }; C0D6CA3E2C19A8DA00D4709B /* SecureConversations.FileUploadView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.FileUploadView.Environment.swift; sourceTree = ""; }; C0D6CA402C19A97100D4709B /* SecureConversations.FileUploadListView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.FileUploadListView.Environment.swift; sourceTree = ""; }; C0D6CA422C19AA0900D4709B /* SecureConversations.MessageTextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.MessageTextView.swift; sourceTree = ""; }; C0D6CA442C19AA8000D4709B /* SecureConversations.MessageTextView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.MessageTextView.Environment.swift; sourceTree = ""; }; + C0D6CA3E2C19A8DA00D4709B /* SecureConversations.FileUploadView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.FileUploadView.Environment.swift; sourceTree = ""; }; + C0D6CA402C19A97100D4709B /* SecureConversations.FileUploadListView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.FileUploadListView.Environment.swift; sourceTree = ""; }; + C0D6CA262C18743E00D4709B /* CallDurationCounter.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallDurationCounter.Environment.swift; sourceTree = ""; }; C0D6CA462C19B35B00D4709B /* BubbleWindow.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BubbleWindow.Environment.swift; sourceTree = ""; }; C0D6CA482C19B64700D4709B /* ImageView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageView.Environment.swift; sourceTree = ""; }; C0D6CA4A2C19B6D100D4709B /* GvaGalleryListView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GvaGalleryListView.Environment.swift; sourceTree = ""; }; - C0D6CA4C2C19B86000D4709B /* OnHoldOverlayView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnHoldOverlayView.Environment.swift; sourceTree = ""; }; - C0D6CA4E2C19B9A300D4709B /* GliaPresenter.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GliaPresenter.Environment.swift; sourceTree = ""; }; - C0D6CA502C19BB5600D4709B /* SurveyViewController.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SurveyViewController.Environment.swift; sourceTree = ""; }; + C0D6CA5C2C19C07200D4709B /* ConnectOperatorView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectOperatorView.Environment.swift; sourceTree = ""; }; C0D6CA522C19BC0300D4709B /* FilePreviewView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilePreviewView.Environment.swift; sourceTree = ""; }; - C0D6CA542C19BCDB00D4709B /* SecureConversations.FilePreviewView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.FilePreviewView.Environment.swift; sourceTree = ""; }; C0D6CA562C19BDCD00D4709B /* FilePickerViewModel.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilePickerViewModel.Environment.swift; sourceTree = ""; }; C0D6CA582C19BE9D00D4709B /* FilePickerController.Envrionment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilePickerController.Envrionment.swift; sourceTree = ""; }; C0D6CA5A2C19BF1D00D4709B /* SecureConversations.ConfirmationViewModel.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.ConfirmationViewModel.Environment.swift; sourceTree = ""; }; + C0D6CA522C19BC0300D4709B /* FilePreviewView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilePreviewView.Environment.swift; sourceTree = ""; }; + C0D6CA542C19BCDB00D4709B /* SecureConversations.FilePreviewView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureConversations.FilePreviewView.Environment.swift; sourceTree = ""; }; + C0D6CA562C19BDCD00D4709B /* FilePickerViewModel.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilePickerViewModel.Environment.swift; sourceTree = ""; }; + C0D6CA582C19BE9D00D4709B /* FilePickerController.Envrionment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilePickerController.Envrionment.swift; sourceTree = ""; }; + C0D6CA4C2C19B86000D4709B /* OnHoldOverlayView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnHoldOverlayView.Environment.swift; sourceTree = ""; }; + C0D6CA4C2C19B86000D4709B /* OnHoldOverlayView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnHoldOverlayView.Environment.swift; sourceTree = ""; }; C0D6CA5C2C19C07200D4709B /* ConnectOperatorView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectOperatorView.Environment.swift; sourceTree = ""; }; - C0D6CA5E2C19C34F00D4709B /* ChatFileDownloadContentView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatFileDownloadContentView.Environment.swift; sourceTree = ""; }; C0D6CA602C19C4D900D4709B /* OnHoldOverlayVisualEffectView.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OnHoldOverlayVisualEffectView.Environment.swift; sourceTree = ""; }; + C0D6CA4E2C19B9A300D4709B /* GliaPresenter.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GliaPresenter.Environment.swift; sourceTree = ""; }; + C0D6CA502C19BB5600D4709B /* SurveyViewController.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SurveyViewController.Environment.swift; sourceTree = ""; }; C0D6CA622C19C59100D4709B /* Glia.OpaqueAuthentication.Environment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Glia.OpaqueAuthentication.Environment.swift; sourceTree = ""; }; C0E948032AB1D5D200890026 /* ActionButtonSwiftUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionButtonSwiftUI.swift; sourceTree = ""; }; C0E948052AB1D64700890026 /* HeaderButtonSwiftUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeaderButtonSwiftUI.swift; sourceTree = ""; }; @@ -1939,6 +2006,7 @@ C42463732673ABE10082C135 /* ScreenShareHandler.Interface.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScreenShareHandler.Interface.swift; sourceTree = ""; }; C43C12F82694B14900C37E1B /* GliaPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GliaPresenter.swift; sourceTree = ""; }; C43D7A0C25FF92530064B1DA /* ChoiceCardView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChoiceCardView.swift; sourceTree = ""; }; + C43D7A1025FF92680064B1DA /* ChoiceCardStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChoiceCardStyle.swift; sourceTree = ""; }; C43D7A1425FF9A590064B1DA /* ChatChoiceCardOption.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatChoiceCardOption.swift; sourceTree = ""; }; C460C7772600BCF400449851 /* ChoiceCardOptionStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChoiceCardOptionStyle.swift; sourceTree = ""; }; C46B2463262F05BE001245A1 /* TestingApp.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = TestingApp.entitlements; sourceTree = ""; }; @@ -2758,6 +2826,7 @@ C0175A262A67D431001FACDE /* GVA */, 1AC7A7822583B65B00567FF8 /* Cells */, 9AB3402627FCDD92006E0FE2 /* ChatStyle.Accessibility.swift */, + 8491AF222A8A3EA800CC3E72 /* ChatStyle.Deprecated.swift */, 1A60AFE725669C5000E53F53 /* ChatStyle.swift */, C09047332B7E1DA6003C437C /* ChatStyle.RemoteConfig.swift */, 1A60AFDC25669A4200E53F53 /* ChatView.swift */, @@ -2925,11 +2994,16 @@ 1A60B04F256D0D7400E53F53 /* Content */, 1A4AD3AE256D283700468BFB /* ChatMessageView.swift */, C0D6CA3A2C19A61900D4709B /* ChatMessageView.Environment.swift */, + 1A38A8AB258B65D00089DE7B /* ChatMessageStyle.swift */, 1A60B030256BF81400E53F53 /* VisitorChatMessageView.swift */, + 1A4AD3B2256D2A7600468BFB /* VisitorChatMessageStyle.swift */, 1A60B02C256BF7FF00E53F53 /* OperatorChatMessageView.swift */, C0D6CA2A2C19A0E800D4709B /* OperatorChatMessageView.Environment.swift */, + 1A38A8A7258B652B0089DE7B /* OperatorChatMessageStyle.swift */, + 845E2F6F283CF94100C04D56 /* VisitorChatMessageStyle.Accessibility.swift */, 3197F7AE29E95527008EE9F7 /* SystemMessageView.swift */, C0D6CA2E2C19A1EC00D4709B /* SystemMessageView.Environment.swift */, + 3197F7B029E958F4008EE9F7 /* SystemMessageStyle.swift */, ); path = Message; sourceTree = ""; @@ -4923,6 +4997,8 @@ C090476B2B7E24A8003C437C /* ChoiceCardOptionStateStyle.RemoteConfig.swift */, C43D7A0C25FF92530064B1DA /* ChoiceCardView.swift */, C0D6CA2C2C19A19000D4709B /* ChoiceCardView.Environment.swift */, + C43D7A1025FF92680064B1DA /* ChoiceCardStyle.swift */, + 9AB3401627F74D66006E0FE2 /* ChoiceCardStyle.Accessibility.swift */, ); path = ChoiceCard; sourceTree = ""; @@ -5540,6 +5616,7 @@ 75CF8D6329B7DD8300CB1524 /* SecureConversations.ConfirmationStyle+RemoteConfig.swift in Sources */, C09046D82B7E091F003C437C /* FilePreviewStyle.RemoteConfig.swift in Sources */, 1A475BB325DE831F00296D55 /* BadgeView.swift in Sources */, + 1A38A8A8258B652B0089DE7B /* OperatorChatMessageStyle.swift in Sources */, C09046892B7D03CD003C437C /* WelcomeStyle.CheckMessagesButtonStyle.RemoteConfig.swift in Sources */, 1A7CA8212574D6760047CBBE /* ConnectOperatorView.swift in Sources */, 755D187329A6A6860009F5E8 /* WelcomeStyle.MessageTextViewActiveStyle.swift in Sources */, @@ -5570,6 +5647,7 @@ C0D6CA4D2C19B86000D4709B /* OnHoldOverlayView.Environment.swift in Sources */, 1A4AF5D325AEF543002CD0F4 /* AlertViewController+Confirmation.swift in Sources */, 755D187B29A6A7180009F5E8 /* WelcomeStyle.TitleImageStyle.swift in Sources */, + 8491AF232A8A3EA800CC3E72 /* ChatStyle.Deprecated.swift in Sources */, C09046B72B7D0A8B003C437C /* WelcomeStyle.MessageWarningStyle.RemoteConfig.swift in Sources */, 1AFB1E7825F8B26800CA460D /* ChatTextContentStyle.swift in Sources */, 1AFB1E7425F8B00B00CA460D /* ChatTextContentView.swift in Sources */, @@ -5598,6 +5676,7 @@ 7594094D298D37E8008B173A /* Glia.Environment.Mock.swift in Sources */, 1A60AFB9256682AF00E53F53 /* FlowCoordinator.swift in Sources */, C0D6CA2B2C19A0E800D4709B /* OperatorChatMessageView.Environment.swift in Sources */, + 3197F7B129E958F4008EE9F7 /* SystemMessageStyle.swift in Sources */, 3100D92C296E946600DEC9CE /* SecureConversations.ConfirmationViewController.swift in Sources */, C090474C2B7E210C003C437C /* FileUploadStyle.Equatable.swift in Sources */, C09047402B7E1FBC003C437C /* MessageCenterFileUploadStyle.swift in Sources */, @@ -5691,6 +5770,7 @@ 1A60AFE425669B0400E53F53 /* ChatCoordinator.swift in Sources */, C0857DEB28D482D0008D171D /* Theme.Button.swift in Sources */, EB2CBB1027D89F74004F178E /* OnHoldOverlayView.swift in Sources */, + 9AB3401727F74D66006E0FE2 /* ChoiceCardStyle.Accessibility.swift in Sources */, C09047462B7E2064003C437C /* FileUploadErrorStateStyle.Mock.swift in Sources */, C0D6CA4B2C19B6D100D4709B /* GvaGalleryListView.Environment.swift in Sources */, 84520BF32B208DE200F97617 /* SnackBar.Interface.swift in Sources */, @@ -5741,6 +5821,7 @@ 1A5F815F258A43E600A605DA /* Section.swift in Sources */, 1A60AFBF2566834400E53F53 /* BaseViewController.swift in Sources */, 6E60DD5627146C9D001422EF /* AlertViewController+SingleAction.swift in Sources */, + 845E2F70283CF94100C04D56 /* VisitorChatMessageStyle.Accessibility.swift in Sources */, 8491AF4E2A9CB3A400CC3E72 /* SecureConversations.TranscriptModel.GVA.swift in Sources */, 8491AF062A77F16D00CC3E72 /* GvaGalleryCardStyle.swift in Sources */, C090475A2B7E2236003C437C /* FileUploadListStyle.Equatable.swift in Sources */, @@ -5800,6 +5881,7 @@ 1A0C143F25B85DB400B00695 /* CallViewController.swift in Sources */, 3197F7B629F7C2E5008EE9F7 /* SecureConversations.SecureChatModel.swift in Sources */, 1A0C9A7125C16F4A00815406 /* Theme+Alert.swift in Sources */, + 1A38A8AC258B65D00089DE7B /* ChatMessageStyle.swift in Sources */, C0175A282A67D470001FACDE /* GvaPersistentButtonStyle.swift in Sources */, C49A29F22614A85E00819269 /* ChoiceCard.swift in Sources */, 1A0C9A6D25C16EED00815406 /* Theme+Call.swift in Sources */, @@ -5859,6 +5941,7 @@ C09047562B7E21F0003C437C /* MessageCenterFileUploadListStyle.Equatable.swift in Sources */, C09047502B7E215E003C437C /* FileUploadStateStyle.Equatable.swift in Sources */, AF1C197A2B14FC9700F8810F /* ConditionalCompilationClient.Interface.swift in Sources */, + 1A4AD3B3256D2A7600468BFB /* VisitorChatMessageStyle.swift in Sources */, 845E2F98283FC9A900C04D56 /* Theme.Survey.OptionButton.swift in Sources */, 84681A9F2A66B70400DD7406 /* LeftAlignedCollectionViewFlowLayout.swift in Sources */, 84265E60298D7B2900D65842 /* ScreenSharingCoordinator.Environment.swift in Sources */, @@ -6080,6 +6163,7 @@ C460C7782600BCF400449851 /* ChoiceCardOptionStyle.swift in Sources */, C09046E02B7E0CDC003C437C /* ConnectStyle.RemoteConfig.swift in Sources */, AF3D520F2983BC5600AD8E69 /* FileUploader.Environment.Mock.swift in Sources */, + C43D7A1125FF92680064B1DA /* ChoiceCardStyle.swift in Sources */, C09047022B7E14DA003C437C /* Theme.Survey.RemoteConfig.swift in Sources */, 9A186A4127F605B90055886D /* HeaderButtonStyle.Accessibility.swift in Sources */, C09047762B7E2709003C437C /* CallStyle.RemoteConfig.swift in Sources */, diff --git a/GliaWidgets/Sources/Theme/Chat/Theme.ChoiceCardStyle.swift b/GliaWidgets/Sources/Theme/Chat/Theme.ChoiceCardStyle.swift index 702705067..5bccaf3e8 100644 --- a/GliaWidgets/Sources/Theme/Chat/Theme.ChoiceCardStyle.swift +++ b/GliaWidgets/Sources/Theme/Chat/Theme.ChoiceCardStyle.swift @@ -52,3 +52,64 @@ public extension Theme { } } } + +extension Theme.ChoiceCardStyle { + func toOldChoiceCardStyle() -> ChoiceCardStyle { + return ChoiceCardStyle( + mainText: .init( + textFont: text.font, + textColor: UIColor(hex: text.color), + textStyle: text.textStyle, + backgroundColor: background.background?.color ?? .clear, + cornerRadius: background.cornerRadius, + accessibility: .init(isFontScalingEnabled: text.accessibility.isFontScalingEnabled) + ), + frameColor: UIColor(cgColor: background.borderColor), + borderWidth: background.borderWidth, + cornerRadius: background.cornerRadius, + backgroundColor: background.background?.color ?? .clear, + imageFile: imageFile, + fileDownload: fileDownload, + operatorImage: operatorImage, + choiceOption: .init( + normal: .init( + textFont: choiceOption.normal.title.font, + textColor: UIColor(hex: choiceOption.normal.title.color), + textStyle: choiceOption.normal.title.textStyle, + backgroundColor: choiceOption.normal.background.color, + borderColor: UIColor(hex: choiceOption.normal.borderColor ?? ""), + borderWidth: choiceOption.normal.borderWidth, + accessibility: .init( + value: choiceOption.normal.accessibility.label, + isFontScalingEnabled: choiceOption.normal.accessibility.isFontScalingEnabled + ) + ), + selected: .init( + textFont: choiceOption.selected.title.font, + textColor: UIColor(hex: choiceOption.selected.title.color), + textStyle: choiceOption.selected.title.textStyle, + backgroundColor: choiceOption.selected.background.color, + borderColor: UIColor(hex: choiceOption.selected.borderColor ?? ""), + borderWidth: choiceOption.selected.borderWidth, + accessibility: .init( + value: choiceOption.selected.accessibility.label, + isFontScalingEnabled: choiceOption.selected.accessibility.isFontScalingEnabled + ) + ), + disabled: .init( + textFont: choiceOption.disabled.title.font, + textColor: UIColor(hex: choiceOption.disabled.title.color), + textStyle: choiceOption.disabled.title.textStyle, + backgroundColor: choiceOption.disabled.background.color, + borderColor: UIColor(hex: choiceOption.disabled.borderColor ?? ""), + borderWidth: choiceOption.disabled.borderWidth, + accessibility: .init( + value: choiceOption.disabled.accessibility.label, + isFontScalingEnabled: choiceOption.disabled.accessibility.isFontScalingEnabled + ) + ) + ), + accessibility: .init(imageLabel: accessibility.imageLabel) + ) + } +} diff --git a/GliaWidgets/Sources/Theme/Chat/Theme.OperatorChatMessageStyle.swift b/GliaWidgets/Sources/Theme/Chat/Theme.OperatorChatMessageStyle.swift index d2413ba1f..d40f7d385 100644 --- a/GliaWidgets/Sources/Theme/Chat/Theme.OperatorChatMessageStyle.swift +++ b/GliaWidgets/Sources/Theme/Chat/Theme.OperatorChatMessageStyle.swift @@ -46,3 +46,24 @@ public extension Theme { } } } + +extension Theme.OperatorMessageStyle { + func toOldOperatorMessageStyle() -> OperatorChatMessageStyle { + .init( + text: .init( + textFont: text.font, + textColor: UIColor(hex: text.color), + textStyle: text.textStyle, + backgroundColor: background.background?.color ?? .clear, + cornerRadius: background.cornerRadius, + accessibility: .init( + value: accessibility.value, + isFontScalingEnabled: accessibility.isFontScalingEnabled + ) + ), + imageFile: imageFile, + fileDownload: fileDownload, + operatorImage: operatorImage + ) + } +} diff --git a/GliaWidgets/Sources/Theme/Chat/Theme.SystemMessageStyle.swift b/GliaWidgets/Sources/Theme/Chat/Theme.SystemMessageStyle.swift index 34a99e7a4..4d65f6019 100644 --- a/GliaWidgets/Sources/Theme/Chat/Theme.SystemMessageStyle.swift +++ b/GliaWidgets/Sources/Theme/Chat/Theme.SystemMessageStyle.swift @@ -40,3 +40,23 @@ public extension Theme { } } } + +extension Theme.SystemMessageStyle { + func toOldSystemMessageStyle() -> SystemMessageStyle { + .init( + text: .init( + textFont: text.font, + textColor: UIColor(hex: text.color), + textStyle: text.textStyle, + backgroundColor: background.background?.color ?? .clear, + cornerRadius: background.cornerRadius, + accessibility: .init( + value: accessibility.value, + isFontScalingEnabled: accessibility.isFontScalingEnabled + ) + ), + imageFile: imageFile, + fileDownload: fileDownload + ) + } +} diff --git a/GliaWidgets/Sources/Theme/Chat/Theme.VisitorChatMessageStyle.swift b/GliaWidgets/Sources/Theme/Chat/Theme.VisitorChatMessageStyle.swift index ce5a2914b..fcae9beef 100644 --- a/GliaWidgets/Sources/Theme/Chat/Theme.VisitorChatMessageStyle.swift +++ b/GliaWidgets/Sources/Theme/Chat/Theme.VisitorChatMessageStyle.swift @@ -52,3 +52,28 @@ public extension Theme { } } } + +extension Theme.VisitorMessageStyle { + func toOldVisitorMessageStyle() -> VisitorChatMessageStyle { + .init( + text: .init( + textFont: text.font, + textColor: UIColor(hex: text.color), + textStyle: text.textStyle, + backgroundColor: background.background?.color ?? .clear, + cornerRadius: background.cornerRadius, + accessibility: .init( + value: accessibility.value, + isFontScalingEnabled: accessibility.isFontScalingEnabled + ) + ), + imageFile: imageFile, + fileDownload: fileDownload, + statusFont: status.font, + statusColor: UIColor(hex: status.color), + statusTextStyle: status.textStyle, + delivered: delivered, + accessibility: .init(isFontScalingEnabled: accessibility.isFontScalingEnabled) + ) + } +} diff --git a/GliaWidgets/Sources/Unavailable.swift b/GliaWidgets/Sources/Unavailable.swift index 093bf9990..eb8121365 100644 --- a/GliaWidgets/Sources/Unavailable.swift +++ b/GliaWidgets/Sources/Unavailable.swift @@ -1,268 +1,3 @@ -import UIKit - func unavailable(function: StaticString = #function) -> Never { fatalError("This implementation for \(function) is not longer available.") } - -extension ChatStyle { - /// Unavailable. Style of the message sent by the operator. - @available(*, unavailable, message: "Unavailable, use ``ChatStyle.operatorMessageStyle`` instead.") - public var operatorMessage: OperatorChatMessageStyle { - unavailable() - } - - /// Unavailable. Style of the system message - @available(*, unavailable, message: "Unavailable, use ``ChatStyle.systemMessageStyle`` instead.") - public var systemMessage: SystemMessageStyle { - unavailable() - } - - /// Unavailable. Style of the message sent by the visitor. - @available(*, unavailable, message: "Unavailable, use ``ChatStyle.visitorMessageStyle`` instead.") - public var visitorMessage: VisitorChatMessageStyle { - unavailable() - } - - /// Unavailable. Style of the choice card sent to the visitor by the AI engine. - @available(*, unavailable, message: "Unavailable, use ``ChatStyle.choiceCardStyle`` instead.") - public var choiceCard: ChoiceCardStyle { - unavailable() - } - - /// Unavailable. - /// - Parameters: - /// - header: Style of the view's header (navigation bar area) when the screen is displaying live chat. - /// - connect: Styles for different engagement connection states. - /// - backgroundColor: View's background color. - /// - preferredStatusBarStyle: Preferred style of the status bar. - /// - title: Title shown in the header. - /// - visitorMessage: Style of the message sent by the visitor. - /// - operatorMessage: Style of the message sent by the operator. - /// - choiceCard: Style of the choice card sent to the visitor by the AI engine. - /// - messageEntry: Style of the message entry area on the bottom of the view. - /// - audioUpgrade: Style of the audio upgrade view. - /// - videoUpgrade: Style of the video upgrade view. - /// - callBubble: Style of the call bubble in chat (shown after upgrade to call). - /// - pickMedia: Style of the attachment media type picker. - /// - unreadMessageIndicator: Style of the unread message indicator. - /// - operatorTypingIndicator: Style of the view that indicates that the operator is currently typing. - /// - accessibility: Accessibility related properties. - /// - secureTranscriptTitle: Header title for secure messaging transcript. - /// - secureTranscriptHeader: Style of the view's header (navigation bar area) when the screen is displaying secure conversations. - /// - unreadMessageDivider: Style for divider of unread messages in secure messaging transcript. - @available(*, unavailable, message: "Unavailable, use designated initializer instead.") - public convenience init( - header: HeaderStyle, - connect: ConnectStyle, - backgroundColor: ColorType, - preferredStatusBarStyle: UIStatusBarStyle, - title: String, - visitorMessage: VisitorChatMessageStyle, - operatorMessage: OperatorChatMessageStyle, - choiceCard: ChoiceCardStyle, - messageEntry: ChatMessageEntryStyle, - audioUpgrade: ChatCallUpgradeStyle, - videoUpgrade: ChatCallUpgradeStyle, - callBubble: BubbleStyle, - pickMedia: AttachmentSourceListStyle, - unreadMessageIndicator: UnreadMessageIndicatorStyle, - operatorTypingIndicator: OperatorTypingIndicatorStyle, - accessibility: Accessibility = .unsupported, - secureTranscriptTitle: String, - secureTranscriptHeader: HeaderStyle, - unreadMessageDivider: UnreadMessageDividerStyle, - systemMessage: SystemMessageStyle, - gliaVirtualAssistant: GliaVirtualAssistantStyle - ) { - unavailable() - } -} - -/// Unavailable. Style of the choice card sent to the visitor by the AI engine. -@available(*, unavailable, message: "Unavailable, use ``Theme.ChoiceCardStyle`` instead.") -public final class ChoiceCardStyle: OperatorChatMessageStyle { - /// Color of the choice card's border. - public var frameColor: UIColor - - /// Width of the choice card's border. - public var borderWidth: CGFloat - - /// Corner radius of the choice card. - public var cornerRadius: CGFloat - - /// Background color of t the choice card. - public var backgroundColor: UIColor - - /// Styles of the choice card's answer options. - public var choiceOption: ChoiceCardOptionStyle - - /// Accessibility related properties. - public var accessibility: Accessibility - - /// - /// - Parameters: - /// - mainText: Style of the choice card's main text. - /// - frameColor: Color of the choice card's border. - /// - imageFile: Style of a choice card's image. - /// - fileDownload: Style of a choice card's attached files. - /// - operatorImage: Style of the operator's image to the left of a choice card. - /// - choiceOption: Styles of the choice card's answer options. - /// - accessibility: Accessibility related properties. - public init( - mainText: ChatTextContentStyle, - frameColor: UIColor, - borderWidth: CGFloat = 1, - cornerRadius: CGFloat = 8, - backgroundColor: UIColor, - imageFile: ChatImageFileContentStyle, - fileDownload: ChatFileDownloadStyle, - operatorImage: UserImageStyle, - choiceOption: ChoiceCardOptionStyle, - accessibility: Accessibility - ) { - unavailable() - } - - /// Accessibility properties for ChoiceCardStyle. - public struct Accessibility: Equatable { - /// Accessibility label for image. - public var imageLabel: String - - /// - /// - Parameter imageLabel: Accessibility label for image. - public init(imageLabel: String) { - unavailable() - } - - /// Accessibility is not supported intentionally. - public static let unsupported = Self(imageLabel: "") - } -} - -/// Unavailable. Base style of a chat message. -@available(*, unavailable, message: """ -Unavailable, use -``Theme.VisitorMessageStyle``, -``Theme.OperatorMessageStyle`` and -``Theme.SystemMessageStyle`` instead. -""") -public class ChatMessageStyle { - /// Style of the text content. - public var text: ChatTextContentStyle - - /// Style of the image content. - public var imageFile: ChatImageFileContentStyle - - /// Style of the downloadable file content. - public var fileDownload: ChatFileDownloadStyle - - /// - Parameters: - /// - text: Style of the text content. - /// - imageFile: Style of the image content. - /// - fileDownload: Style of the downloadable file content. - /// - public init( - text: ChatTextContentStyle, - imageFile: ChatImageFileContentStyle, - fileDownload: ChatFileDownloadStyle - ) { - unavailable() - } -} - -/// Unavailable. Style of a visitor's message. -@available(*, unavailable, message: "Unavailable, use ``Theme.VisitorMessageStyle`` instead.") -public class VisitorChatMessageStyle: ChatMessageStyle { - /// Font of the message status text. - public var statusFont: UIFont - - /// Color of the message status text. - public var statusColor: UIColor - - /// Text style of the message status text. - public var statusTextStyle: UIFont.TextStyle - - /// Text of the message delivered status. - public var delivered: String - - /// Accessibility related properties. - public var accessibility: Accessibility - - /// - /// - Parameters: - /// - text: Style of the text content. - /// - imageFile: Style of the image content. - /// - fileDownload: Style of the downloadable file content. - /// - statusFont: Font of the message status text. - /// - statusColor: Color of the message status text. - /// - statusTextStyle: Text style of the message status text. - /// - delivered: Text of the message delivered status. - /// - accessibility: Accessibility related properties. - /// - public init( - text: ChatTextContentStyle, - imageFile: ChatImageFileContentStyle, - fileDownload: ChatFileDownloadStyle, - statusFont: UIFont, - statusColor: UIColor, - statusTextStyle: UIFont.TextStyle, - delivered: String, - accessibility: Accessibility = .unsupported - ) { - unavailable() - } - - /// Accessibility properties for VisitorChatMessageStyle. - public struct Accessibility: Equatable { - /// Flag that provides font dynamic type by setting `adjustsFontForContentSizeCategory` for component that supports it. - public var isFontScalingEnabled: Bool - - /// - /// - Parameter isFontScalingEnabled: Flag that provides font dynamic type by setting `adjustsFontForContentSizeCategory` for component that supports it. - public init(isFontScalingEnabled: Bool) { - unavailable() - } - - /// Accessibility is not supported intentionally. - public static let unsupported = Self(isFontScalingEnabled: false) - } -} - -/// Unavailable. Style of an operator's message. -@available(*, unavailable, message: "Unavailable, use ``Theme.OperatorMessageStyle`` instead.") -public class OperatorChatMessageStyle: ChatMessageStyle { - /// Style of the operator's image. - public var operatorImage: UserImageStyle - - /// - /// - Parameters: - /// - text: Style of the text content. - /// - imageFile: Style of the image content. - /// - fileDownload: Style of the downloadable file content. - /// - operatorImage: Style of the operator's image. - /// - public init( - text: ChatTextContentStyle, - imageFile: ChatImageFileContentStyle, - fileDownload: ChatFileDownloadStyle, - operatorImage: UserImageStyle - ) { - unavailable() - } -} - -/// Unavailable. Style of a system message. -@available(*, unavailable, message: "Unavailable, use ``Theme.SystemMessageStyle`` instead.") -final public class SystemMessageStyle: ChatMessageStyle { - /// - Parameters: - /// - text: Style of the text content. - /// - imageFile: Style of the image content. - /// - fileDownload: Style of the downloadable file content. - override public init( - text: ChatTextContentStyle, - imageFile: ChatImageFileContentStyle, - fileDownload: ChatFileDownloadStyle - ) { - unavailable() - } -} diff --git a/GliaWidgets/Sources/View/Chat/ChatStyle.Deprecated.swift b/GliaWidgets/Sources/View/Chat/ChatStyle.Deprecated.swift new file mode 100644 index 000000000..3332fba79 --- /dev/null +++ b/GliaWidgets/Sources/View/Chat/ChatStyle.Deprecated.swift @@ -0,0 +1,117 @@ +import UIKit + +extension ChatStyle { + /// Deprecated. Style of the message sent by the operator. + @available(*, deprecated, message: "Deprecated, use ``ChatStyle.operatorMessageStyle`` instead.") + public var operatorMessage: OperatorChatMessageStyle { + get { + operatorMessageStyle.toOldOperatorMessageStyle() + } + set { + operatorMessageStyle = newValue.toNewOperatorMessageStyle() + } + } + + /// Deprecated. Style of the system message + @available(*, deprecated, message: "Deprecated, use ``ChatStyle.systemMessageStyle`` instead.") + public var systemMessage: SystemMessageStyle { + get { + systemMessageStyle.toOldSystemMessageStyle() + } + set { + systemMessageStyle = newValue.toNewSystemMessageStyle() + } + } + + /// Deprecated. Style of the message sent by the visitor. + @available(*, deprecated, message: "Deprecated, use ``ChatStyle.visitorMessageStyle`` instead.") + public var visitorMessage: VisitorChatMessageStyle { + get { + visitorMessageStyle.toOldVisitorMessageStyle() + } + set { + visitorMessageStyle = newValue.toNewVisitorMessageStyle() + } + } + + /// Deprecated. Style of the choice card sent to the visitor by the AI engine. + @available(*, deprecated, message: "Deprecated, use ``ChatStyle.choiceCardStyle`` instead.") + public var choiceCard: ChoiceCardStyle { + get { + choiceCardStyle.toOldChoiceCardStyle() + } + set { + choiceCardStyle = newValue.toNewChoiceCardStyle() + } + } + + /// Deprecated. + /// - Parameters: + /// - header: Style of the view's header (navigation bar area) when the screen is displaying live chat. + /// - connect: Styles for different engagement connection states. + /// - backgroundColor: View's background color. + /// - preferredStatusBarStyle: Preferred style of the status bar. + /// - title: Title shown in the header. + /// - visitorMessage: Style of the message sent by the visitor. + /// - operatorMessage: Style of the message sent by the operator. + /// - choiceCard: Style of the choice card sent to the visitor by the AI engine. + /// - messageEntry: Style of the message entry area on the bottom of the view. + /// - audioUpgrade: Style of the audio upgrade view. + /// - videoUpgrade: Style of the video upgrade view. + /// - callBubble: Style of the call bubble in chat (shown after upgrade to call). + /// - pickMedia: Style of the attachment media type picker. + /// - unreadMessageIndicator: Style of the unread message indicator. + /// - operatorTypingIndicator: Style of the view that indicates that the operator is currently typing. + /// - accessibility: Accessibility related properties. + /// - secureTranscriptTitle: Header title for secure messaging transcript. + /// - secureTranscriptHeader: Style of the view's header (navigation bar area) when the screen is displaying secure conversations. + /// - unreadMessageDivider: Style for divider of unread messages in secure messaging transcript. + @available(*, deprecated, message: "Deprecated, use designated initializer instead.") + public convenience init( + header: HeaderStyle, + connect: ConnectStyle, + backgroundColor: ColorType, + preferredStatusBarStyle: UIStatusBarStyle, + title: String, + visitorMessage: VisitorChatMessageStyle, + operatorMessage: OperatorChatMessageStyle, + choiceCard: ChoiceCardStyle, + messageEntry: ChatMessageEntryStyle, + audioUpgrade: ChatCallUpgradeStyle, + videoUpgrade: ChatCallUpgradeStyle, + callBubble: BubbleStyle, + pickMedia: AttachmentSourceListStyle, + unreadMessageIndicator: UnreadMessageIndicatorStyle, + operatorTypingIndicator: OperatorTypingIndicatorStyle, + accessibility: Accessibility = .unsupported, + secureTranscriptTitle: String, + secureTranscriptHeader: HeaderStyle, + unreadMessageDivider: UnreadMessageDividerStyle, + systemMessage: SystemMessageStyle, + gliaVirtualAssistant: GliaVirtualAssistantStyle + ) { + self.init( + header: header, + connect: connect, + backgroundColor: backgroundColor, + preferredStatusBarStyle: preferredStatusBarStyle, + title: title, + visitorMessageStyle: visitorMessage.toNewVisitorMessageStyle(), + operatorMessageStyle: operatorMessage.toNewOperatorMessageStyle(), + choiceCardStyle: choiceCard.toNewChoiceCardStyle(), + messageEntry: messageEntry, + audioUpgrade: audioUpgrade, + videoUpgrade: videoUpgrade, + callBubble: callBubble, + pickMedia: pickMedia, + unreadMessageIndicator: unreadMessageIndicator, + operatorTypingIndicator: operatorTypingIndicator, + accessibility: accessibility, + secureTranscriptTitle: secureTranscriptTitle, + secureTranscriptHeader: secureTranscriptHeader, + unreadMessageDivider: unreadMessageDivider, + systemMessageStyle: systemMessage.toNewSystemMessageStyle(), + gliaVirtualAssistant: gliaVirtualAssistant + ) + } +} diff --git a/GliaWidgets/Sources/View/Chat/Message/ChatMessageStyle.swift b/GliaWidgets/Sources/View/Chat/Message/ChatMessageStyle.swift new file mode 100644 index 000000000..5c387a02d --- /dev/null +++ b/GliaWidgets/Sources/View/Chat/Message/ChatMessageStyle.swift @@ -0,0 +1,34 @@ +import UIKit + +/// Base style of a chat message. +@available(*, deprecated, message: """ +Deprecated, use +``Theme.VisitorMessageStyle``, +``Theme.OperatorMessageStyle`` and +``Theme.SystemMessageStyle`` instead. +""") +public class ChatMessageStyle { + /// Style of the text content. + public var text: ChatTextContentStyle + + /// Style of the image content. + public var imageFile: ChatImageFileContentStyle + + /// Style of the downloadable file content. + public var fileDownload: ChatFileDownloadStyle + + /// - Parameters: + /// - text: Style of the text content. + /// - imageFile: Style of the image content. + /// - fileDownload: Style of the downloadable file content. + /// + public init( + text: ChatTextContentStyle, + imageFile: ChatImageFileContentStyle, + fileDownload: ChatFileDownloadStyle + ) { + self.text = text + self.imageFile = imageFile + self.fileDownload = fileDownload + } +} diff --git a/GliaWidgets/Sources/View/Chat/Message/Content/ChoiceCard/ChoiceCardStyle.Accessibility.swift b/GliaWidgets/Sources/View/Chat/Message/Content/ChoiceCard/ChoiceCardStyle.Accessibility.swift new file mode 100644 index 000000000..3edc66e75 --- /dev/null +++ b/GliaWidgets/Sources/View/Chat/Message/Content/ChoiceCard/ChoiceCardStyle.Accessibility.swift @@ -0,0 +1,16 @@ +extension ChoiceCardStyle { + /// Accessibility properties for ChoiceCardStyle. + public struct Accessibility: Equatable { + /// Accessibility label for image. + public var imageLabel: String + + /// + /// - Parameter imageLabel: Accessibility label for image. + public init(imageLabel: String) { + self.imageLabel = imageLabel + } + + /// Accessibility is not supported intentionally. + public static let unsupported = Self(imageLabel: "") + } +} diff --git a/GliaWidgets/Sources/View/Chat/Message/Content/ChoiceCard/ChoiceCardStyle.swift b/GliaWidgets/Sources/View/Chat/Message/Content/ChoiceCard/ChoiceCardStyle.swift new file mode 100644 index 000000000..0b1328a2e --- /dev/null +++ b/GliaWidgets/Sources/View/Chat/Message/Content/ChoiceCard/ChoiceCardStyle.swift @@ -0,0 +1,169 @@ +import UIKit + +/// Deprecated. Style of the choice card sent to the visitor by the AI engine. +@available(*, deprecated, message: "Deprecated, use ``Theme.ChoiceCardStyle`` instead.") +public final class ChoiceCardStyle: OperatorChatMessageStyle { + /// Color of the choice card's border. + public var frameColor: UIColor + + /// Width of the choice card's border. + public var borderWidth: CGFloat + + /// Corner radius of the choice card. + public var cornerRadius: CGFloat + + /// Background color of t the choice card. + public var backgroundColor: UIColor + + /// Styles of the choice card's answer options. + public var choiceOption: ChoiceCardOptionStyle + + /// Accessibility related properties. + public var accessibility: Accessibility + + /// + /// - Parameters: + /// - mainText: Style of the choice card's main text. + /// - frameColor: Color of the choice card's border. + /// - imageFile: Style of a choice card's image. + /// - fileDownload: Style of a choice card's attached files. + /// - operatorImage: Style of the operator's image to the left of a choice card. + /// - choiceOption: Styles of the choice card's answer options. + /// - accessibility: Accessibility related properties. + public init( + mainText: ChatTextContentStyle, + frameColor: UIColor, + borderWidth: CGFloat = 1, + cornerRadius: CGFloat = 8, + backgroundColor: UIColor, + imageFile: ChatImageFileContentStyle, + fileDownload: ChatFileDownloadStyle, + operatorImage: UserImageStyle, + choiceOption: ChoiceCardOptionStyle, + accessibility: Accessibility + ) { + self.frameColor = frameColor + self.borderWidth = borderWidth + self.cornerRadius = cornerRadius + self.backgroundColor = backgroundColor + self.choiceOption = choiceOption + self.accessibility = accessibility + super.init( + text: mainText, + imageFile: imageFile, + fileDownload: fileDownload, + operatorImage: operatorImage + ) + } + + func apply( + configuration: RemoteConfiguration.ResponseCard?, + assetsBuilder: RemoteConfiguration.AssetsBuilder + ) { + configuration?.background?.color?.value + .map { UIColor(hex: $0) } + .first + .unwrap { backgroundColor = $0 } + + configuration?.background?.border?.value + .map { UIColor(hex: $0) } + .first + .unwrap { frameColor = $0 } + + configuration?.background?.cornerRadius + .unwrap { cornerRadius = $0 } + + configuration?.background?.borderWidth + .unwrap { borderWidth = $0 } + + choiceOption.apply( + configuration: configuration?.option, + assetsBuilder: assetsBuilder + ) + + UIFont.convertToFont( + uiFont: assetsBuilder.fontBuilder(configuration?.text?.font), + textStyle: text.textStyle + ).unwrap { text.textFont = $0 } + + configuration?.text?.foreground?.value + .map { UIColor(hex: $0) } + .first + .unwrap { text.textColor = $0 } + + operatorImage.apply(configuration: configuration?.userImage) + } + + // swiftlint:disable function_body_length + func toNewChoiceCardStyle() -> Theme.ChoiceCardStyle { + .init( + text: .init( + color: text.textColor.hex, + font: text.textFont, + textStyle: text.textStyle, + accessibility: .init(isFontScalingEnabled: text.accessibility.isFontScalingEnabled) + ), + background: .init( + background: .fill(color: backgroundColor), + borderColor: .clear, + borderWidth: .zero, + cornerRadius: cornerRadius + ), + imageFile: imageFile, + fileDownload: fileDownload, + operatorImage: operatorImage, + choiceOption: .init( + normal: .init( + background: .fill(color: choiceOption.normal.backgroundColor), + title: .init( + color: choiceOption.normal.textColor.hex, + font: choiceOption.normal.textFont, + textStyle: choiceOption.normal.textStyle, + accessibility: .init(isFontScalingEnabled: choiceOption.normal.accessibility.isFontScalingEnabled) + ), + cornerRadius: choiceOption.normal.cornerRadius, + borderWidth: choiceOption.normal.borderWidth, + borderColor: choiceOption.normal.borderColor?.hex, + accessibility: .init( + label: choiceOption.normal.accessibility.value, + isFontScalingEnabled: choiceOption.normal.accessibility.isFontScalingEnabled + ) + ), + selected: .init( + background: .fill(color: choiceOption.selected.backgroundColor), + title: .init( + color: choiceOption.selected.textColor.hex, + font: choiceOption.selected.textFont, + textStyle: choiceOption.selected.textStyle, + accessibility: .init(isFontScalingEnabled: choiceOption.selected.accessibility.isFontScalingEnabled) + ), + cornerRadius: choiceOption.selected.cornerRadius, + borderWidth: choiceOption.selected.borderWidth, + borderColor: choiceOption.selected.borderColor?.hex, + accessibility: .init( + label: choiceOption.selected.accessibility.value, + isFontScalingEnabled: choiceOption.selected.accessibility.isFontScalingEnabled + ) + ), + disabled: .init( + background: .fill(color: choiceOption.disabled.backgroundColor), + title: .init( + color: choiceOption.disabled.textColor.hex, + font: choiceOption.disabled.textFont, + textStyle: choiceOption.disabled.textStyle, + accessibility: .init(isFontScalingEnabled: choiceOption.disabled.accessibility.isFontScalingEnabled) + ), + cornerRadius: choiceOption.disabled.cornerRadius, + borderWidth: choiceOption.disabled.borderWidth, + borderColor: choiceOption.disabled.borderColor?.hex, + accessibility: .init( + label: choiceOption.disabled.accessibility.value, + isFontScalingEnabled: choiceOption.disabled.accessibility.isFontScalingEnabled + ) + ) + ), + accessibility: .init(imageLabel: accessibility.imageLabel) + ) + } + // swiftlint:enable function_body_length +} diff --git a/GliaWidgets/Sources/View/Chat/Message/OperatorChatMessageStyle.swift b/GliaWidgets/Sources/View/Chat/Message/OperatorChatMessageStyle.swift new file mode 100644 index 000000000..23352c73f --- /dev/null +++ b/GliaWidgets/Sources/View/Chat/Message/OperatorChatMessageStyle.swift @@ -0,0 +1,85 @@ +import UIKit + +/// Deprecated. Style of an operator's message. +@available(*, deprecated, message: "Deprecated, use ``Theme.OperatorMessageStyle`` instead.") +public class OperatorChatMessageStyle: ChatMessageStyle { + /// Style of the operator's image. + public var operatorImage: UserImageStyle + + /// + /// - Parameters: + /// - text: Style of the text content. + /// - imageFile: Style of the image content. + /// - fileDownload: Style of the downloadable file content. + /// - operatorImage: Style of the operator's image. + /// + public init( + text: ChatTextContentStyle, + imageFile: ChatImageFileContentStyle, + fileDownload: ChatFileDownloadStyle, + operatorImage: UserImageStyle + ) { + self.operatorImage = operatorImage + super.init( + text: text, + imageFile: imageFile, + fileDownload: fileDownload + ) + } + + func apply( + configuration: RemoteConfiguration.MessageBalloon?, + assetsBuilder: RemoteConfiguration.AssetsBuilder + ) { + configuration?.background?.cornerRadius + .unwrap { text.cornerRadius = $0 } + + configuration?.background?.color?.value + .map { UIColor(hex: $0) } + .first + .unwrap { + text.backgroundColor = $0 + imageFile.backgroundColor = $0 + } + + UIFont.convertToFont( + uiFont: assetsBuilder.fontBuilder(configuration?.text?.font), + textStyle: text.textStyle + ).unwrap { text.textFont = $0 } + + configuration?.text?.foreground?.value + .map { UIColor(hex: $0) } + .first + .unwrap { text.textColor = $0 } + + fileDownload.apply( + configuration: configuration?.file, + assetsBuilder: assetsBuilder + ) + operatorImage.apply(configuration: configuration?.userImage) + } + + func toNewOperatorMessageStyle() -> Theme.OperatorMessageStyle { + .init( + text: .init( + color: text.textColor.hex, + font: text.textFont, + textStyle: text.textStyle, + accessibility: .init(isFontScalingEnabled: text.accessibility.isFontScalingEnabled) + ), + background: .init( + background: .fill(color: text.backgroundColor), + borderColor: .clear, // <- Because OperatorChatMessageStyle does not have `borderColor` + borderWidth: .zero, // <- Because OperatorChatMessageStyle does not have `borderWidth` + cornerRadius: text.cornerRadius + ), + imageFile: imageFile, + fileDownload: fileDownload, + operatorImage: operatorImage, + accessibility: .init( + value: text.accessibility.value, + isFontScalingEnabled: text.accessibility.isFontScalingEnabled + ) + ) + } +} diff --git a/GliaWidgets/Sources/View/Chat/Message/SystemMessageStyle.swift b/GliaWidgets/Sources/View/Chat/Message/SystemMessageStyle.swift new file mode 100644 index 000000000..a8eca3601 --- /dev/null +++ b/GliaWidgets/Sources/View/Chat/Message/SystemMessageStyle.swift @@ -0,0 +1,70 @@ +import UIKit + +/// Deprecated. Style of a system message. +@available(*, deprecated, message: "Deprecated, use ``Theme.SystemMessageStyle`` instead.") +final public class SystemMessageStyle: ChatMessageStyle { + /// - Parameters: + /// - text: Style of the text content. + /// - imageFile: Style of the image content. + /// - fileDownload: Style of the downloadable file content. + override public init( + text: ChatTextContentStyle, + imageFile: ChatImageFileContentStyle, + fileDownload: ChatFileDownloadStyle + ) { + super.init( + text: text, + imageFile: imageFile, + fileDownload: fileDownload + ) + } + + func apply( + configuration: RemoteConfiguration.MessageBalloon?, + assetsBuilder: RemoteConfiguration.AssetsBuilder + ) { + configuration?.background?.cornerRadius + .unwrap { text.cornerRadius = $0 } + + configuration?.background?.color?.value + .map { UIColor(hex: $0) } + .first + .unwrap { + text.backgroundColor = $0 + } + + UIFont.convertToFont( + uiFont: assetsBuilder.fontBuilder(configuration?.text?.font), + textStyle: text.textStyle + ).unwrap { text.textFont = $0 } + + configuration?.text?.foreground?.value + .map { UIColor(hex: $0) } + .first + .unwrap { text.textColor = $0 } + } + + func toNewSystemMessageStyle() -> Theme.SystemMessageStyle { + .init( + text: .init( + color: text.textColor.hex, + font: text.textFont, + textStyle: text.textStyle, + alignment: .center, + accessibility: .init(isFontScalingEnabled: text.accessibility.isFontScalingEnabled) + ), + background: .init( + background: .fill(color: text.backgroundColor), + borderColor: .clear, // <- Because SystemMessageStyle does not have `borderColor` + borderWidth: .zero, // <- Because SystemMessageStyle does not have `borderWidth` + cornerRadius: text.cornerRadius + ), + imageFile: imageFile, + fileDownload: fileDownload, + accessibility: .init( + value: text.accessibility.value, + isFontScalingEnabled: text.accessibility.isFontScalingEnabled + ) + ) + } +} diff --git a/GliaWidgets/Sources/View/Chat/Message/VisitorChatMessageStyle.Accessibility.swift b/GliaWidgets/Sources/View/Chat/Message/VisitorChatMessageStyle.Accessibility.swift new file mode 100644 index 000000000..b7f354200 --- /dev/null +++ b/GliaWidgets/Sources/View/Chat/Message/VisitorChatMessageStyle.Accessibility.swift @@ -0,0 +1,16 @@ +extension VisitorChatMessageStyle { + /// Accessibility properties for VisitorChatMessageStyle. + public struct Accessibility: Equatable { + /// Flag that provides font dynamic type by setting `adjustsFontForContentSizeCategory` for component that supports it. + public var isFontScalingEnabled: Bool + + /// + /// - Parameter isFontScalingEnabled: Flag that provides font dynamic type by setting `adjustsFontForContentSizeCategory` for component that supports it. + public init(isFontScalingEnabled: Bool) { + self.isFontScalingEnabled = isFontScalingEnabled + } + + /// Accessibility is not supported intentionally. + public static let unsupported = Self(isFontScalingEnabled: false) + } +} diff --git a/GliaWidgets/Sources/View/Chat/Message/VisitorChatMessageStyle.swift b/GliaWidgets/Sources/View/Chat/Message/VisitorChatMessageStyle.swift new file mode 100644 index 000000000..c1532dafc --- /dev/null +++ b/GliaWidgets/Sources/View/Chat/Message/VisitorChatMessageStyle.swift @@ -0,0 +1,124 @@ +import UIKit + +/// Deprecated. Style of a visitor's message. +@available(*, deprecated, message: "Deprecated, use ``Theme.VisitorMessageStyle`` instead.") +public class VisitorChatMessageStyle: ChatMessageStyle { + /// Font of the message status text. + public var statusFont: UIFont + + /// Color of the message status text. + public var statusColor: UIColor + + /// Text style of the message status text. + public var statusTextStyle: UIFont.TextStyle + + /// Text of the message delivered status. + public var delivered: String + + /// Accessibility related properties. + public var accessibility: Accessibility + + /// + /// - Parameters: + /// - text: Style of the text content. + /// - imageFile: Style of the image content. + /// - fileDownload: Style of the downloadable file content. + /// - statusFont: Font of the message status text. + /// - statusColor: Color of the message status text. + /// - statusTextStyle: Text style of the message status text. + /// - delivered: Text of the message delivered status. + /// - accessibility: Accessibility related properties. + /// + public init( + text: ChatTextContentStyle, + imageFile: ChatImageFileContentStyle, + fileDownload: ChatFileDownloadStyle, + statusFont: UIFont, + statusColor: UIColor, + statusTextStyle: UIFont.TextStyle, + delivered: String, + accessibility: Accessibility = .unsupported + ) { + self.statusFont = statusFont + self.statusColor = statusColor + self.statusTextStyle = statusTextStyle + self.delivered = delivered + self.accessibility = accessibility + super.init( + text: text, + imageFile: imageFile, + fileDownload: fileDownload + ) + } + + func apply( + configuration: RemoteConfiguration.MessageBalloon?, + assetsBuilder: RemoteConfiguration.AssetsBuilder + ) { + configuration?.background?.cornerRadius + .unwrap { text.cornerRadius = $0 } + + configuration?.background?.color?.value + .map { UIColor(hex: $0) } + .first + .unwrap { + text.backgroundColor = $0 + imageFile.backgroundColor = $0 + } + + UIFont.convertToFont( + uiFont: assetsBuilder.fontBuilder(configuration?.text?.font), + textStyle: text.textStyle + ).unwrap { text.textFont = $0 } + + configuration?.text?.foreground?.value + .map { UIColor(hex: $0) } + .first + .unwrap { text.textColor = $0 } + + UIFont.convertToFont( + uiFont: assetsBuilder.fontBuilder(configuration?.status?.font), + textStyle: statusTextStyle + ).unwrap { statusFont = $0 } + + configuration?.status?.foreground?.value + .map { UIColor(hex: $0) } + .first + .unwrap { statusColor = $0 } + + fileDownload.apply( + configuration: configuration?.file, + assetsBuilder: assetsBuilder + ) + } + + func toNewVisitorMessageStyle() -> Theme.VisitorMessageStyle { + .init( + text: .init( + color: text.textColor.hex, + font: text.textFont, + textStyle: text.textStyle, + accessibility: .init(isFontScalingEnabled: text.accessibility.isFontScalingEnabled) + ), + background: .init( + background: .fill(color: text.backgroundColor), + borderColor: .clear, // <- Because OperatorChatMessageStyle does not have `borderColor` + borderWidth: .zero, // <- Because OperatorChatMessageStyle does not have `borderWidth` + cornerRadius: text.cornerRadius + ), + imageFile: imageFile, + fileDownload: fileDownload, + status: .init( + color: statusColor.hex, + font: statusFont, + textStyle: statusTextStyle, + accessibility: .init(isFontScalingEnabled: text.accessibility.isFontScalingEnabled) + ), + delivered: delivered, + accessibility: .init( + value: text.accessibility.value, + isFontScalingEnabled: text.accessibility.isFontScalingEnabled + ) + ) + } +}