From 2e91c8d92c0c5f8a18f7a1d3a8a5ec6769b833ff Mon Sep 17 00:00:00 2001 From: Max Radermacher Date: Mon, 25 Mar 2024 13:26:31 -0500 Subject: [PATCH] Move around a bunch of files in Signal/ --- .swiftlint.yml | 4 +- Signal.xcodeproj/project.pbxproj | 354 ++++++++---------- .../Accessibility/SpeechManager.swift | 0 Signal/{src => AppLaunch}/AppDelegate.swift | 0 .../AppEnvironment.swift | 0 .../Dependencies+MainApp.swift | 0 .../Launch => AppLaunch}/LaunchJobs.swift | 0 .../LoadingViewController.swift | 0 .../util => AppLaunch}/MainAppContext.swift | 0 .../environment => AppLaunch}/SignalApp.swift | 0 .../AudioMessagePresenter.swift | 0 .../AudioPresentation.swift | 0 .../BlockingAnnouncementOnlyView.swift | 0 .../BlockingLegacyGroupView.swift | 0 .../CVAttachments.swift | 0 .../CVAudioPlayback.swift | 0 .../CVBackgroundContainer.swift | 0 .../CV => ConversationView}/CVCell.swift | 0 .../CVItemViewModelImpl.swift | 0 .../CVMediaCache.swift | 0 .../CV => ConversationView}/CVNode.swift | 0 .../CVViewState+Banners.swift | 0 .../ConversationView/CVViewState.swift | 0 .../AudioMessagePlaybackRateView.swift | 0 .../CellViews}/AudioMessageView.swift | 0 .../AudioWaveformProgressView.swift | 0 .../CellViews}/CVAttachmentProgressView.swift | 0 .../CellViews}/CVColorOrGradientView.swift | 0 .../CellViews}/CVContactShareView.swift | 0 .../CellViews}/CVMediaAlbumView.swift | 0 .../CellViews}/CVMediaView.swift | 0 .../CellViews}/CVReactionCountsView.swift | 0 .../CellViews}/CVStackView.swift | 0 .../CellViews}/CVWallpaperBlurView.swift | 0 .../CellViews}/GiftBadgeView.swift | 0 .../CellViews}/LoadMoreMessagesView.swift | 0 .../CellViews}/MessageSelectionView.swift | 0 .../CellViews}/MessageTimerView.swift | 0 .../CellViews}/QuotedMessageView.swift | 0 .../CellViews}/ReusableMediaView.swift | 0 .../Components}/CVComponent.swift | 0 .../CVComponentAudioAttachment.swift | 0 .../Components}/CVComponentBodyMedia.swift | 0 .../Components}/CVComponentBodyText.swift | 0 .../CVComponentBottomButtons.swift | 0 .../Components}/CVComponentContactShare.swift | 0 .../Components}/CVComponentDateHeader.swift | 0 .../Components}/CVComponentDelegate.swift | 0 .../Components}/CVComponentFooter.swift | 0 .../CVComponentGenericAttachment.swift | 0 .../Components}/CVComponentGiftBadge.swift | 0 .../Components}/CVComponentLinkPreview.swift | 0 .../Components}/CVComponentMessage.swift | 0 .../CVComponentPaymentAttachment.swift | 0 .../Components}/CVComponentQuotedReply.swift | 0 .../Components}/CVComponentReactions.swift | 0 .../Components}/CVComponentSenderName.swift | 0 .../CVComponentState+GroupLink.swift | 0 .../Components}/CVComponentState.swift | 0 .../Components}/CVComponentSticker.swift | 0 .../CVComponentSystemMessage.swift | 0 .../CVComponentThreadDetails.swift | 0 .../CVComponentTypingIndicator.swift | 0 .../CVComponentUnreadIndicator.swift | 0 .../Components}/CVComponentViewOnce.swift | 0 ...eItem+CVComponentSystemMessageAction.swift | 0 .../ConversationCollectionView.swift | 0 .../ConversationHeaderView.swift | 0 .../ConversationInputTextView.swift | 0 ...ationInputToolbar+QuotedReplyPreview.swift | 0 .../ConversationInputToolbar.swift | 0 .../ConversationScrollButton.swift | 0 .../ConversationViewController+Banners.swift | 0 ...ersationViewController+BodyTextItems.swift | 0 ...ConversationViewController+BottomBar.swift | 0 .../ConversationViewController+CVC.swift | 0 ...onViewController+CVComponentDelegate.swift | 0 .../ConversationViewController+Calls.swift | 0 ...ler+ConversationInputToolbarDelegate.swift | 0 ...ConversationViewController+Delegates.swift | 0 ...ionViewController+GestureRecognizers.swift | 0 ...onversationViewController+GiftBadges.swift | 0 ...tionViewController+LastVisibleSortId.swift | 0 .../ConversationViewController+Mentions.swift | 0 ...rsationViewController+MessageActions.swift | 0 ...iewController+MessageActionsDelegate.swift | 0 ...rsationViewController+MessageRequest.swift | 0 .../ConversationViewController+Misc.swift | 0 ...ersationViewController+Notifications.swift | 0 .../ConversationViewController+OWS.swift | 0 .../ConversationViewController+Scroll.swift | 0 ...ConversationViewController+Selection.swift | 0 ...ionViewController+SystemMessageItems.swift | 0 .../ConversationViewController+UI.swift | 0 ...versationViewController+UIScrollView.swift | 0 ...versationViewController+VoiceMessage.swift | 0 ...ConversationViewController+Wallpaper.swift | 0 .../ConversationViewController.swift | 0 .../ConversationViewLayout.swift | 0 .../ConversationViewModel.swift | 0 .../DateHeaderInteraction.swift | 0 ...tDisappearingMessageTimerInteraction.swift | 0 .../ThreadDetailsInteraction.swift | 0 .../TypingIndicatorInteraction.swift | 0 .../UnknownThreadWarningInteraction.swift | 0 .../UnreadIndicatorInteraction.swift | 0 .../Loading}/CVAvatarBuilder.swift | 0 .../Loading}/CVItemModel.swift | 0 .../Loading}/CVItemViewState.swift | 0 .../Loading}/CVLoadContext.swift | 0 .../Loading}/CVLoadCoordinator.swift | 0 .../Loading}/CVLoadRequest.swift | 0 .../Loading}/CVLoader.swift | 0 .../Loading}/CVRenderItem.swift | 0 .../Loading}/CVRenderState.swift | 0 .../Loading}/CVUpdate.swift | 0 .../Loading}/CVViewStateSnapshot.swift | 0 .../Loading}/MessageLoader.swift | 0 .../ConversationView/MemberRequestView.swift | 0 .../MessageActions.swift | 0 .../ConversationView/MessageRequestView.swift | 0 .../EmojiCountsCollectionView.swift | 0 .../Reactions}/EmojiReactorsTableView.swift | 0 .../Reactions}/InteractionReactionState.swift | 0 .../Reactions}/ReactionsDetailSheet.swift | 0 .../VoiceMessageInProgressDraft.swift | 0 .../VoiceMessageInterruptedDraft.swift | 0 .../VoiceMessageSendableDraft.swift | 0 .../DeviceTransferOperation.swift | 0 .../DeviceTransferService+Manifest.swift | 0 ...ceTransferService+MultipeerDelegates.swift | 0 .../DeviceTransferService+Restore.swift | 0 .../DeviceTransferService+State.swift | 0 .../DeviceTransferService+URL.swift | 0 .../DeviceTransferService.swift | 0 ...gDeviceTransferInitialViewController.swift | 0 ...ngDeviceTransferNavigationController.swift | 0 ...DeviceTransferProgressViewController.swift | 0 ...viceTransferQRScanningViewController.swift | 0 .../SelfSignedIdentity.swift | 0 .../util => }/Emoji/Emoji+Available.swift | 0 .../{src/util => }/Emoji/Emoji+Category.swift | 0 Signal/{src/util => }/Emoji/Emoji+Name.swift | 0 .../util => }/Emoji/Emoji+SkinTones.swift | 0 Signal/{src/util => }/Emoji/Emoji.swift | 0 .../EmojiPickerCollectionView.swift | 0 .../EmojiPickerSectionToolbar.swift | 0 .../EmojiPickerSheet.swift | 0 ...jiReactionPickerConfigViewController.swift | 0 .../EmojiSkinTonePicker.swift | 0 .../Emoji/EmojiWithSkinTones+String.swift | 0 .../util => }/Emoji/EmojiWithSkinTones.swift | 0 .../util => Expiration}/AppUpdateNag.swift | 0 .../{src/util => Expiration}/OsExpiry.swift | 0 .../UIDevice+CanUpgradeOperatingSystem.swift | 0 .../ExperienceUpgradeManager.swift | 0 .../ContactPermissionReminderMegaphone.swift | 0 .../CreateUsernameMegaphone.swift | 0 .../UserInterface}/IntroducingPINs.swift | 0 .../UserInterface}/MegaphoneView.swift | 0 ...ificationPermissionReminderMegaphone.swift | 0 .../UserInterface}/PinReminderMegaphone.swift | 0 .../UserInterface}/RemoteMegaphone.swift | 0 .../UserInterface}/SplashViewController.swift | 0 .../AppIconBadgeUpdater.swift | 0 .../BadgeManager.swift | 0 .../NotificationActionHandler.swift | 0 .../PushRegistrationManager.swift | 0 .../DeviceProvisioningURL.swift | 0 .../ProvisioningBaseViewController.swift | 0 .../ProvisioningController.swift | 0 ...ModeSwitchConfirmationViewController.swift | 0 ...rovisioningPermissionsViewController.swift | 0 .../ProvisioningPrepViewController.swift | 0 .../ProvisioningQRCodeViewController.swift | 0 ...visioningSetDeviceNameViewController.swift | 0 .../ProvisioningSplashViewController.swift | 0 ...isioningTransferChoiceViewController.swift | 0 ...ioningTransferProgressViewController.swift | 0 ...isioningTransferQRCodeViewController.swift | 0 .../PhoneNumberValidator.swift | 0 .../RegistrationUtils.swift | 0 .../ContactSupportAlert+Registration.swift | 0 .../RegistrationCaptchaViewController.swift | 0 ...tionChangeNumberSplashViewController.swift | 0 ...honeNumberConfirmationViewController.swift | 0 ...ationChangePhoneNumberViewController.swift | 0 ...ationConfirmModeSwitchViewController.swift | 0 .../RegistrationLoadingViewController.swift | 0 .../RegistrationNavigationController.swift | 0 ...egistrationPermissionsViewController.swift | 0 ...eNumberDiscoverabilityViewController.swift | 0 .../RegistrationPhoneNumberInputView.swift | 0 ...egistrationPhoneNumberViewController.swift | 0 .../RegistrationPhoneNumberViewState.swift | 0 ...tedAndMustCreateNewPinViewController.swift | 0 .../RegistrationPinViewController.swift | 0 .../RegistrationProfileViewController.swift | 0 ...strationReglockTimeoutViewController.swift | 0 .../RegistrationSplashViewController.swift | 0 ...strationTransferChoiceViewController.swift | 0 ...rationTransferProgressViewController.swift | 0 ...strationTransferQRCodeViewController.swift | 0 .../RegistrationVerificationCodeView.swift | 0 ...gistrationVerificationViewController.swift | 0 .../UserInterface}/RegistrationViewUtil.swift | 0 ...rnameLinkPresentQRCodeViewController.swift | 0 ...eLinkQRCodeColorPickerViewController.swift | 0 .../UsernameLinkQRCodeContentController.swift | 0 .../Links/UsernameLinkScanQRCodeSheet.swift | 0 ...UsernameLinkScanQRCodeViewController.swift | 0 ...UsernameLinkShareSheetViewController.swift | 0 .../Links/UsernameLinkTooltipView.swift | 0 .../UsernameSelectionCoordinator.swift | 0 ...meSelectionViewController+HeaderView.swift | 0 ...tionViewController+UsernameTextField.swift | 0 .../UsernameSelectionViewController.swift | 0 .../Usernames/UsernameChangeDelegate.swift | 0 .../UsernameEducationViewController.swift | 0 219 files changed, 167 insertions(+), 191 deletions(-) rename Signal/{src => }/Accessibility/SpeechManager.swift (100%) rename Signal/{src => AppLaunch}/AppDelegate.swift (100%) rename Signal/{src/environment => AppLaunch}/AppEnvironment.swift (100%) rename Signal/{src/util => AppLaunch}/Dependencies+MainApp.swift (100%) rename Signal/{src/Launch => AppLaunch}/LaunchJobs.swift (100%) rename Signal/{src/ViewControllers => AppLaunch}/LoadingViewController.swift (100%) rename Signal/{src/util => AppLaunch}/MainAppContext.swift (100%) rename Signal/{src/environment => AppLaunch}/SignalApp.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView}/AudioMessagePresenter.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView}/AudioPresentation.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/BlockingAnnouncementOnlyView.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/BlockingLegacyGroupView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView}/CVAttachments.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView}/CVAudioPlayback.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/CVBackgroundContainer.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView}/CVCell.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView}/CVItemViewModelImpl.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView}/CVMediaCache.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView}/CVNode.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/CVViewState+Banners.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/CVViewState.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/AudioMessagePlaybackRateView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/AudioMessageView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/AudioWaveformProgressView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/CVAttachmentProgressView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/CellViews}/CVColorOrGradientView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/CVContactShareView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/CVMediaAlbumView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/CVMediaView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/CVReactionCountsView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/CellViews}/CVStackView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/CellViews}/CVWallpaperBlurView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/GiftBadgeView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/LoadMoreMessagesView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/MessageSelectionView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/MessageTimerView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/QuotedMessageView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Cells => ConversationView/CellViews}/ReusableMediaView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Components}/CVComponent.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentAudioAttachment.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentBodyMedia.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentBodyText.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentBottomButtons.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentContactShare.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentDateHeader.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Components}/CVComponentDelegate.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentFooter.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentGenericAttachment.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentGiftBadge.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentLinkPreview.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentMessage.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentPaymentAttachment.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentQuotedReply.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentReactions.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentSenderName.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Components}/CVComponentState+GroupLink.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Components}/CVComponentState.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentSticker.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentSystemMessage.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentThreadDetails.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentTypingIndicator.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentUnreadIndicator.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/CVComponentViewOnce.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV/CVComponents => ConversationView/Components}/PersistableGroupUpdateItem+CVComponentSystemMessageAction.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationCollectionView.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationHeaderView.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationInputTextView.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationInputToolbar+QuotedReplyPreview.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationInputToolbar.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationScrollButton.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+Banners.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+BodyTextItems.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+BottomBar.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+CVC.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+CVComponentDelegate.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+Calls.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+ConversationInputToolbarDelegate.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+Delegates.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+GestureRecognizers.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+GiftBadges.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+LastVisibleSortId.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+Mentions.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+MessageActions.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+MessageActionsDelegate.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+MessageRequest.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+Misc.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+Notifications.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+OWS.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+Scroll.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+Selection.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+SystemMessageItems.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+UI.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+UIScrollView.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+VoiceMessage.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController+Wallpaper.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewController.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewLayout.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/ConversationViewModel.swift (100%) rename Signal/{src/ViewControllers/ConversationView => ConversationView/DynamicInteractions}/DateHeaderInteraction.swift (100%) rename Signal/{src/ViewControllers/ConversationView => ConversationView/DynamicInteractions}/DefaultDisappearingMessageTimerInteraction.swift (100%) rename Signal/{src/ViewControllers/ConversationView => ConversationView/DynamicInteractions}/ThreadDetailsInteraction.swift (100%) rename Signal/{src/ViewControllers/ConversationView => ConversationView/DynamicInteractions}/TypingIndicatorInteraction.swift (100%) rename Signal/{src/ViewControllers/ConversationView => ConversationView/DynamicInteractions}/UnknownThreadWarningInteraction.swift (100%) rename Signal/{src/ViewControllers/ConversationView => ConversationView/DynamicInteractions}/UnreadIndicatorInteraction.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Loading}/CVAvatarBuilder.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Loading}/CVItemModel.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Loading}/CVItemViewState.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Loading}/CVLoadContext.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Loading}/CVLoadCoordinator.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Loading}/CVLoadRequest.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Loading}/CVLoader.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Loading}/CVRenderItem.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Loading}/CVRenderState.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Loading}/CVUpdate.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Loading}/CVViewStateSnapshot.swift (100%) rename Signal/{src/ViewControllers/ConversationView/CV => ConversationView/Loading}/MessageLoader.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/MemberRequestView.swift (100%) rename Signal/{src/Models => ConversationView}/MessageActions.swift (100%) rename Signal/{src/ViewControllers => }/ConversationView/MessageRequestView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Reactions Details => ConversationView/Reactions}/EmojiCountsCollectionView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Reactions Details => ConversationView/Reactions}/EmojiReactorsTableView.swift (100%) rename Signal/{src/ViewControllers/ConversationView => ConversationView/Reactions}/InteractionReactionState.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Reactions Details => ConversationView/Reactions}/ReactionsDetailSheet.swift (100%) rename Signal/{ => ConversationView}/VoiceMessage/VoiceMessageInProgressDraft.swift (100%) rename Signal/{ => ConversationView}/VoiceMessage/VoiceMessageInterruptedDraft.swift (100%) rename Signal/{ => ConversationView}/VoiceMessage/VoiceMessageSendableDraft.swift (100%) rename Signal/{src/util/Device Transfer => DeviceTransfer}/DeviceTransferOperation.swift (100%) rename Signal/{src/util/Device Transfer => DeviceTransfer}/DeviceTransferService+Manifest.swift (100%) rename Signal/{src/util/Device Transfer => DeviceTransfer}/DeviceTransferService+MultipeerDelegates.swift (100%) rename Signal/{src/util/Device Transfer => DeviceTransfer}/DeviceTransferService+Restore.swift (100%) rename Signal/{src/util/Device Transfer => DeviceTransfer}/DeviceTransferService+State.swift (100%) rename Signal/{src/util/Device Transfer => DeviceTransfer}/DeviceTransferService+URL.swift (100%) rename Signal/{src/util/Device Transfer => DeviceTransfer}/DeviceTransferService.swift (100%) rename Signal/{src/ViewControllers/OutgoingDeviceTransfer => DeviceTransfer}/OutgoingDeviceTransferInitialViewController.swift (100%) rename Signal/{src/ViewControllers/OutgoingDeviceTransfer => DeviceTransfer}/OutgoingDeviceTransferNavigationController.swift (100%) rename Signal/{src/ViewControllers/OutgoingDeviceTransfer => DeviceTransfer}/OutgoingDeviceTransferProgressViewController.swift (100%) rename Signal/{src/ViewControllers/OutgoingDeviceTransfer => DeviceTransfer}/OutgoingDeviceTransferQRScanningViewController.swift (100%) rename Signal/{src/util/Device Transfer => DeviceTransfer}/SelfSignedIdentity.swift (100%) rename Signal/{src/util => }/Emoji/Emoji+Available.swift (100%) rename Signal/{src/util => }/Emoji/Emoji+Category.swift (100%) rename Signal/{src/util => }/Emoji/Emoji+Name.swift (100%) rename Signal/{src/util => }/Emoji/Emoji+SkinTones.swift (100%) rename Signal/{src/util => }/Emoji/Emoji.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Emoji Picker => Emoji}/EmojiPickerCollectionView.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Emoji Picker => Emoji}/EmojiPickerSectionToolbar.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Emoji Picker => Emoji}/EmojiPickerSheet.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Emoji Picker => Emoji}/EmojiReactionPickerConfigViewController.swift (100%) rename Signal/{src/ViewControllers/ConversationView/Emoji Picker => Emoji}/EmojiSkinTonePicker.swift (100%) rename Signal/{src/util => }/Emoji/EmojiWithSkinTones+String.swift (100%) rename Signal/{src/util => }/Emoji/EmojiWithSkinTones.swift (100%) rename Signal/{src/util => Expiration}/AppUpdateNag.swift (100%) rename Signal/{src/util => Expiration}/OsExpiry.swift (100%) rename Signal/{src/util => Expiration}/UIDevice+CanUpgradeOperatingSystem.swift (100%) rename Signal/{src/Experience Upgrades => Megaphones}/ExperienceUpgradeManager.swift (100%) rename Signal/{src/Experience Upgrades/Upgrade Views => Megaphones/UserInterface}/ContactPermissionReminderMegaphone.swift (100%) rename Signal/{src/Experience Upgrades/Upgrade Views => Megaphones/UserInterface}/CreateUsernameMegaphone.swift (100%) rename Signal/{src/Experience Upgrades/Upgrade Views => Megaphones/UserInterface}/IntroducingPINs.swift (100%) rename Signal/{src/Experience Upgrades => Megaphones/UserInterface}/MegaphoneView.swift (100%) rename Signal/{src/Experience Upgrades/Upgrade Views => Megaphones/UserInterface}/NotificationPermissionReminderMegaphone.swift (100%) rename Signal/{src/Experience Upgrades/Upgrade Views => Megaphones/UserInterface}/PinReminderMegaphone.swift (100%) rename Signal/{src/Experience Upgrades/Upgrade Views => Megaphones/UserInterface}/RemoteMegaphone.swift (100%) rename Signal/{src/Experience Upgrades => Megaphones/UserInterface}/SplashViewController.swift (100%) rename Signal/{src/Badge => Notifications}/AppIconBadgeUpdater.swift (100%) rename Signal/{src/Badge => Notifications}/BadgeManager.swift (100%) rename Signal/{src/util => Notifications}/NotificationActionHandler.swift (100%) rename Signal/{src/environment => Notifications}/PushRegistrationManager.swift (100%) rename Signal/{src/Models => Provisioning}/DeviceProvisioningURL.swift (100%) rename Signal/{src/ViewControllers/Registration/Provisioning => Provisioning/UserInterface}/ProvisioningBaseViewController.swift (100%) rename Signal/{src/ViewControllers/Registration/Provisioning => Provisioning/UserInterface}/ProvisioningController.swift (100%) rename Signal/{src/ViewControllers/Registration/Provisioning => Provisioning/UserInterface}/ProvisioningModeSwitchConfirmationViewController.swift (100%) rename Signal/{src/ViewControllers/Registration/Provisioning => Provisioning/UserInterface}/ProvisioningPermissionsViewController.swift (100%) rename Signal/{src/ViewControllers/Registration/Provisioning => Provisioning/UserInterface}/ProvisioningPrepViewController.swift (100%) rename Signal/{src/ViewControllers/Registration/Provisioning => Provisioning/UserInterface}/ProvisioningQRCodeViewController.swift (100%) rename Signal/{src/ViewControllers/Registration/Provisioning => Provisioning/UserInterface}/ProvisioningSetDeviceNameViewController.swift (100%) rename Signal/{src/ViewControllers/Registration/Provisioning => Provisioning/UserInterface}/ProvisioningSplashViewController.swift (100%) rename Signal/{src/ViewControllers/Registration/Provisioning => Provisioning/UserInterface}/ProvisioningTransferChoiceViewController.swift (100%) rename Signal/{src/ViewControllers/Registration/Provisioning => Provisioning/UserInterface}/ProvisioningTransferProgressViewController.swift (100%) rename Signal/{src/ViewControllers/Registration/Provisioning => Provisioning/UserInterface}/ProvisioningTransferQRCodeViewController.swift (100%) rename Signal/{src/Models => Registration}/PhoneNumberValidator.swift (100%) rename Signal/{src/util => Registration}/RegistrationUtils.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/ContactSupportAlert+Registration.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationCaptchaViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationChangeNumberSplashViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationChangePhoneNumberConfirmationViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationChangePhoneNumberViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationConfirmModeSwitchViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationLoadingViewController.swift (100%) rename Signal/Registration/{ViewControllers => UserInterface}/RegistrationNavigationController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationPermissionsViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationPhoneNumberDiscoverabilityViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationPhoneNumberInputView.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationPhoneNumberViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationPhoneNumberViewState.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationPinAttemptsExhaustedAndMustCreateNewPinViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationPinViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationProfileViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationReglockTimeoutViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationSplashViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationTransferChoiceViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationTransferProgressViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationTransferQRCodeViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationVerificationCodeView.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationVerificationViewController.swift (100%) rename Signal/{src/ViewControllers/Registration => Registration/UserInterface}/RegistrationViewUtil.swift (100%) rename Signal/{src => }/Usernames/Links/UsernameLinkPresentQRCodeViewController.swift (100%) rename Signal/{src => }/Usernames/Links/UsernameLinkQRCodeColorPickerViewController.swift (100%) rename Signal/{src => }/Usernames/Links/UsernameLinkQRCodeContentController.swift (100%) rename Signal/{src => }/Usernames/Links/UsernameLinkScanQRCodeSheet.swift (100%) rename Signal/{src => }/Usernames/Links/UsernameLinkScanQRCodeViewController.swift (100%) rename Signal/{src => }/Usernames/Links/UsernameLinkShareSheetViewController.swift (100%) rename Signal/{src => }/Usernames/Links/UsernameLinkTooltipView.swift (100%) rename Signal/{src => }/Usernames/Selection/UsernameSelectionCoordinator.swift (100%) rename Signal/{src => }/Usernames/Selection/UsernameSelectionViewController+HeaderView.swift (100%) rename Signal/{src => }/Usernames/Selection/UsernameSelectionViewController+UsernameTextField.swift (100%) rename Signal/{src => }/Usernames/Selection/UsernameSelectionViewController.swift (100%) rename Signal/{src => }/Usernames/UsernameChangeDelegate.swift (100%) rename Signal/{src => }/Usernames/UsernameEducationViewController.swift (100%) diff --git a/.swiftlint.yml b/.swiftlint.yml index fdd512d4d1..b85e615621 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -3,8 +3,8 @@ excluded: - ThirdParty - SignalServiceKit/src/Protos/Generated # SwiftLint has trouble with these files. See . -- Signal/src/util/Emoji/Emoji+SkinTones.swift -- Signal/src/util/Emoji/EmojiWithSkinTones+String.swift +- Signal/Emoji/Emoji+SkinTones.swift +- Signal/Emoji/EmojiWithSkinTones+String.swift disabled_rules: - block_based_kvo - control_statement diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index fedb63cf88..9180356a83 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -5680,37 +5680,6 @@ path = Signal/AudioFiles/messageReceivedSounds; sourceTree = SOURCE_ROOT; }; - 340FC875204DAC8C007AEB0F /* Registration */ = { - isa = PBXGroup; - children = ( - 4C3A2BC5235661AB004B3986 /* Provisioning */, - 66FC638F29EDC1E600F00DAC /* ContactSupportAlert+Registration.swift */, - F9480120299E89F8005442BE /* RegistrationCaptchaViewController.swift */, - 66AAC2C329CB6F1100566AD6 /* RegistrationChangeNumberSplashViewController.swift */, - 66AAC2C729CB9ED900566AD6 /* RegistrationChangePhoneNumberConfirmationViewController.swift */, - 66AAC2C529CB942F00566AD6 /* RegistrationChangePhoneNumberViewController.swift */, - 6659CCB029CD4650000C24C0 /* RegistrationConfirmModeSwitchViewController.swift */, - F92E4C73299E9A0100C6E6C7 /* RegistrationLoadingViewController.swift */, - F9D5C39E2993F9FF004891FC /* RegistrationPermissionsViewController.swift */, - F905DFEA29A534F200BAD034 /* RegistrationPhoneNumberDiscoverabilityViewController.swift */, - F9198484299AA7FC007FD5E4 /* RegistrationPhoneNumberInputView.swift */, - F95A64F429959065007FDBDF /* RegistrationPhoneNumberViewController.swift */, - 66AAC2C929CBC07300566AD6 /* RegistrationPhoneNumberViewState.swift */, - F9D47A4729D1D5DB00E6E080 /* RegistrationPinAttemptsExhaustedAndMustCreateNewPinViewController.swift */, - F9E3006029A02D8800DCA219 /* RegistrationPinViewController.swift */, - F9EECB00299EC9D8005FDD52 /* RegistrationProfileViewController.swift */, - F9440E7129C0FA490016FE95 /* RegistrationReglockTimeoutViewController.swift */, - F933FC3E2992E77300D78DB0 /* RegistrationSplashViewController.swift */, - F9426D17299FEC8900357352 /* RegistrationTransferChoiceViewController.swift */, - 66C3887D29CA537400E6DC00 /* RegistrationTransferProgressViewController.swift */, - 66783C2A29CA4F6C00FC4E4E /* RegistrationTransferQRCodeViewController.swift */, - F9EC3FE9299DA4BB00177BF7 /* RegistrationVerificationCodeView.swift */, - F9E3006B299D76C3000323F8 /* RegistrationVerificationViewController.swift */, - F95D71A2299305C400ED3102 /* RegistrationViewUtil.swift */, - ); - path = Registration; - sourceTree = ""; - }; 340FC87A204DAC8C007AEB0F /* AppSettings */ = { isa = PBXGroup; children = ( @@ -5773,6 +5742,11 @@ 3428577526BD8777005A2A96 /* Emoji+Name.swift */, 3428577226BD8777005A2A96 /* Emoji+SkinTones.swift */, 3428577426BD8777005A2A96 /* Emoji.swift */, + 880D902B2480889B003D2B14 /* EmojiPickerCollectionView.swift */, + 880D902D2480A23E003D2B14 /* EmojiPickerSectionToolbar.swift */, + 880D90292480887F003D2B14 /* EmojiPickerSheet.swift */, + F090C81F2762F2C5005C20FC /* EmojiReactionPickerConfigViewController.swift */, + 88238EBB24F21EE400F28079 /* EmojiSkinTonePicker.swift */, 3428577126BD8777005A2A96 /* EmojiWithSkinTones+String.swift */, 3428577326BD8777005A2A96 /* EmojiWithSkinTones.swift */, ); @@ -5846,10 +5820,14 @@ 3448BFC01EDF0EA7005B2D69 /* ConversationView */ = { isa = PBXGroup; children = ( - 34D1F0951F867BFC0066283D /* Cells */, - 347C3818252CE69400F3D941 /* CV */, - 880D902824808830003D2B14 /* Emoji Picker */, - 8855DF85238F1DEE0066D96F /* Reactions Details */, + 34D1F0951F867BFC0066283D /* CellViews */, + 347C3839252CE6C900F3D941 /* Components */, + 50E7E1CF2BACC1A500A94861 /* DynamicInteractions */, + 50E7E1D02BACC21900A94861 /* Loading */, + 50E7E1D12BACC3DB00A94861 /* Reactions */, + 503AECCB29B2B80800642F66 /* VoiceMessage */, + 88594E592335B08000390B19 /* AudioMessagePresenter.swift */, + 45A1684C2A1C308800C2432D /* AudioPresentation.swift */, 3491899A269CD68D008A18AF /* BlockingAnnouncementOnlyView.swift */, 347DE5BB2548967900C32CDC /* BlockingLegacyGroupView.swift */, 3457794226828A9A00732869 /* ConversationCollectionView.swift */, @@ -5886,18 +5864,18 @@ 34A4D88C267A363A00A794E7 /* ConversationViewController.swift */, 3498AC9E25190E8B00B1F315 /* ConversationViewLayout.swift */, 50EF8DCB2A189B3000A00935 /* ConversationViewModel.swift */, + 348815CF25545C0A00D4F4C4 /* CVAttachments.swift */, + 348815CB2554216900D4F4C4 /* CVAudioPlayback.swift */, 3420CF6C26327B1A00E7DCB0 /* CVBackgroundContainer.swift */, + 347C3822252CE69400F3D941 /* CVCell.swift */, + 3426A365255C854A0036407F /* CVItemViewModelImpl.swift */, + 348EE28C25B897BF00814FC2 /* CVMediaCache.swift */, + 348815C5255346A500D4F4C4 /* CVNode.swift */, D9170EE9290C57BF00CD813A /* CVViewState+Banners.swift */, 341D392825472F3B00996E7B /* CVViewState.swift */, - 88535063240829950011D318 /* DateHeaderInteraction.swift */, - 88DBDFB8263731C800C2101C /* DefaultDisappearingMessageTimerInteraction.swift */, - 88BCCC8023837B7D00CE5FE6 /* InteractionReactionState.swift */, 346EAA13250199A300E8AB6F /* MemberRequestView.swift */, + 4CB5F26820F7D060004D1B42 /* MessageActions.swift */, 88D1D40122EBB5A100F472C5 /* MessageRequestView.swift */, - 88D1D40322EF8A9700F472C5 /* ThreadDetailsInteraction.swift */, - 34B6A904218B4C90007C4606 /* TypingIndicatorInteraction.swift */, - 346CD5C126306578004162D6 /* UnknownThreadWarningInteraction.swift */, - 4CFF115223A9C2130007F9D7 /* UnreadIndicatorInteraction.swift */, ); path = ConversationView; sourceTree = ""; @@ -5912,47 +5890,17 @@ path = Payments; sourceTree = ""; }; - 347C3818252CE69400F3D941 /* CV */ = { + 347C3839252CE6C900F3D941 /* Components */ = { isa = PBXGroup; children = ( - 347C3839252CE6C900F3D941 /* CVComponents */, - 348815CF25545C0A00D4F4C4 /* CVAttachments.swift */, - 348815CB2554216900D4F4C4 /* CVAudioPlayback.swift */, - 348815B92552063D00D4F4C4 /* CVAvatarBuilder.swift */, - 347C3822252CE69400F3D941 /* CVCell.swift */, - 3444E6BA264EDFF200B32E3B /* CVColorOrGradientView.swift */, 348815C6255346A500D4F4C4 /* CVComponent.swift */, - 348815C3255343FC00D4F4C4 /* CVComponentDelegate.swift */, - 347C3819252CE69400F3D941 /* CVComponentState+GroupLink.swift */, - 347C381E252CE69400F3D941 /* CVComponentState.swift */, - 347C3824252CE69400F3D941 /* CVItemModel.swift */, - 3426A365255C854A0036407F /* CVItemViewModelImpl.swift */, - 347C3820252CE69400F3D941 /* CVItemViewState.swift */, - 3470C8762555883600F5847C /* CVLoadContext.swift */, - 347C381A252CE69400F3D941 /* CVLoadCoordinator.swift */, - 348815B225503BAA00D4F4C4 /* CVLoader.swift */, - 3470C8752555883600F5847C /* CVLoadRequest.swift */, - 348815C5255346A500D4F4C4 /* CVNode.swift */, - 348815C7255346A500D4F4C4 /* CVRenderItem.swift */, - 3470518B254B320700A19468 /* CVRenderState.swift */, - 347C381C252CE69400F3D941 /* CVStackView.swift */, - 3470C8812559B23F00F5847C /* CVUpdate.swift */, - 345772B5257E4E01001D7D44 /* CVViewStateSnapshot.swift */, - 3420CF6E2638A01A00E7DCB0 /* CVWallpaperBlurView.swift */, - 34DE9C012565752F0080E4AF /* MessageLoader.swift */, - ); - path = CV; - sourceTree = ""; - }; - 347C3839252CE6C900F3D941 /* CVComponents */ = { - isa = PBXGroup; - children = ( 348815C1255341F200D4F4C4 /* CVComponentAudioAttachment.swift */, 347C3840252CE6C900F3D941 /* CVComponentBodyMedia.swift */, 347C383C252CE6C900F3D941 /* CVComponentBodyText.swift */, 3426A3792563F0EA0036407F /* CVComponentBottomButtons.swift */, 3470C8792555DE5F00F5847C /* CVComponentContactShare.swift */, 347C3848252D004C00F3D941 /* CVComponentDateHeader.swift */, + 348815C3255343FC00D4F4C4 /* CVComponentDelegate.swift */, 347C383D252CE6C900F3D941 /* CVComponentFooter.swift */, 348815CD25545B0F00D4F4C4 /* CVComponentGenericAttachment.swift */, 50CF28EF2829C94800752AB3 /* CVComponentGiftBadge.swift */, @@ -5962,6 +5910,8 @@ 347C383E252CE6C900F3D941 /* CVComponentQuotedReply.swift */, 343417F02530A7480034FE0C /* CVComponentReactions.swift */, 347C383F252CE6C900F3D941 /* CVComponentSenderName.swift */, + 347C3819252CE69400F3D941 /* CVComponentState+GroupLink.swift */, + 347C381E252CE69400F3D941 /* CVComponentState.swift */, 347C383A252CE6C900F3D941 /* CVComponentSticker.swift */, 348815BB2552E67900D4F4C4 /* CVComponentSystemMessage.swift */, 347C3856252E1E2300F3D941 /* CVComponentThreadDetails.swift */, @@ -5970,7 +5920,7 @@ 348815BF2553291200D4F4C4 /* CVComponentViewOnce.swift */, 667AF9DD2B4C5824008AEE5D /* PersistableGroupUpdateItem+CVComponentSystemMessageAction.swift */, ); - path = CVComponents; + path = Components; sourceTree = ""; }; 34969558219B605E00DCFE74 /* Photos */ = { @@ -6445,18 +6395,15 @@ 8809CE8822F93C0D00D38867 /* Attachment Keyboard */, 883A7FC1269F4BE700841DF9 /* Avatars */, F0B872B4269CF01E00D26481 /* Context Menus */, - 3448BFC01EDF0EA7005B2D69 /* ConversationView */, 34D8C0221ED3673300188D7C /* DebugUI */, F924A68028F8703400E368C8 /* Donations */, 34BECE2C1F7ABCE000D7438D /* GifPicker */, 34386A4C207D0C01009F5D9C /* HomeView */, 4C4F360E2284516F00A8DF48 /* MediaGallery */, 34995F122411838C00C70546 /* NewGroupView */, - 88A4CC13246CE41E0082211F /* OutgoingDeviceTransfer */, 3497971D25DAA86100E99FA4 /* Payments */, 34969558219B605E00DCFE74 /* Photos */, 8835DDFB230CEE7600DC6B66 /* RecipientPicker */, - 340FC875204DAC8C007AEB0F /* Registration */, 349767DE25B8744600ECE1B0 /* Stickers */, 340FC897204DAC8D007AEB0F /* ThreadSettings */, 88A51B9825BA079500CDB45C /* Wallpapers */, @@ -6473,7 +6420,6 @@ 3490D57C25ADDC2900F5F96C /* GroupLinkPromotionActionSheet.swift */, D9C30DDA2A20072F009C2184 /* LegacyGroupLearnMoreViewController.swift */, 76C87FE028BE8E2400BD8709 /* LinkPreviewAttachmentViewController.swift */, - 4542DF53208D40AC007B4E76 /* LoadingViewController.swift */, 88A9729322FB4D02004B4FBF /* LocationPicker.swift */, 3496744E2076ACCE00080B5F /* LongTextViewController.swift */, 4CFF4C0920F55BBA005DA313 /* MessageActionsToolbar.swift */, @@ -6562,20 +6508,20 @@ path = Assets; sourceTree = ""; }; - 34D1F0951F867BFC0066283D /* Cells */ = { + 34D1F0951F867BFC0066283D /* CellViews */ = { isa = PBXGroup; children = ( 668CAB3D289983520085A2C3 /* AudioMessagePlaybackRateView.swift */, - 88594E592335B08000390B19 /* AudioMessagePresenter.swift */, 450B0FC829FB301700B9A458 /* AudioMessageView.swift */, - 45A1684C2A1C308800C2432D /* AudioPresentation.swift */, 88A695BC232C18DF002F7B9B /* AudioWaveformProgressView.swift */, 3415217425B0CB30009F177F /* CVAttachmentProgressView.swift */, + 3444E6BA264EDFF200B32E3B /* CVColorOrGradientView.swift */, 3470C87F2555F25200F5847C /* CVContactShareView.swift */, 34A8B3502190A40E00218A25 /* CVMediaAlbumView.swift */, - 348EE28C25B897BF00814FC2 /* CVMediaCache.swift */, 3488F9352191CC4000E524CC /* CVMediaView.swift */, 34635331257549F1003C5428 /* CVReactionCountsView.swift */, + 347C381C252CE69400F3D941 /* CVStackView.swift */, + 3420CF6E2638A01A00E7DCB0 /* CVWallpaperBlurView.swift */, 503614CE282AF657008128B4 /* GiftBadgeView.swift */, 4C25768923AD510800E0398D /* LoadMoreMessagesView.swift */, 34EB0E712629DC2B00B62DC3 /* MessageSelectionView.swift */, @@ -6583,7 +6529,7 @@ 3470C8732554926200F5847C /* QuotedMessageView.swift */, 348EE28D25B897BF00814FC2 /* ReusableMediaView.swift */, ); - path = Cells; + path = CellViews; sourceTree = ""; }; 34D8C0221ED3673300188D7C /* DebugUI */ = { @@ -6620,7 +6566,6 @@ isa = PBXGroup; children = ( 342FFE6C271EF580000AC89F /* Categories */, - 88A505F523DBA0C70005C012 /* Experience Upgrades */, 34B3F8331E8DF1700035BE1A /* ViewControllers */, 76EB052B18170B33006006FC /* Views */, 342FFE67271EF4FF000AC89F /* ConversationSearch.swift */, @@ -6652,16 +6597,6 @@ path = SignalShareExtension; sourceTree = ""; }; - 457F3AC01D14A0F700C51351 /* Models */ = { - isa = PBXGroup; - children = ( - 5011D1CC29400E7300064098 /* DeviceProvisioningURL.swift */, - 4CB5F26820F7D060004D1B42 /* MessageActions.swift */, - 4C5250D121E7BD7D00CE3D95 /* PhoneNumberValidator.swift */, - ); - path = Models; - sourceTree = ""; - }; 458E38381D6699110094BD24 /* Models */ = { isa = PBXGroup; children = ( @@ -6695,24 +6630,6 @@ path = PerformanceTests; sourceTree = ""; }; - 4C3A2BC5235661AB004B3986 /* Provisioning */ = { - isa = PBXGroup; - children = ( - 66AA0BA32A819FFA00F7DC80 /* ProvisioningBaseViewController.swift */, - 4C3A2BC62356620E004B3986 /* ProvisioningController.swift */, - 6605D4EF2A82DCC7004DC345 /* ProvisioningModeSwitchConfirmationViewController.swift */, - 6659A0382A81933B00066AB7 /* ProvisioningPermissionsViewController.swift */, - 4C30E223234F9F34009558B7 /* ProvisioningPrepViewController.swift */, - 4C30E225234FB033009558B7 /* ProvisioningQRCodeViewController.swift */, - 4C2EBB7E2356B2B900BBC171 /* ProvisioningSetDeviceNameViewController.swift */, - 34ACA7C32733159600E47AD4 /* ProvisioningSplashViewController.swift */, - 34ACA7BC2733159600E47AD4 /* ProvisioningTransferChoiceViewController.swift */, - 34ACA7BE2733159600E47AD4 /* ProvisioningTransferProgressViewController.swift */, - 34ACA7BD2733159600E47AD4 /* ProvisioningTransferQRCodeViewController.swift */, - ); - path = Provisioning; - sourceTree = ""; - }; 4C3EF8002109184A0007EBF7 /* SSKTests */ = { isa = PBXGroup; children = ( @@ -6867,12 +6784,18 @@ path = Curve25519; sourceTree = ""; }; - 5045F44129E0DAA400058E5F /* Launch */ = { + 5045F44129E0DAA400058E5F /* AppLaunch */ = { isa = PBXGroup; children = ( + F92074752888648A00B7F087 /* AppDelegate.swift */, + 34D99CE3217509C1000AFB39 /* AppEnvironment.swift */, + 3498AC882513896400B1F315 /* Dependencies+MainApp.swift */, 349C3636233D198300D52012 /* LaunchJobs.swift */, + 4542DF53208D40AC007B4E76 /* LoadingViewController.swift */, + 5033D46829D7951F007FEADA /* MainAppContext.swift */, + 880D902F2481E617003D2B14 /* SignalApp.swift */, ); - path = Launch; + path = AppLaunch; sourceTree = ""; }; 50552C2F2BAC079000815474 /* Calls */ = { @@ -6969,13 +6892,86 @@ path = Contacts; sourceTree = ""; }; - 50EF8DC82A1885B100A00935 /* Badge */ = { + 50E7E1CC2BACBDE000A94861 /* Expiration */ = { + isa = PBXGroup; + children = ( + 4CC1ECFA211A553000CC13BE /* AppUpdateNag.swift */, + F9952B2E29F1E59F00EA989E /* OsExpiry.swift */, + F93BCB9929EDE86400E3C6A0 /* UIDevice+CanUpgradeOperatingSystem.swift */, + ); + path = Expiration; + sourceTree = ""; + }; + 50E7E1CD2BACBE7D00A94861 /* UserInterface */ = { + isa = PBXGroup; + children = ( + 66AA0BA32A819FFA00F7DC80 /* ProvisioningBaseViewController.swift */, + 4C3A2BC62356620E004B3986 /* ProvisioningController.swift */, + 6605D4EF2A82DCC7004DC345 /* ProvisioningModeSwitchConfirmationViewController.swift */, + 6659A0382A81933B00066AB7 /* ProvisioningPermissionsViewController.swift */, + 4C30E223234F9F34009558B7 /* ProvisioningPrepViewController.swift */, + 4C30E225234FB033009558B7 /* ProvisioningQRCodeViewController.swift */, + 4C2EBB7E2356B2B900BBC171 /* ProvisioningSetDeviceNameViewController.swift */, + 34ACA7C32733159600E47AD4 /* ProvisioningSplashViewController.swift */, + 34ACA7BC2733159600E47AD4 /* ProvisioningTransferChoiceViewController.swift */, + 34ACA7BE2733159600E47AD4 /* ProvisioningTransferProgressViewController.swift */, + 34ACA7BD2733159600E47AD4 /* ProvisioningTransferQRCodeViewController.swift */, + ); + path = UserInterface; + sourceTree = ""; + }; + 50E7E1CE2BACBF3300A94861 /* Notifications */ = { isa = PBXGroup; children = ( 50EF8DC92A1885C000A00935 /* AppIconBadgeUpdater.swift */, 50EF8DC42A1860EF00A00935 /* BadgeManager.swift */, + 88D23D1123CEBFB200B0E74B /* NotificationActionHandler.swift */, + 4539B5851F79348F007141FF /* PushRegistrationManager.swift */, ); - path = Badge; + path = Notifications; + sourceTree = ""; + }; + 50E7E1CF2BACC1A500A94861 /* DynamicInteractions */ = { + isa = PBXGroup; + children = ( + 88535063240829950011D318 /* DateHeaderInteraction.swift */, + 88DBDFB8263731C800C2101C /* DefaultDisappearingMessageTimerInteraction.swift */, + 88D1D40322EF8A9700F472C5 /* ThreadDetailsInteraction.swift */, + 34B6A904218B4C90007C4606 /* TypingIndicatorInteraction.swift */, + 346CD5C126306578004162D6 /* UnknownThreadWarningInteraction.swift */, + 4CFF115223A9C2130007F9D7 /* UnreadIndicatorInteraction.swift */, + ); + path = DynamicInteractions; + sourceTree = ""; + }; + 50E7E1D02BACC21900A94861 /* Loading */ = { + isa = PBXGroup; + children = ( + 348815B92552063D00D4F4C4 /* CVAvatarBuilder.swift */, + 347C3824252CE69400F3D941 /* CVItemModel.swift */, + 347C3820252CE69400F3D941 /* CVItemViewState.swift */, + 3470C8762555883600F5847C /* CVLoadContext.swift */, + 347C381A252CE69400F3D941 /* CVLoadCoordinator.swift */, + 348815B225503BAA00D4F4C4 /* CVLoader.swift */, + 3470C8752555883600F5847C /* CVLoadRequest.swift */, + 348815C7255346A500D4F4C4 /* CVRenderItem.swift */, + 3470518B254B320700A19468 /* CVRenderState.swift */, + 3470C8812559B23F00F5847C /* CVUpdate.swift */, + 345772B5257E4E01001D7D44 /* CVViewStateSnapshot.swift */, + 34DE9C012565752F0080E4AF /* MessageLoader.swift */, + ); + path = Loading; + sourceTree = ""; + }; + 50E7E1D12BACC3DB00A94861 /* Reactions */ = { + isa = PBXGroup; + children = ( + 8855DF88238F2E690066D96F /* EmojiCountsCollectionView.swift */, + 8855DF86238F1E0C0066D96F /* EmojiReactorsTableView.swift */, + 88BCCC8023837B7D00CE5FE6 /* InteractionReactionState.swift */, + 88B688AF238F0D1000286F82 /* ReactionsDetailSheet.swift */, + ); + path = Reactions; sourceTree = ""; }; 6600BB1B2BA3ABCC0005A035 /* Manager */ = { @@ -7036,7 +7032,8 @@ 6600F38C29918A5100B1EDB7 /* Registration */ = { isa = PBXGroup; children = ( - 66B35EA1299F077F00130204 /* ViewControllers */, + 66B35EA1299F077F00130204 /* UserInterface */, + 4C5250D121E7BD7D00CE3D95 /* PhoneNumberValidator.swift */, 6600F39529919ECC00B1EDB7 /* RegistrationCoodinatorShims.swift */, 66E3C8F52994634E00BB38ED /* RegistrationCoordinator.swift */, 66F0F1DE29C12363008C0ECE /* RegistrationCoordinatorDependencies.swift */, @@ -7045,6 +7042,7 @@ 66F0F1DC29C1230C008C0ECE /* RegistrationCoordinatorLoader.swift */, 66533E3929B9502100E8D928 /* RegistrationMode.swift */, 6600F38F29918CBF00B1EDB7 /* RegistrationStep.swift */, + 3440426A273AB186008C9FA4 /* RegistrationUtils.swift */, ); path = Registration; sourceTree = ""; @@ -7437,12 +7435,35 @@ path = Registration; sourceTree = ""; }; - 66B35EA1299F077F00130204 /* ViewControllers */ = { + 66B35EA1299F077F00130204 /* UserInterface */ = { isa = PBXGroup; children = ( + 66FC638F29EDC1E600F00DAC /* ContactSupportAlert+Registration.swift */, + F9480120299E89F8005442BE /* RegistrationCaptchaViewController.swift */, + 66AAC2C329CB6F1100566AD6 /* RegistrationChangeNumberSplashViewController.swift */, + 66AAC2C729CB9ED900566AD6 /* RegistrationChangePhoneNumberConfirmationViewController.swift */, + 66AAC2C529CB942F00566AD6 /* RegistrationChangePhoneNumberViewController.swift */, + 6659CCB029CD4650000C24C0 /* RegistrationConfirmModeSwitchViewController.swift */, + F92E4C73299E9A0100C6E6C7 /* RegistrationLoadingViewController.swift */, F95A64F2299589CA007FDBDF /* RegistrationNavigationController.swift */, + F9D5C39E2993F9FF004891FC /* RegistrationPermissionsViewController.swift */, + F905DFEA29A534F200BAD034 /* RegistrationPhoneNumberDiscoverabilityViewController.swift */, + F9198484299AA7FC007FD5E4 /* RegistrationPhoneNumberInputView.swift */, + F95A64F429959065007FDBDF /* RegistrationPhoneNumberViewController.swift */, + 66AAC2C929CBC07300566AD6 /* RegistrationPhoneNumberViewState.swift */, + F9D47A4729D1D5DB00E6E080 /* RegistrationPinAttemptsExhaustedAndMustCreateNewPinViewController.swift */, + F9E3006029A02D8800DCA219 /* RegistrationPinViewController.swift */, + F9EECB00299EC9D8005FDD52 /* RegistrationProfileViewController.swift */, + F9440E7129C0FA490016FE95 /* RegistrationReglockTimeoutViewController.swift */, + F933FC3E2992E77300D78DB0 /* RegistrationSplashViewController.swift */, + F9426D17299FEC8900357352 /* RegistrationTransferChoiceViewController.swift */, + 66C3887D29CA537400E6DC00 /* RegistrationTransferProgressViewController.swift */, + 66783C2A29CA4F6C00FC4E4E /* RegistrationTransferQRCodeViewController.swift */, + F9EC3FE9299DA4BB00177BF7 /* RegistrationVerificationCodeView.swift */, + F9E3006B299D76C3000323F8 /* RegistrationVerificationViewController.swift */, + F95D71A2299305C400ED3102 /* RegistrationViewUtil.swift */, ); - path = ViewControllers; + path = UserInterface; sourceTree = ""; }; 66B9437C2A6EEAA600DCF2FF /* SpoilerRendering */ = { @@ -7621,6 +7642,8 @@ 66CDB7532AFC3EFB009A36EC /* Provisioning */ = { isa = PBXGroup; children = ( + 50E7E1CD2BACBE7D00A94861 /* UserInterface */, + 5011D1CC29400E7300064098 /* DeviceProvisioningURL.swift */, 66CDB7582AFC4232009A36EC /* ProvisioningCoordinator+Shims.swift */, 66CDB7542AFC3F1F009A36EC /* ProvisioningCoordinator.swift */, 66CDB7662AFC5FCD009A36EC /* ProvisioningCoordinatorImpl+Service.swift */, @@ -7942,61 +7965,35 @@ 76EB03C118170B33006006FC /* src */ = { isa = PBXGroup; children = ( - F94D12FD28BD0DD900B2C478 /* Accessibility */, - 50EF8DC82A1885B100A00935 /* Badge */, - 76EB041118170B33006006FC /* environment */, - 5045F44129E0DAA400058E5F /* Launch */, - 457F3AC01D14A0F700C51351 /* Models */, D9DCFDAC2A3BB22800C73C0B /* QRCodes */, 45CD81A41DBFF8CF004C9430 /* Storyboards */, 450DF2061E0DD28D003D14BE /* UserInterface */, - D99840BB297A04A300F7ED6D /* Usernames */, 76EB04C818170B33006006FC /* util */, 6698FC12297F38AC004EFC30 /* ViewControllerContext */, - F92074752888648A00B7F087 /* AppDelegate.swift */, 66CDB7512AF9D117009A36EC /* MessageFetchBGRefreshTask.swift */, 45B201741DAECBFD00C461E0 /* Signal-Bridging-Header.h */, ); path = src; sourceTree = ""; }; - 76EB041118170B33006006FC /* environment */ = { - isa = PBXGroup; - children = ( - 34D99CE3217509C1000AFB39 /* AppEnvironment.swift */, - 4539B5851F79348F007141FF /* PushRegistrationManager.swift */, - 880D902F2481E617003D2B14 /* SignalApp.swift */, - ); - path = environment; - sourceTree = ""; - }; 76EB04C818170B33006006FC /* util */ = { isa = PBXGroup; children = ( - 88C4E38124671F9D009C9B97 /* Device Transfer */, - 3428576F26BD8777005A2A96 /* Emoji */, - 4CC1ECFA211A553000CC13BE /* AppUpdateNag.swift */, F9B3A92C293553930071EB95 /* ASWebAuthenticationSession+Util.swift */, 34F1071F26D005340053EF4D /* BatchUpdate.swift */, 4C751BE423FA0284002A8AF1 /* ContactSupportAlert.swift */, 50A1CE392A00931900730C40 /* DebugLogger+MainApp.swift */, 34067EAA2710D61A000407C3 /* DebugLogs.swift */, - 3498AC882513896400B1F315 /* Dependencies+MainApp.swift */, 34A95500271B503E00B05242 /* DisplayableText.swift */, F9D289B5291EDC8D00187394 /* DonationJobError.swift */, - 5033D46829D7951F007FEADA /* MainAppContext.swift */, - 88D23D1123CEBFB200B0E74B /* NotificationActionHandler.swift */, - F9952B2E29F1E59F00EA989E /* OsExpiry.swift */, F93461B8291ED28900366682 /* PaymentDetailsValidity.swift */, F9FAABD729DB55940004B383 /* Progress+Signal.swift */, 888CC15828E3CE8100A13493 /* ProxyConnectionChecker.swift */, - 3440426A273AB186008C9FA4 /* RegistrationUtils.swift */, 66A22C0828A18D49007CD4F5 /* RingerSwitch.swift */, 7677E41229F84C2100AC6A75 /* ScreenLockUI.swift */, 8822558C26B9D1D7001A33C4 /* SignalDotMePhoneNumberLink.swift */, 6675F64E29261C39007A311E /* SyncPushTokensJob.swift */, 4521C3BF1F59F3BA00B4C582 /* TextHelper.swift */, - F93BCB9929EDE86400E3C6A0 /* UIDevice+CanUpgradeOperatingSystem.swift */, 8811CF832295D8DA00FF6549 /* VolumeButtons.swift */, 667EDE6328F8D6B7001FB487 /* YYAnimatedImage+Duration.swift */, ); @@ -8043,18 +8040,6 @@ path = "Attachment Keyboard"; sourceTree = ""; }; - 880D902824808830003D2B14 /* Emoji Picker */ = { - isa = PBXGroup; - children = ( - 880D902B2480889B003D2B14 /* EmojiPickerCollectionView.swift */, - 880D902D2480A23E003D2B14 /* EmojiPickerSectionToolbar.swift */, - 880D90292480887F003D2B14 /* EmojiPickerSheet.swift */, - F090C81F2762F2C5005C20FC /* EmojiReactionPickerConfigViewController.swift */, - 88238EBB24F21EE400F28079 /* EmojiSkinTonePicker.swift */, - ); - path = "Emoji Picker"; - sourceTree = ""; - }; 8835DDFB230CEE7600DC6B66 /* RecipientPicker */ = { isa = PBXGroup; children = ( @@ -8168,16 +8153,6 @@ path = "Chat List"; sourceTree = ""; }; - 8855DF85238F1DEE0066D96F /* Reactions Details */ = { - isa = PBXGroup; - children = ( - 8855DF88238F2E690066D96F /* EmojiCountsCollectionView.swift */, - 8855DF86238F1E0C0066D96F /* EmojiReactorsTableView.swift */, - 88B688AF238F0D1000286F82 /* ReactionsDetailSheet.swift */, - ); - path = "Reactions Details"; - sourceTree = ""; - }; 8864072F27F21AA7009916B6 /* Group Reply Sheet */ = { isa = PBXGroup; children = ( @@ -8338,39 +8313,28 @@ path = "Member Picker"; sourceTree = ""; }; - 88A4CC13246CE41E0082211F /* OutgoingDeviceTransfer */ = { + 88A505F523DBA0C70005C012 /* Megaphones */ = { isa = PBXGroup; children = ( - 88A4CC18246CE6810082211F /* OutgoingDeviceTransferInitialViewController.swift */, - 88A4CC16246CE6190082211F /* OutgoingDeviceTransferNavigationController.swift */, - 88A4CC1C246D00090082211F /* OutgoingDeviceTransferProgressViewController.swift */, - 88A4CC1A246CEC8B0082211F /* OutgoingDeviceTransferQRScanningViewController.swift */, - ); - path = OutgoingDeviceTransfer; - sourceTree = ""; - }; - 88A505F523DBA0C70005C012 /* Experience Upgrades */ = { - isa = PBXGroup; - children = ( - 88A505FE23DBAE640005C012 /* Upgrade Views */, + 88A505FE23DBAE640005C012 /* UserInterface */, 88A505F323DA16E10005C012 /* ExperienceUpgradeManager.swift */, - 8837F74023DA0B0F00772A32 /* MegaphoneView.swift */, - 34B3F8441E8DF1700035BE1A /* SplashViewController.swift */, ); - path = "Experience Upgrades"; + path = Megaphones; sourceTree = ""; }; - 88A505FE23DBAE640005C012 /* Upgrade Views */ = { + 88A505FE23DBAE640005C012 /* UserInterface */ = { isa = PBXGroup; children = ( 8806EF1A248DBFC100E764C7 /* ContactPermissionReminderMegaphone.swift */, D9C2D77F299EC11400D79715 /* CreateUsernameMegaphone.swift */, 88A505F923DBA1360005C012 /* IntroducingPINs.swift */, + 8837F74023DA0B0F00772A32 /* MegaphoneView.swift */, 8806EF18248DBD7200E764C7 /* NotificationPermissionReminderMegaphone.swift */, 887EEC1E23F0B20600F8C26D /* PinReminderMegaphone.swift */, D997FA7528F8E3A2003C7B8B /* RemoteMegaphone.swift */, + 34B3F8441E8DF1700035BE1A /* SplashViewController.swift */, ); - path = "Upgrade Views"; + path = UserInterface; sourceTree = ""; }; 88A51B9825BA079500CDB45C /* Wallpapers */ = { @@ -8449,7 +8413,7 @@ path = Lottie; sourceTree = ""; }; - 88C4E38124671F9D009C9B97 /* Device Transfer */ = { + 88C4E38124671F9D009C9B97 /* DeviceTransfer */ = { isa = PBXGroup; children = ( 887CD4762472FEA500FDD265 /* DeviceTransferOperation.swift */, @@ -8459,9 +8423,13 @@ 887CD4802473098D00FDD265 /* DeviceTransferService+State.swift */, 887CD47A247304B600FDD265 /* DeviceTransferService+URL.swift */, 88C4E37F24635337009C9B97 /* DeviceTransferService.swift */, + 88A4CC18246CE6810082211F /* OutgoingDeviceTransferInitialViewController.swift */, + 88A4CC16246CE6190082211F /* OutgoingDeviceTransferNavigationController.swift */, + 88A4CC1C246D00090082211F /* OutgoingDeviceTransferProgressViewController.swift */, + 88A4CC1A246CEC8B0082211F /* OutgoingDeviceTransferQRScanningViewController.swift */, 88C659AF24688335002AC115 /* SelfSignedIdentity.swift */, ); - path = "Device Transfer"; + path = DeviceTransfer; sourceTree = ""; }; 88D23D0823CEBF4400B0E74B /* Notifications */ = { @@ -8805,9 +8773,17 @@ D221A093169C9E5E00537ABF /* Signal */ = { isa = PBXGroup; children = ( + F94D12FD28BD0DD900B2C478 /* Accessibility */, + 5045F44129E0DAA400058E5F /* AppLaunch */, 88D23D1323CEC0C700B0E74B /* Calls */, 50B6BCAF2AEC4F3B0010FB3B /* Contacts */, + 3448BFC01EDF0EA7005B2D69 /* ConversationView */, + 88C4E38124671F9D009C9B97 /* DeviceTransfer */, + 3428576F26BD8777005A2A96 /* Emoji */, + 50E7E1CC2BACBDE000A94861 /* Expiration */, 88BFD4712335C2A4001797D7 /* Lottie */, + 88A505F523DBA0C70005C012 /* Megaphones */, + 50E7E1CE2BACBF3300A94861 /* Notifications */, 5011D9712A0471E8000FE8E5 /* OrphanData */, 50A76F512AF565A300FCF02D /* Preconditions */, 66CDB7532AFC3EFB009A36EC /* Provisioning */, @@ -8818,7 +8794,7 @@ D221A094169C9E5E00537ABF /* Supporting Files */, B660F66C1C29867F00687D6E /* test */, 5033D46C29DCA8DE007FEADA /* URLs */, - 503AECCB29B2B80800642F66 /* VoiceMessage */, + D99840BB297A04A300F7ED6D /* Usernames */, B66DBF4919D5BBC8006EA940 /* Images.xcassets */, F0C124B626D4788A0031C96F /* NSE-Images.xcassets */, 881FF30623B5B1520023B620 /* Signal-AppStore.entitlements */, diff --git a/Signal/src/Accessibility/SpeechManager.swift b/Signal/Accessibility/SpeechManager.swift similarity index 100% rename from Signal/src/Accessibility/SpeechManager.swift rename to Signal/Accessibility/SpeechManager.swift diff --git a/Signal/src/AppDelegate.swift b/Signal/AppLaunch/AppDelegate.swift similarity index 100% rename from Signal/src/AppDelegate.swift rename to Signal/AppLaunch/AppDelegate.swift diff --git a/Signal/src/environment/AppEnvironment.swift b/Signal/AppLaunch/AppEnvironment.swift similarity index 100% rename from Signal/src/environment/AppEnvironment.swift rename to Signal/AppLaunch/AppEnvironment.swift diff --git a/Signal/src/util/Dependencies+MainApp.swift b/Signal/AppLaunch/Dependencies+MainApp.swift similarity index 100% rename from Signal/src/util/Dependencies+MainApp.swift rename to Signal/AppLaunch/Dependencies+MainApp.swift diff --git a/Signal/src/Launch/LaunchJobs.swift b/Signal/AppLaunch/LaunchJobs.swift similarity index 100% rename from Signal/src/Launch/LaunchJobs.swift rename to Signal/AppLaunch/LaunchJobs.swift diff --git a/Signal/src/ViewControllers/LoadingViewController.swift b/Signal/AppLaunch/LoadingViewController.swift similarity index 100% rename from Signal/src/ViewControllers/LoadingViewController.swift rename to Signal/AppLaunch/LoadingViewController.swift diff --git a/Signal/src/util/MainAppContext.swift b/Signal/AppLaunch/MainAppContext.swift similarity index 100% rename from Signal/src/util/MainAppContext.swift rename to Signal/AppLaunch/MainAppContext.swift diff --git a/Signal/src/environment/SignalApp.swift b/Signal/AppLaunch/SignalApp.swift similarity index 100% rename from Signal/src/environment/SignalApp.swift rename to Signal/AppLaunch/SignalApp.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/AudioMessagePresenter.swift b/Signal/ConversationView/AudioMessagePresenter.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/AudioMessagePresenter.swift rename to Signal/ConversationView/AudioMessagePresenter.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/AudioPresentation.swift b/Signal/ConversationView/AudioPresentation.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/AudioPresentation.swift rename to Signal/ConversationView/AudioPresentation.swift diff --git a/Signal/src/ViewControllers/ConversationView/BlockingAnnouncementOnlyView.swift b/Signal/ConversationView/BlockingAnnouncementOnlyView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/BlockingAnnouncementOnlyView.swift rename to Signal/ConversationView/BlockingAnnouncementOnlyView.swift diff --git a/Signal/src/ViewControllers/ConversationView/BlockingLegacyGroupView.swift b/Signal/ConversationView/BlockingLegacyGroupView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/BlockingLegacyGroupView.swift rename to Signal/ConversationView/BlockingLegacyGroupView.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVAttachments.swift b/Signal/ConversationView/CVAttachments.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVAttachments.swift rename to Signal/ConversationView/CVAttachments.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVAudioPlayback.swift b/Signal/ConversationView/CVAudioPlayback.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVAudioPlayback.swift rename to Signal/ConversationView/CVAudioPlayback.swift diff --git a/Signal/src/ViewControllers/ConversationView/CVBackgroundContainer.swift b/Signal/ConversationView/CVBackgroundContainer.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CVBackgroundContainer.swift rename to Signal/ConversationView/CVBackgroundContainer.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVCell.swift b/Signal/ConversationView/CVCell.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVCell.swift rename to Signal/ConversationView/CVCell.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVItemViewModelImpl.swift b/Signal/ConversationView/CVItemViewModelImpl.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVItemViewModelImpl.swift rename to Signal/ConversationView/CVItemViewModelImpl.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/CVMediaCache.swift b/Signal/ConversationView/CVMediaCache.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/CVMediaCache.swift rename to Signal/ConversationView/CVMediaCache.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVNode.swift b/Signal/ConversationView/CVNode.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVNode.swift rename to Signal/ConversationView/CVNode.swift diff --git a/Signal/src/ViewControllers/ConversationView/CVViewState+Banners.swift b/Signal/ConversationView/CVViewState+Banners.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CVViewState+Banners.swift rename to Signal/ConversationView/CVViewState+Banners.swift diff --git a/Signal/src/ViewControllers/ConversationView/CVViewState.swift b/Signal/ConversationView/CVViewState.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CVViewState.swift rename to Signal/ConversationView/CVViewState.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/AudioMessagePlaybackRateView.swift b/Signal/ConversationView/CellViews/AudioMessagePlaybackRateView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/AudioMessagePlaybackRateView.swift rename to Signal/ConversationView/CellViews/AudioMessagePlaybackRateView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/AudioMessageView.swift b/Signal/ConversationView/CellViews/AudioMessageView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/AudioMessageView.swift rename to Signal/ConversationView/CellViews/AudioMessageView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/AudioWaveformProgressView.swift b/Signal/ConversationView/CellViews/AudioWaveformProgressView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/AudioWaveformProgressView.swift rename to Signal/ConversationView/CellViews/AudioWaveformProgressView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/CVAttachmentProgressView.swift b/Signal/ConversationView/CellViews/CVAttachmentProgressView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/CVAttachmentProgressView.swift rename to Signal/ConversationView/CellViews/CVAttachmentProgressView.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVColorOrGradientView.swift b/Signal/ConversationView/CellViews/CVColorOrGradientView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVColorOrGradientView.swift rename to Signal/ConversationView/CellViews/CVColorOrGradientView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/CVContactShareView.swift b/Signal/ConversationView/CellViews/CVContactShareView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/CVContactShareView.swift rename to Signal/ConversationView/CellViews/CVContactShareView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/CVMediaAlbumView.swift b/Signal/ConversationView/CellViews/CVMediaAlbumView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/CVMediaAlbumView.swift rename to Signal/ConversationView/CellViews/CVMediaAlbumView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/CVMediaView.swift b/Signal/ConversationView/CellViews/CVMediaView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/CVMediaView.swift rename to Signal/ConversationView/CellViews/CVMediaView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/CVReactionCountsView.swift b/Signal/ConversationView/CellViews/CVReactionCountsView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/CVReactionCountsView.swift rename to Signal/ConversationView/CellViews/CVReactionCountsView.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVStackView.swift b/Signal/ConversationView/CellViews/CVStackView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVStackView.swift rename to Signal/ConversationView/CellViews/CVStackView.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVWallpaperBlurView.swift b/Signal/ConversationView/CellViews/CVWallpaperBlurView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVWallpaperBlurView.swift rename to Signal/ConversationView/CellViews/CVWallpaperBlurView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/GiftBadgeView.swift b/Signal/ConversationView/CellViews/GiftBadgeView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/GiftBadgeView.swift rename to Signal/ConversationView/CellViews/GiftBadgeView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/LoadMoreMessagesView.swift b/Signal/ConversationView/CellViews/LoadMoreMessagesView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/LoadMoreMessagesView.swift rename to Signal/ConversationView/CellViews/LoadMoreMessagesView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/MessageSelectionView.swift b/Signal/ConversationView/CellViews/MessageSelectionView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/MessageSelectionView.swift rename to Signal/ConversationView/CellViews/MessageSelectionView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/MessageTimerView.swift b/Signal/ConversationView/CellViews/MessageTimerView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/MessageTimerView.swift rename to Signal/ConversationView/CellViews/MessageTimerView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/QuotedMessageView.swift b/Signal/ConversationView/CellViews/QuotedMessageView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/QuotedMessageView.swift rename to Signal/ConversationView/CellViews/QuotedMessageView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Cells/ReusableMediaView.swift b/Signal/ConversationView/CellViews/ReusableMediaView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Cells/ReusableMediaView.swift rename to Signal/ConversationView/CellViews/ReusableMediaView.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponent.swift b/Signal/ConversationView/Components/CVComponent.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponent.swift rename to Signal/ConversationView/Components/CVComponent.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentAudioAttachment.swift b/Signal/ConversationView/Components/CVComponentAudioAttachment.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentAudioAttachment.swift rename to Signal/ConversationView/Components/CVComponentAudioAttachment.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentBodyMedia.swift b/Signal/ConversationView/Components/CVComponentBodyMedia.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentBodyMedia.swift rename to Signal/ConversationView/Components/CVComponentBodyMedia.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentBodyText.swift b/Signal/ConversationView/Components/CVComponentBodyText.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentBodyText.swift rename to Signal/ConversationView/Components/CVComponentBodyText.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentBottomButtons.swift b/Signal/ConversationView/Components/CVComponentBottomButtons.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentBottomButtons.swift rename to Signal/ConversationView/Components/CVComponentBottomButtons.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentContactShare.swift b/Signal/ConversationView/Components/CVComponentContactShare.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentContactShare.swift rename to Signal/ConversationView/Components/CVComponentContactShare.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentDateHeader.swift b/Signal/ConversationView/Components/CVComponentDateHeader.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentDateHeader.swift rename to Signal/ConversationView/Components/CVComponentDateHeader.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponentDelegate.swift b/Signal/ConversationView/Components/CVComponentDelegate.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponentDelegate.swift rename to Signal/ConversationView/Components/CVComponentDelegate.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentFooter.swift b/Signal/ConversationView/Components/CVComponentFooter.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentFooter.swift rename to Signal/ConversationView/Components/CVComponentFooter.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentGenericAttachment.swift b/Signal/ConversationView/Components/CVComponentGenericAttachment.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentGenericAttachment.swift rename to Signal/ConversationView/Components/CVComponentGenericAttachment.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentGiftBadge.swift b/Signal/ConversationView/Components/CVComponentGiftBadge.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentGiftBadge.swift rename to Signal/ConversationView/Components/CVComponentGiftBadge.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentLinkPreview.swift b/Signal/ConversationView/Components/CVComponentLinkPreview.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentLinkPreview.swift rename to Signal/ConversationView/Components/CVComponentLinkPreview.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentMessage.swift b/Signal/ConversationView/Components/CVComponentMessage.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentMessage.swift rename to Signal/ConversationView/Components/CVComponentMessage.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentPaymentAttachment.swift b/Signal/ConversationView/Components/CVComponentPaymentAttachment.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentPaymentAttachment.swift rename to Signal/ConversationView/Components/CVComponentPaymentAttachment.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentQuotedReply.swift b/Signal/ConversationView/Components/CVComponentQuotedReply.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentQuotedReply.swift rename to Signal/ConversationView/Components/CVComponentQuotedReply.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentReactions.swift b/Signal/ConversationView/Components/CVComponentReactions.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentReactions.swift rename to Signal/ConversationView/Components/CVComponentReactions.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentSenderName.swift b/Signal/ConversationView/Components/CVComponentSenderName.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentSenderName.swift rename to Signal/ConversationView/Components/CVComponentSenderName.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponentState+GroupLink.swift b/Signal/ConversationView/Components/CVComponentState+GroupLink.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponentState+GroupLink.swift rename to Signal/ConversationView/Components/CVComponentState+GroupLink.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponentState.swift b/Signal/ConversationView/Components/CVComponentState.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponentState.swift rename to Signal/ConversationView/Components/CVComponentState.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentSticker.swift b/Signal/ConversationView/Components/CVComponentSticker.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentSticker.swift rename to Signal/ConversationView/Components/CVComponentSticker.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentSystemMessage.swift b/Signal/ConversationView/Components/CVComponentSystemMessage.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentSystemMessage.swift rename to Signal/ConversationView/Components/CVComponentSystemMessage.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentThreadDetails.swift b/Signal/ConversationView/Components/CVComponentThreadDetails.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentThreadDetails.swift rename to Signal/ConversationView/Components/CVComponentThreadDetails.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentTypingIndicator.swift b/Signal/ConversationView/Components/CVComponentTypingIndicator.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentTypingIndicator.swift rename to Signal/ConversationView/Components/CVComponentTypingIndicator.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentUnreadIndicator.swift b/Signal/ConversationView/Components/CVComponentUnreadIndicator.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentUnreadIndicator.swift rename to Signal/ConversationView/Components/CVComponentUnreadIndicator.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentViewOnce.swift b/Signal/ConversationView/Components/CVComponentViewOnce.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/CVComponentViewOnce.swift rename to Signal/ConversationView/Components/CVComponentViewOnce.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVComponents/PersistableGroupUpdateItem+CVComponentSystemMessageAction.swift b/Signal/ConversationView/Components/PersistableGroupUpdateItem+CVComponentSystemMessageAction.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVComponents/PersistableGroupUpdateItem+CVComponentSystemMessageAction.swift rename to Signal/ConversationView/Components/PersistableGroupUpdateItem+CVComponentSystemMessageAction.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationCollectionView.swift b/Signal/ConversationView/ConversationCollectionView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationCollectionView.swift rename to Signal/ConversationView/ConversationCollectionView.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationHeaderView.swift b/Signal/ConversationView/ConversationHeaderView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationHeaderView.swift rename to Signal/ConversationView/ConversationHeaderView.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationInputTextView.swift b/Signal/ConversationView/ConversationInputTextView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationInputTextView.swift rename to Signal/ConversationView/ConversationInputTextView.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar+QuotedReplyPreview.swift b/Signal/ConversationView/ConversationInputToolbar+QuotedReplyPreview.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationInputToolbar+QuotedReplyPreview.swift rename to Signal/ConversationView/ConversationInputToolbar+QuotedReplyPreview.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.swift b/Signal/ConversationView/ConversationInputToolbar.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationInputToolbar.swift rename to Signal/ConversationView/ConversationInputToolbar.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationScrollButton.swift b/Signal/ConversationView/ConversationScrollButton.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationScrollButton.swift rename to Signal/ConversationView/ConversationScrollButton.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Banners.swift b/Signal/ConversationView/ConversationViewController+Banners.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+Banners.swift rename to Signal/ConversationView/ConversationViewController+Banners.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+BodyTextItems.swift b/Signal/ConversationView/ConversationViewController+BodyTextItems.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+BodyTextItems.swift rename to Signal/ConversationView/ConversationViewController+BodyTextItems.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+BottomBar.swift b/Signal/ConversationView/ConversationViewController+BottomBar.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+BottomBar.swift rename to Signal/ConversationView/ConversationViewController+BottomBar.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+CVC.swift b/Signal/ConversationView/ConversationViewController+CVC.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+CVC.swift rename to Signal/ConversationView/ConversationViewController+CVC.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+CVComponentDelegate.swift b/Signal/ConversationView/ConversationViewController+CVComponentDelegate.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+CVComponentDelegate.swift rename to Signal/ConversationView/ConversationViewController+CVComponentDelegate.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Calls.swift b/Signal/ConversationView/ConversationViewController+Calls.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+Calls.swift rename to Signal/ConversationView/ConversationViewController+Calls.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+ConversationInputToolbarDelegate.swift b/Signal/ConversationView/ConversationViewController+ConversationInputToolbarDelegate.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+ConversationInputToolbarDelegate.swift rename to Signal/ConversationView/ConversationViewController+ConversationInputToolbarDelegate.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Delegates.swift b/Signal/ConversationView/ConversationViewController+Delegates.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+Delegates.swift rename to Signal/ConversationView/ConversationViewController+Delegates.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+GestureRecognizers.swift b/Signal/ConversationView/ConversationViewController+GestureRecognizers.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+GestureRecognizers.swift rename to Signal/ConversationView/ConversationViewController+GestureRecognizers.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+GiftBadges.swift b/Signal/ConversationView/ConversationViewController+GiftBadges.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+GiftBadges.swift rename to Signal/ConversationView/ConversationViewController+GiftBadges.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+LastVisibleSortId.swift b/Signal/ConversationView/ConversationViewController+LastVisibleSortId.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+LastVisibleSortId.swift rename to Signal/ConversationView/ConversationViewController+LastVisibleSortId.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Mentions.swift b/Signal/ConversationView/ConversationViewController+Mentions.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+Mentions.swift rename to Signal/ConversationView/ConversationViewController+Mentions.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageActions.swift b/Signal/ConversationView/ConversationViewController+MessageActions.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageActions.swift rename to Signal/ConversationView/ConversationViewController+MessageActions.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageActionsDelegate.swift b/Signal/ConversationView/ConversationViewController+MessageActionsDelegate.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageActionsDelegate.swift rename to Signal/ConversationView/ConversationViewController+MessageActionsDelegate.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageRequest.swift b/Signal/ConversationView/ConversationViewController+MessageRequest.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+MessageRequest.swift rename to Signal/ConversationView/ConversationViewController+MessageRequest.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Misc.swift b/Signal/ConversationView/ConversationViewController+Misc.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+Misc.swift rename to Signal/ConversationView/ConversationViewController+Misc.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Notifications.swift b/Signal/ConversationView/ConversationViewController+Notifications.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+Notifications.swift rename to Signal/ConversationView/ConversationViewController+Notifications.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+OWS.swift b/Signal/ConversationView/ConversationViewController+OWS.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+OWS.swift rename to Signal/ConversationView/ConversationViewController+OWS.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Scroll.swift b/Signal/ConversationView/ConversationViewController+Scroll.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+Scroll.swift rename to Signal/ConversationView/ConversationViewController+Scroll.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Selection.swift b/Signal/ConversationView/ConversationViewController+Selection.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+Selection.swift rename to Signal/ConversationView/ConversationViewController+Selection.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+SystemMessageItems.swift b/Signal/ConversationView/ConversationViewController+SystemMessageItems.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+SystemMessageItems.swift rename to Signal/ConversationView/ConversationViewController+SystemMessageItems.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+UI.swift b/Signal/ConversationView/ConversationViewController+UI.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+UI.swift rename to Signal/ConversationView/ConversationViewController+UI.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+UIScrollView.swift b/Signal/ConversationView/ConversationViewController+UIScrollView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+UIScrollView.swift rename to Signal/ConversationView/ConversationViewController+UIScrollView.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+VoiceMessage.swift b/Signal/ConversationView/ConversationViewController+VoiceMessage.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+VoiceMessage.swift rename to Signal/ConversationView/ConversationViewController+VoiceMessage.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController+Wallpaper.swift b/Signal/ConversationView/ConversationViewController+Wallpaper.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController+Wallpaper.swift rename to Signal/ConversationView/ConversationViewController+Wallpaper.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.swift b/Signal/ConversationView/ConversationViewController.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewController.swift rename to Signal/ConversationView/ConversationViewController.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewLayout.swift b/Signal/ConversationView/ConversationViewLayout.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewLayout.swift rename to Signal/ConversationView/ConversationViewLayout.swift diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewModel.swift b/Signal/ConversationView/ConversationViewModel.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ConversationViewModel.swift rename to Signal/ConversationView/ConversationViewModel.swift diff --git a/Signal/src/ViewControllers/ConversationView/DateHeaderInteraction.swift b/Signal/ConversationView/DynamicInteractions/DateHeaderInteraction.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/DateHeaderInteraction.swift rename to Signal/ConversationView/DynamicInteractions/DateHeaderInteraction.swift diff --git a/Signal/src/ViewControllers/ConversationView/DefaultDisappearingMessageTimerInteraction.swift b/Signal/ConversationView/DynamicInteractions/DefaultDisappearingMessageTimerInteraction.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/DefaultDisappearingMessageTimerInteraction.swift rename to Signal/ConversationView/DynamicInteractions/DefaultDisappearingMessageTimerInteraction.swift diff --git a/Signal/src/ViewControllers/ConversationView/ThreadDetailsInteraction.swift b/Signal/ConversationView/DynamicInteractions/ThreadDetailsInteraction.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/ThreadDetailsInteraction.swift rename to Signal/ConversationView/DynamicInteractions/ThreadDetailsInteraction.swift diff --git a/Signal/src/ViewControllers/ConversationView/TypingIndicatorInteraction.swift b/Signal/ConversationView/DynamicInteractions/TypingIndicatorInteraction.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/TypingIndicatorInteraction.swift rename to Signal/ConversationView/DynamicInteractions/TypingIndicatorInteraction.swift diff --git a/Signal/src/ViewControllers/ConversationView/UnknownThreadWarningInteraction.swift b/Signal/ConversationView/DynamicInteractions/UnknownThreadWarningInteraction.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/UnknownThreadWarningInteraction.swift rename to Signal/ConversationView/DynamicInteractions/UnknownThreadWarningInteraction.swift diff --git a/Signal/src/ViewControllers/ConversationView/UnreadIndicatorInteraction.swift b/Signal/ConversationView/DynamicInteractions/UnreadIndicatorInteraction.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/UnreadIndicatorInteraction.swift rename to Signal/ConversationView/DynamicInteractions/UnreadIndicatorInteraction.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVAvatarBuilder.swift b/Signal/ConversationView/Loading/CVAvatarBuilder.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVAvatarBuilder.swift rename to Signal/ConversationView/Loading/CVAvatarBuilder.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVItemModel.swift b/Signal/ConversationView/Loading/CVItemModel.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVItemModel.swift rename to Signal/ConversationView/Loading/CVItemModel.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVItemViewState.swift b/Signal/ConversationView/Loading/CVItemViewState.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVItemViewState.swift rename to Signal/ConversationView/Loading/CVItemViewState.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVLoadContext.swift b/Signal/ConversationView/Loading/CVLoadContext.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVLoadContext.swift rename to Signal/ConversationView/Loading/CVLoadContext.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVLoadCoordinator.swift b/Signal/ConversationView/Loading/CVLoadCoordinator.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVLoadCoordinator.swift rename to Signal/ConversationView/Loading/CVLoadCoordinator.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVLoadRequest.swift b/Signal/ConversationView/Loading/CVLoadRequest.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVLoadRequest.swift rename to Signal/ConversationView/Loading/CVLoadRequest.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVLoader.swift b/Signal/ConversationView/Loading/CVLoader.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVLoader.swift rename to Signal/ConversationView/Loading/CVLoader.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVRenderItem.swift b/Signal/ConversationView/Loading/CVRenderItem.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVRenderItem.swift rename to Signal/ConversationView/Loading/CVRenderItem.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVRenderState.swift b/Signal/ConversationView/Loading/CVRenderState.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVRenderState.swift rename to Signal/ConversationView/Loading/CVRenderState.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVUpdate.swift b/Signal/ConversationView/Loading/CVUpdate.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVUpdate.swift rename to Signal/ConversationView/Loading/CVUpdate.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/CVViewStateSnapshot.swift b/Signal/ConversationView/Loading/CVViewStateSnapshot.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/CVViewStateSnapshot.swift rename to Signal/ConversationView/Loading/CVViewStateSnapshot.swift diff --git a/Signal/src/ViewControllers/ConversationView/CV/MessageLoader.swift b/Signal/ConversationView/Loading/MessageLoader.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/CV/MessageLoader.swift rename to Signal/ConversationView/Loading/MessageLoader.swift diff --git a/Signal/src/ViewControllers/ConversationView/MemberRequestView.swift b/Signal/ConversationView/MemberRequestView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/MemberRequestView.swift rename to Signal/ConversationView/MemberRequestView.swift diff --git a/Signal/src/Models/MessageActions.swift b/Signal/ConversationView/MessageActions.swift similarity index 100% rename from Signal/src/Models/MessageActions.swift rename to Signal/ConversationView/MessageActions.swift diff --git a/Signal/src/ViewControllers/ConversationView/MessageRequestView.swift b/Signal/ConversationView/MessageRequestView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/MessageRequestView.swift rename to Signal/ConversationView/MessageRequestView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Reactions Details/EmojiCountsCollectionView.swift b/Signal/ConversationView/Reactions/EmojiCountsCollectionView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Reactions Details/EmojiCountsCollectionView.swift rename to Signal/ConversationView/Reactions/EmojiCountsCollectionView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Reactions Details/EmojiReactorsTableView.swift b/Signal/ConversationView/Reactions/EmojiReactorsTableView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Reactions Details/EmojiReactorsTableView.swift rename to Signal/ConversationView/Reactions/EmojiReactorsTableView.swift diff --git a/Signal/src/ViewControllers/ConversationView/InteractionReactionState.swift b/Signal/ConversationView/Reactions/InteractionReactionState.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/InteractionReactionState.swift rename to Signal/ConversationView/Reactions/InteractionReactionState.swift diff --git a/Signal/src/ViewControllers/ConversationView/Reactions Details/ReactionsDetailSheet.swift b/Signal/ConversationView/Reactions/ReactionsDetailSheet.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Reactions Details/ReactionsDetailSheet.swift rename to Signal/ConversationView/Reactions/ReactionsDetailSheet.swift diff --git a/Signal/VoiceMessage/VoiceMessageInProgressDraft.swift b/Signal/ConversationView/VoiceMessage/VoiceMessageInProgressDraft.swift similarity index 100% rename from Signal/VoiceMessage/VoiceMessageInProgressDraft.swift rename to Signal/ConversationView/VoiceMessage/VoiceMessageInProgressDraft.swift diff --git a/Signal/VoiceMessage/VoiceMessageInterruptedDraft.swift b/Signal/ConversationView/VoiceMessage/VoiceMessageInterruptedDraft.swift similarity index 100% rename from Signal/VoiceMessage/VoiceMessageInterruptedDraft.swift rename to Signal/ConversationView/VoiceMessage/VoiceMessageInterruptedDraft.swift diff --git a/Signal/VoiceMessage/VoiceMessageSendableDraft.swift b/Signal/ConversationView/VoiceMessage/VoiceMessageSendableDraft.swift similarity index 100% rename from Signal/VoiceMessage/VoiceMessageSendableDraft.swift rename to Signal/ConversationView/VoiceMessage/VoiceMessageSendableDraft.swift diff --git a/Signal/src/util/Device Transfer/DeviceTransferOperation.swift b/Signal/DeviceTransfer/DeviceTransferOperation.swift similarity index 100% rename from Signal/src/util/Device Transfer/DeviceTransferOperation.swift rename to Signal/DeviceTransfer/DeviceTransferOperation.swift diff --git a/Signal/src/util/Device Transfer/DeviceTransferService+Manifest.swift b/Signal/DeviceTransfer/DeviceTransferService+Manifest.swift similarity index 100% rename from Signal/src/util/Device Transfer/DeviceTransferService+Manifest.swift rename to Signal/DeviceTransfer/DeviceTransferService+Manifest.swift diff --git a/Signal/src/util/Device Transfer/DeviceTransferService+MultipeerDelegates.swift b/Signal/DeviceTransfer/DeviceTransferService+MultipeerDelegates.swift similarity index 100% rename from Signal/src/util/Device Transfer/DeviceTransferService+MultipeerDelegates.swift rename to Signal/DeviceTransfer/DeviceTransferService+MultipeerDelegates.swift diff --git a/Signal/src/util/Device Transfer/DeviceTransferService+Restore.swift b/Signal/DeviceTransfer/DeviceTransferService+Restore.swift similarity index 100% rename from Signal/src/util/Device Transfer/DeviceTransferService+Restore.swift rename to Signal/DeviceTransfer/DeviceTransferService+Restore.swift diff --git a/Signal/src/util/Device Transfer/DeviceTransferService+State.swift b/Signal/DeviceTransfer/DeviceTransferService+State.swift similarity index 100% rename from Signal/src/util/Device Transfer/DeviceTransferService+State.swift rename to Signal/DeviceTransfer/DeviceTransferService+State.swift diff --git a/Signal/src/util/Device Transfer/DeviceTransferService+URL.swift b/Signal/DeviceTransfer/DeviceTransferService+URL.swift similarity index 100% rename from Signal/src/util/Device Transfer/DeviceTransferService+URL.swift rename to Signal/DeviceTransfer/DeviceTransferService+URL.swift diff --git a/Signal/src/util/Device Transfer/DeviceTransferService.swift b/Signal/DeviceTransfer/DeviceTransferService.swift similarity index 100% rename from Signal/src/util/Device Transfer/DeviceTransferService.swift rename to Signal/DeviceTransfer/DeviceTransferService.swift diff --git a/Signal/src/ViewControllers/OutgoingDeviceTransfer/OutgoingDeviceTransferInitialViewController.swift b/Signal/DeviceTransfer/OutgoingDeviceTransferInitialViewController.swift similarity index 100% rename from Signal/src/ViewControllers/OutgoingDeviceTransfer/OutgoingDeviceTransferInitialViewController.swift rename to Signal/DeviceTransfer/OutgoingDeviceTransferInitialViewController.swift diff --git a/Signal/src/ViewControllers/OutgoingDeviceTransfer/OutgoingDeviceTransferNavigationController.swift b/Signal/DeviceTransfer/OutgoingDeviceTransferNavigationController.swift similarity index 100% rename from Signal/src/ViewControllers/OutgoingDeviceTransfer/OutgoingDeviceTransferNavigationController.swift rename to Signal/DeviceTransfer/OutgoingDeviceTransferNavigationController.swift diff --git a/Signal/src/ViewControllers/OutgoingDeviceTransfer/OutgoingDeviceTransferProgressViewController.swift b/Signal/DeviceTransfer/OutgoingDeviceTransferProgressViewController.swift similarity index 100% rename from Signal/src/ViewControllers/OutgoingDeviceTransfer/OutgoingDeviceTransferProgressViewController.swift rename to Signal/DeviceTransfer/OutgoingDeviceTransferProgressViewController.swift diff --git a/Signal/src/ViewControllers/OutgoingDeviceTransfer/OutgoingDeviceTransferQRScanningViewController.swift b/Signal/DeviceTransfer/OutgoingDeviceTransferQRScanningViewController.swift similarity index 100% rename from Signal/src/ViewControllers/OutgoingDeviceTransfer/OutgoingDeviceTransferQRScanningViewController.swift rename to Signal/DeviceTransfer/OutgoingDeviceTransferQRScanningViewController.swift diff --git a/Signal/src/util/Device Transfer/SelfSignedIdentity.swift b/Signal/DeviceTransfer/SelfSignedIdentity.swift similarity index 100% rename from Signal/src/util/Device Transfer/SelfSignedIdentity.swift rename to Signal/DeviceTransfer/SelfSignedIdentity.swift diff --git a/Signal/src/util/Emoji/Emoji+Available.swift b/Signal/Emoji/Emoji+Available.swift similarity index 100% rename from Signal/src/util/Emoji/Emoji+Available.swift rename to Signal/Emoji/Emoji+Available.swift diff --git a/Signal/src/util/Emoji/Emoji+Category.swift b/Signal/Emoji/Emoji+Category.swift similarity index 100% rename from Signal/src/util/Emoji/Emoji+Category.swift rename to Signal/Emoji/Emoji+Category.swift diff --git a/Signal/src/util/Emoji/Emoji+Name.swift b/Signal/Emoji/Emoji+Name.swift similarity index 100% rename from Signal/src/util/Emoji/Emoji+Name.swift rename to Signal/Emoji/Emoji+Name.swift diff --git a/Signal/src/util/Emoji/Emoji+SkinTones.swift b/Signal/Emoji/Emoji+SkinTones.swift similarity index 100% rename from Signal/src/util/Emoji/Emoji+SkinTones.swift rename to Signal/Emoji/Emoji+SkinTones.swift diff --git a/Signal/src/util/Emoji/Emoji.swift b/Signal/Emoji/Emoji.swift similarity index 100% rename from Signal/src/util/Emoji/Emoji.swift rename to Signal/Emoji/Emoji.swift diff --git a/Signal/src/ViewControllers/ConversationView/Emoji Picker/EmojiPickerCollectionView.swift b/Signal/Emoji/EmojiPickerCollectionView.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Emoji Picker/EmojiPickerCollectionView.swift rename to Signal/Emoji/EmojiPickerCollectionView.swift diff --git a/Signal/src/ViewControllers/ConversationView/Emoji Picker/EmojiPickerSectionToolbar.swift b/Signal/Emoji/EmojiPickerSectionToolbar.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Emoji Picker/EmojiPickerSectionToolbar.swift rename to Signal/Emoji/EmojiPickerSectionToolbar.swift diff --git a/Signal/src/ViewControllers/ConversationView/Emoji Picker/EmojiPickerSheet.swift b/Signal/Emoji/EmojiPickerSheet.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Emoji Picker/EmojiPickerSheet.swift rename to Signal/Emoji/EmojiPickerSheet.swift diff --git a/Signal/src/ViewControllers/ConversationView/Emoji Picker/EmojiReactionPickerConfigViewController.swift b/Signal/Emoji/EmojiReactionPickerConfigViewController.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Emoji Picker/EmojiReactionPickerConfigViewController.swift rename to Signal/Emoji/EmojiReactionPickerConfigViewController.swift diff --git a/Signal/src/ViewControllers/ConversationView/Emoji Picker/EmojiSkinTonePicker.swift b/Signal/Emoji/EmojiSkinTonePicker.swift similarity index 100% rename from Signal/src/ViewControllers/ConversationView/Emoji Picker/EmojiSkinTonePicker.swift rename to Signal/Emoji/EmojiSkinTonePicker.swift diff --git a/Signal/src/util/Emoji/EmojiWithSkinTones+String.swift b/Signal/Emoji/EmojiWithSkinTones+String.swift similarity index 100% rename from Signal/src/util/Emoji/EmojiWithSkinTones+String.swift rename to Signal/Emoji/EmojiWithSkinTones+String.swift diff --git a/Signal/src/util/Emoji/EmojiWithSkinTones.swift b/Signal/Emoji/EmojiWithSkinTones.swift similarity index 100% rename from Signal/src/util/Emoji/EmojiWithSkinTones.swift rename to Signal/Emoji/EmojiWithSkinTones.swift diff --git a/Signal/src/util/AppUpdateNag.swift b/Signal/Expiration/AppUpdateNag.swift similarity index 100% rename from Signal/src/util/AppUpdateNag.swift rename to Signal/Expiration/AppUpdateNag.swift diff --git a/Signal/src/util/OsExpiry.swift b/Signal/Expiration/OsExpiry.swift similarity index 100% rename from Signal/src/util/OsExpiry.swift rename to Signal/Expiration/OsExpiry.swift diff --git a/Signal/src/util/UIDevice+CanUpgradeOperatingSystem.swift b/Signal/Expiration/UIDevice+CanUpgradeOperatingSystem.swift similarity index 100% rename from Signal/src/util/UIDevice+CanUpgradeOperatingSystem.swift rename to Signal/Expiration/UIDevice+CanUpgradeOperatingSystem.swift diff --git a/Signal/src/Experience Upgrades/ExperienceUpgradeManager.swift b/Signal/Megaphones/ExperienceUpgradeManager.swift similarity index 100% rename from Signal/src/Experience Upgrades/ExperienceUpgradeManager.swift rename to Signal/Megaphones/ExperienceUpgradeManager.swift diff --git a/Signal/src/Experience Upgrades/Upgrade Views/ContactPermissionReminderMegaphone.swift b/Signal/Megaphones/UserInterface/ContactPermissionReminderMegaphone.swift similarity index 100% rename from Signal/src/Experience Upgrades/Upgrade Views/ContactPermissionReminderMegaphone.swift rename to Signal/Megaphones/UserInterface/ContactPermissionReminderMegaphone.swift diff --git a/Signal/src/Experience Upgrades/Upgrade Views/CreateUsernameMegaphone.swift b/Signal/Megaphones/UserInterface/CreateUsernameMegaphone.swift similarity index 100% rename from Signal/src/Experience Upgrades/Upgrade Views/CreateUsernameMegaphone.swift rename to Signal/Megaphones/UserInterface/CreateUsernameMegaphone.swift diff --git a/Signal/src/Experience Upgrades/Upgrade Views/IntroducingPINs.swift b/Signal/Megaphones/UserInterface/IntroducingPINs.swift similarity index 100% rename from Signal/src/Experience Upgrades/Upgrade Views/IntroducingPINs.swift rename to Signal/Megaphones/UserInterface/IntroducingPINs.swift diff --git a/Signal/src/Experience Upgrades/MegaphoneView.swift b/Signal/Megaphones/UserInterface/MegaphoneView.swift similarity index 100% rename from Signal/src/Experience Upgrades/MegaphoneView.swift rename to Signal/Megaphones/UserInterface/MegaphoneView.swift diff --git a/Signal/src/Experience Upgrades/Upgrade Views/NotificationPermissionReminderMegaphone.swift b/Signal/Megaphones/UserInterface/NotificationPermissionReminderMegaphone.swift similarity index 100% rename from Signal/src/Experience Upgrades/Upgrade Views/NotificationPermissionReminderMegaphone.swift rename to Signal/Megaphones/UserInterface/NotificationPermissionReminderMegaphone.swift diff --git a/Signal/src/Experience Upgrades/Upgrade Views/PinReminderMegaphone.swift b/Signal/Megaphones/UserInterface/PinReminderMegaphone.swift similarity index 100% rename from Signal/src/Experience Upgrades/Upgrade Views/PinReminderMegaphone.swift rename to Signal/Megaphones/UserInterface/PinReminderMegaphone.swift diff --git a/Signal/src/Experience Upgrades/Upgrade Views/RemoteMegaphone.swift b/Signal/Megaphones/UserInterface/RemoteMegaphone.swift similarity index 100% rename from Signal/src/Experience Upgrades/Upgrade Views/RemoteMegaphone.swift rename to Signal/Megaphones/UserInterface/RemoteMegaphone.swift diff --git a/Signal/src/Experience Upgrades/SplashViewController.swift b/Signal/Megaphones/UserInterface/SplashViewController.swift similarity index 100% rename from Signal/src/Experience Upgrades/SplashViewController.swift rename to Signal/Megaphones/UserInterface/SplashViewController.swift diff --git a/Signal/src/Badge/AppIconBadgeUpdater.swift b/Signal/Notifications/AppIconBadgeUpdater.swift similarity index 100% rename from Signal/src/Badge/AppIconBadgeUpdater.swift rename to Signal/Notifications/AppIconBadgeUpdater.swift diff --git a/Signal/src/Badge/BadgeManager.swift b/Signal/Notifications/BadgeManager.swift similarity index 100% rename from Signal/src/Badge/BadgeManager.swift rename to Signal/Notifications/BadgeManager.swift diff --git a/Signal/src/util/NotificationActionHandler.swift b/Signal/Notifications/NotificationActionHandler.swift similarity index 100% rename from Signal/src/util/NotificationActionHandler.swift rename to Signal/Notifications/NotificationActionHandler.swift diff --git a/Signal/src/environment/PushRegistrationManager.swift b/Signal/Notifications/PushRegistrationManager.swift similarity index 100% rename from Signal/src/environment/PushRegistrationManager.swift rename to Signal/Notifications/PushRegistrationManager.swift diff --git a/Signal/src/Models/DeviceProvisioningURL.swift b/Signal/Provisioning/DeviceProvisioningURL.swift similarity index 100% rename from Signal/src/Models/DeviceProvisioningURL.swift rename to Signal/Provisioning/DeviceProvisioningURL.swift diff --git a/Signal/src/ViewControllers/Registration/Provisioning/ProvisioningBaseViewController.swift b/Signal/Provisioning/UserInterface/ProvisioningBaseViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/Provisioning/ProvisioningBaseViewController.swift rename to Signal/Provisioning/UserInterface/ProvisioningBaseViewController.swift diff --git a/Signal/src/ViewControllers/Registration/Provisioning/ProvisioningController.swift b/Signal/Provisioning/UserInterface/ProvisioningController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/Provisioning/ProvisioningController.swift rename to Signal/Provisioning/UserInterface/ProvisioningController.swift diff --git a/Signal/src/ViewControllers/Registration/Provisioning/ProvisioningModeSwitchConfirmationViewController.swift b/Signal/Provisioning/UserInterface/ProvisioningModeSwitchConfirmationViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/Provisioning/ProvisioningModeSwitchConfirmationViewController.swift rename to Signal/Provisioning/UserInterface/ProvisioningModeSwitchConfirmationViewController.swift diff --git a/Signal/src/ViewControllers/Registration/Provisioning/ProvisioningPermissionsViewController.swift b/Signal/Provisioning/UserInterface/ProvisioningPermissionsViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/Provisioning/ProvisioningPermissionsViewController.swift rename to Signal/Provisioning/UserInterface/ProvisioningPermissionsViewController.swift diff --git a/Signal/src/ViewControllers/Registration/Provisioning/ProvisioningPrepViewController.swift b/Signal/Provisioning/UserInterface/ProvisioningPrepViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/Provisioning/ProvisioningPrepViewController.swift rename to Signal/Provisioning/UserInterface/ProvisioningPrepViewController.swift diff --git a/Signal/src/ViewControllers/Registration/Provisioning/ProvisioningQRCodeViewController.swift b/Signal/Provisioning/UserInterface/ProvisioningQRCodeViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/Provisioning/ProvisioningQRCodeViewController.swift rename to Signal/Provisioning/UserInterface/ProvisioningQRCodeViewController.swift diff --git a/Signal/src/ViewControllers/Registration/Provisioning/ProvisioningSetDeviceNameViewController.swift b/Signal/Provisioning/UserInterface/ProvisioningSetDeviceNameViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/Provisioning/ProvisioningSetDeviceNameViewController.swift rename to Signal/Provisioning/UserInterface/ProvisioningSetDeviceNameViewController.swift diff --git a/Signal/src/ViewControllers/Registration/Provisioning/ProvisioningSplashViewController.swift b/Signal/Provisioning/UserInterface/ProvisioningSplashViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/Provisioning/ProvisioningSplashViewController.swift rename to Signal/Provisioning/UserInterface/ProvisioningSplashViewController.swift diff --git a/Signal/src/ViewControllers/Registration/Provisioning/ProvisioningTransferChoiceViewController.swift b/Signal/Provisioning/UserInterface/ProvisioningTransferChoiceViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/Provisioning/ProvisioningTransferChoiceViewController.swift rename to Signal/Provisioning/UserInterface/ProvisioningTransferChoiceViewController.swift diff --git a/Signal/src/ViewControllers/Registration/Provisioning/ProvisioningTransferProgressViewController.swift b/Signal/Provisioning/UserInterface/ProvisioningTransferProgressViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/Provisioning/ProvisioningTransferProgressViewController.swift rename to Signal/Provisioning/UserInterface/ProvisioningTransferProgressViewController.swift diff --git a/Signal/src/ViewControllers/Registration/Provisioning/ProvisioningTransferQRCodeViewController.swift b/Signal/Provisioning/UserInterface/ProvisioningTransferQRCodeViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/Provisioning/ProvisioningTransferQRCodeViewController.swift rename to Signal/Provisioning/UserInterface/ProvisioningTransferQRCodeViewController.swift diff --git a/Signal/src/Models/PhoneNumberValidator.swift b/Signal/Registration/PhoneNumberValidator.swift similarity index 100% rename from Signal/src/Models/PhoneNumberValidator.swift rename to Signal/Registration/PhoneNumberValidator.swift diff --git a/Signal/src/util/RegistrationUtils.swift b/Signal/Registration/RegistrationUtils.swift similarity index 100% rename from Signal/src/util/RegistrationUtils.swift rename to Signal/Registration/RegistrationUtils.swift diff --git a/Signal/src/ViewControllers/Registration/ContactSupportAlert+Registration.swift b/Signal/Registration/UserInterface/ContactSupportAlert+Registration.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/ContactSupportAlert+Registration.swift rename to Signal/Registration/UserInterface/ContactSupportAlert+Registration.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationCaptchaViewController.swift b/Signal/Registration/UserInterface/RegistrationCaptchaViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationCaptchaViewController.swift rename to Signal/Registration/UserInterface/RegistrationCaptchaViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationChangeNumberSplashViewController.swift b/Signal/Registration/UserInterface/RegistrationChangeNumberSplashViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationChangeNumberSplashViewController.swift rename to Signal/Registration/UserInterface/RegistrationChangeNumberSplashViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationChangePhoneNumberConfirmationViewController.swift b/Signal/Registration/UserInterface/RegistrationChangePhoneNumberConfirmationViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationChangePhoneNumberConfirmationViewController.swift rename to Signal/Registration/UserInterface/RegistrationChangePhoneNumberConfirmationViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationChangePhoneNumberViewController.swift b/Signal/Registration/UserInterface/RegistrationChangePhoneNumberViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationChangePhoneNumberViewController.swift rename to Signal/Registration/UserInterface/RegistrationChangePhoneNumberViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationConfirmModeSwitchViewController.swift b/Signal/Registration/UserInterface/RegistrationConfirmModeSwitchViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationConfirmModeSwitchViewController.swift rename to Signal/Registration/UserInterface/RegistrationConfirmModeSwitchViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationLoadingViewController.swift b/Signal/Registration/UserInterface/RegistrationLoadingViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationLoadingViewController.swift rename to Signal/Registration/UserInterface/RegistrationLoadingViewController.swift diff --git a/Signal/Registration/ViewControllers/RegistrationNavigationController.swift b/Signal/Registration/UserInterface/RegistrationNavigationController.swift similarity index 100% rename from Signal/Registration/ViewControllers/RegistrationNavigationController.swift rename to Signal/Registration/UserInterface/RegistrationNavigationController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationPermissionsViewController.swift b/Signal/Registration/UserInterface/RegistrationPermissionsViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationPermissionsViewController.swift rename to Signal/Registration/UserInterface/RegistrationPermissionsViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationPhoneNumberDiscoverabilityViewController.swift b/Signal/Registration/UserInterface/RegistrationPhoneNumberDiscoverabilityViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationPhoneNumberDiscoverabilityViewController.swift rename to Signal/Registration/UserInterface/RegistrationPhoneNumberDiscoverabilityViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationPhoneNumberInputView.swift b/Signal/Registration/UserInterface/RegistrationPhoneNumberInputView.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationPhoneNumberInputView.swift rename to Signal/Registration/UserInterface/RegistrationPhoneNumberInputView.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationPhoneNumberViewController.swift b/Signal/Registration/UserInterface/RegistrationPhoneNumberViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationPhoneNumberViewController.swift rename to Signal/Registration/UserInterface/RegistrationPhoneNumberViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationPhoneNumberViewState.swift b/Signal/Registration/UserInterface/RegistrationPhoneNumberViewState.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationPhoneNumberViewState.swift rename to Signal/Registration/UserInterface/RegistrationPhoneNumberViewState.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationPinAttemptsExhaustedAndMustCreateNewPinViewController.swift b/Signal/Registration/UserInterface/RegistrationPinAttemptsExhaustedAndMustCreateNewPinViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationPinAttemptsExhaustedAndMustCreateNewPinViewController.swift rename to Signal/Registration/UserInterface/RegistrationPinAttemptsExhaustedAndMustCreateNewPinViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationPinViewController.swift b/Signal/Registration/UserInterface/RegistrationPinViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationPinViewController.swift rename to Signal/Registration/UserInterface/RegistrationPinViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationProfileViewController.swift b/Signal/Registration/UserInterface/RegistrationProfileViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationProfileViewController.swift rename to Signal/Registration/UserInterface/RegistrationProfileViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationReglockTimeoutViewController.swift b/Signal/Registration/UserInterface/RegistrationReglockTimeoutViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationReglockTimeoutViewController.swift rename to Signal/Registration/UserInterface/RegistrationReglockTimeoutViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationSplashViewController.swift b/Signal/Registration/UserInterface/RegistrationSplashViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationSplashViewController.swift rename to Signal/Registration/UserInterface/RegistrationSplashViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationTransferChoiceViewController.swift b/Signal/Registration/UserInterface/RegistrationTransferChoiceViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationTransferChoiceViewController.swift rename to Signal/Registration/UserInterface/RegistrationTransferChoiceViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationTransferProgressViewController.swift b/Signal/Registration/UserInterface/RegistrationTransferProgressViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationTransferProgressViewController.swift rename to Signal/Registration/UserInterface/RegistrationTransferProgressViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationTransferQRCodeViewController.swift b/Signal/Registration/UserInterface/RegistrationTransferQRCodeViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationTransferQRCodeViewController.swift rename to Signal/Registration/UserInterface/RegistrationTransferQRCodeViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationVerificationCodeView.swift b/Signal/Registration/UserInterface/RegistrationVerificationCodeView.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationVerificationCodeView.swift rename to Signal/Registration/UserInterface/RegistrationVerificationCodeView.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationVerificationViewController.swift b/Signal/Registration/UserInterface/RegistrationVerificationViewController.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationVerificationViewController.swift rename to Signal/Registration/UserInterface/RegistrationVerificationViewController.swift diff --git a/Signal/src/ViewControllers/Registration/RegistrationViewUtil.swift b/Signal/Registration/UserInterface/RegistrationViewUtil.swift similarity index 100% rename from Signal/src/ViewControllers/Registration/RegistrationViewUtil.swift rename to Signal/Registration/UserInterface/RegistrationViewUtil.swift diff --git a/Signal/src/Usernames/Links/UsernameLinkPresentQRCodeViewController.swift b/Signal/Usernames/Links/UsernameLinkPresentQRCodeViewController.swift similarity index 100% rename from Signal/src/Usernames/Links/UsernameLinkPresentQRCodeViewController.swift rename to Signal/Usernames/Links/UsernameLinkPresentQRCodeViewController.swift diff --git a/Signal/src/Usernames/Links/UsernameLinkQRCodeColorPickerViewController.swift b/Signal/Usernames/Links/UsernameLinkQRCodeColorPickerViewController.swift similarity index 100% rename from Signal/src/Usernames/Links/UsernameLinkQRCodeColorPickerViewController.swift rename to Signal/Usernames/Links/UsernameLinkQRCodeColorPickerViewController.swift diff --git a/Signal/src/Usernames/Links/UsernameLinkQRCodeContentController.swift b/Signal/Usernames/Links/UsernameLinkQRCodeContentController.swift similarity index 100% rename from Signal/src/Usernames/Links/UsernameLinkQRCodeContentController.swift rename to Signal/Usernames/Links/UsernameLinkQRCodeContentController.swift diff --git a/Signal/src/Usernames/Links/UsernameLinkScanQRCodeSheet.swift b/Signal/Usernames/Links/UsernameLinkScanQRCodeSheet.swift similarity index 100% rename from Signal/src/Usernames/Links/UsernameLinkScanQRCodeSheet.swift rename to Signal/Usernames/Links/UsernameLinkScanQRCodeSheet.swift diff --git a/Signal/src/Usernames/Links/UsernameLinkScanQRCodeViewController.swift b/Signal/Usernames/Links/UsernameLinkScanQRCodeViewController.swift similarity index 100% rename from Signal/src/Usernames/Links/UsernameLinkScanQRCodeViewController.swift rename to Signal/Usernames/Links/UsernameLinkScanQRCodeViewController.swift diff --git a/Signal/src/Usernames/Links/UsernameLinkShareSheetViewController.swift b/Signal/Usernames/Links/UsernameLinkShareSheetViewController.swift similarity index 100% rename from Signal/src/Usernames/Links/UsernameLinkShareSheetViewController.swift rename to Signal/Usernames/Links/UsernameLinkShareSheetViewController.swift diff --git a/Signal/src/Usernames/Links/UsernameLinkTooltipView.swift b/Signal/Usernames/Links/UsernameLinkTooltipView.swift similarity index 100% rename from Signal/src/Usernames/Links/UsernameLinkTooltipView.swift rename to Signal/Usernames/Links/UsernameLinkTooltipView.swift diff --git a/Signal/src/Usernames/Selection/UsernameSelectionCoordinator.swift b/Signal/Usernames/Selection/UsernameSelectionCoordinator.swift similarity index 100% rename from Signal/src/Usernames/Selection/UsernameSelectionCoordinator.swift rename to Signal/Usernames/Selection/UsernameSelectionCoordinator.swift diff --git a/Signal/src/Usernames/Selection/UsernameSelectionViewController+HeaderView.swift b/Signal/Usernames/Selection/UsernameSelectionViewController+HeaderView.swift similarity index 100% rename from Signal/src/Usernames/Selection/UsernameSelectionViewController+HeaderView.swift rename to Signal/Usernames/Selection/UsernameSelectionViewController+HeaderView.swift diff --git a/Signal/src/Usernames/Selection/UsernameSelectionViewController+UsernameTextField.swift b/Signal/Usernames/Selection/UsernameSelectionViewController+UsernameTextField.swift similarity index 100% rename from Signal/src/Usernames/Selection/UsernameSelectionViewController+UsernameTextField.swift rename to Signal/Usernames/Selection/UsernameSelectionViewController+UsernameTextField.swift diff --git a/Signal/src/Usernames/Selection/UsernameSelectionViewController.swift b/Signal/Usernames/Selection/UsernameSelectionViewController.swift similarity index 100% rename from Signal/src/Usernames/Selection/UsernameSelectionViewController.swift rename to Signal/Usernames/Selection/UsernameSelectionViewController.swift diff --git a/Signal/src/Usernames/UsernameChangeDelegate.swift b/Signal/Usernames/UsernameChangeDelegate.swift similarity index 100% rename from Signal/src/Usernames/UsernameChangeDelegate.swift rename to Signal/Usernames/UsernameChangeDelegate.swift diff --git a/Signal/src/Usernames/UsernameEducationViewController.swift b/Signal/Usernames/UsernameEducationViewController.swift similarity index 100% rename from Signal/src/Usernames/UsernameEducationViewController.swift rename to Signal/Usernames/UsernameEducationViewController.swift