From 65a22813a35807e26339bbc549fed7576ea557a9 Mon Sep 17 00:00:00 2001 From: ericholguin Date: Tue, 22 Jul 2025 19:36:18 -0600 Subject: [PATCH] refactor: Adding structure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Huge refactor to add better structure to the project. Separating features with their associated view and model structure. This should be better organization and will allow us to improve the overall architecture in the future. I forsee many more improvements that can follow this change. e.g. MVVM Arch As well as cleaning up duplicate, unused, functionality. Many files have global functions that can also be moved or be renamed. damus/ ├── Features/ │ ├── / │ │ ├── Views/ │ │ └── Models/ ├── Shared/ │ ├── Components/ │ ├── Media/ │ ├── Buttons/ │ ├── Extensions/ │ ├── Empty Views/ │ ├── ErrorHandling/ │ ├── Modifiers/ │ └── Utilities/ ├── Core/ │ ├── Nostr/ │ ├── NIPs/ │ ├── DIPs/ │ ├── Types/ │ ├── Networking/ │ └── Storage/ Signed-off-by: ericholguin --- damus.xcodeproj/project.pbxproj | 1416 +++++++++++------ .../AppAccessibilityIdentifiers.swift | 0 damus/Components/Gradients/AlbyGradient.swift | 15 - damus/{ => Core/DIPs}/DIP06/Interests.swift | 0 damus/{ => Core/NIPs}/NIP04/NIP04.swift | 0 damus/{ => Core/NIPs}/NIP10/ThreadReply.swift | 0 damus/{ => Core/NIPs}/NIP37/NIP37Draft.swift | 0 damus/{ => Core/NIPs}/NIP44/NIP44.swift | 0 .../{ => Core/NIPs}/NIP51/InterestList.swift | 0 damus/{ => Core/NIPs}/NIP65/NIP65.swift | 0 .../NIP98}/NIP98AuthenticatedRequest.swift | 0 .../NIPs/NIP98}/Nip98HTTPAuth.swift | 0 .../NIPs/NIP98}/NostrAuth.swift | 0 .../NostrNetworkManager.swift | 0 .../SubscriptionManager.swift | 0 .../UserRelayListErrors.swift | 0 .../UserRelayListManager.swift | 0 .../{Models => Core/Nostr}/CommentItem.swift | 0 damus/{ => Core/Nostr}/ContentParsing.swift | 0 .../Damus.xcdatamodel/contents | 0 damus/{ => Core}/Nostr/Id.swift | 0 damus/{Util => Core/Nostr}/Keys.swift | 0 damus/{ => Core}/Nostr/MakeZapRequest.swift | 0 damus/{Models => Core/Nostr}/Mentions.swift | 0 damus/{ => Core}/Nostr/Nostr.swift | 0 damus/{ => Core}/Nostr/NostrEvent+.swift | 0 damus/{ => Core}/Nostr/NostrEvent.swift | 0 damus/{ => Core}/Nostr/NostrFilter.swift | 0 damus/{ => Core}/Nostr/NostrKind.swift | 0 damus/{ => Core}/Nostr/NostrLink.swift | 0 damus/{ => Core}/Nostr/NostrRequest.swift | 0 damus/{ => Core}/Nostr/NostrResponse.swift | 0 damus/{ => Core}/Nostr/Profiles.swift | 0 damus/{ => Core}/Nostr/ProofOfWork.swift | 0 damus/{ => Core}/Nostr/ReferencedId.swift | 0 damus/{ => Core}/Nostr/Relay.swift | 0 damus/{ => Core}/Nostr/RelayConnection.swift | 0 damus/{ => Core}/Nostr/RelayLog.swift | 0 damus/{ => Core}/Nostr/RelayPool.swift | 0 damus/{ => Core}/Nostr/RelayURL.swift | 0 damus/{ => Core}/Nostr/WebSocket.swift | 0 .../Storage}/DamusCacheManager.swift | 0 .../{Models => Core/Storage}/DamusState.swift | 0 .../Storage}/DamusUserDefaults.swift | 0 .../Storage}/KeychainStorage.swift | 0 damus/{ => Core}/Types/Block.swift | 0 damus/{ => Core}/Types/DamusDuration.swift | 0 damus/{ => Core}/Types/Ids/IdType.swift | 0 damus/{ => Core}/Types/Ids/NoteId.swift | 0 damus/{ => Core}/Types/Ids/Pubkey.swift | 0 damus/{ => Core}/Types/Ids/Referenced.swift | 0 damus/{ => Core}/Types/MigratedTypes.swift | 0 .../ActionBar}/Models/ActionBarModel.swift | 0 .../ActionBar/Views}/EventActionBar.swift | 0 .../ActionBar/Views}/EventDetailBar.swift | 0 .../ActionBar/Views}/ShareAction.swift | 0 .../Reactions}/Models/LikeCounter.swift | 0 .../Actions/Reactions}/Models/Liked.swift | 0 .../Reactions/Views}/ReactionView.swift | 0 .../Reactions}/Views/ReactionsView.swift | 0 .../Actions/Reports}/Models/Report.swift | 0 .../Actions/Reports}/Views/ReportView.swift | 0 .../Reposts/Views}/QuoteRepostsView.swift | 0 .../Actions/Reposts/Views}/RepostAction.swift | 0 .../Actions/Reposts/Views}/RepostView.swift | 0 .../Actions/Reposts/Views}/Reposted.swift | 0 .../Reposts/Views}/RepostedEvent.swift | 0 .../Actions/Reposts}/Views/RepostsView.swift | 0 .../Bookmarks}/Models/BookmarksManager.swift | 0 .../Bookmarks}/Views/BookmarksView.swift | 0 .../Chat/ChatBubbleView.swift | 0 .../Chat/ChatEventView.swift | 0 .../Chat/ChatroomThreadView.swift | 0 .../Chat}/Models/ThreadModel.swift | 0 .../Chat/ReplyQuoteView.swift | 0 .../DMs}/Models/DirectMessageModel.swift | 0 .../DMs}/Models/DirectMessagesModel.swift | 0 .../{ => Features/DMs}/Views/DMChatView.swift | 0 damus/{ => Features/DMs}/Views/DMView.swift | 0 .../DMs}/Views/DirectMessagesView.swift | 0 .../Events/BuilderEventView.swift | 0 .../Events/Components/EventTop.swift | 0 .../Events/Components/ProxyView.swift | 0 .../Events/Components/RelativeTime.swift | 0 .../Events/Components/ReplyDescription.swift | 0 .../Events/Components/ReplyPart.swift | 0 .../Events/Components/TimeDot.swift | 0 .../Events/EventBody.swift | 0 .../Events}/EventDetailView.swift | 0 .../Events/EventLoaderView.swift | 0 .../Events/EventMenu.swift | 0 .../Events/EventMutingContainerView.swift | 0 .../Events/EventProfile.swift | 0 .../Events/EventShell.swift | 0 .../Events}/EventView.swift | 0 .../Events/MentionView.swift | 0 .../Events}/Models/EventsModel.swift | 0 .../Models}/LoadableNostrEventView.swift | 0 .../Events}/Models/NoteContent.swift | 0 .../Events}/NoteContentView.swift | 0 .../Events/SelectedEventView.swift | 0 .../Events/TextEvent.swift | 0 .../Events/WideEventView.swift | 0 .../FollowPack}/Models/FollowPackEvent.swift | 0 .../FollowPack}/Models/FollowPackModel.swift | 0 .../FollowPack/Views}/FollowPackPreview.swift | 0 .../Views}/FollowPackTimeline.swift | 0 .../FollowPack/Views}/FollowPackView.swift | 0 .../Follows}/Models/Contacts+.swift | 0 .../Follows}/Models/Contacts.swift | 0 .../Follows}/Models/FollowState.swift | 0 .../Follows}/Models/FollowTarget.swift | 0 .../Follows}/Models/FollowersModel.swift | 0 .../Follows}/Models/FollowingModel.swift | 0 .../Follows}/Views/FollowingView.swift | 0 .../Highlight}/Models/HighlightEvent.swift | 0 .../Views}/HighlightDescription.swift | 0 .../Views}/HighlightDraftContentView.swift | 0 .../Highlight/Views}/HighlightEventRef.swift | 0 .../Highlight/Views}/HighlightLink.swift | 0 .../Highlight/Views}/HighlightView.swift | 0 .../Longform}/Models/LongformEvent.swift | 0 .../Longform/Views}/LongformPreview.swift | 0 .../Longform/Views}/LongformView.swift | 0 .../Muting/Models}/Lists.swift | 0 .../Muting}/Models/MuteItem.swift | 0 .../Muting}/Models/MutedThreadsManager.swift | 0 .../Muting}/Models/MutelistManager.swift | 0 .../Muting/Views}/AddMuteItemView.swift | 0 .../Muting/Views}/MuteDurationMenu.swift | 0 .../Muting/Views}/MutelistView.swift | 0 .../NIP05/Models}/NIP05.swift | 0 .../Models/NIP05DomainEventsModel.swift | 0 .../NIP05}/Views/NIP05DomainPubkeysView.swift | 0 .../Views/NIP05DomainTimelineHeaderView.swift | 0 .../Views/NIP05DomainTimelineView.swift | 0 .../NostrScript/LoadScript.swift | 0 .../Notifications/Models}/EventGroup.swift | 0 .../Models}/NotificationStatusModel.swift | 0 .../Models/NotificationsManager.swift | 0 .../Models/NotificationsModel.swift | 0 .../Models/PushNotificationClient.swift | 0 .../Notifications/Models}/ZapGroup.swift | 0 .../Views}/DamusAppNotificationView.swift | 0 .../Notifications/Views}/EventGroupView.swift | 0 .../Views}/NotificationItemView.swift | 0 .../Views}/NotificationsView.swift | 0 .../Views}/ProfilePicturesView.swift | 0 .../Models/CreateAccountModel.swift | 0 .../OnboardingContentSettings.swift | 0 .../Onboarding/SuggestedUsersViewModel.swift | 0 .../Onboarding}/Views/CreateAccountView.swift | 0 .../Onboarding}/Views/EULAView.swift | 0 .../Views}/InterestSelectionView.swift | 0 .../Onboarding}/Views/LoginView.swift | 0 .../Views}/OnboardingSuggestionsView.swift | 0 .../Onboarding}/Views/SaveKeysView.swift | 0 .../Onboarding}/Views/SetupView.swift | 0 .../Views/SuggestedHashtagsView.swift | 0 .../Onboarding/Views}/SuggestedUserView.swift | 0 .../Onboarding/follow-packs.jsonl | 0 .../Posting}/Models/DraftsModel.swift | 0 .../{ => Features/Posting}/Models/Post.swift | 0 .../Posting/Models}/PostBox.swift | 0 .../{ => Features/Posting}/Models/Reply.swift | 0 .../Posting/Models}/ReplyCounter.swift | 0 .../Posting}/Models/ReplyMap.swift | 0 .../Views}/AutoSaveIndicatorView.swift | 0 .../Posting}/Views/ParticipantsView.swift | 0 .../Posting}/Views/PostView.swift | 0 .../Posting}/Views/ReplyView.swift | 0 .../Posting/Views}/UserSearch.swift | 0 .../Profile}/Models/ProfileModel.swift | 0 .../Profile}/Models/ProfileUpdate.swift | 0 .../Profile/Views}/AboutView.swift | 0 .../Views}/CondensedProfilePicturesView.swift | 0 .../Profile/Views}/EditMetadataView.swift | 0 .../Profile/Views}/EditPictureControl.swift | 0 .../Profile/Views}/EventProfileName.swift | 0 .../Profile/Views}/FriendIcon.swift | 0 .../Profile/Views}/MaybeAnonPfpView.swift | 0 .../Views/ProfileActionSheetView.swift | 0 .../Profile/Views}/ProfileEditButton.swift | 0 .../Profile/Views}/ProfileName.swift | 0 .../Profile/Views}/ProfileNameView.swift | 0 .../Profile/Views}/ProfilePicView.swift | 0 .../Views}/ProfilePictureSelector.swift | 0 .../Profile/Views}/ProfileView.swift | 0 .../Purple/Models}/DamusPurple.swift | 0 .../Models}/DamusPurpleEnvironment.swift | 0 .../Purple/Models}/DamusPurpleURL.swift | 0 .../DamusPurpleNotificationManagement.swift | 0 .../Models}/PurpleStoreKitManager.swift | 0 .../Purple/Models}/StoreObserver.swift | 0 .../Views}/DamusPurpleAccountView.swift | 0 .../DamusPurpleNewUserOnboardingView.swift | 0 .../DamusPurpleTranslationSetupView.swift | 0 .../Views}/DamusPurpleURLSheetView.swift | 0 .../Views}/DamusPurpleVerifyNpubView.swift | 0 .../Purple/Views}/DamusPurpleView.swift | 0 .../Views}/DamusPurpleWelcomeView.swift | 0 .../Views}/Detail/IAPProductStateView.swift | 0 .../Purple/Views}/Detail/LogoView.swift | 0 .../Views}/Detail/MarketingContentView.swift | 0 .../Purple/Views}/Detail/PurpleBackdrop.swift | 0 .../Views}/Detail/PurpleViewPrimitives.swift | 0 .../Relays/Models}/RelayBootstrap.swift | 0 .../Relays/Models}/RelayFilters.swift | 0 .../Relays/Models}/RelayModel.swift | 0 .../Relays/Models}/RelayModelCache.swift | 0 .../Relays}/Models/SignalModel.swift | 0 .../Relays}/Views/AddRelayView.swift | 0 .../Views}/Detail/RelayAdminDetail.swift | 0 .../Detail/RelayAuthenticationDetail.swift | 0 .../Relays/Views}/Detail/RelayNipList.swift | 0 .../Views}/Detail/RelayPaidDetail.swift | 0 .../Views}/Detail/RelaySoftwareDetail.swift | 0 .../Relays/Views}/RelayConfigView.swift | 0 .../Relays/Views}/RelayDetailView.swift | 0 .../Relays}/Views/RelayFilterView.swift | 0 .../Relays/Views}/RelayPicView.swift | 0 .../Relays/Views}/RelayStatusView.swift | 0 .../Relays/Views}/RelayToggle.swift | 0 .../Relays/Views}/RelayType.swift | 0 .../Relays/Views}/RelayView.swift | 0 .../Relays/Views}/SignalView.swift | 0 .../Relays}/Views/UserRelaysView.swift | 0 .../Search}/Models/SearchHomeModel.swift | 0 .../Search}/Models/SearchModel.swift | 0 .../Search/Views}/NDBSearchView.swift | 0 .../Search/Views}/PullDownSearch.swift | 0 .../Search/Views}/SearchHeaderView.swift | 0 .../Search}/Views/SearchHomeView.swift | 0 .../Search}/Views/SearchResultsView.swift | 0 .../Search}/Views/SearchView.swift | 0 .../Search/Views}/SearchingEventView.swift | 0 .../Settings}/Models/UserSettingsStore.swift | 0 .../Views}/AppearanceSettingsView.swift | 0 .../Settings}/Views/ConfigView.swift | 0 .../Views}/DeveloperSettingsView.swift | 0 .../Views}/FirstAidSettingsView.swift | 0 .../Settings/Views}/KeySettingsView.swift | 0 .../Views}/NotificationSettingsView.swift | 0 .../Views}/ReactionsSettingsView.swift | 0 .../Settings/Views}/SearchSettingsView.swift | 0 .../Views}/TranslationSettingsView.swift | 0 .../Settings/Views}/ZapSettingsView.swift | 0 .../Models}/Music/MusicController.swift | 0 .../Status/Models}/UserStatus.swift | 0 .../Status/Views}/UserStatusSheet.swift | 0 .../Status/Views}/UserStatusView.swift | 0 .../Timeline}/Models/ContentFilters.swift | 0 .../Timeline}/Models/FriendFilter.swift | 0 .../Timeline}/Models/HomeModel.swift | 0 .../Models/NostrFilter+Hashable.swift | 0 .../Timeline/Views}/InnerTimelineView.swift | 0 .../Timeline}/Views/MainTabView.swift | 0 .../Timeline/Views}/PostingTimelineView.swift | 0 .../Timeline}/Views/SideMenuView.swift | 0 .../Timeline}/Views/TimelineView.swift | 0 .../Tips/TrustedNetworkButtonTip.swift | 0 .../TrustedNetworkButtonTipViewStyle.swift | 0 .../Tips/TrustedNetworkRepliesTip.swift | 0 .../Translations}/Models/DeepLPlan.swift | 0 .../Models/LibreTranslateServer.swift | 0 .../Models/TranslationService.swift | 0 .../Translations/Models}/Translator.swift | 0 .../Translations/Views}/TranslateView.swift | 0 .../CoinosDeterministicAccountClient.swift | 0 .../{ => Features/Wallet}/Models/Wallet.swift | 0 .../WalletConnect/HumanReadableErrors.swift | 0 .../Models}/WalletConnect/Request.swift | 0 .../Models}/WalletConnect/Response.swift | 0 .../WalletConnect/WalletConnect+.swift | 0 .../Models}/WalletConnect/WalletConnect.swift | 0 .../Wallet}/Models/WalletModel.swift | 0 .../Wallet/Views}/BalanceView.swift | 0 .../Wallet/Views}/ConnectWalletView.swift | 0 .../Wallet/Views}/LnurlAmountView.swift | 0 .../Wallet/Views}/NWCScannerView.swift | 0 .../Wallet/Views}/NWCSettings.swift | 0 .../Wallet}/Views/SelectWalletView.swift | 0 .../Wallet/Views}/SendPaymentView.swift | 0 .../Wallet/Views}/TransactionsView.swift | 0 .../Wallet/Views}/WalletView.swift | 0 .../Wallet/Views}/ZapExplainer.swift | 0 .../Zaps/Models}/CustomizeZapModel.swift | 0 .../{Util => Features/Zaps/Models}/Zap.swift | 0 .../Zaps}/Models/ZapButtonModel.swift | 0 .../Zaps/Models}/ZapDataModel.swift | 0 .../{ => Features/Zaps}/Models/ZapType.swift | 0 .../Zaps/Models}/Zaps+.swift | 0 .../{Util => Features/Zaps/Models}/Zaps.swift | 0 .../Zaps}/Models/ZapsModel.swift | 0 .../Zaps/Views}/CustomizeZapView.swift | 0 .../Zaps/Views}/NoteZapButton.swift | 0 .../Zaps/Views}/ProfileZapLinkView.swift | 0 .../Zaps/Views}/ZapEvent.swift | 0 .../Zaps/Views}/ZapTypePicker.swift | 0 .../Zaps/Views}/ZapUserView.swift | 0 .../Zaps/Views}/ZapsView.swift | 0 damus/{Views => }/Launch.storyboard | 0 damus/Models/PostBlock.swift | 8 - .../Buttons}/BigButton.swift | 0 .../Buttons/CoinosButton.swift | 0 .../Buttons}/FollowButtonView.swift | 0 .../Buttons}/GradientButtonStyle.swift | 0 .../Buttons/GradientFollowButton.swift | 0 .../Buttons}/NeutralButtonStyle.swift | 0 .../Buttons}/PostButton.swift | 0 .../Buttons}/ShareActionButton.swift | 0 .../Buttons/TrustedNetworkButton.swift | 0 .../Components/CustomPicker.swift | 0 .../{ => Shared}/Components/DamusColors.swift | 0 damus/{ => Shared}/Components/EndBlock.swift | 0 .../Gradients/DamusBackground.swift | 0 .../Components/Gradients/DamusGradient.swift | 0 .../Gradients/DamusLightGradient.swift | 0 .../Gradients/DamusLogoGradient.swift | 0 .../Gradients/GoldSupportGradient.swift | 0 .../Components/Gradients/GrayGradient.swift | 0 .../Components/Gradients/PinkGradient.swift | 0 .../Components}/Hashtags.swift | 0 damus/{ => Shared}/Components/Highlight.swift | 0 damus/{ => Shared}/Components/IconLabel.swift | 0 .../{ => Shared}/Components/InvoiceView.swift | 0 .../Components/InvoicesView.swift | 0 .../{ => Shared}/Components/NIP05Badge.swift | 0 .../Components}/PubkeyView.swift | 0 .../Components}/QRCodeView.swift | 0 .../Components}/QRScanNSECView.swift | 0 damus/{ => Shared}/Components/Shimmer.swift | 0 .../Components/SupporterBadge.swift | 0 .../Components/Text}/SelectableText.swift | 0 .../Components/Text}/TextViewWrapper.swift | 0 .../Components/Text}/TruncatedText.swift | 0 .../Components/ThiccDivider.swift | 0 damus/{ => Shared}/Components/UserView.swift | 0 .../{ => Shared}/Components/WebsiteLink.swift | 0 .../Empty Views/EmptyTimelineView.swift | 0 .../Empty Views/EmptyUserSearchView.swift | 0 .../ErrorHandling/ErrorView.swift | 0 damus/{Util => Shared}/Extensions/Array.swift | 0 .../Extensions/DamusFullScreenCover.swift | 0 .../Extensions/FillAndStroke.swift | 0 .../Extensions/KFOptionSetter+.swift | 0 .../Extensions/OffsetExtension.swift | 0 .../Extensions/VectorMath.swift | 0 .../Extensions/VisibilityTracker.swift | 0 .../Media}/AVPlayer+Additions.swift | 0 .../Media}/BlurHash/BlurHashDecode.swift | 0 .../Media}/BlurHash/BlurHashEncode.swift | 0 .../Media}/BlurHash/License.txt | 0 .../{Util => Shared/Media}/BlurHash/Readme.md | 0 .../Media}/Camera/CameraController.swift | 0 .../Media}/Camera/CameraPreview.swift | 0 .../Media/Camera/Models}/CameraModel.swift | 0 .../Media/Camera/Models}/CameraService.swift | 0 .../Media/Camera/Models}/ImageResizer.swift | 0 .../Models}/PhotoCaptureProcessor.swift | 0 .../Models}/VideoCaptureProcessor.swift | 0 damus/{Util => Shared/Media}/CoreSVG.swift | 0 .../Media}/ImageCacheMigrations.swift | 0 .../Media/Images}/AttachMediaUtility.swift | 0 .../Media/Images}/BannerImageView.swift | 0 .../Media/Images}/CarouselView.swift | 0 .../Images/FullScreenCarouselView.swift | 0 .../Media}/Images/ImageContainerView.swift | 0 .../Images/ImageContextMenuModifier.swift | 0 .../Media}/Images/ImageMetadata.swift | 0 .../Media}/Images/ImageProcessing.swift | 0 .../Media}/Images/MediaView.swift | 0 .../Media}/Images/ProfilePicImageView.swift | 0 .../Media/Images}/ZoomableScrollView.swift | 0 .../Media/Models}/ImageCarousel.swift | 0 .../Media}/Models/ImageUploadModel.swift | 0 .../Media/Models}/MediaPicker.swift | 0 .../Media}/Models/MediaUploader.swift | 0 .../Media}/Video/DamusVideoControlsView.swift | 0 .../Media}/Video/DamusVideoCoordinator.swift | 0 .../Media}/Video/DamusVideoPlayer.swift | 0 .../Media}/Video/DamusVideoPlayerView.swift | 0 .../Modifiers/SwipeToDismiss.swift | 0 .../Utilities}/AccountDeletion.swift | 0 .../Utilities}/AnyCodable/AnyCodable.swift | 0 .../Utilities}/AnyCodable/AnyDecodable.swift | 0 .../Utilities}/AnyCodable/AnyEncodable.swift | 0 damus/{Util => Shared/Utilities}/Bech32.swift | 0 .../Utilities}/Bech32Object.swift | 0 .../Utilities}/CollectionExtension.swift | 0 .../Utilities}/CompatibleAttribute.swift | 0 .../Utilities}/Constants.swift | 0 .../Utilities}/CredentialHandler.swift | 0 .../Utilities}/DamusAliases.swift | 0 .../Utilities}/DebouncedOnChange.swift | 0 .../Utilities}/Debouncer.swift | 0 .../Utilities}/DisplayName.swift | 0 .../Utilities}/EventCache.swift | 0 .../Utilities}/EventHolder.swift | 0 .../Utilities}/ExtraFonts.swift | 0 .../Utilities}/FaviconCache.swift | 0 .../Utilities}/HeadlessDamusState.swift | 0 .../Utilities}/InputDismissKeyboard.swift | 0 .../Utilities}/InsertSort.swift | 0 .../Utilities}/KFClickable.swift | 0 .../Utilities}/KeyboardVisible.swift | 0 .../Utilities}/LNUrlPayRequest.swift | 0 damus/{Util => Shared/Utilities}/LNUrls.swift | 0 .../{Util => Shared/Utilities}/LinkView.swift | 0 .../Utilities}/LocalNotification.swift | 0 .../Utilities}/LocalizationUtil.swift | 0 damus/{Util => Shared/Utilities}/Log.swift | 0 .../Utilities}/NIPURLBuilder.swift | 0 .../Utilities}/NewEventsBits.swift | 0 damus/{Util => Shared/Utilities}/Parser.swift | 0 .../Utilities}/PreviewCache.swift | 0 damus/{Util => Shared/Utilities}/Router.swift | 0 .../Utilities}/SequenceUtils.swift | 0 .../Utilities}/StringCodable.swift | 0 .../Utilities}/StringUtil.swift | 0 damus/{Util => Shared/Utilities}/Theme.swift | 0 .../{Util => Shared/Utilities}/TimeAgo.swift | 0 .../Utilities}/URIParsing.swift | 0 .../Utilities}/URLHandler.swift | 0 .../Utilities}/Undistractor.swift | 0 .../Utilities}/VersionInfo.swift | 0 damus/Views/Buttons/AlbyButton.swift | 45 - 427 files changed, 936 insertions(+), 548 deletions(-) rename damus/{Views => }/AppAccessibilityIdentifiers.swift (100%) delete mode 100644 damus/Components/Gradients/AlbyGradient.swift rename damus/{ => Core/DIPs}/DIP06/Interests.swift (100%) rename damus/{ => Core/NIPs}/NIP04/NIP04.swift (100%) rename damus/{ => Core/NIPs}/NIP10/ThreadReply.swift (100%) rename damus/{ => Core/NIPs}/NIP37/NIP37Draft.swift (100%) rename damus/{ => Core/NIPs}/NIP44/NIP44.swift (100%) rename damus/{ => Core/NIPs}/NIP51/InterestList.swift (100%) rename damus/{ => Core/NIPs}/NIP65/NIP65.swift (100%) rename damus/{Nostr => Core/NIPs/NIP98}/NIP98AuthenticatedRequest.swift (100%) rename damus/{Nostr => Core/NIPs/NIP98}/Nip98HTTPAuth.swift (100%) rename damus/{Nostr => Core/NIPs/NIP98}/NostrAuth.swift (100%) rename damus/{Models => Core/Networking}/NostrNetworkManager/NostrNetworkManager.swift (100%) rename damus/{Models => Core/Networking}/NostrNetworkManager/SubscriptionManager.swift (100%) rename damus/{Models => Core/Networking}/NostrNetworkManager/UserRelayListErrors.swift (100%) rename damus/{Models => Core/Networking}/NostrNetworkManager/UserRelayListManager.swift (100%) rename damus/{Models => Core/Nostr}/CommentItem.swift (100%) rename damus/{ => Core/Nostr}/ContentParsing.swift (100%) rename damus/{ => Core}/Nostr/CoreData/Damus.xcdatamodeld/Damus.xcdatamodel/contents (100%) rename damus/{ => Core}/Nostr/Id.swift (100%) rename damus/{Util => Core/Nostr}/Keys.swift (100%) rename damus/{ => Core}/Nostr/MakeZapRequest.swift (100%) rename damus/{Models => Core/Nostr}/Mentions.swift (100%) rename damus/{ => Core}/Nostr/Nostr.swift (100%) rename damus/{ => Core}/Nostr/NostrEvent+.swift (100%) rename damus/{ => Core}/Nostr/NostrEvent.swift (100%) rename damus/{ => Core}/Nostr/NostrFilter.swift (100%) rename damus/{ => Core}/Nostr/NostrKind.swift (100%) rename damus/{ => Core}/Nostr/NostrLink.swift (100%) rename damus/{ => Core}/Nostr/NostrRequest.swift (100%) rename damus/{ => Core}/Nostr/NostrResponse.swift (100%) rename damus/{ => Core}/Nostr/Profiles.swift (100%) rename damus/{ => Core}/Nostr/ProofOfWork.swift (100%) rename damus/{ => Core}/Nostr/ReferencedId.swift (100%) rename damus/{ => Core}/Nostr/Relay.swift (100%) rename damus/{ => Core}/Nostr/RelayConnection.swift (100%) rename damus/{ => Core}/Nostr/RelayLog.swift (100%) rename damus/{ => Core}/Nostr/RelayPool.swift (100%) rename damus/{ => Core}/Nostr/RelayURL.swift (100%) rename damus/{ => Core}/Nostr/WebSocket.swift (100%) rename damus/{Models => Core/Storage}/DamusCacheManager.swift (100%) rename damus/{Models => Core/Storage}/DamusState.swift (100%) rename damus/{Models => Core/Storage}/DamusUserDefaults.swift (100%) rename damus/{Util => Core/Storage}/KeychainStorage.swift (100%) rename damus/{ => Core}/Types/Block.swift (100%) rename damus/{ => Core}/Types/DamusDuration.swift (100%) rename damus/{ => Core}/Types/Ids/IdType.swift (100%) rename damus/{ => Core}/Types/Ids/NoteId.swift (100%) rename damus/{ => Core}/Types/Ids/Pubkey.swift (100%) rename damus/{ => Core}/Types/Ids/Referenced.swift (100%) rename damus/{ => Core}/Types/MigratedTypes.swift (100%) rename damus/{ => Features/Actions/ActionBar}/Models/ActionBarModel.swift (100%) rename damus/{Views/ActionBar => Features/Actions/ActionBar/Views}/EventActionBar.swift (100%) rename damus/{Views/ActionBar => Features/Actions/ActionBar/Views}/EventDetailBar.swift (100%) rename damus/{Views/ActionBar => Features/Actions/ActionBar/Views}/ShareAction.swift (100%) rename damus/{ => Features/Actions/Reactions}/Models/LikeCounter.swift (100%) rename damus/{ => Features/Actions/Reactions}/Models/Liked.swift (100%) rename damus/{Views/Reactions => Features/Actions/Reactions/Views}/ReactionView.swift (100%) rename damus/{ => Features/Actions/Reactions}/Views/ReactionsView.swift (100%) rename damus/{ => Features/Actions/Reports}/Models/Report.swift (100%) rename damus/{ => Features/Actions/Reports}/Views/ReportView.swift (100%) rename damus/{Views/Reposts => Features/Actions/Reposts/Views}/QuoteRepostsView.swift (100%) rename damus/{Views/ActionBar => Features/Actions/Reposts/Views}/RepostAction.swift (100%) rename damus/{Views/Reposts => Features/Actions/Reposts/Views}/RepostView.swift (100%) rename damus/{Components => Features/Actions/Reposts/Views}/Reposted.swift (100%) rename damus/{Views/Reposts => Features/Actions/Reposts/Views}/RepostedEvent.swift (100%) rename damus/{ => Features/Actions/Reposts}/Views/RepostsView.swift (100%) rename damus/{ => Features/Bookmarks}/Models/BookmarksManager.swift (100%) rename damus/{ => Features/Bookmarks}/Views/BookmarksView.swift (100%) rename damus/{Views => Features}/Chat/ChatBubbleView.swift (100%) rename damus/{Views => Features}/Chat/ChatEventView.swift (100%) rename damus/{Views => Features}/Chat/ChatroomThreadView.swift (100%) rename damus/{ => Features/Chat}/Models/ThreadModel.swift (100%) rename damus/{Views => Features}/Chat/ReplyQuoteView.swift (100%) rename damus/{ => Features/DMs}/Models/DirectMessageModel.swift (100%) rename damus/{ => Features/DMs}/Models/DirectMessagesModel.swift (100%) rename damus/{ => Features/DMs}/Views/DMChatView.swift (100%) rename damus/{ => Features/DMs}/Views/DMView.swift (100%) rename damus/{ => Features/DMs}/Views/DirectMessagesView.swift (100%) rename damus/{Views => Features}/Events/BuilderEventView.swift (100%) rename damus/{Views => Features}/Events/Components/EventTop.swift (100%) rename damus/{Views => Features}/Events/Components/ProxyView.swift (100%) rename damus/{Views => Features}/Events/Components/RelativeTime.swift (100%) rename damus/{Views => Features}/Events/Components/ReplyDescription.swift (100%) rename damus/{Views => Features}/Events/Components/ReplyPart.swift (100%) rename damus/{Views => Features}/Events/Components/TimeDot.swift (100%) rename damus/{Views => Features}/Events/EventBody.swift (100%) rename damus/{Views => Features/Events}/EventDetailView.swift (100%) rename damus/{Views => Features}/Events/EventLoaderView.swift (100%) rename damus/{Views => Features}/Events/EventMenu.swift (100%) rename damus/{Views => Features}/Events/EventMutingContainerView.swift (100%) rename damus/{Views => Features}/Events/EventProfile.swift (100%) rename damus/{Views => Features}/Events/EventShell.swift (100%) rename damus/{Views => Features/Events}/EventView.swift (100%) rename damus/{Views => Features}/Events/MentionView.swift (100%) rename damus/{ => Features/Events}/Models/EventsModel.swift (100%) rename damus/{Views => Features/Events/Models}/LoadableNostrEventView.swift (100%) rename damus/{ => Features/Events}/Models/NoteContent.swift (100%) rename damus/{Views => Features/Events}/NoteContentView.swift (100%) rename damus/{Views => Features}/Events/SelectedEventView.swift (100%) rename damus/{Views => Features}/Events/TextEvent.swift (100%) rename damus/{Views => Features}/Events/WideEventView.swift (100%) rename damus/{ => Features/FollowPack}/Models/FollowPackEvent.swift (100%) rename damus/{ => Features/FollowPack}/Models/FollowPackModel.swift (100%) rename damus/{Views/Events/FollowPack => Features/FollowPack/Views}/FollowPackPreview.swift (100%) rename damus/{Views/Events/FollowPack => Features/FollowPack/Views}/FollowPackTimeline.swift (100%) rename damus/{Views/Events/FollowPack => Features/FollowPack/Views}/FollowPackView.swift (100%) rename damus/{ => Features/Follows}/Models/Contacts+.swift (100%) rename damus/{ => Features/Follows}/Models/Contacts.swift (100%) rename damus/{ => Features/Follows}/Models/FollowState.swift (100%) rename damus/{ => Features/Follows}/Models/FollowTarget.swift (100%) rename damus/{ => Features/Follows}/Models/FollowersModel.swift (100%) rename damus/{ => Features/Follows}/Models/FollowingModel.swift (100%) rename damus/{ => Features/Follows}/Views/FollowingView.swift (100%) rename damus/{ => Features/Highlight}/Models/HighlightEvent.swift (100%) rename damus/{Views/Events/Highlight => Features/Highlight/Views}/HighlightDescription.swift (100%) rename damus/{Views/Events/Highlight => Features/Highlight/Views}/HighlightDraftContentView.swift (100%) rename damus/{Views/Events/Highlight => Features/Highlight/Views}/HighlightEventRef.swift (100%) rename damus/{Views/Events/Highlight => Features/Highlight/Views}/HighlightLink.swift (100%) rename damus/{Views/Events/Highlight => Features/Highlight/Views}/HighlightView.swift (100%) rename damus/{ => Features/Longform}/Models/LongformEvent.swift (100%) rename damus/{Views/Events/Longform => Features/Longform/Views}/LongformPreview.swift (100%) rename damus/{Views/Events/Longform => Features/Longform/Views}/LongformView.swift (100%) rename damus/{Util => Features/Muting/Models}/Lists.swift (100%) rename damus/{ => Features/Muting}/Models/MuteItem.swift (100%) rename damus/{ => Features/Muting}/Models/MutedThreadsManager.swift (100%) rename damus/{ => Features/Muting}/Models/MutelistManager.swift (100%) rename damus/{Views/Muting => Features/Muting/Views}/AddMuteItemView.swift (100%) rename damus/{Views/Muting => Features/Muting/Views}/MuteDurationMenu.swift (100%) rename damus/{Views/Muting => Features/Muting/Views}/MutelistView.swift (100%) rename damus/{Util => Features/NIP05/Models}/NIP05.swift (100%) rename damus/{ => Features/NIP05}/Models/NIP05DomainEventsModel.swift (100%) rename damus/{ => Features/NIP05}/Views/NIP05DomainPubkeysView.swift (100%) rename damus/{ => Features/NIP05}/Views/NIP05DomainTimelineHeaderView.swift (100%) rename damus/{ => Features/NIP05}/Views/NIP05DomainTimelineView.swift (100%) rename damus/{Views => Features}/NostrScript/LoadScript.swift (100%) rename damus/{Models/Notifications => Features/Notifications/Models}/EventGroup.swift (100%) rename damus/{Models/Notifications => Features/Notifications/Models}/NotificationStatusModel.swift (100%) rename damus/{ => Features/Notifications}/Models/NotificationsManager.swift (100%) rename damus/{ => Features/Notifications}/Models/NotificationsModel.swift (100%) rename damus/{ => Features/Notifications}/Models/PushNotificationClient.swift (100%) rename damus/{Models/Notifications => Features/Notifications/Models}/ZapGroup.swift (100%) rename damus/{Views/Notifications => Features/Notifications/Views}/DamusAppNotificationView.swift (100%) rename damus/{Views/Notifications => Features/Notifications/Views}/EventGroupView.swift (100%) rename damus/{Views/Notifications => Features/Notifications/Views}/NotificationItemView.swift (100%) rename damus/{Views/Notifications => Features/Notifications/Views}/NotificationsView.swift (100%) rename damus/{Views/Notifications => Features/Notifications/Views}/ProfilePicturesView.swift (100%) rename damus/{ => Features/Onboarding}/Models/CreateAccountModel.swift (100%) rename damus/{Views => Features}/Onboarding/OnboardingContentSettings.swift (100%) rename damus/{Views => Features}/Onboarding/SuggestedUsersViewModel.swift (100%) rename damus/{ => Features/Onboarding}/Views/CreateAccountView.swift (100%) rename damus/{ => Features/Onboarding}/Views/EULAView.swift (100%) rename damus/{Views/Onboarding => Features/Onboarding/Views}/InterestSelectionView.swift (100%) rename damus/{ => Features/Onboarding}/Views/LoginView.swift (100%) rename damus/{Views/Onboarding => Features/Onboarding/Views}/OnboardingSuggestionsView.swift (100%) rename damus/{ => Features/Onboarding}/Views/SaveKeysView.swift (100%) rename damus/{ => Features/Onboarding}/Views/SetupView.swift (100%) rename damus/{ => Features/Onboarding}/Views/SuggestedHashtagsView.swift (100%) rename damus/{Views/Onboarding => Features/Onboarding/Views}/SuggestedUserView.swift (100%) rename damus/{Views => Features}/Onboarding/follow-packs.jsonl (100%) rename damus/{ => Features/Posting}/Models/DraftsModel.swift (100%) rename damus/{ => Features/Posting}/Models/Post.swift (100%) rename damus/{Util => Features/Posting/Models}/PostBox.swift (100%) rename damus/{ => Features/Posting}/Models/Reply.swift (100%) rename damus/{Util => Features/Posting/Models}/ReplyCounter.swift (100%) rename damus/{ => Features/Posting}/Models/ReplyMap.swift (100%) rename damus/{Views/Posting => Features/Posting/Views}/AutoSaveIndicatorView.swift (100%) rename damus/{ => Features/Posting}/Views/ParticipantsView.swift (100%) rename damus/{ => Features/Posting}/Views/PostView.swift (100%) rename damus/{ => Features/Posting}/Views/ReplyView.swift (100%) rename damus/{Views/Posting => Features/Posting/Views}/UserSearch.swift (100%) rename damus/{ => Features/Profile}/Models/ProfileModel.swift (100%) rename damus/{ => Features/Profile}/Models/ProfileUpdate.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/AboutView.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/CondensedProfilePicturesView.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/EditMetadataView.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/EditPictureControl.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/EventProfileName.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/FriendIcon.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/MaybeAnonPfpView.swift (100%) rename damus/{ => Features/Profile}/Views/ProfileActionSheetView.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/ProfileEditButton.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/ProfileName.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/ProfileNameView.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/ProfilePicView.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/ProfilePictureSelector.swift (100%) rename damus/{Views/Profile => Features/Profile/Views}/ProfileView.swift (100%) rename damus/{Models/Purple => Features/Purple/Models}/DamusPurple.swift (100%) rename damus/{Models/Purple => Features/Purple/Models}/DamusPurpleEnvironment.swift (100%) rename damus/{Models/Purple => Features/Purple/Models}/DamusPurpleURL.swift (100%) rename damus/{Models/Purple => Features/Purple/Models}/Extensions/DamusPurpleNotificationManagement.swift (100%) rename damus/{Models/Purple => Features/Purple/Models}/PurpleStoreKitManager.swift (100%) rename damus/{Models/Purple => Features/Purple/Models}/StoreObserver.swift (100%) rename damus/{Views/Purple => Features/Purple/Views}/DamusPurpleAccountView.swift (100%) rename damus/{Views/Purple => Features/Purple/Views}/DamusPurpleNewUserOnboardingView.swift (100%) rename damus/{Views/Purple => Features/Purple/Views}/DamusPurpleTranslationSetupView.swift (100%) rename damus/{Views/Purple => Features/Purple/Views}/DamusPurpleURLSheetView.swift (100%) rename damus/{Views/Purple => Features/Purple/Views}/DamusPurpleVerifyNpubView.swift (100%) rename damus/{Views/Purple => Features/Purple/Views}/DamusPurpleView.swift (100%) rename damus/{Views/Purple => Features/Purple/Views}/DamusPurpleWelcomeView.swift (100%) rename damus/{Views/Purple => Features/Purple/Views}/Detail/IAPProductStateView.swift (100%) rename damus/{Views/Purple => Features/Purple/Views}/Detail/LogoView.swift (100%) rename damus/{Views/Purple => Features/Purple/Views}/Detail/MarketingContentView.swift (100%) rename damus/{Views/Purple => Features/Purple/Views}/Detail/PurpleBackdrop.swift (100%) rename damus/{Views/Purple => Features/Purple/Views}/Detail/PurpleViewPrimitives.swift (100%) rename damus/{Util/Relays => Features/Relays/Models}/RelayBootstrap.swift (100%) rename damus/{Util/Relays => Features/Relays/Models}/RelayFilters.swift (100%) rename damus/{Util/Relays => Features/Relays/Models}/RelayModel.swift (100%) rename damus/{Util/Relays => Features/Relays/Models}/RelayModelCache.swift (100%) rename damus/{ => Features/Relays}/Models/SignalModel.swift (100%) rename damus/{ => Features/Relays}/Views/AddRelayView.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/Detail/RelayAdminDetail.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/Detail/RelayAuthenticationDetail.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/Detail/RelayNipList.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/Detail/RelayPaidDetail.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/Detail/RelaySoftwareDetail.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/RelayConfigView.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/RelayDetailView.swift (100%) rename damus/{ => Features/Relays}/Views/RelayFilterView.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/RelayPicView.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/RelayStatusView.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/RelayToggle.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/RelayType.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/RelayView.swift (100%) rename damus/{Views/Relays => Features/Relays/Views}/SignalView.swift (100%) rename damus/{ => Features/Relays}/Views/UserRelaysView.swift (100%) rename damus/{ => Features/Search}/Models/SearchHomeModel.swift (100%) rename damus/{ => Features/Search}/Models/SearchModel.swift (100%) rename damus/{Views/Search => Features/Search/Views}/NDBSearchView.swift (100%) rename damus/{Views/Search => Features/Search/Views}/PullDownSearch.swift (100%) rename damus/{Components/Search => Features/Search/Views}/SearchHeaderView.swift (100%) rename damus/{ => Features/Search}/Views/SearchHomeView.swift (100%) rename damus/{ => Features/Search}/Views/SearchResultsView.swift (100%) rename damus/{ => Features/Search}/Views/SearchView.swift (100%) rename damus/{Views/Search => Features/Search/Views}/SearchingEventView.swift (100%) rename damus/{ => Features/Settings}/Models/UserSettingsStore.swift (100%) rename damus/{Views/Settings => Features/Settings/Views}/AppearanceSettingsView.swift (100%) rename damus/{ => Features/Settings}/Views/ConfigView.swift (100%) rename damus/{Views/Settings => Features/Settings/Views}/DeveloperSettingsView.swift (100%) rename damus/{Views/Settings => Features/Settings/Views}/FirstAidSettingsView.swift (100%) rename damus/{Views/Settings => Features/Settings/Views}/KeySettingsView.swift (100%) rename damus/{Views/Settings => Features/Settings/Views}/NotificationSettingsView.swift (100%) rename damus/{Views/Settings => Features/Settings/Views}/ReactionsSettingsView.swift (100%) rename damus/{Views/Settings => Features/Settings/Views}/SearchSettingsView.swift (100%) rename damus/{Views/Settings => Features/Settings/Views}/TranslationSettingsView.swift (100%) rename damus/{Views/Settings => Features/Settings/Views}/ZapSettingsView.swift (100%) rename damus/{Components/Status => Features/Status/Models}/Music/MusicController.swift (100%) rename damus/{Components/Status => Features/Status/Models}/UserStatus.swift (100%) rename damus/{Components/Status => Features/Status/Views}/UserStatusSheet.swift (100%) rename damus/{Components/Status => Features/Status/Views}/UserStatusView.swift (100%) rename damus/{ => Features/Timeline}/Models/ContentFilters.swift (100%) rename damus/{ => Features/Timeline}/Models/FriendFilter.swift (100%) rename damus/{ => Features/Timeline}/Models/HomeModel.swift (100%) rename damus/{ => Features/Timeline}/Models/NostrFilter+Hashable.swift (100%) rename damus/{Views/Timeline => Features/Timeline/Views}/InnerTimelineView.swift (100%) rename damus/{ => Features/Timeline}/Views/MainTabView.swift (100%) rename damus/{Views/Timeline => Features/Timeline/Views}/PostingTimelineView.swift (100%) rename damus/{ => Features/Timeline}/Views/SideMenuView.swift (100%) rename damus/{ => Features/Timeline}/Views/TimelineView.swift (100%) rename damus/{Views => Features}/Tips/TrustedNetworkButtonTip.swift (100%) rename damus/{Views => Features}/Tips/TrustedNetworkButtonTipViewStyle.swift (100%) rename damus/{Views => Features}/Tips/TrustedNetworkRepliesTip.swift (100%) rename damus/{ => Features/Translations}/Models/DeepLPlan.swift (100%) rename damus/{ => Features/Translations}/Models/LibreTranslateServer.swift (100%) rename damus/{ => Features/Translations}/Models/TranslationService.swift (100%) rename damus/{Util => Features/Translations/Models}/Translator.swift (100%) rename damus/{Components => Features/Translations/Views}/TranslateView.swift (100%) rename damus/{Util => Features/Wallet/Models}/CoinosDeterministicAccountClient.swift (100%) rename damus/{ => Features/Wallet}/Models/Wallet.swift (100%) rename damus/{Util => Features/Wallet/Models}/WalletConnect/HumanReadableErrors.swift (100%) rename damus/{Util => Features/Wallet/Models}/WalletConnect/Request.swift (100%) rename damus/{Util => Features/Wallet/Models}/WalletConnect/Response.swift (100%) rename damus/{Util => Features/Wallet/Models}/WalletConnect/WalletConnect+.swift (100%) rename damus/{Util => Features/Wallet/Models}/WalletConnect/WalletConnect.swift (100%) rename damus/{ => Features/Wallet}/Models/WalletModel.swift (100%) rename damus/{Views/Wallet => Features/Wallet/Views}/BalanceView.swift (100%) rename damus/{Views/Wallet => Features/Wallet/Views}/ConnectWalletView.swift (100%) rename damus/{Views/Wallet => Features/Wallet/Views}/LnurlAmountView.swift (100%) rename damus/{Views/Wallet => Features/Wallet/Views}/NWCScannerView.swift (100%) rename damus/{Views/Wallet => Features/Wallet/Views}/NWCSettings.swift (100%) rename damus/{ => Features/Wallet}/Views/SelectWalletView.swift (100%) rename damus/{Views/Wallet => Features/Wallet/Views}/SendPaymentView.swift (100%) rename damus/{Views/Wallet => Features/Wallet/Views}/TransactionsView.swift (100%) rename damus/{Views/Wallet => Features/Wallet/Views}/WalletView.swift (100%) rename damus/{Views/Wallet => Features/Wallet/Views}/ZapExplainer.swift (100%) rename damus/{Models/Zaps => Features/Zaps/Models}/CustomizeZapModel.swift (100%) rename damus/{Util => Features/Zaps/Models}/Zap.swift (100%) rename damus/{ => Features/Zaps}/Models/ZapButtonModel.swift (100%) rename damus/{Util => Features/Zaps/Models}/ZapDataModel.swift (100%) rename damus/{ => Features/Zaps}/Models/ZapType.swift (100%) rename damus/{Util => Features/Zaps/Models}/Zaps+.swift (100%) rename damus/{Util => Features/Zaps/Models}/Zaps.swift (100%) rename damus/{ => Features/Zaps}/Models/ZapsModel.swift (100%) rename damus/{Views/Zaps => Features/Zaps/Views}/CustomizeZapView.swift (100%) rename damus/{Components => Features/Zaps/Views}/NoteZapButton.swift (100%) rename damus/{Views/Zaps => Features/Zaps/Views}/ProfileZapLinkView.swift (100%) rename damus/{Views/Events => Features/Zaps/Views}/ZapEvent.swift (100%) rename damus/{Views/Zaps => Features/Zaps/Views}/ZapTypePicker.swift (100%) rename damus/{Views/Zaps => Features/Zaps/Views}/ZapUserView.swift (100%) rename damus/{Views/Zaps => Features/Zaps/Views}/ZapsView.swift (100%) rename damus/{Views => }/Launch.storyboard (100%) delete mode 100644 damus/Models/PostBlock.swift rename damus/{Views/ActionBar => Shared/Buttons}/BigButton.swift (100%) rename damus/{Views => Shared}/Buttons/CoinosButton.swift (100%) rename damus/{Views => Shared/Buttons}/FollowButtonView.swift (100%) rename damus/{Components => Shared/Buttons}/GradientButtonStyle.swift (100%) rename damus/{Views => Shared}/Buttons/GradientFollowButton.swift (100%) rename damus/{Components => Shared/Buttons}/NeutralButtonStyle.swift (100%) rename damus/{Views => Shared/Buttons}/PostButton.swift (100%) rename damus/{Views/ActionBar => Shared/Buttons}/ShareActionButton.swift (100%) rename damus/{Views => Shared}/Buttons/TrustedNetworkButton.swift (100%) rename damus/{ => Shared}/Components/CustomPicker.swift (100%) rename damus/{ => Shared}/Components/DamusColors.swift (100%) rename damus/{ => Shared}/Components/EndBlock.swift (100%) rename damus/{ => Shared}/Components/Gradients/DamusBackground.swift (100%) rename damus/{ => Shared}/Components/Gradients/DamusGradient.swift (100%) rename damus/{ => Shared}/Components/Gradients/DamusLightGradient.swift (100%) rename damus/{ => Shared}/Components/Gradients/DamusLogoGradient.swift (100%) rename damus/{ => Shared}/Components/Gradients/GoldSupportGradient.swift (100%) rename damus/{ => Shared}/Components/Gradients/GrayGradient.swift (100%) rename damus/{ => Shared}/Components/Gradients/PinkGradient.swift (100%) rename damus/{Util => Shared/Components}/Hashtags.swift (100%) rename damus/{ => Shared}/Components/Highlight.swift (100%) rename damus/{ => Shared}/Components/IconLabel.swift (100%) rename damus/{ => Shared}/Components/InvoiceView.swift (100%) rename damus/{ => Shared}/Components/InvoicesView.swift (100%) rename damus/{ => Shared}/Components/NIP05Badge.swift (100%) rename damus/{Views => Shared/Components}/PubkeyView.swift (100%) rename damus/{Views => Shared/Components}/QRCodeView.swift (100%) rename damus/{Views => Shared/Components}/QRScanNSECView.swift (100%) rename damus/{ => Shared}/Components/Shimmer.swift (100%) rename damus/{ => Shared}/Components/SupporterBadge.swift (100%) rename damus/{Components => Shared/Components/Text}/SelectableText.swift (100%) rename damus/{Views => Shared/Components/Text}/TextViewWrapper.swift (100%) rename damus/{Components => Shared/Components/Text}/TruncatedText.swift (100%) rename damus/{ => Shared}/Components/ThiccDivider.swift (100%) rename damus/{ => Shared}/Components/UserView.swift (100%) rename damus/{ => Shared}/Components/WebsiteLink.swift (100%) rename damus/{Views => Shared}/Empty Views/EmptyTimelineView.swift (100%) rename damus/{Views => Shared}/Empty Views/EmptyUserSearchView.swift (100%) rename damus/{Views => Shared}/ErrorHandling/ErrorView.swift (100%) rename damus/{Util => Shared}/Extensions/Array.swift (100%) rename damus/{Views => Shared}/Extensions/DamusFullScreenCover.swift (100%) rename damus/{Util => Shared}/Extensions/FillAndStroke.swift (100%) rename damus/{Util => Shared}/Extensions/KFOptionSetter+.swift (100%) rename damus/{Util => Shared}/Extensions/OffsetExtension.swift (100%) rename damus/{Util => Shared}/Extensions/VectorMath.swift (100%) rename damus/{Views => Shared}/Extensions/VisibilityTracker.swift (100%) rename damus/{Util => Shared/Media}/AVPlayer+Additions.swift (100%) rename damus/{Util => Shared/Media}/BlurHash/BlurHashDecode.swift (100%) rename damus/{Util => Shared/Media}/BlurHash/BlurHashEncode.swift (100%) rename damus/{Util => Shared/Media}/BlurHash/License.txt (100%) rename damus/{Util => Shared/Media}/BlurHash/Readme.md (100%) rename damus/{Views => Shared/Media}/Camera/CameraController.swift (100%) rename damus/{Views => Shared/Media}/Camera/CameraPreview.swift (100%) rename damus/{Models/Camera => Shared/Media/Camera/Models}/CameraModel.swift (100%) rename damus/{Models/Camera => Shared/Media/Camera/Models}/CameraService.swift (100%) rename damus/{Models/Camera => Shared/Media/Camera/Models}/ImageResizer.swift (100%) rename damus/{Models/Camera => Shared/Media/Camera/Models}/PhotoCaptureProcessor.swift (100%) rename damus/{Models/Camera => Shared/Media/Camera/Models}/VideoCaptureProcessor.swift (100%) rename damus/{Util => Shared/Media}/CoreSVG.swift (100%) rename damus/{Util => Shared/Media}/ImageCacheMigrations.swift (100%) rename damus/{Views => Shared/Media/Images}/AttachMediaUtility.swift (100%) rename damus/{Views => Shared/Media/Images}/BannerImageView.swift (100%) rename damus/{Views => Shared/Media/Images}/CarouselView.swift (100%) rename damus/{Views => Shared/Media}/Images/FullScreenCarouselView.swift (100%) rename damus/{Views => Shared/Media}/Images/ImageContainerView.swift (100%) rename damus/{Views => Shared/Media}/Images/ImageContextMenuModifier.swift (100%) rename damus/{Util => Shared/Media}/Images/ImageMetadata.swift (100%) rename damus/{Util => Shared/Media}/Images/ImageProcessing.swift (100%) rename damus/{Views => Shared/Media}/Images/MediaView.swift (100%) rename damus/{Views => Shared/Media}/Images/ProfilePicImageView.swift (100%) rename damus/{Components => Shared/Media/Images}/ZoomableScrollView.swift (100%) rename damus/{Components => Shared/Media/Models}/ImageCarousel.swift (100%) rename damus/{ => Shared/Media}/Models/ImageUploadModel.swift (100%) rename damus/{Views => Shared/Media/Models}/MediaPicker.swift (100%) rename damus/{ => Shared/Media}/Models/MediaUploader.swift (100%) rename damus/{Views => Shared/Media}/Video/DamusVideoControlsView.swift (100%) rename damus/{Views => Shared/Media}/Video/DamusVideoCoordinator.swift (100%) rename damus/{Views => Shared/Media}/Video/DamusVideoPlayer.swift (100%) rename damus/{Views => Shared/Media}/Video/DamusVideoPlayerView.swift (100%) rename damus/{ => Shared}/Modifiers/SwipeToDismiss.swift (100%) rename damus/{Util => Shared/Utilities}/AccountDeletion.swift (100%) rename damus/{Util => Shared/Utilities}/AnyCodable/AnyCodable.swift (100%) rename damus/{Util => Shared/Utilities}/AnyCodable/AnyDecodable.swift (100%) rename damus/{Util => Shared/Utilities}/AnyCodable/AnyEncodable.swift (100%) rename damus/{Util => Shared/Utilities}/Bech32.swift (100%) rename damus/{Util => Shared/Utilities}/Bech32Object.swift (100%) rename damus/{Util => Shared/Utilities}/CollectionExtension.swift (100%) rename damus/{Util => Shared/Utilities}/CompatibleAttribute.swift (100%) rename damus/{Util => Shared/Utilities}/Constants.swift (100%) rename damus/{Util => Shared/Utilities}/CredentialHandler.swift (100%) rename damus/{Util => Shared/Utilities}/DamusAliases.swift (100%) rename damus/{Util => Shared/Utilities}/DebouncedOnChange.swift (100%) rename damus/{Util => Shared/Utilities}/Debouncer.swift (100%) rename damus/{Util => Shared/Utilities}/DisplayName.swift (100%) rename damus/{Util => Shared/Utilities}/EventCache.swift (100%) rename damus/{Util => Shared/Utilities}/EventHolder.swift (100%) rename damus/{Util => Shared/Utilities}/ExtraFonts.swift (100%) rename damus/{Util => Shared/Utilities}/FaviconCache.swift (100%) rename damus/{Models => Shared/Utilities}/HeadlessDamusState.swift (100%) rename damus/{Util => Shared/Utilities}/InputDismissKeyboard.swift (100%) rename damus/{Util => Shared/Utilities}/InsertSort.swift (100%) rename damus/{Views/Utils => Shared/Utilities}/KFClickable.swift (100%) rename damus/{Util => Shared/Utilities}/KeyboardVisible.swift (100%) rename damus/{Util => Shared/Utilities}/LNUrlPayRequest.swift (100%) rename damus/{Util => Shared/Utilities}/LNUrls.swift (100%) rename damus/{Util => Shared/Utilities}/LinkView.swift (100%) rename damus/{Util => Shared/Utilities}/LocalNotification.swift (100%) rename damus/{Util => Shared/Utilities}/LocalizationUtil.swift (100%) rename damus/{Util => Shared/Utilities}/Log.swift (100%) rename damus/{Util => Shared/Utilities}/NIPURLBuilder.swift (100%) rename damus/{Models => Shared/Utilities}/NewEventsBits.swift (100%) rename damus/{Util => Shared/Utilities}/Parser.swift (100%) rename damus/{Util => Shared/Utilities}/PreviewCache.swift (100%) rename damus/{Util => Shared/Utilities}/Router.swift (100%) rename damus/{Util => Shared/Utilities}/SequenceUtils.swift (100%) rename damus/{Util => Shared/Utilities}/StringCodable.swift (100%) rename damus/{Util => Shared/Utilities}/StringUtil.swift (100%) rename damus/{Util => Shared/Utilities}/Theme.swift (100%) rename damus/{Util => Shared/Utilities}/TimeAgo.swift (100%) rename damus/{Util => Shared/Utilities}/URIParsing.swift (100%) rename damus/{Models => Shared/Utilities}/URLHandler.swift (100%) rename damus/{Util => Shared/Utilities}/Undistractor.swift (100%) rename damus/{Util => Shared/Utilities}/VersionInfo.swift (100%) delete mode 100644 damus/Views/Buttons/AlbyButton.swift diff --git a/damus.xcodeproj/project.pbxproj b/damus.xcodeproj/project.pbxproj index 259fdf9b..8b93128e 100644 --- a/damus.xcodeproj/project.pbxproj +++ b/damus.xcodeproj/project.pbxproj @@ -157,13 +157,11 @@ 4C32B95F2A9AD44700DC3548 /* Enum.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B94A2A9AD44700DC3548 /* Enum.swift */; }; 4C32B9602A9AD44700DC3548 /* Struct.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C32B94B2A9AD44700DC3548 /* Struct.swift */; }; 4C363A8428233689006E126D /* Parser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8328233689006E126D /* Parser.swift */; }; - 4C363A8828236948006E126D /* BlocksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8728236948006E126D /* BlocksView.swift */; }; 4C363A8C28236B92006E126D /* PubkeyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8B28236B92006E126D /* PubkeyView.swift */; }; 4C363A8E28236FE4006E126D /* NoteContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8D28236FE4006E126D /* NoteContentView.swift */; }; 4C363A9028247A1D006E126D /* NostrLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8F28247A1D006E126D /* NostrLink.swift */; }; 4C363A922825FCF2006E126D /* ProfileUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A912825FCF2006E126D /* ProfileUpdate.swift */; }; 4C363A94282704FA006E126D /* Post.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A93282704FA006E126D /* Post.swift */; }; - 4C363A962827096D006E126D /* PostBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A952827096D006E126D /* PostBlock.swift */; }; 4C363A9A28283854006E126D /* Reply.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A9928283854006E126D /* Reply.swift */; }; 4C363A9E2828A822006E126D /* ReplyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A9D2828A822006E126D /* ReplyTests.swift */; }; 4C363AA02828A8DD006E126D /* LikeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A9F2828A8DD006E126D /* LikeTests.swift */; }; @@ -256,10 +254,8 @@ 4C7D095F2A098C5D00943473 /* ConnectWalletView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D095C2A098C5D00943473 /* ConnectWalletView.swift */; }; 4C7D09602A098C5D00943473 /* WalletView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D095D2A098C5D00943473 /* WalletView.swift */; }; 4C7D09622A098D0E00943473 /* WalletConnect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09612A098D0E00943473 /* WalletConnect.swift */; }; - 4C7D09662A0AE62100943473 /* AlbyButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09652A0AE62100943473 /* AlbyButton.swift */; }; 4C7D09682A0AE9B200943473 /* NWCScannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09672A0AE9B200943473 /* NWCScannerView.swift */; }; 4C7D09722A0AEF5E00943473 /* DamusGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09712A0AEF5E00943473 /* DamusGradient.swift */; }; - 4C7D09742A0AEF9000943473 /* AlbyGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09732A0AEF9000943473 /* AlbyGradient.swift */; }; 4C7D09762A0AF19E00943473 /* FillAndStroke.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09752A0AF19E00943473 /* FillAndStroke.swift */; }; 4C7D09782A0B0CC900943473 /* WalletModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09772A0B0CC900943473 /* WalletModel.swift */; }; 4C7D097E2A0C58B900943473 /* WalletConnectTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D097D2A0C58B900943473 /* WalletConnectTests.swift */; }; @@ -587,7 +583,6 @@ 82D6FB082CD99F7900C925F4 /* UserStatusSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C5E54052A9671F800FF6E60 /* UserStatusSheet.swift */; }; 82D6FB092CD99F7900C925F4 /* SearchHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C687C232A5FA86D0092C550 /* SearchHeaderView.swift */; }; 82D6FB0A2CD99F7900C925F4 /* DamusGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09712A0AEF5E00943473 /* DamusGradient.swift */; }; - 82D6FB0B2CD99F7900C925F4 /* AlbyGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09732A0AEF9000943473 /* AlbyGradient.swift */; }; 82D6FB0C2CD99F7900C925F4 /* GoldSupportGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C2859612A12A7F0004746F7 /* GoldSupportGradient.swift */; }; 82D6FB0D2CD99F7900C925F4 /* PinkGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6E1DAE2A194075008FC15A /* PinkGradient.swift */; }; 82D6FB0E2CD99F7900C925F4 /* GrayGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = F71694F72A6983AF001F4053 /* GrayGradient.swift */; }; @@ -703,7 +698,6 @@ 82D6FB7E2CD99F7900C925F4 /* Mentions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7FF7D42823313F009601DB /* Mentions.swift */; }; 82D6FB7F2CD99F7900C925F4 /* ProfileUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A912825FCF2006E126D /* ProfileUpdate.swift */; }; 82D6FB802CD99F7900C925F4 /* Post.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A93282704FA006E126D /* Post.swift */; }; - 82D6FB812CD99F7900C925F4 /* PostBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A952827096D006E126D /* PostBlock.swift */; }; 82D6FB822CD99F7900C925F4 /* Reply.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A9928283854006E126D /* Reply.swift */; }; 82D6FB832CD99F7900C925F4 /* SearchModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363AA328296DEE006E126D /* SearchModel.swift */; }; 82D6FB842CD99F7900C925F4 /* NostrFilter+Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E8A4BB62AE4359200065E81 /* NostrFilter+Hashable.swift */; }; @@ -788,7 +782,6 @@ 82D6FBD72CD99F7900C925F4 /* NWCScannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09672A0AE9B200943473 /* NWCScannerView.swift */; }; 82D6FBD82CD99F7900C925F4 /* TrustedNetworkButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C8D1A6E29F31E5000ACDF75 /* TrustedNetworkButton.swift */; }; 82D6FBD92CD99F7900C925F4 /* GradientFollowButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F71694F32A6732B7001F4053 /* GradientFollowButton.swift */; }; - 82D6FBDA2CD99F7900C925F4 /* AlbyButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09652A0AE62100943473 /* AlbyButton.swift */; }; 82D6FBDC2CD99F7900C925F4 /* DamusVideoPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C1A9A2929DDF54400516EAC /* DamusVideoPlayerView.swift */; }; 82D6FBDD2CD99F7900C925F4 /* DamusVideoPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A16FFC2AA7525700DFEC1F /* DamusVideoPlayer.swift */; }; 82D6FBDE2CD99F7900C925F4 /* DamusVideoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A16FFE2AA76A0900DFEC1F /* DamusVideoCoordinator.swift */; }; @@ -899,7 +892,6 @@ 82D6FC482CD99F7900C925F4 /* ShareActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE1399129F0666100AC6A0B /* ShareActionButton.swift */; }; 82D6FC492CD99F7900C925F4 /* BigButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE1399329F0669900AC6A0B /* BigButton.swift */; }; 82D6FC4A2CD99F7900C925F4 /* AddRelayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4F9E228528C5200C00DD9 /* AddRelayView.swift */; }; - 82D6FC4B2CD99F7900C925F4 /* BlocksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8728236948006E126D /* BlocksView.swift */; }; 82D6FC4C2CD99F7900C925F4 /* BookmarksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F75BA12E29A18EF500E10810 /* BookmarksView.swift */; }; 82D6FC4D2CD99F7900C925F4 /* CarouselView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C285C8128385570008A31F1 /* CarouselView.swift */; }; 82D6FC4E2CD99F7900C925F4 /* ConfigView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4F9DD2852768D00C00DD9 /* ConfigView.swift */; }; @@ -1206,7 +1198,6 @@ D73E5E3C2C6A97F4007EB227 /* UserStatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CF38C872A9442DC00BE01B6 /* UserStatusView.swift */; }; D73E5E3E2C6A97F4007EB227 /* SearchHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C687C232A5FA86D0092C550 /* SearchHeaderView.swift */; }; D73E5E3F2C6A97F4007EB227 /* DamusGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09712A0AEF5E00943473 /* DamusGradient.swift */; }; - D73E5E402C6A97F4007EB227 /* AlbyGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09732A0AEF9000943473 /* AlbyGradient.swift */; }; D73E5E412C6A97F4007EB227 /* GoldSupportGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C2859612A12A7F0004746F7 /* GoldSupportGradient.swift */; }; D73E5E422C6A97F4007EB227 /* PinkGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6E1DAE2A194075008FC15A /* PinkGradient.swift */; }; D73E5E432C6A97F4007EB227 /* GrayGradient.swift in Sources */ = {isa = PBXBuildFile; fileRef = F71694F72A6983AF001F4053 /* GrayGradient.swift */; }; @@ -1287,7 +1278,6 @@ D73E5E982C6A97F4007EB227 /* ActionBarModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3BEFD5281D995700B3DE84 /* ActionBarModel.swift */; }; D73E5E992C6A97F4007EB227 /* Liked.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C3BEFDB281DCE6100B3DE84 /* Liked.swift */; }; D73E5E9A2C6A97F4007EB227 /* ProfileUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A912825FCF2006E126D /* ProfileUpdate.swift */; }; - D73E5E9B2C6A97F4007EB227 /* PostBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A952827096D006E126D /* PostBlock.swift */; }; D73E5E9C2C6A97F4007EB227 /* Reply.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A9928283854006E126D /* Reply.swift */; }; D73E5E9D2C6A97F4007EB227 /* SearchModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363AA328296DEE006E126D /* SearchModel.swift */; }; D73E5E9E2C6A97F4007EB227 /* NostrFilter+Hashable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E8A4BB62AE4359200065E81 /* NostrFilter+Hashable.swift */; }; @@ -1337,7 +1327,6 @@ D73E5ED32C6A97F4007EB227 /* NWCScannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09672A0AE9B200943473 /* NWCScannerView.swift */; }; D73E5ED42C6A97F4007EB227 /* TrustedNetworkButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C8D1A6E29F31E5000ACDF75 /* TrustedNetworkButton.swift */; }; D73E5ED52C6A97F4007EB227 /* GradientFollowButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F71694F32A6732B7001F4053 /* GradientFollowButton.swift */; }; - D73E5ED62C6A97F4007EB227 /* AlbyButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C7D09652A0AE62100943473 /* AlbyButton.swift */; }; D73E5ED82C6A97F4007EB227 /* DamusVideoPlayerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C1A9A2929DDF54400516EAC /* DamusVideoPlayerView.swift */; }; D73E5ED92C6A97F4007EB227 /* DamusVideoPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A16FFC2AA7525700DFEC1F /* DamusVideoPlayer.swift */; }; D73E5EDA2C6A97F4007EB227 /* DamusVideoCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A16FFE2AA76A0900DFEC1F /* DamusVideoCoordinator.swift */; }; @@ -1444,7 +1433,6 @@ D73E5F432C6A97F5007EB227 /* ShareActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE1399129F0666100AC6A0B /* ShareActionButton.swift */; }; D73E5F442C6A97F5007EB227 /* BigButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE1399329F0669900AC6A0B /* BigButton.swift */; }; D73E5F452C6A97F5007EB227 /* AddRelayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4F9E228528C5200C00DD9 /* AddRelayView.swift */; }; - D73E5F462C6A97F5007EB227 /* BlocksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C363A8728236948006E126D /* BlocksView.swift */; }; D73E5F472C6A97F5007EB227 /* BookmarksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F75BA12E29A18EF500E10810 /* BookmarksView.swift */; }; D73E5F482C6A97F5007EB227 /* CarouselView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C285C8128385570008A31F1 /* CarouselView.swift */; }; D73E5F492C6A97F5007EB227 /* ConfigView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CE4F9DD2852768D00C00DD9 /* ConfigView.swift */; }; @@ -1860,7 +1848,7 @@ 0E8A4BB62AE4359200065E81 /* NostrFilter+Hashable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NostrFilter+Hashable.swift"; sourceTree = ""; }; 3165648A295B70D500C64604 /* LinkView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LinkView.swift; sourceTree = ""; }; 3169CAE5294E69C000EE4006 /* EmptyTimelineView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmptyTimelineView.swift; sourceTree = ""; }; - 3169CAEC294FCCFC00EE4006 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Constants.swift; path = damus/Util/Constants.swift; sourceTree = SOURCE_ROOT; }; + 3169CAEC294FCCFC00EE4006 /* Constants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Constants.swift; path = damus/Shared/Utilities/Constants.swift; sourceTree = SOURCE_ROOT; }; 31D2E846295218AF006D67F8 /* Shimmer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Shimmer.swift; sourceTree = ""; }; 3A185A04297F2C3800F4BDC0 /* lv-LV */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "lv-LV"; path = "lv-LV.lproj/InfoPlist.strings"; sourceTree = ""; }; 3A185A05297F2C3800F4BDC0 /* lv-LV */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "lv-LV"; path = "lv-LV.lproj/Localizable.strings"; sourceTree = ""; }; @@ -2077,13 +2065,11 @@ 4C32B94A2A9AD44700DC3548 /* Enum.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Enum.swift; sourceTree = ""; }; 4C32B94B2A9AD44700DC3548 /* Struct.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Struct.swift; sourceTree = ""; }; 4C363A8328233689006E126D /* Parser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Parser.swift; sourceTree = ""; }; - 4C363A8728236948006E126D /* BlocksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlocksView.swift; sourceTree = ""; }; 4C363A8B28236B92006E126D /* PubkeyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PubkeyView.swift; sourceTree = ""; }; 4C363A8D28236FE4006E126D /* NoteContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoteContentView.swift; sourceTree = ""; }; 4C363A8F28247A1D006E126D /* NostrLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NostrLink.swift; sourceTree = ""; }; 4C363A912825FCF2006E126D /* ProfileUpdate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileUpdate.swift; sourceTree = ""; }; 4C363A93282704FA006E126D /* Post.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Post.swift; sourceTree = ""; }; - 4C363A952827096D006E126D /* PostBlock.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostBlock.swift; sourceTree = ""; }; 4C363A9928283854006E126D /* Reply.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Reply.swift; sourceTree = ""; }; 4C363A9D2828A822006E126D /* ReplyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplyTests.swift; sourceTree = ""; }; 4C363A9F2828A8DD006E126D /* LikeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LikeTests.swift; sourceTree = ""; }; @@ -2281,7 +2267,7 @@ 4C73C5132A4437C10062CAC0 /* ZapUserView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZapUserView.swift; sourceTree = ""; }; 4C75EFA327FA577B0006080F /* PostView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostView.swift; sourceTree = ""; }; 4C75EFA527FF87A20006080F /* Nostr.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Nostr.swift; sourceTree = ""; }; - 4C75EFA72804823E0006080F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = ""; }; + 4C75EFA72804823E0006080F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 4C75EFAC28049CFB0006080F /* PostButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PostButton.swift; sourceTree = ""; }; 4C75EFAE28049D340006080F /* NostrFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NostrFilter.swift; sourceTree = ""; }; 4C75EFB028049D510006080F /* NostrResponse.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NostrResponse.swift; sourceTree = ""; }; @@ -2299,10 +2285,8 @@ 4C7D095C2A098C5D00943473 /* ConnectWalletView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectWalletView.swift; sourceTree = ""; }; 4C7D095D2A098C5D00943473 /* WalletView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WalletView.swift; sourceTree = ""; }; 4C7D09612A098D0E00943473 /* WalletConnect.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WalletConnect.swift; sourceTree = ""; }; - 4C7D09652A0AE62100943473 /* AlbyButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbyButton.swift; sourceTree = ""; }; 4C7D09672A0AE9B200943473 /* NWCScannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NWCScannerView.swift; sourceTree = ""; }; 4C7D09712A0AEF5E00943473 /* DamusGradient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DamusGradient.swift; sourceTree = ""; }; - 4C7D09732A0AEF9000943473 /* AlbyGradient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlbyGradient.swift; sourceTree = ""; }; 4C7D09752A0AF19E00943473 /* FillAndStroke.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FillAndStroke.swift; sourceTree = ""; }; 4C7D09772A0B0CC900943473 /* WalletModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletModel.swift; sourceTree = ""; }; 4C7D097D2A0C58B900943473 /* WalletConnectTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WalletConnectTests.swift; sourceTree = ""; }; @@ -2797,9 +2781,8 @@ 3AA24800297E3DAE0090C62D /* Reposts */ = { isa = PBXGroup; children = ( - 3AA24801297E3DC20090C62D /* RepostView.swift */, - 4CFF8F6A29CD0079008DB934 /* RepostedEvent.swift */, - 4C94D6422BA5AEFE00C26EFF /* QuoteRepostsView.swift */, + 5C78A7AF2E30437600CF177D /* Models */, + 5C78A7AE2E30437100CF177D /* Views */, ); path = Reposts; sourceTree = ""; @@ -2871,79 +2854,6 @@ path = "damus-c"; sourceTree = ""; }; - 4C0A3F8D280F63FF000448DE /* Models */ = { - isa = PBXGroup; - children = ( - 5C09FD112DF283D200823661 /* FollowPackModel.swift */, - 5C4FA7EB2DC29AE900CE658C /* FollowPackEvent.swift */, - D73BDB122D71212600D69970 /* NostrNetworkManager */, - D74F43082B23F09300425B75 /* Purple */, - BA3759882ABCCDE30018D73B /* Camera */, - 4C190F1E2A535FC200027FD5 /* Zaps */, - 4C54AA0829A55416003E4487 /* Notifications */, - 4C0A3F8E280F640A000448DE /* ThreadModel.swift */, - 4C0A3F92280F66F5000448DE /* ReplyMap.swift */, - 4C3BEFD12819DB9B00B3DE84 /* ProfileModel.swift */, - 4C3BEFD5281D995700B3DE84 /* ActionBarModel.swift */, - 4C3BEFD9281DCA1400B3DE84 /* LikeCounter.swift */, - 4C3BEFDB281DCE6100B3DE84 /* Liked.swift */, - 4C3BEFDF281DE1ED00B3DE84 /* DamusState.swift */, - 4C7FF7D42823313F009601DB /* Mentions.swift */, - 4C363A912825FCF2006E126D /* ProfileUpdate.swift */, - 4C363A93282704FA006E126D /* Post.swift */, - 4C363A952827096D006E126D /* PostBlock.swift */, - 4C363A9928283854006E126D /* Reply.swift */, - 4C363AA328296DEE006E126D /* SearchModel.swift */, - 0E8A4BB62AE4359200065E81 /* NostrFilter+Hashable.swift */, - 4C3AC79A28306D7B00E1F516 /* Contacts.swift */, - 4C285C85283892E7008A31F1 /* CreateAccountModel.swift */, - 4C63334F283D40E500B1C9C3 /* HomeModel.swift */, - 4C633351283D419F00B1C9C3 /* SignalModel.swift */, - 4C5F9113283D694D0052CD1C /* FollowTarget.swift */, - F75BA12C29A1855400E10810 /* BookmarksManager.swift */, - 4C5F9115283D855D0052CD1C /* EventsModel.swift */, - 4C5F9117283D88E40052CD1C /* FollowingModel.swift */, - 4C987B56283FD07F0042CE38 /* FollowersModel.swift */, - 4C5C7E67284ED36500A22DF5 /* SearchHomeModel.swift */, - 4C64987D286D082C00EAE2B3 /* DirectMessagesModel.swift */, - 4C216F372871EDE300040376 /* DirectMessageModel.swift */, - BA693073295D649800ADDB87 /* UserSettingsStore.swift */, - 4FE60CDC295E1C5E00105A1F /* Wallet.swift */, - 4CF0ABD32980996B00D66079 /* Report.swift */, - 3AE45AF5297BB2E700C1D842 /* LibreTranslateServer.swift */, - 3AAA95C9298DF87B00F3D526 /* TranslationService.swift */, - 3AAA95CB298E07E900F3D526 /* DeepLPlan.swift */, - 4CE8795A2996C47A00F758CC /* ZapsModel.swift */, - 3AA59D1C2999B0400061C48E /* DraftsModel.swift */, - 4C54AA0629A540BA003E4487 /* NotificationsModel.swift */, - 4CD348EE29C3659D00497EB2 /* ImageUploadModel.swift */, - 3A48E7AF29DFBE9D006E787E /* MutedThreadsManager.swift */, - 4C7D09772A0B0CC900943473 /* WalletModel.swift */, - 3A23838D2A297DD200E5AA2E /* ZapButtonModel.swift */, - D723C38D2AB8D83400065664 /* ContentFilters.swift */, - D7315A292ACDF3B70036E30A /* DamusCacheManager.swift */, - D7CB5D3D2B116DAD00AD4105 /* NotificationsManager.swift */, - D7CB5D442B116FE800AD4105 /* Contacts+.swift */, - D7CB5D4A2B11721600AD4105 /* ZapType.swift */, - D7CB5D4D2B11728000AD4105 /* NewEventsBits.swift */, - D7CB5D502B1174D100AD4105 /* FriendFilter.swift */, - D7CB5D5B2B1176B200AD4105 /* MediaUploader.swift */, - D7CB5D5E2B11770C00AD4105 /* FollowState.swift */, - D7EDED1B2B1178FE0018B19C /* NoteContent.swift */, - D7EDED1D2B11797D0018B19C /* LongformEvent.swift */, - D7EDED322B12ACAE0018B19C /* DamusUserDefaults.swift */, - D74AAFC12B153395006CF0F4 /* HeadlessDamusState.swift */, - B5C60C1F2B530D5100C5ECA7 /* MuteItem.swift */, - B533694D2B66D791008A805E /* MutelistManager.swift */, - D7D2A3802BF815D000E4B42B /* PushNotificationClient.swift */, - 5CC8529C2BD741CD0039FFC5 /* HighlightEvent.swift */, - D773BC5E2C6D538500349F0A /* CommentItem.swift */, - D767066E2C8BB3CE00F09726 /* URLHandler.swift */, - 3ACF94452DAA006500971A4E /* NIP05DomainEventsModel.swift */, - ); - path = Models; - sourceTree = ""; - }; 4C0C03962A61E2670098B3B8 /* Fixtures */ = { isa = PBXGroup; children = ( @@ -2955,14 +2865,6 @@ name = Fixtures; sourceTree = ""; }; - 4C190F1E2A535FC200027FD5 /* Zaps */ = { - isa = PBXGroup; - children = ( - 4C190F1F2A535FC200027FD5 /* CustomizeZapModel.swift */, - ); - path = Zaps; - sourceTree = ""; - }; 4C190F232A547D1700027FD5 /* NostrScript */ = { isa = PBXGroup; children = ( @@ -2982,15 +2884,6 @@ path = BlurHash; sourceTree = ""; }; - 4C198DF329F88D23004C165C /* Images */ = { - isa = PBXGroup; - children = ( - 4C198DF429F88D2E004C165C /* ImageMetadata.swift */, - E0EE9DD32B8E5FEA00F3002D /* ImageProcessing.swift */, - ); - path = Images; - sourceTree = ""; - }; 4C19AE4A2A5CEF7C00C90DB7 /* nostrscript */ = { isa = PBXGroup; children = ( @@ -3006,15 +2899,8 @@ 4C1A9A1B29DDCF8B00516EAC /* Settings */ = { isa = PBXGroup; children = ( - 4C15C7142A55DE7A00D0A0DB /* ReactionsSettingsView.swift */, - 4C1A9A1C29DDCF9B00516EAC /* NotificationSettingsView.swift */, - 4C1A9A1E29DDD24B00516EAC /* AppearanceSettingsView.swift */, - 4C1A9A2029DDD3E100516EAC /* KeySettingsView.swift */, - 4C1A9A2429DDDF2600516EAC /* ZapSettingsView.swift */, - 4C1A9A2629DDE31900516EAC /* TranslationSettingsView.swift */, - E4FA1C022A24BB7F00482697 /* SearchSettingsView.swift */, - 5053ACA62A56DF3B00851AE3 /* DeveloperSettingsView.swift */, - D7FD12252BD345A700CF195B /* FirstAidSettingsView.swift */, + 5C78A7992E303C1400CF177D /* Models */, + 5C78A7912E3036DA00CF177D /* Views */, ); path = Settings; sourceTree = ""; @@ -3030,18 +2916,6 @@ path = Video; sourceTree = ""; }; - 4C30AC7029A5676F00E2BD5A /* Notifications */ = { - isa = PBXGroup; - children = ( - 4C30AC7129A5677A00E2BD5A /* NotificationsView.swift */, - 4C30AC7329A5680900E2BD5A /* EventGroupView.swift */, - 4C30AC7529A5770900E2BD5A /* NotificationItemView.swift */, - 4C30AC7F29A6A53F00E2BD5A /* ProfilePicturesView.swift */, - D78CD5972B8990300014D539 /* DamusAppNotificationView.swift */, - ); - path = Notifications; - sourceTree = ""; - }; 4C32B9362A9AD44700DC3548 /* flatbuffers */ = { isa = PBXGroup; children = ( @@ -3245,9 +3119,8 @@ 4C54AA0829A55416003E4487 /* Notifications */ = { isa = PBXGroup; children = ( - 4C54AA0929A55429003E4487 /* EventGroup.swift */, - 4C54AA0B29A5543C003E4487 /* ZapGroup.swift */, - 4C9AA1492A4587A6003F49FD /* NotificationStatusModel.swift */, + 5C78A7BB2E304AAA00CF177D /* Models */, + 5C78A7BA2E304AA600CF177D /* Views */, ); path = Notifications; sourceTree = ""; @@ -3255,10 +3128,8 @@ 4C5E54042A95232A00FF6E60 /* Status */ = { isa = PBXGroup; children = ( - 4C64305A2A945AF200B0C0E9 /* Music */, - 4CF38C872A9442DC00BE01B6 /* UserStatusView.swift */, - 4C5E54022A9522F600FF6E60 /* UserStatus.swift */, - 4C5E54052A9671F800FF6E60 /* UserStatusSheet.swift */, + 5C78A7C32E30716000CF177D /* Views */, + 5C78A7C22E30715000CF177D /* Models */, ); path = Status; sourceTree = ""; @@ -3271,97 +3142,6 @@ path = Music; sourceTree = ""; }; - 4C687C2A2A6058450092C550 /* Search */ = { - isa = PBXGroup; - children = ( - 4C687C232A5FA86D0092C550 /* SearchHeaderView.swift */, - ); - path = Search; - sourceTree = ""; - }; - 4C75EFA227FA576C0006080F /* Views */ = { - isa = PBXGroup; - children = ( - D74EA08C2D2E26E6002290DD /* ErrorHandling */, - D7D68FF72C9E01A80015A515 /* Utils */, - D78DB85D2C20FE9E00F0AB12 /* Chat */, - D71AC4CA2BA8E3320076268E /* Extensions */, - BA3759952ABCCF360018D73B /* Camera */, - F71694E82A66221E001F4053 /* Onboarding */, - 4C190F232A547D1700027FD5 /* NostrScript */, - 4C7D095A2A098C5C00943473 /* Wallet */, - 4C8D1A6D29F31E4100ACDF75 /* Buttons */, - 3A515C4E2DF4E0E6002D3B34 /* Tips */, - 4C1A9A2829DDF53B00516EAC /* Video */, - 4C1A9A1B29DDCF8B00516EAC /* Settings */, - 4CFF8F6129CC9A80008DB934 /* Images */, - 4CFF8F5729C9FD07008DB934 /* Purple */, - 4CCEB7AC29B53D180078AA28 /* Search */, - 4C30AC7029A5676F00E2BD5A /* Notifications */, - 4CE0E2B029A3DF4700DB4CA2 /* Timeline */, - 4CE879562996C44A00F758CC /* Zaps */, - 4CB9D4A52992D01900A9A7E4 /* Profile */, - 4CAAD8AE29888A9B00060CEA /* Relays */, - 4CF0ABF42985CD4200D66079 /* Posting */, - 4CF0ABDF2981A83000D66079 /* Muting */, - 4CC7AAEE297F11B300430951 /* Events */, - 3AA24800297E3DAE0090C62D /* Reposts */, - 4CB88394296F7F8100DC99E7 /* Reactions */, - 4CB88387296AF97C00DC99E7 /* ActionBar */, - 4CE4F9E228528C5200C00DD9 /* AddRelayView.swift */, - 4C363A8728236948006E126D /* BlocksView.swift */, - F75BA12E29A18EF500E10810 /* BookmarksView.swift */, - 4C285C8128385570008A31F1 /* CarouselView.swift */, - 4CE4F9DD2852768D00C00DD9 /* ConfigView.swift */, - 4C285C8328385690008A31F1 /* CreateAccountView.swift */, - 4C64987B286D03E000EAE2B3 /* DirectMessagesView.swift */, - 4C216F31286E388800040376 /* DMChatView.swift */, - 4C216F33286F5ACD00040376 /* DMView.swift */, - 3169CAE4294E699400EE4006 /* Empty Views */, - 4C75EFB82804A2740006080F /* EventView.swift */, - 4CEE2AF0280B216B00AB5EEF /* EventDetailView.swift */, - 4C3AC79E2833115300E1F516 /* FollowButtonView.swift */, - 4C3AC79C2833036D00E1F516 /* FollowingView.swift */, - 4C90BD17283A9EE5008EE7EF /* LoginView.swift */, - ADFE73542AD4793100EC7326 /* QRScanNSECView.swift */, - 4C363A8D28236FE4006E126D /* NoteContentView.swift */, - 4C75EFAC28049CFB0006080F /* PostButton.swift */, - 4C75EFA327FA577B0006080F /* PostView.swift */, - 9CA876E129A00CE90003B9A3 /* AttachMediaUtility.swift */, - F757933929D7AECD007DEAC1 /* MediaPicker.swift */, - 9C83F89229A937B900136C08 /* TextViewWrapper.swift */, - 4C3AC7A42836987600E1F516 /* MainTabView.swift */, - 4C363A8B28236B92006E126D /* PubkeyView.swift */, - 4CACA9D4280C31E100D9BBE8 /* ReplyView.swift */, - F7F0BA262978E54D009531F3 /* ParticipantsView.swift */, - 4C285C8D28399BFD008A31F1 /* SaveKeysView.swift */, - 4C3AC7A628369BA200E1F516 /* SearchHomeView.swift */, - 4C5C7E69284EDE2E00A22DF5 /* SearchResultsView.swift */, - 4C363AA128296A7E006E126D /* SearchView.swift */, - BAB68BEC29543FA3007BA466 /* SelectWalletView.swift */, - 4C3AC7A02835A81400E1F516 /* SetupView.swift */, - 4CA2EF9F280E37AC0044ACD8 /* TimelineView.swift */, - 4CB55EF4295E679D007FD187 /* UserRelaysView.swift */, - 647D9A8C2968520300A295DE /* SideMenuView.swift */, - 9609F057296E220800069BF3 /* BannerImageView.swift */, - 4CB8838E296F781C00DC99E7 /* ReactionsView.swift */, - 4CF0ABD529817F5B00D66079 /* ReportView.swift */, - 4CF0ABE42981EE0C00D66079 /* EULAView.swift */, - 3AA247FE297E3D900090C62D /* RepostsView.swift */, - 50DA11252A16A23F00236234 /* Launch.storyboard */, - 5C513FCB2984ACA60072348F /* QRCodeView.swift */, - 643EA5C7296B764E005081BB /* RelayFilterView.swift */, - D783A63E2AD4E53D00658DDA /* SuggestedHashtagsView.swift */, - D77BFA0A2AE3051200621634 /* ProfileActionSheetView.swift */, - D71AD8FC2CEC176A002E2C3C /* AppAccessibilityIdentifiers.swift */, - D74EA0922D2E77B9002290DD /* LoadableNostrEventView.swift */, - 3ACF94412DA9FCAB00971A4E /* NIP05DomainTimelineView.swift */, - 3A2BAC592DD7E4C400EBB4CC /* NIP05DomainTimelineHeaderView.swift */, - 3A2BAC5D2DE02E8600EBB4CC /* NIP05DomainPubkeysView.swift */, - ); - path = Views; - sourceTree = ""; - }; 4C75EFAB28049CC80006080F /* Nostr */ = { isa = PBXGroup; children = ( @@ -3371,7 +3151,6 @@ 4C75EFAE28049D340006080F /* NostrFilter.swift */, 4C75EFB028049D510006080F /* NostrResponse.swift */, 4C75EFB228049D640006080F /* NostrEvent.swift */, - 3CCD1E692A874C4E0099A953 /* Nip98HTTPAuth.swift */, 4C75EFB428049D790006080F /* Relay.swift */, 4C75EFB628049D990006080F /* RelayPool.swift */, 4C75EFBA2804A34C0006080F /* ProofOfWork.swift */, @@ -3384,9 +3163,11 @@ 4C2B7BF12A71B6540049DEE7 /* Id.swift */, D7FF93FF2AC7AC5200FD969D /* RelayURL.swift */, D798D22B2B086C7400234419 /* NostrEvent+.swift */, - D7C6787D2B2D34CC00BCEAFB /* NIP98AuthenticatedRequest.swift */, - B57B4C652B312C3700A232C0 /* NostrAuth.swift */, D74AAFCB2B155D07006CF0F4 /* MakeZapRequest.swift */, + 4C4DD3DA2A6CA7E8005B4E85 /* ContentParsing.swift */, + 4C7FF7D42823313F009601DB /* Mentions.swift */, + 4C285C8B28398BC6008A31F1 /* Keys.swift */, + D773BC5E2C6D538500349F0A /* CommentItem.swift */, ); path = Nostr; sourceTree = ""; @@ -3394,15 +3175,8 @@ 4C7D095A2A098C5C00943473 /* Wallet */ = { isa = PBXGroup; children = ( - D7AACFFE2E0387B800FB7699 /* LnurlAmountView.swift */, - D7DF58312DFCF18800E9AD28 /* SendPaymentView.swift */, - 5C8498012D5D14FA00F74FEB /* ZapExplainer.swift */, - 5CB017302D4422D600A9ED05 /* NWCSettings.swift */, - 5CB0172C2D42C76600A9ED05 /* BalanceView.swift */, - 5CB017242D42C5BD00A9ED05 /* TransactionsView.swift */, - 4C7D095C2A098C5D00943473 /* ConnectWalletView.swift */, - 4C7D095D2A098C5D00943473 /* WalletView.swift */, - 4C7D09672A0AE9B200943473 /* NWCScannerView.swift */, + 5C78A77E2E22FF0800CF177D /* Models */, + 5C78A77D2E22FF0200CF177D /* Views */, ); path = Wallet; sourceTree = ""; @@ -3411,7 +3185,6 @@ isa = PBXGroup; children = ( 4C7D09712A0AEF5E00943473 /* DamusGradient.swift */, - 4C7D09732A0AEF9000943473 /* AlbyGradient.swift */, 4C2859612A12A7F0004746F7 /* GoldSupportGradient.swift */, 5C6E1DAE2A194075008FC15A /* PinkGradient.swift */, F71694F72A6983AF001F4053 /* GrayGradient.swift */, @@ -3422,78 +3195,18 @@ path = Gradients; sourceTree = ""; }; - 4C7FF7D628233637009601DB /* Util */ = { - isa = PBXGroup; - children = ( - D7FA46E42DBDAA75002C9BB0 /* ImageCacheMigrations.swift */, - D73B74E02D8365B40067BDBC /* ExtraFonts.swift */, - D7DB93042D66A43B00DA1EE5 /* Undistractor.swift */, - D73E5F7E2C6AA066007EB227 /* DamusAliases.swift */, - E04A37C52B544F090029650D /* URIParsing.swift */, - 4C1D4FB02A7958E60024F453 /* VersionInfo.swift */, - D78F080A2D7F78B000FC6C75 /* WalletConnect */, - 4C198DF329F88D23004C165C /* Images */, - 4C198DEA29F88C6B004C165C /* BlurHash */, - 4CE4F0F329D779B5005914DB /* PostBox.swift */, - 7C0F392D29B57C8F0039859C /* Extensions */, - 4CE879492995B58700F758CC /* Relays */, - 4CF0ABEA29844B2F00D66079 /* AnyCodable */, - 4CC7AAE6297EFA7B00430951 /* Zap.swift */, - F7908E96298B1FDF00AB113A /* NIPURLBuilder.swift */, - 4CEE2AF4280B29E600AB5EEF /* TimeAgo.swift */, - 4C363A8328233689006E126D /* Parser.swift */, - 4C363AA728297703006E126D /* InsertSort.swift */, - 4C285C8B28398BC6008A31F1 /* Keys.swift */, - 501F8C7F2A0220E1001AFC1D /* KeychainStorage.swift */, - 4C90BD19283AA67F008EE7EF /* Bech32.swift */, - 4C216F352870A9A700040376 /* InputDismissKeyboard.swift */, - 3169CAEC294FCCFC00EE4006 /* Constants.swift */, - 3165648A295B70D500C64604 /* LinkView.swift */, - 4C3A1D3629637E0500558C0F /* PreviewCache.swift */, - 64FBD06E296255C400D9D3B2 /* Theme.swift */, - 4CB8838529656C8B00DC99E7 /* NIP05.swift */, - 4CF0ABD72981980C00D66079 /* Lists.swift */, - 4CF0ABEF29857E9200D66079 /* Bech32Object.swift */, - 7C60CAEE298471A1009C80D6 /* CoreSVG.swift */, - 4CAAD8AC298851D000060CEA /* AccountDeletion.swift */, - 4CB883A52975F83C00DC99E7 /* LNUrlPayRequest.swift */, - 4CB883A72975FC1800DC99E7 /* Zaps.swift */, - 4CB883B5297730E400DC99E7 /* LNUrls.swift */, - 3AB72AB8298ECF30004BB58C /* Translator.swift */, - 4C2CDDF6299D4A5E00879FD5 /* Debouncer.swift */, - 4CE0E2AE29A2E82100DB4CA2 /* EventHolder.swift */, - 3A3040F029A8FF97008A0F29 /* LocalizationUtil.swift */, - 4C30AC7729A577AB00E2BD5A /* EventCache.swift */, - 4C9BB83029C0ED4F00FC4E37 /* DisplayName.swift */, - 4CE4F0F129D4FCFA005914DB /* DebouncedOnChange.swift */, - 4C1A9A1929DCA17E00516EAC /* ReplyCounter.swift */, - 4C8D00C729DF791C0036AF10 /* CompatibleAttribute.swift */, - 4C8D00CB29DF92DF0036AF10 /* Hashtags.swift */, - 4CDA128B29EB19C40006FA5A /* LocalNotification.swift */, - 4CA5588229F33F5B00DC6A45 /* StringCodable.swift */, - 50B5685229F97CB400A23243 /* CredentialHandler.swift */, - 4C7D09582A05BEAD00943473 /* KeyboardVisible.swift */, - 3A8CC6CB2A2CFEF900940F5F /* StringUtil.swift */, - D2277EE92A089BD5006C3807 /* Router.swift */, - 4C2B10272A7B0F5C008AA43E /* Log.swift */, - 50C3E0892AA8E3F7006A4BC0 /* AVPlayer+Additions.swift */, - D7EDED202B117DCA0018B19C /* SequenceUtils.swift */, - D7EDED2D2B128E8A0018B19C /* CollectionExtension.swift */, - D74AAFCE2B155D8C006CF0F4 /* ZapDataModel.swift */, - D74AAFD32B155ECB006CF0F4 /* Zaps+.swift */, - D7D09AB42DADCA5600AB170D /* CoinosDeterministicAccountClient.swift */, - 3A92C0FD2DE16E9800CEEBAC /* FaviconCache.swift */, - ); - path = Util; - sourceTree = ""; - }; 4C8D1A6D29F31E4100ACDF75 /* Buttons */ = { isa = PBXGroup; children = ( 5CB017202D2D985800A9ED05 /* CoinosButton.swift */, 4C8D1A6E29F31E5000ACDF75 /* TrustedNetworkButton.swift */, F71694F32A6732B7001F4053 /* GradientFollowButton.swift */, - 4C7D09652A0AE62100943473 /* AlbyButton.swift */, + 4C3AC79E2833115300E1F516 /* FollowButtonView.swift */, + 4C75EFAC28049CFB0006080F /* PostButton.swift */, + 4CE1399329F0669900AC6A0B /* BigButton.swift */, + 4CE1399129F0666100AC6A0B /* ShareActionButton.swift */, + 5C6E1DAC2A193EC2008FC15A /* GradientButtonStyle.swift */, + 5CC868DC2AA29B3200FB22BA /* NeutralButtonStyle.swift */, ); path = Buttons; sourceTree = ""; @@ -3581,15 +3294,6 @@ path = Notify; sourceTree = ""; }; - 4CA9275B2A28FF570098A105 /* Longform */ = { - isa = PBXGroup; - children = ( - 4CA9275C2A28FF630098A105 /* LongformView.swift */, - 4CA9275E2A2902B20098A105 /* LongformPreview.swift */, - ); - path = Longform; - sourceTree = ""; - }; 4CA927682A290F8F0098A105 /* Components */ = { isa = PBXGroup; children = ( @@ -3606,15 +3310,8 @@ 4CAAD8AE29888A9B00060CEA /* Relays */ = { isa = PBXGroup; children = ( - 4CE879532996BA0000F758CC /* Detail */, - 4C06670028FC7C5900038D2A /* RelayView.swift */, - 4CAAD8AF29888AD200060CEA /* RelayConfigView.swift */, - F7908E91298B0F0700AB113A /* RelayDetailView.swift */, - 4CE8794D2996B16A00F758CC /* RelayToggle.swift */, - 4CE8794F2996B2BD00F758CC /* RelayStatusView.swift */, - 4CE879512996B68900F758CC /* RelayType.swift */, - 4CDA128929E9D10C0006FA5A /* SignalView.swift */, - 5CF2DCCB2AA3AF0B00984B8D /* RelayPicView.swift */, + 5C78A7B92E30484E00CF177D /* Models */, + 5C78A78A2E30353900CF177D /* Views */, ); path = Relays; sourceTree = ""; @@ -3622,12 +3319,8 @@ 4CB88387296AF97C00DC99E7 /* ActionBar */ = { isa = PBXGroup; children = ( - 4CEE2B01280B39E800AB5EEF /* EventActionBar.swift */, - 4CB88388296AF99A00DC99E7 /* EventDetailBar.swift */, - 5CF72FC129B9142F00124A13 /* ShareAction.swift */, - 4CE1398F29F0661A00AC6A0B /* RepostAction.swift */, - 4CE1399129F0666100AC6A0B /* ShareActionButton.swift */, - 4CE1399329F0669900AC6A0B /* BigButton.swift */, + 5C78A7AD2E30434200CF177D /* Models */, + 5C78A7AC2E30433E00CF177D /* Views */, ); path = ActionBar; sourceTree = ""; @@ -3635,7 +3328,8 @@ 4CB88394296F7F8100DC99E7 /* Reactions */ = { isa = PBXGroup; children = ( - 4CB88395296F7F8B00DC99E7 /* ReactionView.swift */, + 5C78A7B12E3043BC00CF177D /* Views */, + 5C78A7B02E3043B600CF177D /* Models */, ); path = Reactions; sourceTree = ""; @@ -3643,19 +3337,8 @@ 4CB9D4A52992D01900A9A7E4 /* Profile */ = { isa = PBXGroup; children = ( - 4CB8FC222A41ABA500763C51 /* AboutView.swift */, - 4CEE2AF6280B2DEA00AB5EEF /* ProfileName.swift */, - 4C285C892838B985008A31F1 /* ProfilePictureSelector.swift */, - E990020E2955F837003BBC5A /* EditMetadataView.swift */, - F79C7FAC29D5E9620000F946 /* EditPictureControl.swift */, - 4CEE2AF2280B25C500AB5EEF /* ProfilePicView.swift */, - 4C8682862814DE470026224F /* ProfileView.swift */, - 4CB9D4A62992D02B00A9A7E4 /* ProfileNameView.swift */, - 4C9F18E329ABDE6D008C55EC /* MaybeAnonPfpView.swift */, - 4C9BB83329C12D9900FC4E37 /* EventProfileName.swift */, - 4C8D1A6B29F1DFC200ACDF75 /* FriendIcon.swift */, - 3A4647CE2A413ADC00386AD8 /* CondensedProfilePicturesView.swift */, - 4C9B0DF22A65C46800CBDA21 /* ProfileEditButton.swift */, + 5C78A7922E3036F800CF177D /* Models */, + 5C78A7902E30368000CF177D /* Views */, ); path = Profile; sourceTree = ""; @@ -3685,8 +3368,7 @@ 4CC7AAEE297F11B300430951 /* Events */ = { isa = PBXGroup; children = ( - 5C4FA7FA2DC29C3800CE658C /* FollowPack */, - 5CC852A02BDED9970039FFC5 /* Highlight */, + 5C78A79F2E303D9500CF177D /* Models */, 4CA927682A290F8F0098A105 /* Components */, 4CC7AAEF297F11C700430951 /* SelectedEventView.swift */, 4CC7AAF5297F1A6A00430951 /* EventBody.swift */, @@ -3694,13 +3376,14 @@ 4CC7AAF7297F1CEE00430951 /* EventProfile.swift */, 4CC7AAF9297F64AC00430951 /* EventMenu.swift */, 4CF0ABE6298444FC00D66079 /* EventMutingContainerView.swift */, - 4C3D52B5298DB4E6001C5831 /* ZapEvent.swift */, 4C3D52B7298DB5C6001C5831 /* TextEvent.swift */, 4CFF8F6C29CD022E008DB934 /* WideEventView.swift */, - 4CA9275B2A28FF570098A105 /* Longform */, 4CA927602A290E340098A105 /* EventShell.swift */, D7870BC02AC4750B0080BA88 /* MentionView.swift */, D7870BC22AC47EBC0080BA88 /* EventLoaderView.swift */, + 4CEE2AF0280B216B00AB5EEF /* EventDetailView.swift */, + 4C75EFB82804A2740006080F /* EventView.swift */, + 4C363A8D28236FE4006E126D /* NoteContentView.swift */, ); path = Events; sourceTree = ""; @@ -3708,9 +3391,8 @@ 4CCEB7AC29B53D180078AA28 /* Search */ = { isa = PBXGroup; children = ( - 4CCEB7AD29B53D260078AA28 /* SearchingEventView.swift */, - 4C9D6D1A2B1D35D7004E5CD9 /* PullDownSearch.swift */, - 5C0567572C8FBC560073F23A /* NDBSearchView.swift */, + 5C78A7832E30340800CF177D /* Models */, + 5C78A7822E3033E600CF177D /* Views */, ); path = Search; sourceTree = ""; @@ -3718,8 +3400,8 @@ 4CE0E2B029A3DF4700DB4CA2 /* Timeline */ = { isa = PBXGroup; children = ( - 4CE0E2B529A3ED5500DB4CA2 /* InnerTimelineView.swift */, - 5C8711DD2C460C06007879C2 /* PostingTimelineView.swift */, + 5C78A7A92E30419B00CF177D /* Views */, + 5C78A7A82E30419700CF177D /* Models */, ); path = Timeline; sourceTree = ""; @@ -3727,31 +3409,25 @@ 4CE4F9DF285287A000C00DD9 /* Components */ = { isa = PBXGroup; children = ( - 4C5E54042A95232A00FF6E60 /* Status */, - 4C687C2A2A6058450092C550 /* Search */, + 5C78A7C12E30704000CF177D /* Text */, 4C7D09702A0AEF4C00943473 /* Gradients */, 31D2E846295218AF006D67F8 /* Shimmer.swift */, 4CD7641A28A1641400B6928F /* EndBlock.swift */, - 4C06670528FCB08600038D2A /* ImageCarousel.swift */, 4C3EA67C28FFBBA200C48A62 /* InvoicesView.swift */, 4C3EA67E28FFC01D00C48A62 /* InvoiceView.swift */, 4CB8838A296F6E1E00DC99E7 /* NIP05Badge.swift */, - 4CB8838C296F710400DC99E7 /* Reposted.swift */, 4CBCA92F297DB57F00EC6B2F /* WebsiteLink.swift */, 4CC7AAEC297F0B9E00430951 /* Highlight.swift */, 5C513FB9297F72980072348F /* CustomPicker.swift */, 4CF0ABE22981BC7D00D66079 /* UserView.swift */, - 7C902AE22981D55B002AB16E /* ZoomableScrollView.swift */, - 4CB883AF297705DD00DC99E7 /* NoteZapButton.swift */, - 4C42812B298C848200DBF26F /* TranslateView.swift */, - 7CFF6316299FEFE5005D382A /* SelectableText.swift */, 4C8EC52429D1FA6C0085D9A8 /* DamusColors.swift */, 4CE4F0F729DB7399005914DB /* ThiccDivider.swift */, 4C1A9A2229DDDB8100516EAC /* IconLabel.swift */, - 4C8D00C929DF80350036AF10 /* TruncatedText.swift */, 4C28595F2A12A2BE004746F7 /* SupporterBadge.swift */, - 5C6E1DAC2A193EC2008FC15A /* GradientButtonStyle.swift */, - 5CC868DC2AA29B3200FB22BA /* NeutralButtonStyle.swift */, + ADFE73542AD4793100EC7326 /* QRScanNSECView.swift */, + 5C513FCB2984ACA60072348F /* QRCodeView.swift */, + 4C363A8B28236B92006E126D /* PubkeyView.swift */, + 4C8D00CB29DF92DF0036AF10 /* Hashtags.swift */, ); path = Components; sourceTree = ""; @@ -3794,33 +3470,23 @@ 4CE6DEE527F7A08100C66700 /* damus */ = { isa = PBXGroup; children = ( - D76BE18A2E0CF3BF004AD0C6 /* DIP06 */, - D71527FD2E0A3D5800C893D6 /* NIP51 */, - D7DB93082D69478400DA1EE5 /* NIP65 */, - D7DB1FDC2D5A77E500CF06DA /* NIP44 */, - D755B28B2D3E7D6500BBEEFA /* NIP37 */, - D78F08152D7F7F5F00FC6C75 /* NIP04 */, - 4C45E5002BED4CE10025A428 /* NIP10 */, - 4C1D4FB32A7967990024F453 /* build-git-hash.txt */, + 5C78A7932E30387400CF177D /* Shared */, + 5C78A7792E22FDFE00CF177D /* Features */, + 5C78A7752E22F84A00CF177D /* Core */, 4CA3529C2A76AE47003BB08B /* Notify */, - 4CC14FEC2A73FC9A007AEB17 /* Types */, - F7F0BA23297892AE009531F3 /* Modifiers */, - 4C4A3A5A288A1B2200453788 /* damus.entitlements */, - 4CE4F9DF285287A000C00DD9 /* Components */, - 4C7FF7D628233637009601DB /* Util */, - 4C0A3F8D280F63FF000448DE /* Models */, - 4C75EFAB28049CC80006080F /* Nostr */, - 4C75EFA72804823E0006080F /* Info.plist */, - 3ACB685D297633BC00C46468 /* Localizable.strings */, - 3ACB685A297633BC00C46468 /* InfoPlist.strings */, - 4C75EFA227FA576C0006080F /* Views */, + 4CE6DEEC27F7A08200C66700 /* Preview Content */, 4CE6DEE627F7A08100C66700 /* damusApp.swift */, 4CE6DEE827F7A08100C66700 /* ContentView.swift */, 4CE6DEEA27F7A08200C66700 /* Assets.xcassets */, - 4CE6DEEC27F7A08200C66700 /* Preview Content */, + 4C4A3A5A288A1B2200453788 /* damus.entitlements */, + 4C1D4FB32A7967990024F453 /* build-git-hash.txt */, + 4C75EFA72804823E0006080F /* Info.plist */, 3A4325AA2961E11400BFCD9D /* Localizable.stringsdict */, + 3ACB685D297633BC00C46468 /* Localizable.strings */, + 3ACB685A297633BC00C46468 /* InfoPlist.strings */, 4C687C262A6039500092C550 /* TestData.swift */, - 4C4DD3DA2A6CA7E8005B4E85 /* ContentParsing.swift */, + 50DA11252A16A23F00236234 /* Launch.storyboard */, + D71AD8FC2CEC176A002E2C3C /* AppAccessibilityIdentifiers.swift */, ); path = damus; sourceTree = ""; @@ -3895,17 +3561,6 @@ path = damusUITests; sourceTree = ""; }; - 4CE879492995B58700F758CC /* Relays */ = { - isa = PBXGroup; - children = ( - 4CE8794729941DA700F758CC /* RelayFilters.swift */, - 504323A82A3495B6006AE6DC /* RelayModelCache.swift */, - 4CC6193929DC777C006A86D1 /* RelayBootstrap.swift */, - 504323A62A34915F006AE6DC /* RelayModel.swift */, - ); - path = Relays; - sourceTree = ""; - }; 4CE879532996BA0000F758CC /* Detail */ = { isa = PBXGroup; children = ( @@ -3921,11 +3576,8 @@ 4CE879562996C44A00F758CC /* Zaps */ = { isa = PBXGroup; children = ( - 4CE879572996C45300F758CC /* ZapsView.swift */, - 4C9F18E129AA9B6C008C55EC /* CustomizeZapView.swift */, - 4CA3FA0F29F593D000FDB3C3 /* ZapTypePicker.swift */, - 4C73C5132A4437C10062CAC0 /* ZapUserView.swift */, - D76874F22AE3632B00FB0F68 /* ProfileZapLinkView.swift */, + 5C78A77B2E22FE4A00CF177D /* Models */, + 5C78A77A2E22FE3B00CF177D /* Views */, ); path = Zaps; sourceTree = ""; @@ -3950,9 +3602,8 @@ 4CF0ABDF2981A83000D66079 /* Muting */ = { isa = PBXGroup; children = ( - B51C1CE82B55A60A00E312A9 /* AddMuteItemView.swift */, - B51C1CE92B55A60A00E312A9 /* MuteDurationMenu.swift */, - 4CF0ABE02981A83900D66079 /* MutelistView.swift */, + 5C78A79B2E303C7900CF177D /* Views */, + 5C78A79A2E303C6F00CF177D /* Models */, ); path = Muting; sourceTree = ""; @@ -3970,8 +3621,8 @@ 4CF0ABF42985CD4200D66079 /* Posting */ = { isa = PBXGroup; children = ( - D706C5AE2D5D31B20027C627 /* AutoSaveIndicatorView.swift */, - 4CF0ABF52985CD5500D66079 /* UserSearch.swift */, + 5C78A7A72E3040FE00CF177D /* Models */, + 5C78A7A62E3040F600CF177D /* Views */, ); path = Posting; sourceTree = ""; @@ -3979,14 +3630,8 @@ 4CFF8F5729C9FD07008DB934 /* Purple */ = { isa = PBXGroup; children = ( - D7100C542B76F8C200C59298 /* Detail */, - 4CFF8F5829C9FD1E008DB934 /* DamusPurpleView.swift */, - D76556D52B1E6C08001B0CCC /* DamusPurpleWelcomeView.swift */, - D7373BA52B688EA200F7783D /* DamusPurpleTranslationSetupView.swift */, - D7ADD3DF2B538D4200F104C4 /* DamusPurpleURLSheetView.swift */, - D7ADD3E12B538E3500F104C4 /* DamusPurpleVerifyNpubView.swift */, - D724D8262B64B40B00ABE789 /* DamusPurpleAccountView.swift */, - D7373BA72B68974500F7783D /* DamusPurpleNewUserOnboardingView.swift */, + 5C78A7812E23002500CF177D /* Models */, + 5C78A77F2E22FFDA00CF177D /* Views */, ); path = Purple; sourceTree = ""; @@ -3999,21 +3644,293 @@ 6439E013296790CF0020672B /* ProfilePicImageView.swift */, 4CFF8F6829CC9ED1008DB934 /* ImageContainerView.swift */, 4CFD502E2A2DA45800A229DB /* MediaView.swift */, + 9CA876E129A00CE90003B9A3 /* AttachMediaUtility.swift */, + 4C285C8128385570008A31F1 /* CarouselView.swift */, + 9609F057296E220800069BF3 /* BannerImageView.swift */, + 4C198DF429F88D2E004C165C /* ImageMetadata.swift */, + E0EE9DD32B8E5FEA00F3002D /* ImageProcessing.swift */, + 7C902AE22981D55B002AB16E /* ZoomableScrollView.swift */, ); path = Images; sourceTree = ""; }; - 5C4FA7FA2DC29C3800CE658C /* FollowPack */ = { + 5C78A7752E22F84A00CF177D /* Core */ = { isa = PBXGroup; children = ( - 5C4FA8022DCAF80400CE658C /* FollowPackTimeline.swift */, - 5C4FA7FE2DC5119300CE658C /* FollowPackPreview.swift */, - 5C4FA7F92DC29C3800CE658C /* FollowPackView.swift */, + 5C78A7BD2E306D6000CF177D /* Storage */, + 5C78A77C2E22FE7100CF177D /* Networking */, + 5C78A7782E22FAE700CF177D /* DIPs */, + 5C78A7762E22FA6F00CF177D /* NIPs */, + 4C75EFAB28049CC80006080F /* Nostr */, + 4CC14FEC2A73FC9A007AEB17 /* Types */, + ); + path = Core; + sourceTree = ""; + }; + 5C78A7762E22FA6F00CF177D /* NIPs */ = { + isa = PBXGroup; + children = ( + D78F08152D7F7F5F00FC6C75 /* NIP04 */, + 4C45E5002BED4CE10025A428 /* NIP10 */, + D755B28B2D3E7D6500BBEEFA /* NIP37 */, + D7DB1FDC2D5A77E500CF06DA /* NIP44 */, + D71527FD2E0A3D5800C893D6 /* NIP51 */, + D7DB93082D69478400DA1EE5 /* NIP65 */, + 5C78A7772E22FAA700CF177D /* NIP98 */, + ); + path = NIPs; + sourceTree = ""; + }; + 5C78A7772E22FAA700CF177D /* NIP98 */ = { + isa = PBXGroup; + children = ( + D7C6787D2B2D34CC00BCEAFB /* NIP98AuthenticatedRequest.swift */, + 3CCD1E692A874C4E0099A953 /* Nip98HTTPAuth.swift */, + B57B4C652B312C3700A232C0 /* NostrAuth.swift */, + ); + path = NIP98; + sourceTree = ""; + }; + 5C78A7782E22FAE700CF177D /* DIPs */ = { + isa = PBXGroup; + children = ( + D76BE18A2E0CF3BF004AD0C6 /* DIP06 */, + ); + path = DIPs; + sourceTree = ""; + }; + 5C78A7792E22FDFE00CF177D /* Features */ = { + isa = PBXGroup; + children = ( + 5C78A7BC2E304D7400CF177D /* Translations */, + 5C78A7B52E3046F400CF177D /* NIP05 */, + 5C78A7AA2E30428D00CF177D /* Actions */, + 5C78A7A32E303ED200CF177D /* Follows */, + 5C78A7A02E303DB900CF177D /* Bookmarks */, + 5C78A7942E30394300CF177D /* DMs */, + F71694E82A66221E001F4053 /* Onboarding */, + 5C78A78B2E3035A200CF177D /* Highlight */, + 5C78A7872E30345900CF177D /* Longform */, + 5C78A7842E30340E00CF177D /* FollowPack */, + 4CFF8F5729C9FD07008DB934 /* Purple */, + 4CE879562996C44A00F758CC /* Zaps */, + 4C7D095A2A098C5C00943473 /* Wallet */, + 4CCEB7AC29B53D180078AA28 /* Search */, + 4CAAD8AE29888A9B00060CEA /* Relays */, + 4CB9D4A52992D01900A9A7E4 /* Profile */, + 4C1A9A1B29DDCF8B00516EAC /* Settings */, + 3A515C4E2DF4E0E6002D3B34 /* Tips */, + 4C5E54042A95232A00FF6E60 /* Status */, + 4CC7AAEE297F11B300430951 /* Events */, + D78DB85D2C20FE9E00F0AB12 /* Chat */, + 4CF0ABDF2981A83000D66079 /* Muting */, + 4CE0E2B029A3DF4700DB4CA2 /* Timeline */, + 4CF0ABF42985CD4200D66079 /* Posting */, + 4C190F232A547D1700027FD5 /* NostrScript */, + 4C54AA0829A55416003E4487 /* Notifications */, + ); + path = Features; + sourceTree = ""; + }; + 5C78A77A2E22FE3B00CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4CE879572996C45300F758CC /* ZapsView.swift */, + 4C9F18E129AA9B6C008C55EC /* CustomizeZapView.swift */, + 4CA3FA0F29F593D000FDB3C3 /* ZapTypePicker.swift */, + 4C73C5132A4437C10062CAC0 /* ZapUserView.swift */, + D76874F22AE3632B00FB0F68 /* ProfileZapLinkView.swift */, + 4C3D52B5298DB4E6001C5831 /* ZapEvent.swift */, + 4CB883AF297705DD00DC99E7 /* NoteZapButton.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A77B2E22FE4A00CF177D /* Models */ = { + isa = PBXGroup; + children = ( + D7CB5D4A2B11721600AD4105 /* ZapType.swift */, + 4C190F1F2A535FC200027FD5 /* CustomizeZapModel.swift */, + 4CE8795A2996C47A00F758CC /* ZapsModel.swift */, + 3A23838D2A297DD200E5AA2E /* ZapButtonModel.swift */, + 4CC7AAE6297EFA7B00430951 /* Zap.swift */, + 4CB883A72975FC1800DC99E7 /* Zaps.swift */, + D74AAFCE2B155D8C006CF0F4 /* ZapDataModel.swift */, + D74AAFD32B155ECB006CF0F4 /* Zaps+.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A77C2E22FE7100CF177D /* Networking */ = { + isa = PBXGroup; + children = ( + D73BDB122D71212600D69970 /* NostrNetworkManager */, + ); + path = Networking; + sourceTree = ""; + }; + 5C78A77D2E22FF0200CF177D /* Views */ = { + isa = PBXGroup; + children = ( + D7AACFFE2E0387B800FB7699 /* LnurlAmountView.swift */, + D7DF58312DFCF18800E9AD28 /* SendPaymentView.swift */, + 5C8498012D5D14FA00F74FEB /* ZapExplainer.swift */, + 5CB017302D4422D600A9ED05 /* NWCSettings.swift */, + 5CB0172C2D42C76600A9ED05 /* BalanceView.swift */, + 5CB017242D42C5BD00A9ED05 /* TransactionsView.swift */, + 4C7D095C2A098C5D00943473 /* ConnectWalletView.swift */, + 4C7D095D2A098C5D00943473 /* WalletView.swift */, + 4C7D09672A0AE9B200943473 /* NWCScannerView.swift */, + BAB68BEC29543FA3007BA466 /* SelectWalletView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A77E2E22FF0800CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C7D09772A0B0CC900943473 /* WalletModel.swift */, + 4FE60CDC295E1C5E00105A1F /* Wallet.swift */, + D78F080A2D7F78B000FC6C75 /* WalletConnect */, + D7D09AB42DADCA5600AB170D /* CoinosDeterministicAccountClient.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A77F2E22FFDA00CF177D /* Views */ = { + isa = PBXGroup; + children = ( + D7100C542B76F8C200C59298 /* Detail */, + 4CFF8F5829C9FD1E008DB934 /* DamusPurpleView.swift */, + D76556D52B1E6C08001B0CCC /* DamusPurpleWelcomeView.swift */, + D7373BA52B688EA200F7783D /* DamusPurpleTranslationSetupView.swift */, + D7ADD3DF2B538D4200F104C4 /* DamusPurpleURLSheetView.swift */, + D7ADD3E12B538E3500F104C4 /* DamusPurpleVerifyNpubView.swift */, + D724D8262B64B40B00ABE789 /* DamusPurpleAccountView.swift */, + D7373BA72B68974500F7783D /* DamusPurpleNewUserOnboardingView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7812E23002500CF177D /* Models */ = { + isa = PBXGroup; + children = ( + D7CBD1D22B8D21C100BFD889 /* Extensions */, + D74F43092B23F0BE00425B75 /* DamusPurple.swift */, + D74F430B2B23FB9B00425B75 /* StoreObserver.swift */, + D7ADD3DD2B53854300F104C4 /* DamusPurpleURL.swift */, + D72341182B6864F200E1E135 /* DamusPurpleEnvironment.swift */, + D7100C5D2B7709ED00C59298 /* PurpleStoreKitManager.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7822E3033E600CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4CCEB7AD29B53D260078AA28 /* SearchingEventView.swift */, + 4C9D6D1A2B1D35D7004E5CD9 /* PullDownSearch.swift */, + 5C0567572C8FBC560073F23A /* NDBSearchView.swift */, + 4C363AA128296A7E006E126D /* SearchView.swift */, + 4C5C7E69284EDE2E00A22DF5 /* SearchResultsView.swift */, + 4C3AC7A628369BA200E1F516 /* SearchHomeView.swift */, + 4C687C232A5FA86D0092C550 /* SearchHeaderView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7832E30340800CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C363AA328296DEE006E126D /* SearchModel.swift */, + 4C5C7E67284ED36500A22DF5 /* SearchHomeModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7842E30340E00CF177D /* FollowPack */ = { + isa = PBXGroup; + children = ( + 5C78A7862E30343100CF177D /* Views */, + 5C78A7852E30342800CF177D /* Models */, ); path = FollowPack; sourceTree = ""; }; - 5CC852A02BDED9970039FFC5 /* Highlight */ = { + 5C78A7852E30342800CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 5C09FD112DF283D200823661 /* FollowPackModel.swift */, + 5C4FA7EB2DC29AE900CE658C /* FollowPackEvent.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7862E30343100CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 5C4FA8022DCAF80400CE658C /* FollowPackTimeline.swift */, + 5C4FA7F92DC29C3800CE658C /* FollowPackView.swift */, + 5C4FA7FE2DC5119300CE658C /* FollowPackPreview.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7872E30345900CF177D /* Longform */ = { + isa = PBXGroup; + children = ( + 5C78A7892E30346800CF177D /* Views */, + 5C78A7882E30346300CF177D /* Models */, + ); + path = Longform; + sourceTree = ""; + }; + 5C78A7882E30346300CF177D /* Models */ = { + isa = PBXGroup; + children = ( + D7EDED1D2B11797D0018B19C /* LongformEvent.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7892E30346800CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4CA9275C2A28FF630098A105 /* LongformView.swift */, + 4CA9275E2A2902B20098A105 /* LongformPreview.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A78A2E30353900CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4CE879532996BA0000F758CC /* Detail */, + 5CF2DCCB2AA3AF0B00984B8D /* RelayPicView.swift */, + 4CE8794D2996B16A00F758CC /* RelayToggle.swift */, + 4C06670028FC7C5900038D2A /* RelayView.swift */, + 4CAAD8AF29888AD200060CEA /* RelayConfigView.swift */, + F7908E91298B0F0700AB113A /* RelayDetailView.swift */, + 4CE8794F2996B2BD00F758CC /* RelayStatusView.swift */, + 4CE879512996B68900F758CC /* RelayType.swift */, + 4CDA128929E9D10C0006FA5A /* SignalView.swift */, + 4CB55EF4295E679D007FD187 /* UserRelaysView.swift */, + 643EA5C7296B764E005081BB /* RelayFilterView.swift */, + 4CE4F9E228528C5200C00DD9 /* AddRelayView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A78B2E3035A200CF177D /* Highlight */ = { + isa = PBXGroup; + children = ( + 5C78A78D2E3035B200CF177D /* Models */, + 5C78A78C2E3035AE00CF177D /* Views */, + ); + path = Highlight; + sourceTree = ""; + }; + 5C78A78C2E3035AE00CF177D /* Views */ = { isa = PBXGroup; children = ( 5CC8529E2BD744F60039FFC5 /* HighlightView.swift */, @@ -4022,7 +3939,596 @@ 5CC852A52BE00F180039FFC5 /* HighlightEventRef.swift */, 5C4D9EA62C042FA5005EA0F7 /* HighlightDraftContentView.swift */, ); - path = Highlight; + path = Views; + sourceTree = ""; + }; + 5C78A78D2E3035B200CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 5CC8529C2BD741CD0039FFC5 /* HighlightEvent.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A78E2E3035EC00CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C285C85283892E7008A31F1 /* CreateAccountModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A78F2E3035F200CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4C3AC7A02835A81400E1F516 /* SetupView.swift */, + F71694E92A662232001F4053 /* OnboardingSuggestionsView.swift */, + F71694F12A67314D001F4053 /* SuggestedUserView.swift */, + 4CF0ABE42981EE0C00D66079 /* EULAView.swift */, + 4C285C8328385690008A31F1 /* CreateAccountView.swift */, + 4C90BD17283A9EE5008EE7EF /* LoginView.swift */, + D783A63E2AD4E53D00658DDA /* SuggestedHashtagsView.swift */, + 4C285C8D28399BFD008A31F1 /* SaveKeysView.swift */, + D78BA6642DD7DFB9000AE62C /* InterestSelectionView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7902E30368000CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4CB8FC222A41ABA500763C51 /* AboutView.swift */, + 4CEE2AF6280B2DEA00AB5EEF /* ProfileName.swift */, + 4C285C892838B985008A31F1 /* ProfilePictureSelector.swift */, + E990020E2955F837003BBC5A /* EditMetadataView.swift */, + F79C7FAC29D5E9620000F946 /* EditPictureControl.swift */, + 4CEE2AF2280B25C500AB5EEF /* ProfilePicView.swift */, + 4C8682862814DE470026224F /* ProfileView.swift */, + 4CB9D4A62992D02B00A9A7E4 /* ProfileNameView.swift */, + 4C9F18E329ABDE6D008C55EC /* MaybeAnonPfpView.swift */, + 4C9BB83329C12D9900FC4E37 /* EventProfileName.swift */, + 4C8D1A6B29F1DFC200ACDF75 /* FriendIcon.swift */, + 3A4647CE2A413ADC00386AD8 /* CondensedProfilePicturesView.swift */, + 4C9B0DF22A65C46800CBDA21 /* ProfileEditButton.swift */, + D77BFA0A2AE3051200621634 /* ProfileActionSheetView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7912E3036DA00CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4C15C7142A55DE7A00D0A0DB /* ReactionsSettingsView.swift */, + 4C1A9A1C29DDCF9B00516EAC /* NotificationSettingsView.swift */, + 4C1A9A1E29DDD24B00516EAC /* AppearanceSettingsView.swift */, + 4C1A9A2029DDD3E100516EAC /* KeySettingsView.swift */, + 4C1A9A2429DDDF2600516EAC /* ZapSettingsView.swift */, + 4C1A9A2629DDE31900516EAC /* TranslationSettingsView.swift */, + E4FA1C022A24BB7F00482697 /* SearchSettingsView.swift */, + 5053ACA62A56DF3B00851AE3 /* DeveloperSettingsView.swift */, + D7FD12252BD345A700CF195B /* FirstAidSettingsView.swift */, + 4CE4F9DD2852768D00C00DD9 /* ConfigView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7922E3036F800CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C3BEFD12819DB9B00B3DE84 /* ProfileModel.swift */, + 4C363A912825FCF2006E126D /* ProfileUpdate.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7932E30387400CF177D /* Shared */ = { + isa = PBXGroup; + children = ( + 5C78A7B82E3047DE00CF177D /* Utilities */, + 5C78A79C2E303CA300CF177D /* Media */, + 4CE4F9DF285287A000C00DD9 /* Components */, + 4C8D1A6D29F31E4100ACDF75 /* Buttons */, + 7C0F392D29B57C8F0039859C /* Extensions */, + 3169CAE4294E699400EE4006 /* Empty Views */, + D74EA08C2D2E26E6002290DD /* ErrorHandling */, + F7F0BA23297892AE009531F3 /* Modifiers */, + ); + path = Shared; + sourceTree = ""; + }; + 5C78A7942E30394300CF177D /* DMs */ = { + isa = PBXGroup; + children = ( + 5C78A7962E30395000CF177D /* Views */, + 5C78A7952E30394B00CF177D /* Models */, + ); + path = DMs; + sourceTree = ""; + }; + 5C78A7952E30394B00CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C216F372871EDE300040376 /* DirectMessageModel.swift */, + 4C64987D286D082C00EAE2B3 /* DirectMessagesModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7962E30395000CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4C64987B286D03E000EAE2B3 /* DirectMessagesView.swift */, + 4C216F33286F5ACD00040376 /* DMView.swift */, + 4C216F31286E388800040376 /* DMChatView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7972E303BEE00CF177D /* Views */ = { + isa = PBXGroup; + children = ( + ); + path = Views; + sourceTree = ""; + }; + 5C78A7982E303BF300CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C0A3F8E280F640A000448DE /* ThreadModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7992E303C1400CF177D /* Models */ = { + isa = PBXGroup; + children = ( + BA693073295D649800ADDB87 /* UserSettingsStore.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A79A2E303C6F00CF177D /* Models */ = { + isa = PBXGroup; + children = ( + B5C60C1F2B530D5100C5ECA7 /* MuteItem.swift */, + B533694D2B66D791008A805E /* MutelistManager.swift */, + 3A48E7AF29DFBE9D006E787E /* MutedThreadsManager.swift */, + 4CF0ABD72981980C00D66079 /* Lists.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A79B2E303C7900CF177D /* Views */ = { + isa = PBXGroup; + children = ( + B51C1CE82B55A60A00E312A9 /* AddMuteItemView.swift */, + B51C1CE92B55A60A00E312A9 /* MuteDurationMenu.swift */, + 4CF0ABE02981A83900D66079 /* MutelistView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A79C2E303CA300CF177D /* Media */ = { + isa = PBXGroup; + children = ( + 5C78A79D2E303D2600CF177D /* Models */, + 4CFF8F6129CC9A80008DB934 /* Images */, + 4C1A9A2829DDF53B00516EAC /* Video */, + BA3759952ABCCF360018D73B /* Camera */, + 4C198DEA29F88C6B004C165C /* BlurHash */, + D7FA46E42DBDAA75002C9BB0 /* ImageCacheMigrations.swift */, + 50C3E0892AA8E3F7006A4BC0 /* AVPlayer+Additions.swift */, + 7C60CAEE298471A1009C80D6 /* CoreSVG.swift */, + ); + path = Media; + sourceTree = ""; + }; + 5C78A79D2E303D2600CF177D /* Models */ = { + isa = PBXGroup; + children = ( + D7CB5D5B2B1176B200AD4105 /* MediaUploader.swift */, + 4CD348EE29C3659D00497EB2 /* ImageUploadModel.swift */, + 4C06670528FCB08600038D2A /* ImageCarousel.swift */, + F757933929D7AECD007DEAC1 /* MediaPicker.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A79E2E303D4400CF177D /* Models */ = { + isa = PBXGroup; + children = ( + BA3759902ABCCEBA0018D73B /* CameraModel.swift */, + BA3759912ABCCEBA0018D73B /* CameraService.swift */, + BA3759892ABCCDE30018D73B /* ImageResizer.swift */, + BA37598B2ABCCE500018D73B /* PhotoCaptureProcessor.swift */, + BA37598C2ABCCE500018D73B /* VideoCaptureProcessor.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A79F2E303D9500CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C5F9115283D855D0052CD1C /* EventsModel.swift */, + D7EDED1B2B1178FE0018B19C /* NoteContent.swift */, + D74EA0922D2E77B9002290DD /* LoadableNostrEventView.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7A02E303DB900CF177D /* Bookmarks */ = { + isa = PBXGroup; + children = ( + 5C78A7A22E303DC700CF177D /* Views */, + 5C78A7A12E303DC200CF177D /* Models */, + ); + path = Bookmarks; + sourceTree = ""; + }; + 5C78A7A12E303DC200CF177D /* Models */ = { + isa = PBXGroup; + children = ( + F75BA12C29A1855400E10810 /* BookmarksManager.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7A22E303DC700CF177D /* Views */ = { + isa = PBXGroup; + children = ( + F75BA12E29A18EF500E10810 /* BookmarksView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7A32E303ED200CF177D /* Follows */ = { + isa = PBXGroup; + children = ( + 5C78A7A52E303EE100CF177D /* Views */, + 5C78A7A42E303EDB00CF177D /* Models */, + ); + path = Follows; + sourceTree = ""; + }; + 5C78A7A42E303EDB00CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C5F9113283D694D0052CD1C /* FollowTarget.swift */, + 4C5F9117283D88E40052CD1C /* FollowingModel.swift */, + 4C987B56283FD07F0042CE38 /* FollowersModel.swift */, + D7CB5D5E2B11770C00AD4105 /* FollowState.swift */, + 4C3AC79A28306D7B00E1F516 /* Contacts.swift */, + D7CB5D442B116FE800AD4105 /* Contacts+.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7A52E303EE100CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4C3AC79C2833036D00E1F516 /* FollowingView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7A62E3040F600CF177D /* Views */ = { + isa = PBXGroup; + children = ( + D706C5AE2D5D31B20027C627 /* AutoSaveIndicatorView.swift */, + 4CF0ABF52985CD5500D66079 /* UserSearch.swift */, + 4C75EFA327FA577B0006080F /* PostView.swift */, + F7F0BA262978E54D009531F3 /* ParticipantsView.swift */, + 4CACA9D4280C31E100D9BBE8 /* ReplyView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7A72E3040FE00CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C363A93282704FA006E126D /* Post.swift */, + 3AA59D1C2999B0400061C48E /* DraftsModel.swift */, + 4C0A3F92280F66F5000448DE /* ReplyMap.swift */, + 4C363A9928283854006E126D /* Reply.swift */, + 4CE4F0F329D779B5005914DB /* PostBox.swift */, + 4C1A9A1929DCA17E00516EAC /* ReplyCounter.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7A82E30419700CF177D /* Models */ = { + isa = PBXGroup; + children = ( + D723C38D2AB8D83400065664 /* ContentFilters.swift */, + 0E8A4BB62AE4359200065E81 /* NostrFilter+Hashable.swift */, + D7CB5D502B1174D100AD4105 /* FriendFilter.swift */, + 4C63334F283D40E500B1C9C3 /* HomeModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7A92E30419B00CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4CE0E2B529A3ED5500DB4CA2 /* InnerTimelineView.swift */, + 5C8711DD2C460C06007879C2 /* PostingTimelineView.swift */, + 4CA2EF9F280E37AC0044ACD8 /* TimelineView.swift */, + 4C3AC7A42836987600E1F516 /* MainTabView.swift */, + 647D9A8C2968520300A295DE /* SideMenuView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7AA2E30428D00CF177D /* Actions */ = { + isa = PBXGroup; + children = ( + 5C78A7AB2E30430700CF177D /* Reports */, + 4CB88394296F7F8100DC99E7 /* Reactions */, + 3AA24800297E3DAE0090C62D /* Reposts */, + 4CB88387296AF97C00DC99E7 /* ActionBar */, + ); + path = Actions; + sourceTree = ""; + }; + 5C78A7AB2E30430700CF177D /* Reports */ = { + isa = PBXGroup; + children = ( + 5C78A7B32E3043FD00CF177D /* Views */, + 5C78A7B22E3043F800CF177D /* Models */, + ); + path = Reports; + sourceTree = ""; + }; + 5C78A7AC2E30433E00CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4CEE2B01280B39E800AB5EEF /* EventActionBar.swift */, + 4CB88388296AF99A00DC99E7 /* EventDetailBar.swift */, + 5CF72FC129B9142F00124A13 /* ShareAction.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7AD2E30434200CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C3BEFD5281D995700B3DE84 /* ActionBarModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7AE2E30437100CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 3AA24801297E3DC20090C62D /* RepostView.swift */, + 4CFF8F6A29CD0079008DB934 /* RepostedEvent.swift */, + 3AA247FE297E3D900090C62D /* RepostsView.swift */, + 4CE1398F29F0661A00AC6A0B /* RepostAction.swift */, + 4CB8838C296F710400DC99E7 /* Reposted.swift */, + 4C94D6422BA5AEFE00C26EFF /* QuoteRepostsView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7AF2E30437600CF177D /* Models */ = { + isa = PBXGroup; + children = ( + ); + path = Models; + sourceTree = ""; + }; + 5C78A7B02E3043B600CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C3BEFD9281DCA1400B3DE84 /* LikeCounter.swift */, + 4C3BEFDB281DCE6100B3DE84 /* Liked.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7B12E3043BC00CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4CB88395296F7F8B00DC99E7 /* ReactionView.swift */, + 4CB8838E296F781C00DC99E7 /* ReactionsView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7B22E3043F800CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4CF0ABD32980996B00D66079 /* Report.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7B32E3043FD00CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4CF0ABD529817F5B00D66079 /* ReportView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7B52E3046F400CF177D /* NIP05 */ = { + isa = PBXGroup; + children = ( + 5C78A7B72E3046FE00CF177D /* Views */, + 5C78A7B62E3046F900CF177D /* Models */, + ); + path = NIP05; + sourceTree = ""; + }; + 5C78A7B62E3046F900CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 3ACF94452DAA006500971A4E /* NIP05DomainEventsModel.swift */, + 4CB8838529656C8B00DC99E7 /* NIP05.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7B72E3046FE00CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 3ACF94412DA9FCAB00971A4E /* NIP05DomainTimelineView.swift */, + 3A2BAC592DD7E4C400EBB4CC /* NIP05DomainTimelineHeaderView.swift */, + 3A2BAC5D2DE02E8600EBB4CC /* NIP05DomainPubkeysView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7B82E3047DE00CF177D /* Utilities */ = { + isa = PBXGroup; + children = ( + 4CF0ABEA29844B2F00D66079 /* AnyCodable */, + D73B74E02D8365B40067BDBC /* ExtraFonts.swift */, + D7DB93042D66A43B00DA1EE5 /* Undistractor.swift */, + D73E5F7E2C6AA066007EB227 /* DamusAliases.swift */, + E04A37C52B544F090029650D /* URIParsing.swift */, + 4C1D4FB02A7958E60024F453 /* VersionInfo.swift */, + D7D68FF82C9E01B60015A515 /* KFClickable.swift */, + F7908E96298B1FDF00AB113A /* NIPURLBuilder.swift */, + 4CEE2AF4280B29E600AB5EEF /* TimeAgo.swift */, + 4C363A8328233689006E126D /* Parser.swift */, + 4C363AA728297703006E126D /* InsertSort.swift */, + 4C90BD19283AA67F008EE7EF /* Bech32.swift */, + 4C216F352870A9A700040376 /* InputDismissKeyboard.swift */, + 3169CAEC294FCCFC00EE4006 /* Constants.swift */, + 3165648A295B70D500C64604 /* LinkView.swift */, + 4C3A1D3629637E0500558C0F /* PreviewCache.swift */, + 64FBD06E296255C400D9D3B2 /* Theme.swift */, + 4CF0ABEF29857E9200D66079 /* Bech32Object.swift */, + 4CAAD8AC298851D000060CEA /* AccountDeletion.swift */, + 4CB883A52975F83C00DC99E7 /* LNUrlPayRequest.swift */, + 4CB883B5297730E400DC99E7 /* LNUrls.swift */, + 4C2CDDF6299D4A5E00879FD5 /* Debouncer.swift */, + 4CE0E2AE29A2E82100DB4CA2 /* EventHolder.swift */, + 3A3040F029A8FF97008A0F29 /* LocalizationUtil.swift */, + 4C30AC7729A577AB00E2BD5A /* EventCache.swift */, + 4C9BB83029C0ED4F00FC4E37 /* DisplayName.swift */, + 4CE4F0F129D4FCFA005914DB /* DebouncedOnChange.swift */, + 4C8D00C729DF791C0036AF10 /* CompatibleAttribute.swift */, + 4CDA128B29EB19C40006FA5A /* LocalNotification.swift */, + 4CA5588229F33F5B00DC6A45 /* StringCodable.swift */, + 50B5685229F97CB400A23243 /* CredentialHandler.swift */, + 4C7D09582A05BEAD00943473 /* KeyboardVisible.swift */, + 3A8CC6CB2A2CFEF900940F5F /* StringUtil.swift */, + D2277EE92A089BD5006C3807 /* Router.swift */, + 4C2B10272A7B0F5C008AA43E /* Log.swift */, + D7EDED202B117DCA0018B19C /* SequenceUtils.swift */, + D7EDED2D2B128E8A0018B19C /* CollectionExtension.swift */, + 3A92C0FD2DE16E9800CEEBAC /* FaviconCache.swift */, + D767066E2C8BB3CE00F09726 /* URLHandler.swift */, + D7CB5D4D2B11728000AD4105 /* NewEventsBits.swift */, + D74AAFC12B153395006CF0F4 /* HeadlessDamusState.swift */, + ); + path = Utilities; + sourceTree = ""; + }; + 5C78A7B92E30484E00CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4CE8794729941DA700F758CC /* RelayFilters.swift */, + 504323A82A3495B6006AE6DC /* RelayModelCache.swift */, + 4CC6193929DC777C006A86D1 /* RelayBootstrap.swift */, + 504323A62A34915F006AE6DC /* RelayModel.swift */, + 4C633351283D419F00B1C9C3 /* SignalModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7BA2E304AA600CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4C30AC7129A5677A00E2BD5A /* NotificationsView.swift */, + 4C30AC7329A5680900E2BD5A /* EventGroupView.swift */, + 4C30AC7529A5770900E2BD5A /* NotificationItemView.swift */, + 4C30AC7F29A6A53F00E2BD5A /* ProfilePicturesView.swift */, + D78CD5972B8990300014D539 /* DamusAppNotificationView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7BB2E304AAA00CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C54AA0929A55429003E4487 /* EventGroup.swift */, + 4C54AA0B29A5543C003E4487 /* ZapGroup.swift */, + 4C9AA1492A4587A6003F49FD /* NotificationStatusModel.swift */, + D7CB5D3D2B116DAD00AD4105 /* NotificationsManager.swift */, + D7D2A3802BF815D000E4B42B /* PushNotificationClient.swift */, + 4C54AA0629A540BA003E4487 /* NotificationsModel.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7BC2E304D7400CF177D /* Translations */ = { + isa = PBXGroup; + children = ( + 5C78A7BF2E306F3F00CF177D /* Views */, + 5C78A7BE2E306F3900CF177D /* Models */, + ); + path = Translations; + sourceTree = ""; + }; + 5C78A7BD2E306D6000CF177D /* Storage */ = { + isa = PBXGroup; + children = ( + D7EDED322B12ACAE0018B19C /* DamusUserDefaults.swift */, + D7315A292ACDF3B70036E30A /* DamusCacheManager.swift */, + 501F8C7F2A0220E1001AFC1D /* KeychainStorage.swift */, + 4C3BEFDF281DE1ED00B3DE84 /* DamusState.swift */, + ); + path = Storage; + sourceTree = ""; + }; + 5C78A7BE2E306F3900CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 3AE45AF5297BB2E700C1D842 /* LibreTranslateServer.swift */, + 3AAA95C9298DF87B00F3D526 /* TranslationService.swift */, + 3AAA95CB298E07E900F3D526 /* DeepLPlan.swift */, + 3AB72AB8298ECF30004BB58C /* Translator.swift */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7BF2E306F3F00CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4C42812B298C848200DBF26F /* TranslateView.swift */, + ); + path = Views; + sourceTree = ""; + }; + 5C78A7C12E30704000CF177D /* Text */ = { + isa = PBXGroup; + children = ( + 7CFF6316299FEFE5005D382A /* SelectableText.swift */, + 4C8D00C929DF80350036AF10 /* TruncatedText.swift */, + 9C83F89229A937B900136C08 /* TextViewWrapper.swift */, + ); + path = Text; + sourceTree = ""; + }; + 5C78A7C22E30715000CF177D /* Models */ = { + isa = PBXGroup; + children = ( + 4C5E54022A9522F600FF6E60 /* UserStatus.swift */, + 4C64305A2A945AF200B0C0E9 /* Music */, + ); + path = Models; + sourceTree = ""; + }; + 5C78A7C32E30716000CF177D /* Views */ = { + isa = PBXGroup; + children = ( + 4CF38C872A9442DC00BE01B6 /* UserStatusView.swift */, + 4C5E54052A9671F800FF6E60 /* UserStatusSheet.swift */, + ); + path = Views; sourceTree = ""; }; 7C0F392D29B57C8F0039859C /* Extensions */ = { @@ -4033,6 +4539,8 @@ D72E12772BEED22400F4F781 /* Array.swift */, D78DB85A2C20FE4F00F0AB12 /* VectorMath.swift */, 5C0567542C8B60C20073F23A /* OffsetExtension.swift */, + D71AC4CB2BA8E3480076268E /* VisibilityTracker.swift */, + D734B1442CCC19B1000B5C97 /* DamusFullScreenCover.swift */, ); path = Extensions; sourceTree = ""; @@ -4047,21 +4555,10 @@ path = "share extension"; sourceTree = ""; }; - BA3759882ABCCDE30018D73B /* Camera */ = { - isa = PBXGroup; - children = ( - BA3759902ABCCEBA0018D73B /* CameraModel.swift */, - BA3759912ABCCEBA0018D73B /* CameraService.swift */, - BA3759892ABCCDE30018D73B /* ImageResizer.swift */, - BA37598B2ABCCE500018D73B /* PhotoCaptureProcessor.swift */, - BA37598C2ABCCE500018D73B /* VideoCaptureProcessor.swift */, - ); - path = Camera; - sourceTree = ""; - }; BA3759952ABCCF360018D73B /* Camera */ = { isa = PBXGroup; children = ( + 5C78A79E2E303D4400CF177D /* Models */, BA3759962ABCCF360018D73B /* CameraPreview.swift */, E02429942B7E97740088B16C /* CameraController.swift */, ); @@ -4101,15 +4598,6 @@ path = NIP51; sourceTree = ""; }; - D71AC4CA2BA8E3320076268E /* Extensions */ = { - isa = PBXGroup; - children = ( - D71AC4CB2BA8E3480076268E /* VisibilityTracker.swift */, - D734B1442CCC19B1000B5C97 /* DamusFullScreenCover.swift */, - ); - path = Extensions; - sourceTree = ""; - }; D72A2D032AD9C165002AFF62 /* Mocking */ = { isa = PBXGroup; children = ( @@ -4138,19 +4626,6 @@ path = ErrorHandling; sourceTree = ""; }; - D74F43082B23F09300425B75 /* Purple */ = { - isa = PBXGroup; - children = ( - D7CBD1D22B8D21C100BFD889 /* Extensions */, - D74F43092B23F0BE00425B75 /* DamusPurple.swift */, - D74F430B2B23FB9B00425B75 /* StoreObserver.swift */, - D7ADD3DD2B53854300F104C4 /* DamusPurpleURL.swift */, - D72341182B6864F200E1E135 /* DamusPurpleEnvironment.swift */, - D7100C5D2B7709ED00C59298 /* PurpleStoreKitManager.swift */, - ); - path = Purple; - sourceTree = ""; - }; D755B28B2D3E7D6500BBEEFA /* NIP37 */ = { isa = PBXGroup; children = ( @@ -4170,6 +4645,8 @@ D78DB85D2C20FE9E00F0AB12 /* Chat */ = { isa = PBXGroup; children = ( + 5C78A7982E303BF300CF177D /* Models */, + 5C78A7972E303BEE00CF177D /* Views */, 4C011B5C2BD0A56A002F2F9B /* ChatEventView.swift */, 4C011B602BD0B25C002F2F9B /* ReplyQuoteView.swift */, 4C011B5D2BD0A56A002F2F9B /* ChatroomThreadView.swift */, @@ -4219,14 +4696,6 @@ path = Extensions; sourceTree = ""; }; - D7D68FF72C9E01A80015A515 /* Utils */ = { - isa = PBXGroup; - children = ( - D7D68FF82C9E01B60015A515 /* KFClickable.swift */, - ); - path = Utils; - sourceTree = ""; - }; D7DB1FDC2D5A77E500CF06DA /* NIP44 */ = { isa = PBXGroup; children = ( @@ -4254,11 +4723,10 @@ F71694E82A66221E001F4053 /* Onboarding */ = { isa = PBXGroup; children = ( + 5C78A78F2E3035F200CF177D /* Views */, + 5C78A78E2E3035EC00CF177D /* Models */, D73FA9E02DDC129E00C706E1 /* OnboardingContentSettings.swift */, - F71694E92A662232001F4053 /* OnboardingSuggestionsView.swift */, - F71694F12A67314D001F4053 /* SuggestedUserView.swift */, F71694EB2A662292001F4053 /* SuggestedUsersViewModel.swift */, - D78BA6642DD7DFB9000AE62C /* InterestSelectionView.swift */, D71527F32E0A2DC900C893D6 /* follow-packs.jsonl */, ); path = Onboarding; @@ -4720,7 +5188,6 @@ 4C15C7152A55DE7A00D0A0DB /* ReactionsSettingsView.swift in Sources */, 4C32B94C2A9AD44700DC3548 /* FbConstants.swift in Sources */, 4C8D00C829DF791C0036AF10 /* CompatibleAttribute.swift in Sources */, - 4C7D09742A0AEF9000943473 /* AlbyGradient.swift in Sources */, 4C687C272A6039500092C550 /* TestData.swift in Sources */, 50C3E08A2AA8E3F7006A4BC0 /* AVPlayer+Additions.swift in Sources */, 4C198DF229F88C6B004C165C /* BlurHashDecode.swift in Sources */, @@ -4894,7 +5361,6 @@ 4C216F32286E388800040376 /* DMChatView.swift in Sources */, 4C7D09782A0B0CC900943473 /* WalletModel.swift in Sources */, 4C1253522A76C6130004F4B8 /* ComposeNotify.swift in Sources */, - 4C7D09662A0AE62100943473 /* AlbyButton.swift in Sources */, D7100C582B76FC8400C59298 /* MarketingContentView.swift in Sources */, 4CAAD8AD298851D000060CEA /* AccountDeletion.swift in Sources */, 4CFF8F6329CC9AD7008DB934 /* ImageContextMenuModifier.swift in Sources */, @@ -4914,7 +5380,6 @@ 4CE4F0F829DB7399005914DB /* ThiccDivider.swift in Sources */, 4CFF8F5929C9FD1E008DB934 /* DamusPurpleView.swift in Sources */, 4CE0E2B629A3ED5500DB4CA2 /* InnerTimelineView.swift in Sources */, - 4C363A8828236948006E126D /* BlocksView.swift in Sources */, 4C06670628FCB08600038D2A /* ImageCarousel.swift in Sources */, 3A23838E2A297DD200E5AA2E /* ZapButtonModel.swift in Sources */, D755B28D2D3E7D8800BBEEFA /* NIP37Draft.swift in Sources */, @@ -5035,7 +5500,6 @@ 4C1253582A76C9060004F4B8 /* PresentSheetNotify.swift in Sources */, D7D09AB52DADCA5C00AB170D /* CoinosDeterministicAccountClient.swift in Sources */, D773BC5F2C6D538500349F0A /* CommentItem.swift in Sources */, - 4C363A962827096D006E126D /* PostBlock.swift in Sources */, 4CA9275F2A2902B20098A105 /* LongformPreview.swift in Sources */, 4C5F9116283D855D0052CD1C /* EventsModel.swift in Sources */, 4C32B94F2A9AD44700DC3548 /* Int+extension.swift in Sources */, @@ -5341,7 +5805,6 @@ 82D6FB092CD99F7900C925F4 /* SearchHeaderView.swift in Sources */, 82D6FB0A2CD99F7900C925F4 /* DamusGradient.swift in Sources */, D7DB93052D66A44100DA1EE5 /* Undistractor.swift in Sources */, - 82D6FB0B2CD99F7900C925F4 /* AlbyGradient.swift in Sources */, 82D6FB0C2CD99F7900C925F4 /* GoldSupportGradient.swift in Sources */, 82D6FB0D2CD99F7900C925F4 /* PinkGradient.swift in Sources */, 82D6FB0E2CD99F7900C925F4 /* GrayGradient.swift in Sources */, @@ -5466,7 +5929,6 @@ 82D6FB7E2CD99F7900C925F4 /* Mentions.swift in Sources */, 82D6FB7F2CD99F7900C925F4 /* ProfileUpdate.swift in Sources */, 82D6FB802CD99F7900C925F4 /* Post.swift in Sources */, - 82D6FB812CD99F7900C925F4 /* PostBlock.swift in Sources */, 82D6FB822CD99F7900C925F4 /* Reply.swift in Sources */, 82D6FB832CD99F7900C925F4 /* SearchModel.swift in Sources */, 82D6FB842CD99F7900C925F4 /* NostrFilter+Hashable.swift in Sources */, @@ -5560,7 +6022,6 @@ 82D6FBD72CD99F7900C925F4 /* NWCScannerView.swift in Sources */, 82D6FBD82CD99F7900C925F4 /* TrustedNetworkButton.swift in Sources */, 82D6FBD92CD99F7900C925F4 /* GradientFollowButton.swift in Sources */, - 82D6FBDA2CD99F7900C925F4 /* AlbyButton.swift in Sources */, 82D6FBDC2CD99F7900C925F4 /* DamusVideoPlayerView.swift in Sources */, 82D6FBDD2CD99F7900C925F4 /* DamusVideoPlayer.swift in Sources */, 82D6FBDE2CD99F7900C925F4 /* DamusVideoCoordinator.swift in Sources */, @@ -5682,7 +6143,6 @@ 82D6FC492CD99F7900C925F4 /* BigButton.swift in Sources */, D73BDB182D71311900D69970 /* UserRelayListErrors.swift in Sources */, 82D6FC4A2CD99F7900C925F4 /* AddRelayView.swift in Sources */, - 82D6FC4B2CD99F7900C925F4 /* BlocksView.swift in Sources */, D74EA0912D2E3464002290DD /* URLHandler.swift in Sources */, 82D6FC4C2CD99F7900C925F4 /* BookmarksView.swift in Sources */, 82D6FC4D2CD99F7900C925F4 /* CarouselView.swift in Sources */, @@ -5779,7 +6239,6 @@ D74EA08F2D2E271E002290DD /* ErrorView.swift in Sources */, D73E5E3E2C6A97F4007EB227 /* SearchHeaderView.swift in Sources */, D73E5E3F2C6A97F4007EB227 /* DamusGradient.swift in Sources */, - D73E5E402C6A97F4007EB227 /* AlbyGradient.swift in Sources */, D73E5E412C6A97F4007EB227 /* GoldSupportGradient.swift in Sources */, D73E5E422C6A97F4007EB227 /* PinkGradient.swift in Sources */, D73E5E432C6A97F4007EB227 /* GrayGradient.swift in Sources */, @@ -5877,7 +6336,6 @@ D73E5E982C6A97F4007EB227 /* ActionBarModel.swift in Sources */, D73E5E992C6A97F4007EB227 /* Liked.swift in Sources */, D73E5E9A2C6A97F4007EB227 /* ProfileUpdate.swift in Sources */, - D73E5E9B2C6A97F4007EB227 /* PostBlock.swift in Sources */, 5CB017332D4422DB00A9ED05 /* NWCSettings.swift in Sources */, D73E5E9C2C6A97F4007EB227 /* Reply.swift in Sources */, D73E5E9D2C6A97F4007EB227 /* SearchModel.swift in Sources */, @@ -5942,7 +6400,6 @@ D74E64132DC95CC7004C7892 /* HumanReadableErrors.swift in Sources */, D73E5ED42C6A97F4007EB227 /* TrustedNetworkButton.swift in Sources */, D73E5ED52C6A97F4007EB227 /* GradientFollowButton.swift in Sources */, - D73E5ED62C6A97F4007EB227 /* AlbyButton.swift in Sources */, D73E5ED82C6A97F4007EB227 /* DamusVideoPlayerView.swift in Sources */, D73E5ED92C6A97F4007EB227 /* DamusVideoPlayer.swift in Sources */, D73E5EDA2C6A97F4007EB227 /* DamusVideoCoordinator.swift in Sources */, @@ -6070,7 +6527,6 @@ D73E5F442C6A97F5007EB227 /* BigButton.swift in Sources */, D73E5F8D2C6AA6D7007EB227 /* AddMuteItemView.swift in Sources */, D73E5F452C6A97F5007EB227 /* AddRelayView.swift in Sources */, - D73E5F462C6A97F5007EB227 /* BlocksView.swift in Sources */, D73E5F472C6A97F5007EB227 /* BookmarksView.swift in Sources */, D73E5F482C6A97F5007EB227 /* CarouselView.swift in Sources */, D73E5F492C6A97F5007EB227 /* ConfigView.swift in Sources */, diff --git a/damus/Views/AppAccessibilityIdentifiers.swift b/damus/AppAccessibilityIdentifiers.swift similarity index 100% rename from damus/Views/AppAccessibilityIdentifiers.swift rename to damus/AppAccessibilityIdentifiers.swift diff --git a/damus/Components/Gradients/AlbyGradient.swift b/damus/Components/Gradients/AlbyGradient.swift deleted file mode 100644 index b444db13..00000000 --- a/damus/Components/Gradients/AlbyGradient.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// AlbyGradient.swift -// damus -// -// Created by William Casarin on 2023-05-09. -// - -import SwiftUI - -fileprivate let alby_grad_c1 = hex_col(r: 226, g: 168, b: 122) -fileprivate let alby_grad_c2 = hex_col(r: 249, g: 223, b: 127) -fileprivate let alby_grad = [alby_grad_c2, alby_grad_c1] - -let AlbyGradient: LinearGradient = - LinearGradient(colors: alby_grad, startPoint: .bottomLeading, endPoint: .topTrailing) diff --git a/damus/DIP06/Interests.swift b/damus/Core/DIPs/DIP06/Interests.swift similarity index 100% rename from damus/DIP06/Interests.swift rename to damus/Core/DIPs/DIP06/Interests.swift diff --git a/damus/NIP04/NIP04.swift b/damus/Core/NIPs/NIP04/NIP04.swift similarity index 100% rename from damus/NIP04/NIP04.swift rename to damus/Core/NIPs/NIP04/NIP04.swift diff --git a/damus/NIP10/ThreadReply.swift b/damus/Core/NIPs/NIP10/ThreadReply.swift similarity index 100% rename from damus/NIP10/ThreadReply.swift rename to damus/Core/NIPs/NIP10/ThreadReply.swift diff --git a/damus/NIP37/NIP37Draft.swift b/damus/Core/NIPs/NIP37/NIP37Draft.swift similarity index 100% rename from damus/NIP37/NIP37Draft.swift rename to damus/Core/NIPs/NIP37/NIP37Draft.swift diff --git a/damus/NIP44/NIP44.swift b/damus/Core/NIPs/NIP44/NIP44.swift similarity index 100% rename from damus/NIP44/NIP44.swift rename to damus/Core/NIPs/NIP44/NIP44.swift diff --git a/damus/NIP51/InterestList.swift b/damus/Core/NIPs/NIP51/InterestList.swift similarity index 100% rename from damus/NIP51/InterestList.swift rename to damus/Core/NIPs/NIP51/InterestList.swift diff --git a/damus/NIP65/NIP65.swift b/damus/Core/NIPs/NIP65/NIP65.swift similarity index 100% rename from damus/NIP65/NIP65.swift rename to damus/Core/NIPs/NIP65/NIP65.swift diff --git a/damus/Nostr/NIP98AuthenticatedRequest.swift b/damus/Core/NIPs/NIP98/NIP98AuthenticatedRequest.swift similarity index 100% rename from damus/Nostr/NIP98AuthenticatedRequest.swift rename to damus/Core/NIPs/NIP98/NIP98AuthenticatedRequest.swift diff --git a/damus/Nostr/Nip98HTTPAuth.swift b/damus/Core/NIPs/NIP98/Nip98HTTPAuth.swift similarity index 100% rename from damus/Nostr/Nip98HTTPAuth.swift rename to damus/Core/NIPs/NIP98/Nip98HTTPAuth.swift diff --git a/damus/Nostr/NostrAuth.swift b/damus/Core/NIPs/NIP98/NostrAuth.swift similarity index 100% rename from damus/Nostr/NostrAuth.swift rename to damus/Core/NIPs/NIP98/NostrAuth.swift diff --git a/damus/Models/NostrNetworkManager/NostrNetworkManager.swift b/damus/Core/Networking/NostrNetworkManager/NostrNetworkManager.swift similarity index 100% rename from damus/Models/NostrNetworkManager/NostrNetworkManager.swift rename to damus/Core/Networking/NostrNetworkManager/NostrNetworkManager.swift diff --git a/damus/Models/NostrNetworkManager/SubscriptionManager.swift b/damus/Core/Networking/NostrNetworkManager/SubscriptionManager.swift similarity index 100% rename from damus/Models/NostrNetworkManager/SubscriptionManager.swift rename to damus/Core/Networking/NostrNetworkManager/SubscriptionManager.swift diff --git a/damus/Models/NostrNetworkManager/UserRelayListErrors.swift b/damus/Core/Networking/NostrNetworkManager/UserRelayListErrors.swift similarity index 100% rename from damus/Models/NostrNetworkManager/UserRelayListErrors.swift rename to damus/Core/Networking/NostrNetworkManager/UserRelayListErrors.swift diff --git a/damus/Models/NostrNetworkManager/UserRelayListManager.swift b/damus/Core/Networking/NostrNetworkManager/UserRelayListManager.swift similarity index 100% rename from damus/Models/NostrNetworkManager/UserRelayListManager.swift rename to damus/Core/Networking/NostrNetworkManager/UserRelayListManager.swift diff --git a/damus/Models/CommentItem.swift b/damus/Core/Nostr/CommentItem.swift similarity index 100% rename from damus/Models/CommentItem.swift rename to damus/Core/Nostr/CommentItem.swift diff --git a/damus/ContentParsing.swift b/damus/Core/Nostr/ContentParsing.swift similarity index 100% rename from damus/ContentParsing.swift rename to damus/Core/Nostr/ContentParsing.swift diff --git a/damus/Nostr/CoreData/Damus.xcdatamodeld/Damus.xcdatamodel/contents b/damus/Core/Nostr/CoreData/Damus.xcdatamodeld/Damus.xcdatamodel/contents similarity index 100% rename from damus/Nostr/CoreData/Damus.xcdatamodeld/Damus.xcdatamodel/contents rename to damus/Core/Nostr/CoreData/Damus.xcdatamodeld/Damus.xcdatamodel/contents diff --git a/damus/Nostr/Id.swift b/damus/Core/Nostr/Id.swift similarity index 100% rename from damus/Nostr/Id.swift rename to damus/Core/Nostr/Id.swift diff --git a/damus/Util/Keys.swift b/damus/Core/Nostr/Keys.swift similarity index 100% rename from damus/Util/Keys.swift rename to damus/Core/Nostr/Keys.swift diff --git a/damus/Nostr/MakeZapRequest.swift b/damus/Core/Nostr/MakeZapRequest.swift similarity index 100% rename from damus/Nostr/MakeZapRequest.swift rename to damus/Core/Nostr/MakeZapRequest.swift diff --git a/damus/Models/Mentions.swift b/damus/Core/Nostr/Mentions.swift similarity index 100% rename from damus/Models/Mentions.swift rename to damus/Core/Nostr/Mentions.swift diff --git a/damus/Nostr/Nostr.swift b/damus/Core/Nostr/Nostr.swift similarity index 100% rename from damus/Nostr/Nostr.swift rename to damus/Core/Nostr/Nostr.swift diff --git a/damus/Nostr/NostrEvent+.swift b/damus/Core/Nostr/NostrEvent+.swift similarity index 100% rename from damus/Nostr/NostrEvent+.swift rename to damus/Core/Nostr/NostrEvent+.swift diff --git a/damus/Nostr/NostrEvent.swift b/damus/Core/Nostr/NostrEvent.swift similarity index 100% rename from damus/Nostr/NostrEvent.swift rename to damus/Core/Nostr/NostrEvent.swift diff --git a/damus/Nostr/NostrFilter.swift b/damus/Core/Nostr/NostrFilter.swift similarity index 100% rename from damus/Nostr/NostrFilter.swift rename to damus/Core/Nostr/NostrFilter.swift diff --git a/damus/Nostr/NostrKind.swift b/damus/Core/Nostr/NostrKind.swift similarity index 100% rename from damus/Nostr/NostrKind.swift rename to damus/Core/Nostr/NostrKind.swift diff --git a/damus/Nostr/NostrLink.swift b/damus/Core/Nostr/NostrLink.swift similarity index 100% rename from damus/Nostr/NostrLink.swift rename to damus/Core/Nostr/NostrLink.swift diff --git a/damus/Nostr/NostrRequest.swift b/damus/Core/Nostr/NostrRequest.swift similarity index 100% rename from damus/Nostr/NostrRequest.swift rename to damus/Core/Nostr/NostrRequest.swift diff --git a/damus/Nostr/NostrResponse.swift b/damus/Core/Nostr/NostrResponse.swift similarity index 100% rename from damus/Nostr/NostrResponse.swift rename to damus/Core/Nostr/NostrResponse.swift diff --git a/damus/Nostr/Profiles.swift b/damus/Core/Nostr/Profiles.swift similarity index 100% rename from damus/Nostr/Profiles.swift rename to damus/Core/Nostr/Profiles.swift diff --git a/damus/Nostr/ProofOfWork.swift b/damus/Core/Nostr/ProofOfWork.swift similarity index 100% rename from damus/Nostr/ProofOfWork.swift rename to damus/Core/Nostr/ProofOfWork.swift diff --git a/damus/Nostr/ReferencedId.swift b/damus/Core/Nostr/ReferencedId.swift similarity index 100% rename from damus/Nostr/ReferencedId.swift rename to damus/Core/Nostr/ReferencedId.swift diff --git a/damus/Nostr/Relay.swift b/damus/Core/Nostr/Relay.swift similarity index 100% rename from damus/Nostr/Relay.swift rename to damus/Core/Nostr/Relay.swift diff --git a/damus/Nostr/RelayConnection.swift b/damus/Core/Nostr/RelayConnection.swift similarity index 100% rename from damus/Nostr/RelayConnection.swift rename to damus/Core/Nostr/RelayConnection.swift diff --git a/damus/Nostr/RelayLog.swift b/damus/Core/Nostr/RelayLog.swift similarity index 100% rename from damus/Nostr/RelayLog.swift rename to damus/Core/Nostr/RelayLog.swift diff --git a/damus/Nostr/RelayPool.swift b/damus/Core/Nostr/RelayPool.swift similarity index 100% rename from damus/Nostr/RelayPool.swift rename to damus/Core/Nostr/RelayPool.swift diff --git a/damus/Nostr/RelayURL.swift b/damus/Core/Nostr/RelayURL.swift similarity index 100% rename from damus/Nostr/RelayURL.swift rename to damus/Core/Nostr/RelayURL.swift diff --git a/damus/Nostr/WebSocket.swift b/damus/Core/Nostr/WebSocket.swift similarity index 100% rename from damus/Nostr/WebSocket.swift rename to damus/Core/Nostr/WebSocket.swift diff --git a/damus/Models/DamusCacheManager.swift b/damus/Core/Storage/DamusCacheManager.swift similarity index 100% rename from damus/Models/DamusCacheManager.swift rename to damus/Core/Storage/DamusCacheManager.swift diff --git a/damus/Models/DamusState.swift b/damus/Core/Storage/DamusState.swift similarity index 100% rename from damus/Models/DamusState.swift rename to damus/Core/Storage/DamusState.swift diff --git a/damus/Models/DamusUserDefaults.swift b/damus/Core/Storage/DamusUserDefaults.swift similarity index 100% rename from damus/Models/DamusUserDefaults.swift rename to damus/Core/Storage/DamusUserDefaults.swift diff --git a/damus/Util/KeychainStorage.swift b/damus/Core/Storage/KeychainStorage.swift similarity index 100% rename from damus/Util/KeychainStorage.swift rename to damus/Core/Storage/KeychainStorage.swift diff --git a/damus/Types/Block.swift b/damus/Core/Types/Block.swift similarity index 100% rename from damus/Types/Block.swift rename to damus/Core/Types/Block.swift diff --git a/damus/Types/DamusDuration.swift b/damus/Core/Types/DamusDuration.swift similarity index 100% rename from damus/Types/DamusDuration.swift rename to damus/Core/Types/DamusDuration.swift diff --git a/damus/Types/Ids/IdType.swift b/damus/Core/Types/Ids/IdType.swift similarity index 100% rename from damus/Types/Ids/IdType.swift rename to damus/Core/Types/Ids/IdType.swift diff --git a/damus/Types/Ids/NoteId.swift b/damus/Core/Types/Ids/NoteId.swift similarity index 100% rename from damus/Types/Ids/NoteId.swift rename to damus/Core/Types/Ids/NoteId.swift diff --git a/damus/Types/Ids/Pubkey.swift b/damus/Core/Types/Ids/Pubkey.swift similarity index 100% rename from damus/Types/Ids/Pubkey.swift rename to damus/Core/Types/Ids/Pubkey.swift diff --git a/damus/Types/Ids/Referenced.swift b/damus/Core/Types/Ids/Referenced.swift similarity index 100% rename from damus/Types/Ids/Referenced.swift rename to damus/Core/Types/Ids/Referenced.swift diff --git a/damus/Types/MigratedTypes.swift b/damus/Core/Types/MigratedTypes.swift similarity index 100% rename from damus/Types/MigratedTypes.swift rename to damus/Core/Types/MigratedTypes.swift diff --git a/damus/Models/ActionBarModel.swift b/damus/Features/Actions/ActionBar/Models/ActionBarModel.swift similarity index 100% rename from damus/Models/ActionBarModel.swift rename to damus/Features/Actions/ActionBar/Models/ActionBarModel.swift diff --git a/damus/Views/ActionBar/EventActionBar.swift b/damus/Features/Actions/ActionBar/Views/EventActionBar.swift similarity index 100% rename from damus/Views/ActionBar/EventActionBar.swift rename to damus/Features/Actions/ActionBar/Views/EventActionBar.swift diff --git a/damus/Views/ActionBar/EventDetailBar.swift b/damus/Features/Actions/ActionBar/Views/EventDetailBar.swift similarity index 100% rename from damus/Views/ActionBar/EventDetailBar.swift rename to damus/Features/Actions/ActionBar/Views/EventDetailBar.swift diff --git a/damus/Views/ActionBar/ShareAction.swift b/damus/Features/Actions/ActionBar/Views/ShareAction.swift similarity index 100% rename from damus/Views/ActionBar/ShareAction.swift rename to damus/Features/Actions/ActionBar/Views/ShareAction.swift diff --git a/damus/Models/LikeCounter.swift b/damus/Features/Actions/Reactions/Models/LikeCounter.swift similarity index 100% rename from damus/Models/LikeCounter.swift rename to damus/Features/Actions/Reactions/Models/LikeCounter.swift diff --git a/damus/Models/Liked.swift b/damus/Features/Actions/Reactions/Models/Liked.swift similarity index 100% rename from damus/Models/Liked.swift rename to damus/Features/Actions/Reactions/Models/Liked.swift diff --git a/damus/Views/Reactions/ReactionView.swift b/damus/Features/Actions/Reactions/Views/ReactionView.swift similarity index 100% rename from damus/Views/Reactions/ReactionView.swift rename to damus/Features/Actions/Reactions/Views/ReactionView.swift diff --git a/damus/Views/ReactionsView.swift b/damus/Features/Actions/Reactions/Views/ReactionsView.swift similarity index 100% rename from damus/Views/ReactionsView.swift rename to damus/Features/Actions/Reactions/Views/ReactionsView.swift diff --git a/damus/Models/Report.swift b/damus/Features/Actions/Reports/Models/Report.swift similarity index 100% rename from damus/Models/Report.swift rename to damus/Features/Actions/Reports/Models/Report.swift diff --git a/damus/Views/ReportView.swift b/damus/Features/Actions/Reports/Views/ReportView.swift similarity index 100% rename from damus/Views/ReportView.swift rename to damus/Features/Actions/Reports/Views/ReportView.swift diff --git a/damus/Views/Reposts/QuoteRepostsView.swift b/damus/Features/Actions/Reposts/Views/QuoteRepostsView.swift similarity index 100% rename from damus/Views/Reposts/QuoteRepostsView.swift rename to damus/Features/Actions/Reposts/Views/QuoteRepostsView.swift diff --git a/damus/Views/ActionBar/RepostAction.swift b/damus/Features/Actions/Reposts/Views/RepostAction.swift similarity index 100% rename from damus/Views/ActionBar/RepostAction.swift rename to damus/Features/Actions/Reposts/Views/RepostAction.swift diff --git a/damus/Views/Reposts/RepostView.swift b/damus/Features/Actions/Reposts/Views/RepostView.swift similarity index 100% rename from damus/Views/Reposts/RepostView.swift rename to damus/Features/Actions/Reposts/Views/RepostView.swift diff --git a/damus/Components/Reposted.swift b/damus/Features/Actions/Reposts/Views/Reposted.swift similarity index 100% rename from damus/Components/Reposted.swift rename to damus/Features/Actions/Reposts/Views/Reposted.swift diff --git a/damus/Views/Reposts/RepostedEvent.swift b/damus/Features/Actions/Reposts/Views/RepostedEvent.swift similarity index 100% rename from damus/Views/Reposts/RepostedEvent.swift rename to damus/Features/Actions/Reposts/Views/RepostedEvent.swift diff --git a/damus/Views/RepostsView.swift b/damus/Features/Actions/Reposts/Views/RepostsView.swift similarity index 100% rename from damus/Views/RepostsView.swift rename to damus/Features/Actions/Reposts/Views/RepostsView.swift diff --git a/damus/Models/BookmarksManager.swift b/damus/Features/Bookmarks/Models/BookmarksManager.swift similarity index 100% rename from damus/Models/BookmarksManager.swift rename to damus/Features/Bookmarks/Models/BookmarksManager.swift diff --git a/damus/Views/BookmarksView.swift b/damus/Features/Bookmarks/Views/BookmarksView.swift similarity index 100% rename from damus/Views/BookmarksView.swift rename to damus/Features/Bookmarks/Views/BookmarksView.swift diff --git a/damus/Views/Chat/ChatBubbleView.swift b/damus/Features/Chat/ChatBubbleView.swift similarity index 100% rename from damus/Views/Chat/ChatBubbleView.swift rename to damus/Features/Chat/ChatBubbleView.swift diff --git a/damus/Views/Chat/ChatEventView.swift b/damus/Features/Chat/ChatEventView.swift similarity index 100% rename from damus/Views/Chat/ChatEventView.swift rename to damus/Features/Chat/ChatEventView.swift diff --git a/damus/Views/Chat/ChatroomThreadView.swift b/damus/Features/Chat/ChatroomThreadView.swift similarity index 100% rename from damus/Views/Chat/ChatroomThreadView.swift rename to damus/Features/Chat/ChatroomThreadView.swift diff --git a/damus/Models/ThreadModel.swift b/damus/Features/Chat/Models/ThreadModel.swift similarity index 100% rename from damus/Models/ThreadModel.swift rename to damus/Features/Chat/Models/ThreadModel.swift diff --git a/damus/Views/Chat/ReplyQuoteView.swift b/damus/Features/Chat/ReplyQuoteView.swift similarity index 100% rename from damus/Views/Chat/ReplyQuoteView.swift rename to damus/Features/Chat/ReplyQuoteView.swift diff --git a/damus/Models/DirectMessageModel.swift b/damus/Features/DMs/Models/DirectMessageModel.swift similarity index 100% rename from damus/Models/DirectMessageModel.swift rename to damus/Features/DMs/Models/DirectMessageModel.swift diff --git a/damus/Models/DirectMessagesModel.swift b/damus/Features/DMs/Models/DirectMessagesModel.swift similarity index 100% rename from damus/Models/DirectMessagesModel.swift rename to damus/Features/DMs/Models/DirectMessagesModel.swift diff --git a/damus/Views/DMChatView.swift b/damus/Features/DMs/Views/DMChatView.swift similarity index 100% rename from damus/Views/DMChatView.swift rename to damus/Features/DMs/Views/DMChatView.swift diff --git a/damus/Views/DMView.swift b/damus/Features/DMs/Views/DMView.swift similarity index 100% rename from damus/Views/DMView.swift rename to damus/Features/DMs/Views/DMView.swift diff --git a/damus/Views/DirectMessagesView.swift b/damus/Features/DMs/Views/DirectMessagesView.swift similarity index 100% rename from damus/Views/DirectMessagesView.swift rename to damus/Features/DMs/Views/DirectMessagesView.swift diff --git a/damus/Views/Events/BuilderEventView.swift b/damus/Features/Events/BuilderEventView.swift similarity index 100% rename from damus/Views/Events/BuilderEventView.swift rename to damus/Features/Events/BuilderEventView.swift diff --git a/damus/Views/Events/Components/EventTop.swift b/damus/Features/Events/Components/EventTop.swift similarity index 100% rename from damus/Views/Events/Components/EventTop.swift rename to damus/Features/Events/Components/EventTop.swift diff --git a/damus/Views/Events/Components/ProxyView.swift b/damus/Features/Events/Components/ProxyView.swift similarity index 100% rename from damus/Views/Events/Components/ProxyView.swift rename to damus/Features/Events/Components/ProxyView.swift diff --git a/damus/Views/Events/Components/RelativeTime.swift b/damus/Features/Events/Components/RelativeTime.swift similarity index 100% rename from damus/Views/Events/Components/RelativeTime.swift rename to damus/Features/Events/Components/RelativeTime.swift diff --git a/damus/Views/Events/Components/ReplyDescription.swift b/damus/Features/Events/Components/ReplyDescription.swift similarity index 100% rename from damus/Views/Events/Components/ReplyDescription.swift rename to damus/Features/Events/Components/ReplyDescription.swift diff --git a/damus/Views/Events/Components/ReplyPart.swift b/damus/Features/Events/Components/ReplyPart.swift similarity index 100% rename from damus/Views/Events/Components/ReplyPart.swift rename to damus/Features/Events/Components/ReplyPart.swift diff --git a/damus/Views/Events/Components/TimeDot.swift b/damus/Features/Events/Components/TimeDot.swift similarity index 100% rename from damus/Views/Events/Components/TimeDot.swift rename to damus/Features/Events/Components/TimeDot.swift diff --git a/damus/Views/Events/EventBody.swift b/damus/Features/Events/EventBody.swift similarity index 100% rename from damus/Views/Events/EventBody.swift rename to damus/Features/Events/EventBody.swift diff --git a/damus/Views/EventDetailView.swift b/damus/Features/Events/EventDetailView.swift similarity index 100% rename from damus/Views/EventDetailView.swift rename to damus/Features/Events/EventDetailView.swift diff --git a/damus/Views/Events/EventLoaderView.swift b/damus/Features/Events/EventLoaderView.swift similarity index 100% rename from damus/Views/Events/EventLoaderView.swift rename to damus/Features/Events/EventLoaderView.swift diff --git a/damus/Views/Events/EventMenu.swift b/damus/Features/Events/EventMenu.swift similarity index 100% rename from damus/Views/Events/EventMenu.swift rename to damus/Features/Events/EventMenu.swift diff --git a/damus/Views/Events/EventMutingContainerView.swift b/damus/Features/Events/EventMutingContainerView.swift similarity index 100% rename from damus/Views/Events/EventMutingContainerView.swift rename to damus/Features/Events/EventMutingContainerView.swift diff --git a/damus/Views/Events/EventProfile.swift b/damus/Features/Events/EventProfile.swift similarity index 100% rename from damus/Views/Events/EventProfile.swift rename to damus/Features/Events/EventProfile.swift diff --git a/damus/Views/Events/EventShell.swift b/damus/Features/Events/EventShell.swift similarity index 100% rename from damus/Views/Events/EventShell.swift rename to damus/Features/Events/EventShell.swift diff --git a/damus/Views/EventView.swift b/damus/Features/Events/EventView.swift similarity index 100% rename from damus/Views/EventView.swift rename to damus/Features/Events/EventView.swift diff --git a/damus/Views/Events/MentionView.swift b/damus/Features/Events/MentionView.swift similarity index 100% rename from damus/Views/Events/MentionView.swift rename to damus/Features/Events/MentionView.swift diff --git a/damus/Models/EventsModel.swift b/damus/Features/Events/Models/EventsModel.swift similarity index 100% rename from damus/Models/EventsModel.swift rename to damus/Features/Events/Models/EventsModel.swift diff --git a/damus/Views/LoadableNostrEventView.swift b/damus/Features/Events/Models/LoadableNostrEventView.swift similarity index 100% rename from damus/Views/LoadableNostrEventView.swift rename to damus/Features/Events/Models/LoadableNostrEventView.swift diff --git a/damus/Models/NoteContent.swift b/damus/Features/Events/Models/NoteContent.swift similarity index 100% rename from damus/Models/NoteContent.swift rename to damus/Features/Events/Models/NoteContent.swift diff --git a/damus/Views/NoteContentView.swift b/damus/Features/Events/NoteContentView.swift similarity index 100% rename from damus/Views/NoteContentView.swift rename to damus/Features/Events/NoteContentView.swift diff --git a/damus/Views/Events/SelectedEventView.swift b/damus/Features/Events/SelectedEventView.swift similarity index 100% rename from damus/Views/Events/SelectedEventView.swift rename to damus/Features/Events/SelectedEventView.swift diff --git a/damus/Views/Events/TextEvent.swift b/damus/Features/Events/TextEvent.swift similarity index 100% rename from damus/Views/Events/TextEvent.swift rename to damus/Features/Events/TextEvent.swift diff --git a/damus/Views/Events/WideEventView.swift b/damus/Features/Events/WideEventView.swift similarity index 100% rename from damus/Views/Events/WideEventView.swift rename to damus/Features/Events/WideEventView.swift diff --git a/damus/Models/FollowPackEvent.swift b/damus/Features/FollowPack/Models/FollowPackEvent.swift similarity index 100% rename from damus/Models/FollowPackEvent.swift rename to damus/Features/FollowPack/Models/FollowPackEvent.swift diff --git a/damus/Models/FollowPackModel.swift b/damus/Features/FollowPack/Models/FollowPackModel.swift similarity index 100% rename from damus/Models/FollowPackModel.swift rename to damus/Features/FollowPack/Models/FollowPackModel.swift diff --git a/damus/Views/Events/FollowPack/FollowPackPreview.swift b/damus/Features/FollowPack/Views/FollowPackPreview.swift similarity index 100% rename from damus/Views/Events/FollowPack/FollowPackPreview.swift rename to damus/Features/FollowPack/Views/FollowPackPreview.swift diff --git a/damus/Views/Events/FollowPack/FollowPackTimeline.swift b/damus/Features/FollowPack/Views/FollowPackTimeline.swift similarity index 100% rename from damus/Views/Events/FollowPack/FollowPackTimeline.swift rename to damus/Features/FollowPack/Views/FollowPackTimeline.swift diff --git a/damus/Views/Events/FollowPack/FollowPackView.swift b/damus/Features/FollowPack/Views/FollowPackView.swift similarity index 100% rename from damus/Views/Events/FollowPack/FollowPackView.swift rename to damus/Features/FollowPack/Views/FollowPackView.swift diff --git a/damus/Models/Contacts+.swift b/damus/Features/Follows/Models/Contacts+.swift similarity index 100% rename from damus/Models/Contacts+.swift rename to damus/Features/Follows/Models/Contacts+.swift diff --git a/damus/Models/Contacts.swift b/damus/Features/Follows/Models/Contacts.swift similarity index 100% rename from damus/Models/Contacts.swift rename to damus/Features/Follows/Models/Contacts.swift diff --git a/damus/Models/FollowState.swift b/damus/Features/Follows/Models/FollowState.swift similarity index 100% rename from damus/Models/FollowState.swift rename to damus/Features/Follows/Models/FollowState.swift diff --git a/damus/Models/FollowTarget.swift b/damus/Features/Follows/Models/FollowTarget.swift similarity index 100% rename from damus/Models/FollowTarget.swift rename to damus/Features/Follows/Models/FollowTarget.swift diff --git a/damus/Models/FollowersModel.swift b/damus/Features/Follows/Models/FollowersModel.swift similarity index 100% rename from damus/Models/FollowersModel.swift rename to damus/Features/Follows/Models/FollowersModel.swift diff --git a/damus/Models/FollowingModel.swift b/damus/Features/Follows/Models/FollowingModel.swift similarity index 100% rename from damus/Models/FollowingModel.swift rename to damus/Features/Follows/Models/FollowingModel.swift diff --git a/damus/Views/FollowingView.swift b/damus/Features/Follows/Views/FollowingView.swift similarity index 100% rename from damus/Views/FollowingView.swift rename to damus/Features/Follows/Views/FollowingView.swift diff --git a/damus/Models/HighlightEvent.swift b/damus/Features/Highlight/Models/HighlightEvent.swift similarity index 100% rename from damus/Models/HighlightEvent.swift rename to damus/Features/Highlight/Models/HighlightEvent.swift diff --git a/damus/Views/Events/Highlight/HighlightDescription.swift b/damus/Features/Highlight/Views/HighlightDescription.swift similarity index 100% rename from damus/Views/Events/Highlight/HighlightDescription.swift rename to damus/Features/Highlight/Views/HighlightDescription.swift diff --git a/damus/Views/Events/Highlight/HighlightDraftContentView.swift b/damus/Features/Highlight/Views/HighlightDraftContentView.swift similarity index 100% rename from damus/Views/Events/Highlight/HighlightDraftContentView.swift rename to damus/Features/Highlight/Views/HighlightDraftContentView.swift diff --git a/damus/Views/Events/Highlight/HighlightEventRef.swift b/damus/Features/Highlight/Views/HighlightEventRef.swift similarity index 100% rename from damus/Views/Events/Highlight/HighlightEventRef.swift rename to damus/Features/Highlight/Views/HighlightEventRef.swift diff --git a/damus/Views/Events/Highlight/HighlightLink.swift b/damus/Features/Highlight/Views/HighlightLink.swift similarity index 100% rename from damus/Views/Events/Highlight/HighlightLink.swift rename to damus/Features/Highlight/Views/HighlightLink.swift diff --git a/damus/Views/Events/Highlight/HighlightView.swift b/damus/Features/Highlight/Views/HighlightView.swift similarity index 100% rename from damus/Views/Events/Highlight/HighlightView.swift rename to damus/Features/Highlight/Views/HighlightView.swift diff --git a/damus/Models/LongformEvent.swift b/damus/Features/Longform/Models/LongformEvent.swift similarity index 100% rename from damus/Models/LongformEvent.swift rename to damus/Features/Longform/Models/LongformEvent.swift diff --git a/damus/Views/Events/Longform/LongformPreview.swift b/damus/Features/Longform/Views/LongformPreview.swift similarity index 100% rename from damus/Views/Events/Longform/LongformPreview.swift rename to damus/Features/Longform/Views/LongformPreview.swift diff --git a/damus/Views/Events/Longform/LongformView.swift b/damus/Features/Longform/Views/LongformView.swift similarity index 100% rename from damus/Views/Events/Longform/LongformView.swift rename to damus/Features/Longform/Views/LongformView.swift diff --git a/damus/Util/Lists.swift b/damus/Features/Muting/Models/Lists.swift similarity index 100% rename from damus/Util/Lists.swift rename to damus/Features/Muting/Models/Lists.swift diff --git a/damus/Models/MuteItem.swift b/damus/Features/Muting/Models/MuteItem.swift similarity index 100% rename from damus/Models/MuteItem.swift rename to damus/Features/Muting/Models/MuteItem.swift diff --git a/damus/Models/MutedThreadsManager.swift b/damus/Features/Muting/Models/MutedThreadsManager.swift similarity index 100% rename from damus/Models/MutedThreadsManager.swift rename to damus/Features/Muting/Models/MutedThreadsManager.swift diff --git a/damus/Models/MutelistManager.swift b/damus/Features/Muting/Models/MutelistManager.swift similarity index 100% rename from damus/Models/MutelistManager.swift rename to damus/Features/Muting/Models/MutelistManager.swift diff --git a/damus/Views/Muting/AddMuteItemView.swift b/damus/Features/Muting/Views/AddMuteItemView.swift similarity index 100% rename from damus/Views/Muting/AddMuteItemView.swift rename to damus/Features/Muting/Views/AddMuteItemView.swift diff --git a/damus/Views/Muting/MuteDurationMenu.swift b/damus/Features/Muting/Views/MuteDurationMenu.swift similarity index 100% rename from damus/Views/Muting/MuteDurationMenu.swift rename to damus/Features/Muting/Views/MuteDurationMenu.swift diff --git a/damus/Views/Muting/MutelistView.swift b/damus/Features/Muting/Views/MutelistView.swift similarity index 100% rename from damus/Views/Muting/MutelistView.swift rename to damus/Features/Muting/Views/MutelistView.swift diff --git a/damus/Util/NIP05.swift b/damus/Features/NIP05/Models/NIP05.swift similarity index 100% rename from damus/Util/NIP05.swift rename to damus/Features/NIP05/Models/NIP05.swift diff --git a/damus/Models/NIP05DomainEventsModel.swift b/damus/Features/NIP05/Models/NIP05DomainEventsModel.swift similarity index 100% rename from damus/Models/NIP05DomainEventsModel.swift rename to damus/Features/NIP05/Models/NIP05DomainEventsModel.swift diff --git a/damus/Views/NIP05DomainPubkeysView.swift b/damus/Features/NIP05/Views/NIP05DomainPubkeysView.swift similarity index 100% rename from damus/Views/NIP05DomainPubkeysView.swift rename to damus/Features/NIP05/Views/NIP05DomainPubkeysView.swift diff --git a/damus/Views/NIP05DomainTimelineHeaderView.swift b/damus/Features/NIP05/Views/NIP05DomainTimelineHeaderView.swift similarity index 100% rename from damus/Views/NIP05DomainTimelineHeaderView.swift rename to damus/Features/NIP05/Views/NIP05DomainTimelineHeaderView.swift diff --git a/damus/Views/NIP05DomainTimelineView.swift b/damus/Features/NIP05/Views/NIP05DomainTimelineView.swift similarity index 100% rename from damus/Views/NIP05DomainTimelineView.swift rename to damus/Features/NIP05/Views/NIP05DomainTimelineView.swift diff --git a/damus/Views/NostrScript/LoadScript.swift b/damus/Features/NostrScript/LoadScript.swift similarity index 100% rename from damus/Views/NostrScript/LoadScript.swift rename to damus/Features/NostrScript/LoadScript.swift diff --git a/damus/Models/Notifications/EventGroup.swift b/damus/Features/Notifications/Models/EventGroup.swift similarity index 100% rename from damus/Models/Notifications/EventGroup.swift rename to damus/Features/Notifications/Models/EventGroup.swift diff --git a/damus/Models/Notifications/NotificationStatusModel.swift b/damus/Features/Notifications/Models/NotificationStatusModel.swift similarity index 100% rename from damus/Models/Notifications/NotificationStatusModel.swift rename to damus/Features/Notifications/Models/NotificationStatusModel.swift diff --git a/damus/Models/NotificationsManager.swift b/damus/Features/Notifications/Models/NotificationsManager.swift similarity index 100% rename from damus/Models/NotificationsManager.swift rename to damus/Features/Notifications/Models/NotificationsManager.swift diff --git a/damus/Models/NotificationsModel.swift b/damus/Features/Notifications/Models/NotificationsModel.swift similarity index 100% rename from damus/Models/NotificationsModel.swift rename to damus/Features/Notifications/Models/NotificationsModel.swift diff --git a/damus/Models/PushNotificationClient.swift b/damus/Features/Notifications/Models/PushNotificationClient.swift similarity index 100% rename from damus/Models/PushNotificationClient.swift rename to damus/Features/Notifications/Models/PushNotificationClient.swift diff --git a/damus/Models/Notifications/ZapGroup.swift b/damus/Features/Notifications/Models/ZapGroup.swift similarity index 100% rename from damus/Models/Notifications/ZapGroup.swift rename to damus/Features/Notifications/Models/ZapGroup.swift diff --git a/damus/Views/Notifications/DamusAppNotificationView.swift b/damus/Features/Notifications/Views/DamusAppNotificationView.swift similarity index 100% rename from damus/Views/Notifications/DamusAppNotificationView.swift rename to damus/Features/Notifications/Views/DamusAppNotificationView.swift diff --git a/damus/Views/Notifications/EventGroupView.swift b/damus/Features/Notifications/Views/EventGroupView.swift similarity index 100% rename from damus/Views/Notifications/EventGroupView.swift rename to damus/Features/Notifications/Views/EventGroupView.swift diff --git a/damus/Views/Notifications/NotificationItemView.swift b/damus/Features/Notifications/Views/NotificationItemView.swift similarity index 100% rename from damus/Views/Notifications/NotificationItemView.swift rename to damus/Features/Notifications/Views/NotificationItemView.swift diff --git a/damus/Views/Notifications/NotificationsView.swift b/damus/Features/Notifications/Views/NotificationsView.swift similarity index 100% rename from damus/Views/Notifications/NotificationsView.swift rename to damus/Features/Notifications/Views/NotificationsView.swift diff --git a/damus/Views/Notifications/ProfilePicturesView.swift b/damus/Features/Notifications/Views/ProfilePicturesView.swift similarity index 100% rename from damus/Views/Notifications/ProfilePicturesView.swift rename to damus/Features/Notifications/Views/ProfilePicturesView.swift diff --git a/damus/Models/CreateAccountModel.swift b/damus/Features/Onboarding/Models/CreateAccountModel.swift similarity index 100% rename from damus/Models/CreateAccountModel.swift rename to damus/Features/Onboarding/Models/CreateAccountModel.swift diff --git a/damus/Views/Onboarding/OnboardingContentSettings.swift b/damus/Features/Onboarding/OnboardingContentSettings.swift similarity index 100% rename from damus/Views/Onboarding/OnboardingContentSettings.swift rename to damus/Features/Onboarding/OnboardingContentSettings.swift diff --git a/damus/Views/Onboarding/SuggestedUsersViewModel.swift b/damus/Features/Onboarding/SuggestedUsersViewModel.swift similarity index 100% rename from damus/Views/Onboarding/SuggestedUsersViewModel.swift rename to damus/Features/Onboarding/SuggestedUsersViewModel.swift diff --git a/damus/Views/CreateAccountView.swift b/damus/Features/Onboarding/Views/CreateAccountView.swift similarity index 100% rename from damus/Views/CreateAccountView.swift rename to damus/Features/Onboarding/Views/CreateAccountView.swift diff --git a/damus/Views/EULAView.swift b/damus/Features/Onboarding/Views/EULAView.swift similarity index 100% rename from damus/Views/EULAView.swift rename to damus/Features/Onboarding/Views/EULAView.swift diff --git a/damus/Views/Onboarding/InterestSelectionView.swift b/damus/Features/Onboarding/Views/InterestSelectionView.swift similarity index 100% rename from damus/Views/Onboarding/InterestSelectionView.swift rename to damus/Features/Onboarding/Views/InterestSelectionView.swift diff --git a/damus/Views/LoginView.swift b/damus/Features/Onboarding/Views/LoginView.swift similarity index 100% rename from damus/Views/LoginView.swift rename to damus/Features/Onboarding/Views/LoginView.swift diff --git a/damus/Views/Onboarding/OnboardingSuggestionsView.swift b/damus/Features/Onboarding/Views/OnboardingSuggestionsView.swift similarity index 100% rename from damus/Views/Onboarding/OnboardingSuggestionsView.swift rename to damus/Features/Onboarding/Views/OnboardingSuggestionsView.swift diff --git a/damus/Views/SaveKeysView.swift b/damus/Features/Onboarding/Views/SaveKeysView.swift similarity index 100% rename from damus/Views/SaveKeysView.swift rename to damus/Features/Onboarding/Views/SaveKeysView.swift diff --git a/damus/Views/SetupView.swift b/damus/Features/Onboarding/Views/SetupView.swift similarity index 100% rename from damus/Views/SetupView.swift rename to damus/Features/Onboarding/Views/SetupView.swift diff --git a/damus/Views/SuggestedHashtagsView.swift b/damus/Features/Onboarding/Views/SuggestedHashtagsView.swift similarity index 100% rename from damus/Views/SuggestedHashtagsView.swift rename to damus/Features/Onboarding/Views/SuggestedHashtagsView.swift diff --git a/damus/Views/Onboarding/SuggestedUserView.swift b/damus/Features/Onboarding/Views/SuggestedUserView.swift similarity index 100% rename from damus/Views/Onboarding/SuggestedUserView.swift rename to damus/Features/Onboarding/Views/SuggestedUserView.swift diff --git a/damus/Views/Onboarding/follow-packs.jsonl b/damus/Features/Onboarding/follow-packs.jsonl similarity index 100% rename from damus/Views/Onboarding/follow-packs.jsonl rename to damus/Features/Onboarding/follow-packs.jsonl diff --git a/damus/Models/DraftsModel.swift b/damus/Features/Posting/Models/DraftsModel.swift similarity index 100% rename from damus/Models/DraftsModel.swift rename to damus/Features/Posting/Models/DraftsModel.swift diff --git a/damus/Models/Post.swift b/damus/Features/Posting/Models/Post.swift similarity index 100% rename from damus/Models/Post.swift rename to damus/Features/Posting/Models/Post.swift diff --git a/damus/Util/PostBox.swift b/damus/Features/Posting/Models/PostBox.swift similarity index 100% rename from damus/Util/PostBox.swift rename to damus/Features/Posting/Models/PostBox.swift diff --git a/damus/Models/Reply.swift b/damus/Features/Posting/Models/Reply.swift similarity index 100% rename from damus/Models/Reply.swift rename to damus/Features/Posting/Models/Reply.swift diff --git a/damus/Util/ReplyCounter.swift b/damus/Features/Posting/Models/ReplyCounter.swift similarity index 100% rename from damus/Util/ReplyCounter.swift rename to damus/Features/Posting/Models/ReplyCounter.swift diff --git a/damus/Models/ReplyMap.swift b/damus/Features/Posting/Models/ReplyMap.swift similarity index 100% rename from damus/Models/ReplyMap.swift rename to damus/Features/Posting/Models/ReplyMap.swift diff --git a/damus/Views/Posting/AutoSaveIndicatorView.swift b/damus/Features/Posting/Views/AutoSaveIndicatorView.swift similarity index 100% rename from damus/Views/Posting/AutoSaveIndicatorView.swift rename to damus/Features/Posting/Views/AutoSaveIndicatorView.swift diff --git a/damus/Views/ParticipantsView.swift b/damus/Features/Posting/Views/ParticipantsView.swift similarity index 100% rename from damus/Views/ParticipantsView.swift rename to damus/Features/Posting/Views/ParticipantsView.swift diff --git a/damus/Views/PostView.swift b/damus/Features/Posting/Views/PostView.swift similarity index 100% rename from damus/Views/PostView.swift rename to damus/Features/Posting/Views/PostView.swift diff --git a/damus/Views/ReplyView.swift b/damus/Features/Posting/Views/ReplyView.swift similarity index 100% rename from damus/Views/ReplyView.swift rename to damus/Features/Posting/Views/ReplyView.swift diff --git a/damus/Views/Posting/UserSearch.swift b/damus/Features/Posting/Views/UserSearch.swift similarity index 100% rename from damus/Views/Posting/UserSearch.swift rename to damus/Features/Posting/Views/UserSearch.swift diff --git a/damus/Models/ProfileModel.swift b/damus/Features/Profile/Models/ProfileModel.swift similarity index 100% rename from damus/Models/ProfileModel.swift rename to damus/Features/Profile/Models/ProfileModel.swift diff --git a/damus/Models/ProfileUpdate.swift b/damus/Features/Profile/Models/ProfileUpdate.swift similarity index 100% rename from damus/Models/ProfileUpdate.swift rename to damus/Features/Profile/Models/ProfileUpdate.swift diff --git a/damus/Views/Profile/AboutView.swift b/damus/Features/Profile/Views/AboutView.swift similarity index 100% rename from damus/Views/Profile/AboutView.swift rename to damus/Features/Profile/Views/AboutView.swift diff --git a/damus/Views/Profile/CondensedProfilePicturesView.swift b/damus/Features/Profile/Views/CondensedProfilePicturesView.swift similarity index 100% rename from damus/Views/Profile/CondensedProfilePicturesView.swift rename to damus/Features/Profile/Views/CondensedProfilePicturesView.swift diff --git a/damus/Views/Profile/EditMetadataView.swift b/damus/Features/Profile/Views/EditMetadataView.swift similarity index 100% rename from damus/Views/Profile/EditMetadataView.swift rename to damus/Features/Profile/Views/EditMetadataView.swift diff --git a/damus/Views/Profile/EditPictureControl.swift b/damus/Features/Profile/Views/EditPictureControl.swift similarity index 100% rename from damus/Views/Profile/EditPictureControl.swift rename to damus/Features/Profile/Views/EditPictureControl.swift diff --git a/damus/Views/Profile/EventProfileName.swift b/damus/Features/Profile/Views/EventProfileName.swift similarity index 100% rename from damus/Views/Profile/EventProfileName.swift rename to damus/Features/Profile/Views/EventProfileName.swift diff --git a/damus/Views/Profile/FriendIcon.swift b/damus/Features/Profile/Views/FriendIcon.swift similarity index 100% rename from damus/Views/Profile/FriendIcon.swift rename to damus/Features/Profile/Views/FriendIcon.swift diff --git a/damus/Views/Profile/MaybeAnonPfpView.swift b/damus/Features/Profile/Views/MaybeAnonPfpView.swift similarity index 100% rename from damus/Views/Profile/MaybeAnonPfpView.swift rename to damus/Features/Profile/Views/MaybeAnonPfpView.swift diff --git a/damus/Views/ProfileActionSheetView.swift b/damus/Features/Profile/Views/ProfileActionSheetView.swift similarity index 100% rename from damus/Views/ProfileActionSheetView.swift rename to damus/Features/Profile/Views/ProfileActionSheetView.swift diff --git a/damus/Views/Profile/ProfileEditButton.swift b/damus/Features/Profile/Views/ProfileEditButton.swift similarity index 100% rename from damus/Views/Profile/ProfileEditButton.swift rename to damus/Features/Profile/Views/ProfileEditButton.swift diff --git a/damus/Views/Profile/ProfileName.swift b/damus/Features/Profile/Views/ProfileName.swift similarity index 100% rename from damus/Views/Profile/ProfileName.swift rename to damus/Features/Profile/Views/ProfileName.swift diff --git a/damus/Views/Profile/ProfileNameView.swift b/damus/Features/Profile/Views/ProfileNameView.swift similarity index 100% rename from damus/Views/Profile/ProfileNameView.swift rename to damus/Features/Profile/Views/ProfileNameView.swift diff --git a/damus/Views/Profile/ProfilePicView.swift b/damus/Features/Profile/Views/ProfilePicView.swift similarity index 100% rename from damus/Views/Profile/ProfilePicView.swift rename to damus/Features/Profile/Views/ProfilePicView.swift diff --git a/damus/Views/Profile/ProfilePictureSelector.swift b/damus/Features/Profile/Views/ProfilePictureSelector.swift similarity index 100% rename from damus/Views/Profile/ProfilePictureSelector.swift rename to damus/Features/Profile/Views/ProfilePictureSelector.swift diff --git a/damus/Views/Profile/ProfileView.swift b/damus/Features/Profile/Views/ProfileView.swift similarity index 100% rename from damus/Views/Profile/ProfileView.swift rename to damus/Features/Profile/Views/ProfileView.swift diff --git a/damus/Models/Purple/DamusPurple.swift b/damus/Features/Purple/Models/DamusPurple.swift similarity index 100% rename from damus/Models/Purple/DamusPurple.swift rename to damus/Features/Purple/Models/DamusPurple.swift diff --git a/damus/Models/Purple/DamusPurpleEnvironment.swift b/damus/Features/Purple/Models/DamusPurpleEnvironment.swift similarity index 100% rename from damus/Models/Purple/DamusPurpleEnvironment.swift rename to damus/Features/Purple/Models/DamusPurpleEnvironment.swift diff --git a/damus/Models/Purple/DamusPurpleURL.swift b/damus/Features/Purple/Models/DamusPurpleURL.swift similarity index 100% rename from damus/Models/Purple/DamusPurpleURL.swift rename to damus/Features/Purple/Models/DamusPurpleURL.swift diff --git a/damus/Models/Purple/Extensions/DamusPurpleNotificationManagement.swift b/damus/Features/Purple/Models/Extensions/DamusPurpleNotificationManagement.swift similarity index 100% rename from damus/Models/Purple/Extensions/DamusPurpleNotificationManagement.swift rename to damus/Features/Purple/Models/Extensions/DamusPurpleNotificationManagement.swift diff --git a/damus/Models/Purple/PurpleStoreKitManager.swift b/damus/Features/Purple/Models/PurpleStoreKitManager.swift similarity index 100% rename from damus/Models/Purple/PurpleStoreKitManager.swift rename to damus/Features/Purple/Models/PurpleStoreKitManager.swift diff --git a/damus/Models/Purple/StoreObserver.swift b/damus/Features/Purple/Models/StoreObserver.swift similarity index 100% rename from damus/Models/Purple/StoreObserver.swift rename to damus/Features/Purple/Models/StoreObserver.swift diff --git a/damus/Views/Purple/DamusPurpleAccountView.swift b/damus/Features/Purple/Views/DamusPurpleAccountView.swift similarity index 100% rename from damus/Views/Purple/DamusPurpleAccountView.swift rename to damus/Features/Purple/Views/DamusPurpleAccountView.swift diff --git a/damus/Views/Purple/DamusPurpleNewUserOnboardingView.swift b/damus/Features/Purple/Views/DamusPurpleNewUserOnboardingView.swift similarity index 100% rename from damus/Views/Purple/DamusPurpleNewUserOnboardingView.swift rename to damus/Features/Purple/Views/DamusPurpleNewUserOnboardingView.swift diff --git a/damus/Views/Purple/DamusPurpleTranslationSetupView.swift b/damus/Features/Purple/Views/DamusPurpleTranslationSetupView.swift similarity index 100% rename from damus/Views/Purple/DamusPurpleTranslationSetupView.swift rename to damus/Features/Purple/Views/DamusPurpleTranslationSetupView.swift diff --git a/damus/Views/Purple/DamusPurpleURLSheetView.swift b/damus/Features/Purple/Views/DamusPurpleURLSheetView.swift similarity index 100% rename from damus/Views/Purple/DamusPurpleURLSheetView.swift rename to damus/Features/Purple/Views/DamusPurpleURLSheetView.swift diff --git a/damus/Views/Purple/DamusPurpleVerifyNpubView.swift b/damus/Features/Purple/Views/DamusPurpleVerifyNpubView.swift similarity index 100% rename from damus/Views/Purple/DamusPurpleVerifyNpubView.swift rename to damus/Features/Purple/Views/DamusPurpleVerifyNpubView.swift diff --git a/damus/Views/Purple/DamusPurpleView.swift b/damus/Features/Purple/Views/DamusPurpleView.swift similarity index 100% rename from damus/Views/Purple/DamusPurpleView.swift rename to damus/Features/Purple/Views/DamusPurpleView.swift diff --git a/damus/Views/Purple/DamusPurpleWelcomeView.swift b/damus/Features/Purple/Views/DamusPurpleWelcomeView.swift similarity index 100% rename from damus/Views/Purple/DamusPurpleWelcomeView.swift rename to damus/Features/Purple/Views/DamusPurpleWelcomeView.swift diff --git a/damus/Views/Purple/Detail/IAPProductStateView.swift b/damus/Features/Purple/Views/Detail/IAPProductStateView.swift similarity index 100% rename from damus/Views/Purple/Detail/IAPProductStateView.swift rename to damus/Features/Purple/Views/Detail/IAPProductStateView.swift diff --git a/damus/Views/Purple/Detail/LogoView.swift b/damus/Features/Purple/Views/Detail/LogoView.swift similarity index 100% rename from damus/Views/Purple/Detail/LogoView.swift rename to damus/Features/Purple/Views/Detail/LogoView.swift diff --git a/damus/Views/Purple/Detail/MarketingContentView.swift b/damus/Features/Purple/Views/Detail/MarketingContentView.swift similarity index 100% rename from damus/Views/Purple/Detail/MarketingContentView.swift rename to damus/Features/Purple/Views/Detail/MarketingContentView.swift diff --git a/damus/Views/Purple/Detail/PurpleBackdrop.swift b/damus/Features/Purple/Views/Detail/PurpleBackdrop.swift similarity index 100% rename from damus/Views/Purple/Detail/PurpleBackdrop.swift rename to damus/Features/Purple/Views/Detail/PurpleBackdrop.swift diff --git a/damus/Views/Purple/Detail/PurpleViewPrimitives.swift b/damus/Features/Purple/Views/Detail/PurpleViewPrimitives.swift similarity index 100% rename from damus/Views/Purple/Detail/PurpleViewPrimitives.swift rename to damus/Features/Purple/Views/Detail/PurpleViewPrimitives.swift diff --git a/damus/Util/Relays/RelayBootstrap.swift b/damus/Features/Relays/Models/RelayBootstrap.swift similarity index 100% rename from damus/Util/Relays/RelayBootstrap.swift rename to damus/Features/Relays/Models/RelayBootstrap.swift diff --git a/damus/Util/Relays/RelayFilters.swift b/damus/Features/Relays/Models/RelayFilters.swift similarity index 100% rename from damus/Util/Relays/RelayFilters.swift rename to damus/Features/Relays/Models/RelayFilters.swift diff --git a/damus/Util/Relays/RelayModel.swift b/damus/Features/Relays/Models/RelayModel.swift similarity index 100% rename from damus/Util/Relays/RelayModel.swift rename to damus/Features/Relays/Models/RelayModel.swift diff --git a/damus/Util/Relays/RelayModelCache.swift b/damus/Features/Relays/Models/RelayModelCache.swift similarity index 100% rename from damus/Util/Relays/RelayModelCache.swift rename to damus/Features/Relays/Models/RelayModelCache.swift diff --git a/damus/Models/SignalModel.swift b/damus/Features/Relays/Models/SignalModel.swift similarity index 100% rename from damus/Models/SignalModel.swift rename to damus/Features/Relays/Models/SignalModel.swift diff --git a/damus/Views/AddRelayView.swift b/damus/Features/Relays/Views/AddRelayView.swift similarity index 100% rename from damus/Views/AddRelayView.swift rename to damus/Features/Relays/Views/AddRelayView.swift diff --git a/damus/Views/Relays/Detail/RelayAdminDetail.swift b/damus/Features/Relays/Views/Detail/RelayAdminDetail.swift similarity index 100% rename from damus/Views/Relays/Detail/RelayAdminDetail.swift rename to damus/Features/Relays/Views/Detail/RelayAdminDetail.swift diff --git a/damus/Views/Relays/Detail/RelayAuthenticationDetail.swift b/damus/Features/Relays/Views/Detail/RelayAuthenticationDetail.swift similarity index 100% rename from damus/Views/Relays/Detail/RelayAuthenticationDetail.swift rename to damus/Features/Relays/Views/Detail/RelayAuthenticationDetail.swift diff --git a/damus/Views/Relays/Detail/RelayNipList.swift b/damus/Features/Relays/Views/Detail/RelayNipList.swift similarity index 100% rename from damus/Views/Relays/Detail/RelayNipList.swift rename to damus/Features/Relays/Views/Detail/RelayNipList.swift diff --git a/damus/Views/Relays/Detail/RelayPaidDetail.swift b/damus/Features/Relays/Views/Detail/RelayPaidDetail.swift similarity index 100% rename from damus/Views/Relays/Detail/RelayPaidDetail.swift rename to damus/Features/Relays/Views/Detail/RelayPaidDetail.swift diff --git a/damus/Views/Relays/Detail/RelaySoftwareDetail.swift b/damus/Features/Relays/Views/Detail/RelaySoftwareDetail.swift similarity index 100% rename from damus/Views/Relays/Detail/RelaySoftwareDetail.swift rename to damus/Features/Relays/Views/Detail/RelaySoftwareDetail.swift diff --git a/damus/Views/Relays/RelayConfigView.swift b/damus/Features/Relays/Views/RelayConfigView.swift similarity index 100% rename from damus/Views/Relays/RelayConfigView.swift rename to damus/Features/Relays/Views/RelayConfigView.swift diff --git a/damus/Views/Relays/RelayDetailView.swift b/damus/Features/Relays/Views/RelayDetailView.swift similarity index 100% rename from damus/Views/Relays/RelayDetailView.swift rename to damus/Features/Relays/Views/RelayDetailView.swift diff --git a/damus/Views/RelayFilterView.swift b/damus/Features/Relays/Views/RelayFilterView.swift similarity index 100% rename from damus/Views/RelayFilterView.swift rename to damus/Features/Relays/Views/RelayFilterView.swift diff --git a/damus/Views/Relays/RelayPicView.swift b/damus/Features/Relays/Views/RelayPicView.swift similarity index 100% rename from damus/Views/Relays/RelayPicView.swift rename to damus/Features/Relays/Views/RelayPicView.swift diff --git a/damus/Views/Relays/RelayStatusView.swift b/damus/Features/Relays/Views/RelayStatusView.swift similarity index 100% rename from damus/Views/Relays/RelayStatusView.swift rename to damus/Features/Relays/Views/RelayStatusView.swift diff --git a/damus/Views/Relays/RelayToggle.swift b/damus/Features/Relays/Views/RelayToggle.swift similarity index 100% rename from damus/Views/Relays/RelayToggle.swift rename to damus/Features/Relays/Views/RelayToggle.swift diff --git a/damus/Views/Relays/RelayType.swift b/damus/Features/Relays/Views/RelayType.swift similarity index 100% rename from damus/Views/Relays/RelayType.swift rename to damus/Features/Relays/Views/RelayType.swift diff --git a/damus/Views/Relays/RelayView.swift b/damus/Features/Relays/Views/RelayView.swift similarity index 100% rename from damus/Views/Relays/RelayView.swift rename to damus/Features/Relays/Views/RelayView.swift diff --git a/damus/Views/Relays/SignalView.swift b/damus/Features/Relays/Views/SignalView.swift similarity index 100% rename from damus/Views/Relays/SignalView.swift rename to damus/Features/Relays/Views/SignalView.swift diff --git a/damus/Views/UserRelaysView.swift b/damus/Features/Relays/Views/UserRelaysView.swift similarity index 100% rename from damus/Views/UserRelaysView.swift rename to damus/Features/Relays/Views/UserRelaysView.swift diff --git a/damus/Models/SearchHomeModel.swift b/damus/Features/Search/Models/SearchHomeModel.swift similarity index 100% rename from damus/Models/SearchHomeModel.swift rename to damus/Features/Search/Models/SearchHomeModel.swift diff --git a/damus/Models/SearchModel.swift b/damus/Features/Search/Models/SearchModel.swift similarity index 100% rename from damus/Models/SearchModel.swift rename to damus/Features/Search/Models/SearchModel.swift diff --git a/damus/Views/Search/NDBSearchView.swift b/damus/Features/Search/Views/NDBSearchView.swift similarity index 100% rename from damus/Views/Search/NDBSearchView.swift rename to damus/Features/Search/Views/NDBSearchView.swift diff --git a/damus/Views/Search/PullDownSearch.swift b/damus/Features/Search/Views/PullDownSearch.swift similarity index 100% rename from damus/Views/Search/PullDownSearch.swift rename to damus/Features/Search/Views/PullDownSearch.swift diff --git a/damus/Components/Search/SearchHeaderView.swift b/damus/Features/Search/Views/SearchHeaderView.swift similarity index 100% rename from damus/Components/Search/SearchHeaderView.swift rename to damus/Features/Search/Views/SearchHeaderView.swift diff --git a/damus/Views/SearchHomeView.swift b/damus/Features/Search/Views/SearchHomeView.swift similarity index 100% rename from damus/Views/SearchHomeView.swift rename to damus/Features/Search/Views/SearchHomeView.swift diff --git a/damus/Views/SearchResultsView.swift b/damus/Features/Search/Views/SearchResultsView.swift similarity index 100% rename from damus/Views/SearchResultsView.swift rename to damus/Features/Search/Views/SearchResultsView.swift diff --git a/damus/Views/SearchView.swift b/damus/Features/Search/Views/SearchView.swift similarity index 100% rename from damus/Views/SearchView.swift rename to damus/Features/Search/Views/SearchView.swift diff --git a/damus/Views/Search/SearchingEventView.swift b/damus/Features/Search/Views/SearchingEventView.swift similarity index 100% rename from damus/Views/Search/SearchingEventView.swift rename to damus/Features/Search/Views/SearchingEventView.swift diff --git a/damus/Models/UserSettingsStore.swift b/damus/Features/Settings/Models/UserSettingsStore.swift similarity index 100% rename from damus/Models/UserSettingsStore.swift rename to damus/Features/Settings/Models/UserSettingsStore.swift diff --git a/damus/Views/Settings/AppearanceSettingsView.swift b/damus/Features/Settings/Views/AppearanceSettingsView.swift similarity index 100% rename from damus/Views/Settings/AppearanceSettingsView.swift rename to damus/Features/Settings/Views/AppearanceSettingsView.swift diff --git a/damus/Views/ConfigView.swift b/damus/Features/Settings/Views/ConfigView.swift similarity index 100% rename from damus/Views/ConfigView.swift rename to damus/Features/Settings/Views/ConfigView.swift diff --git a/damus/Views/Settings/DeveloperSettingsView.swift b/damus/Features/Settings/Views/DeveloperSettingsView.swift similarity index 100% rename from damus/Views/Settings/DeveloperSettingsView.swift rename to damus/Features/Settings/Views/DeveloperSettingsView.swift diff --git a/damus/Views/Settings/FirstAidSettingsView.swift b/damus/Features/Settings/Views/FirstAidSettingsView.swift similarity index 100% rename from damus/Views/Settings/FirstAidSettingsView.swift rename to damus/Features/Settings/Views/FirstAidSettingsView.swift diff --git a/damus/Views/Settings/KeySettingsView.swift b/damus/Features/Settings/Views/KeySettingsView.swift similarity index 100% rename from damus/Views/Settings/KeySettingsView.swift rename to damus/Features/Settings/Views/KeySettingsView.swift diff --git a/damus/Views/Settings/NotificationSettingsView.swift b/damus/Features/Settings/Views/NotificationSettingsView.swift similarity index 100% rename from damus/Views/Settings/NotificationSettingsView.swift rename to damus/Features/Settings/Views/NotificationSettingsView.swift diff --git a/damus/Views/Settings/ReactionsSettingsView.swift b/damus/Features/Settings/Views/ReactionsSettingsView.swift similarity index 100% rename from damus/Views/Settings/ReactionsSettingsView.swift rename to damus/Features/Settings/Views/ReactionsSettingsView.swift diff --git a/damus/Views/Settings/SearchSettingsView.swift b/damus/Features/Settings/Views/SearchSettingsView.swift similarity index 100% rename from damus/Views/Settings/SearchSettingsView.swift rename to damus/Features/Settings/Views/SearchSettingsView.swift diff --git a/damus/Views/Settings/TranslationSettingsView.swift b/damus/Features/Settings/Views/TranslationSettingsView.swift similarity index 100% rename from damus/Views/Settings/TranslationSettingsView.swift rename to damus/Features/Settings/Views/TranslationSettingsView.swift diff --git a/damus/Views/Settings/ZapSettingsView.swift b/damus/Features/Settings/Views/ZapSettingsView.swift similarity index 100% rename from damus/Views/Settings/ZapSettingsView.swift rename to damus/Features/Settings/Views/ZapSettingsView.swift diff --git a/damus/Components/Status/Music/MusicController.swift b/damus/Features/Status/Models/Music/MusicController.swift similarity index 100% rename from damus/Components/Status/Music/MusicController.swift rename to damus/Features/Status/Models/Music/MusicController.swift diff --git a/damus/Components/Status/UserStatus.swift b/damus/Features/Status/Models/UserStatus.swift similarity index 100% rename from damus/Components/Status/UserStatus.swift rename to damus/Features/Status/Models/UserStatus.swift diff --git a/damus/Components/Status/UserStatusSheet.swift b/damus/Features/Status/Views/UserStatusSheet.swift similarity index 100% rename from damus/Components/Status/UserStatusSheet.swift rename to damus/Features/Status/Views/UserStatusSheet.swift diff --git a/damus/Components/Status/UserStatusView.swift b/damus/Features/Status/Views/UserStatusView.swift similarity index 100% rename from damus/Components/Status/UserStatusView.swift rename to damus/Features/Status/Views/UserStatusView.swift diff --git a/damus/Models/ContentFilters.swift b/damus/Features/Timeline/Models/ContentFilters.swift similarity index 100% rename from damus/Models/ContentFilters.swift rename to damus/Features/Timeline/Models/ContentFilters.swift diff --git a/damus/Models/FriendFilter.swift b/damus/Features/Timeline/Models/FriendFilter.swift similarity index 100% rename from damus/Models/FriendFilter.swift rename to damus/Features/Timeline/Models/FriendFilter.swift diff --git a/damus/Models/HomeModel.swift b/damus/Features/Timeline/Models/HomeModel.swift similarity index 100% rename from damus/Models/HomeModel.swift rename to damus/Features/Timeline/Models/HomeModel.swift diff --git a/damus/Models/NostrFilter+Hashable.swift b/damus/Features/Timeline/Models/NostrFilter+Hashable.swift similarity index 100% rename from damus/Models/NostrFilter+Hashable.swift rename to damus/Features/Timeline/Models/NostrFilter+Hashable.swift diff --git a/damus/Views/Timeline/InnerTimelineView.swift b/damus/Features/Timeline/Views/InnerTimelineView.swift similarity index 100% rename from damus/Views/Timeline/InnerTimelineView.swift rename to damus/Features/Timeline/Views/InnerTimelineView.swift diff --git a/damus/Views/MainTabView.swift b/damus/Features/Timeline/Views/MainTabView.swift similarity index 100% rename from damus/Views/MainTabView.swift rename to damus/Features/Timeline/Views/MainTabView.swift diff --git a/damus/Views/Timeline/PostingTimelineView.swift b/damus/Features/Timeline/Views/PostingTimelineView.swift similarity index 100% rename from damus/Views/Timeline/PostingTimelineView.swift rename to damus/Features/Timeline/Views/PostingTimelineView.swift diff --git a/damus/Views/SideMenuView.swift b/damus/Features/Timeline/Views/SideMenuView.swift similarity index 100% rename from damus/Views/SideMenuView.swift rename to damus/Features/Timeline/Views/SideMenuView.swift diff --git a/damus/Views/TimelineView.swift b/damus/Features/Timeline/Views/TimelineView.swift similarity index 100% rename from damus/Views/TimelineView.swift rename to damus/Features/Timeline/Views/TimelineView.swift diff --git a/damus/Views/Tips/TrustedNetworkButtonTip.swift b/damus/Features/Tips/TrustedNetworkButtonTip.swift similarity index 100% rename from damus/Views/Tips/TrustedNetworkButtonTip.swift rename to damus/Features/Tips/TrustedNetworkButtonTip.swift diff --git a/damus/Views/Tips/TrustedNetworkButtonTipViewStyle.swift b/damus/Features/Tips/TrustedNetworkButtonTipViewStyle.swift similarity index 100% rename from damus/Views/Tips/TrustedNetworkButtonTipViewStyle.swift rename to damus/Features/Tips/TrustedNetworkButtonTipViewStyle.swift diff --git a/damus/Views/Tips/TrustedNetworkRepliesTip.swift b/damus/Features/Tips/TrustedNetworkRepliesTip.swift similarity index 100% rename from damus/Views/Tips/TrustedNetworkRepliesTip.swift rename to damus/Features/Tips/TrustedNetworkRepliesTip.swift diff --git a/damus/Models/DeepLPlan.swift b/damus/Features/Translations/Models/DeepLPlan.swift similarity index 100% rename from damus/Models/DeepLPlan.swift rename to damus/Features/Translations/Models/DeepLPlan.swift diff --git a/damus/Models/LibreTranslateServer.swift b/damus/Features/Translations/Models/LibreTranslateServer.swift similarity index 100% rename from damus/Models/LibreTranslateServer.swift rename to damus/Features/Translations/Models/LibreTranslateServer.swift diff --git a/damus/Models/TranslationService.swift b/damus/Features/Translations/Models/TranslationService.swift similarity index 100% rename from damus/Models/TranslationService.swift rename to damus/Features/Translations/Models/TranslationService.swift diff --git a/damus/Util/Translator.swift b/damus/Features/Translations/Models/Translator.swift similarity index 100% rename from damus/Util/Translator.swift rename to damus/Features/Translations/Models/Translator.swift diff --git a/damus/Components/TranslateView.swift b/damus/Features/Translations/Views/TranslateView.swift similarity index 100% rename from damus/Components/TranslateView.swift rename to damus/Features/Translations/Views/TranslateView.swift diff --git a/damus/Util/CoinosDeterministicAccountClient.swift b/damus/Features/Wallet/Models/CoinosDeterministicAccountClient.swift similarity index 100% rename from damus/Util/CoinosDeterministicAccountClient.swift rename to damus/Features/Wallet/Models/CoinosDeterministicAccountClient.swift diff --git a/damus/Models/Wallet.swift b/damus/Features/Wallet/Models/Wallet.swift similarity index 100% rename from damus/Models/Wallet.swift rename to damus/Features/Wallet/Models/Wallet.swift diff --git a/damus/Util/WalletConnect/HumanReadableErrors.swift b/damus/Features/Wallet/Models/WalletConnect/HumanReadableErrors.swift similarity index 100% rename from damus/Util/WalletConnect/HumanReadableErrors.swift rename to damus/Features/Wallet/Models/WalletConnect/HumanReadableErrors.swift diff --git a/damus/Util/WalletConnect/Request.swift b/damus/Features/Wallet/Models/WalletConnect/Request.swift similarity index 100% rename from damus/Util/WalletConnect/Request.swift rename to damus/Features/Wallet/Models/WalletConnect/Request.swift diff --git a/damus/Util/WalletConnect/Response.swift b/damus/Features/Wallet/Models/WalletConnect/Response.swift similarity index 100% rename from damus/Util/WalletConnect/Response.swift rename to damus/Features/Wallet/Models/WalletConnect/Response.swift diff --git a/damus/Util/WalletConnect/WalletConnect+.swift b/damus/Features/Wallet/Models/WalletConnect/WalletConnect+.swift similarity index 100% rename from damus/Util/WalletConnect/WalletConnect+.swift rename to damus/Features/Wallet/Models/WalletConnect/WalletConnect+.swift diff --git a/damus/Util/WalletConnect/WalletConnect.swift b/damus/Features/Wallet/Models/WalletConnect/WalletConnect.swift similarity index 100% rename from damus/Util/WalletConnect/WalletConnect.swift rename to damus/Features/Wallet/Models/WalletConnect/WalletConnect.swift diff --git a/damus/Models/WalletModel.swift b/damus/Features/Wallet/Models/WalletModel.swift similarity index 100% rename from damus/Models/WalletModel.swift rename to damus/Features/Wallet/Models/WalletModel.swift diff --git a/damus/Views/Wallet/BalanceView.swift b/damus/Features/Wallet/Views/BalanceView.swift similarity index 100% rename from damus/Views/Wallet/BalanceView.swift rename to damus/Features/Wallet/Views/BalanceView.swift diff --git a/damus/Views/Wallet/ConnectWalletView.swift b/damus/Features/Wallet/Views/ConnectWalletView.swift similarity index 100% rename from damus/Views/Wallet/ConnectWalletView.swift rename to damus/Features/Wallet/Views/ConnectWalletView.swift diff --git a/damus/Views/Wallet/LnurlAmountView.swift b/damus/Features/Wallet/Views/LnurlAmountView.swift similarity index 100% rename from damus/Views/Wallet/LnurlAmountView.swift rename to damus/Features/Wallet/Views/LnurlAmountView.swift diff --git a/damus/Views/Wallet/NWCScannerView.swift b/damus/Features/Wallet/Views/NWCScannerView.swift similarity index 100% rename from damus/Views/Wallet/NWCScannerView.swift rename to damus/Features/Wallet/Views/NWCScannerView.swift diff --git a/damus/Views/Wallet/NWCSettings.swift b/damus/Features/Wallet/Views/NWCSettings.swift similarity index 100% rename from damus/Views/Wallet/NWCSettings.swift rename to damus/Features/Wallet/Views/NWCSettings.swift diff --git a/damus/Views/SelectWalletView.swift b/damus/Features/Wallet/Views/SelectWalletView.swift similarity index 100% rename from damus/Views/SelectWalletView.swift rename to damus/Features/Wallet/Views/SelectWalletView.swift diff --git a/damus/Views/Wallet/SendPaymentView.swift b/damus/Features/Wallet/Views/SendPaymentView.swift similarity index 100% rename from damus/Views/Wallet/SendPaymentView.swift rename to damus/Features/Wallet/Views/SendPaymentView.swift diff --git a/damus/Views/Wallet/TransactionsView.swift b/damus/Features/Wallet/Views/TransactionsView.swift similarity index 100% rename from damus/Views/Wallet/TransactionsView.swift rename to damus/Features/Wallet/Views/TransactionsView.swift diff --git a/damus/Views/Wallet/WalletView.swift b/damus/Features/Wallet/Views/WalletView.swift similarity index 100% rename from damus/Views/Wallet/WalletView.swift rename to damus/Features/Wallet/Views/WalletView.swift diff --git a/damus/Views/Wallet/ZapExplainer.swift b/damus/Features/Wallet/Views/ZapExplainer.swift similarity index 100% rename from damus/Views/Wallet/ZapExplainer.swift rename to damus/Features/Wallet/Views/ZapExplainer.swift diff --git a/damus/Models/Zaps/CustomizeZapModel.swift b/damus/Features/Zaps/Models/CustomizeZapModel.swift similarity index 100% rename from damus/Models/Zaps/CustomizeZapModel.swift rename to damus/Features/Zaps/Models/CustomizeZapModel.swift diff --git a/damus/Util/Zap.swift b/damus/Features/Zaps/Models/Zap.swift similarity index 100% rename from damus/Util/Zap.swift rename to damus/Features/Zaps/Models/Zap.swift diff --git a/damus/Models/ZapButtonModel.swift b/damus/Features/Zaps/Models/ZapButtonModel.swift similarity index 100% rename from damus/Models/ZapButtonModel.swift rename to damus/Features/Zaps/Models/ZapButtonModel.swift diff --git a/damus/Util/ZapDataModel.swift b/damus/Features/Zaps/Models/ZapDataModel.swift similarity index 100% rename from damus/Util/ZapDataModel.swift rename to damus/Features/Zaps/Models/ZapDataModel.swift diff --git a/damus/Models/ZapType.swift b/damus/Features/Zaps/Models/ZapType.swift similarity index 100% rename from damus/Models/ZapType.swift rename to damus/Features/Zaps/Models/ZapType.swift diff --git a/damus/Util/Zaps+.swift b/damus/Features/Zaps/Models/Zaps+.swift similarity index 100% rename from damus/Util/Zaps+.swift rename to damus/Features/Zaps/Models/Zaps+.swift diff --git a/damus/Util/Zaps.swift b/damus/Features/Zaps/Models/Zaps.swift similarity index 100% rename from damus/Util/Zaps.swift rename to damus/Features/Zaps/Models/Zaps.swift diff --git a/damus/Models/ZapsModel.swift b/damus/Features/Zaps/Models/ZapsModel.swift similarity index 100% rename from damus/Models/ZapsModel.swift rename to damus/Features/Zaps/Models/ZapsModel.swift diff --git a/damus/Views/Zaps/CustomizeZapView.swift b/damus/Features/Zaps/Views/CustomizeZapView.swift similarity index 100% rename from damus/Views/Zaps/CustomizeZapView.swift rename to damus/Features/Zaps/Views/CustomizeZapView.swift diff --git a/damus/Components/NoteZapButton.swift b/damus/Features/Zaps/Views/NoteZapButton.swift similarity index 100% rename from damus/Components/NoteZapButton.swift rename to damus/Features/Zaps/Views/NoteZapButton.swift diff --git a/damus/Views/Zaps/ProfileZapLinkView.swift b/damus/Features/Zaps/Views/ProfileZapLinkView.swift similarity index 100% rename from damus/Views/Zaps/ProfileZapLinkView.swift rename to damus/Features/Zaps/Views/ProfileZapLinkView.swift diff --git a/damus/Views/Events/ZapEvent.swift b/damus/Features/Zaps/Views/ZapEvent.swift similarity index 100% rename from damus/Views/Events/ZapEvent.swift rename to damus/Features/Zaps/Views/ZapEvent.swift diff --git a/damus/Views/Zaps/ZapTypePicker.swift b/damus/Features/Zaps/Views/ZapTypePicker.swift similarity index 100% rename from damus/Views/Zaps/ZapTypePicker.swift rename to damus/Features/Zaps/Views/ZapTypePicker.swift diff --git a/damus/Views/Zaps/ZapUserView.swift b/damus/Features/Zaps/Views/ZapUserView.swift similarity index 100% rename from damus/Views/Zaps/ZapUserView.swift rename to damus/Features/Zaps/Views/ZapUserView.swift diff --git a/damus/Views/Zaps/ZapsView.swift b/damus/Features/Zaps/Views/ZapsView.swift similarity index 100% rename from damus/Views/Zaps/ZapsView.swift rename to damus/Features/Zaps/Views/ZapsView.swift diff --git a/damus/Views/Launch.storyboard b/damus/Launch.storyboard similarity index 100% rename from damus/Views/Launch.storyboard rename to damus/Launch.storyboard diff --git a/damus/Models/PostBlock.swift b/damus/Models/PostBlock.swift deleted file mode 100644 index 051b737e..00000000 --- a/damus/Models/PostBlock.swift +++ /dev/null @@ -1,8 +0,0 @@ -// -// PostBlock.swift -// damus -// -// Created by William Casarin on 2022-05-07. -// - -import Foundation diff --git a/damus/Views/ActionBar/BigButton.swift b/damus/Shared/Buttons/BigButton.swift similarity index 100% rename from damus/Views/ActionBar/BigButton.swift rename to damus/Shared/Buttons/BigButton.swift diff --git a/damus/Views/Buttons/CoinosButton.swift b/damus/Shared/Buttons/CoinosButton.swift similarity index 100% rename from damus/Views/Buttons/CoinosButton.swift rename to damus/Shared/Buttons/CoinosButton.swift diff --git a/damus/Views/FollowButtonView.swift b/damus/Shared/Buttons/FollowButtonView.swift similarity index 100% rename from damus/Views/FollowButtonView.swift rename to damus/Shared/Buttons/FollowButtonView.swift diff --git a/damus/Components/GradientButtonStyle.swift b/damus/Shared/Buttons/GradientButtonStyle.swift similarity index 100% rename from damus/Components/GradientButtonStyle.swift rename to damus/Shared/Buttons/GradientButtonStyle.swift diff --git a/damus/Views/Buttons/GradientFollowButton.swift b/damus/Shared/Buttons/GradientFollowButton.swift similarity index 100% rename from damus/Views/Buttons/GradientFollowButton.swift rename to damus/Shared/Buttons/GradientFollowButton.swift diff --git a/damus/Components/NeutralButtonStyle.swift b/damus/Shared/Buttons/NeutralButtonStyle.swift similarity index 100% rename from damus/Components/NeutralButtonStyle.swift rename to damus/Shared/Buttons/NeutralButtonStyle.swift diff --git a/damus/Views/PostButton.swift b/damus/Shared/Buttons/PostButton.swift similarity index 100% rename from damus/Views/PostButton.swift rename to damus/Shared/Buttons/PostButton.swift diff --git a/damus/Views/ActionBar/ShareActionButton.swift b/damus/Shared/Buttons/ShareActionButton.swift similarity index 100% rename from damus/Views/ActionBar/ShareActionButton.swift rename to damus/Shared/Buttons/ShareActionButton.swift diff --git a/damus/Views/Buttons/TrustedNetworkButton.swift b/damus/Shared/Buttons/TrustedNetworkButton.swift similarity index 100% rename from damus/Views/Buttons/TrustedNetworkButton.swift rename to damus/Shared/Buttons/TrustedNetworkButton.swift diff --git a/damus/Components/CustomPicker.swift b/damus/Shared/Components/CustomPicker.swift similarity index 100% rename from damus/Components/CustomPicker.swift rename to damus/Shared/Components/CustomPicker.swift diff --git a/damus/Components/DamusColors.swift b/damus/Shared/Components/DamusColors.swift similarity index 100% rename from damus/Components/DamusColors.swift rename to damus/Shared/Components/DamusColors.swift diff --git a/damus/Components/EndBlock.swift b/damus/Shared/Components/EndBlock.swift similarity index 100% rename from damus/Components/EndBlock.swift rename to damus/Shared/Components/EndBlock.swift diff --git a/damus/Components/Gradients/DamusBackground.swift b/damus/Shared/Components/Gradients/DamusBackground.swift similarity index 100% rename from damus/Components/Gradients/DamusBackground.swift rename to damus/Shared/Components/Gradients/DamusBackground.swift diff --git a/damus/Components/Gradients/DamusGradient.swift b/damus/Shared/Components/Gradients/DamusGradient.swift similarity index 100% rename from damus/Components/Gradients/DamusGradient.swift rename to damus/Shared/Components/Gradients/DamusGradient.swift diff --git a/damus/Components/Gradients/DamusLightGradient.swift b/damus/Shared/Components/Gradients/DamusLightGradient.swift similarity index 100% rename from damus/Components/Gradients/DamusLightGradient.swift rename to damus/Shared/Components/Gradients/DamusLightGradient.swift diff --git a/damus/Components/Gradients/DamusLogoGradient.swift b/damus/Shared/Components/Gradients/DamusLogoGradient.swift similarity index 100% rename from damus/Components/Gradients/DamusLogoGradient.swift rename to damus/Shared/Components/Gradients/DamusLogoGradient.swift diff --git a/damus/Components/Gradients/GoldSupportGradient.swift b/damus/Shared/Components/Gradients/GoldSupportGradient.swift similarity index 100% rename from damus/Components/Gradients/GoldSupportGradient.swift rename to damus/Shared/Components/Gradients/GoldSupportGradient.swift diff --git a/damus/Components/Gradients/GrayGradient.swift b/damus/Shared/Components/Gradients/GrayGradient.swift similarity index 100% rename from damus/Components/Gradients/GrayGradient.swift rename to damus/Shared/Components/Gradients/GrayGradient.swift diff --git a/damus/Components/Gradients/PinkGradient.swift b/damus/Shared/Components/Gradients/PinkGradient.swift similarity index 100% rename from damus/Components/Gradients/PinkGradient.swift rename to damus/Shared/Components/Gradients/PinkGradient.swift diff --git a/damus/Util/Hashtags.swift b/damus/Shared/Components/Hashtags.swift similarity index 100% rename from damus/Util/Hashtags.swift rename to damus/Shared/Components/Hashtags.swift diff --git a/damus/Components/Highlight.swift b/damus/Shared/Components/Highlight.swift similarity index 100% rename from damus/Components/Highlight.swift rename to damus/Shared/Components/Highlight.swift diff --git a/damus/Components/IconLabel.swift b/damus/Shared/Components/IconLabel.swift similarity index 100% rename from damus/Components/IconLabel.swift rename to damus/Shared/Components/IconLabel.swift diff --git a/damus/Components/InvoiceView.swift b/damus/Shared/Components/InvoiceView.swift similarity index 100% rename from damus/Components/InvoiceView.swift rename to damus/Shared/Components/InvoiceView.swift diff --git a/damus/Components/InvoicesView.swift b/damus/Shared/Components/InvoicesView.swift similarity index 100% rename from damus/Components/InvoicesView.swift rename to damus/Shared/Components/InvoicesView.swift diff --git a/damus/Components/NIP05Badge.swift b/damus/Shared/Components/NIP05Badge.swift similarity index 100% rename from damus/Components/NIP05Badge.swift rename to damus/Shared/Components/NIP05Badge.swift diff --git a/damus/Views/PubkeyView.swift b/damus/Shared/Components/PubkeyView.swift similarity index 100% rename from damus/Views/PubkeyView.swift rename to damus/Shared/Components/PubkeyView.swift diff --git a/damus/Views/QRCodeView.swift b/damus/Shared/Components/QRCodeView.swift similarity index 100% rename from damus/Views/QRCodeView.swift rename to damus/Shared/Components/QRCodeView.swift diff --git a/damus/Views/QRScanNSECView.swift b/damus/Shared/Components/QRScanNSECView.swift similarity index 100% rename from damus/Views/QRScanNSECView.swift rename to damus/Shared/Components/QRScanNSECView.swift diff --git a/damus/Components/Shimmer.swift b/damus/Shared/Components/Shimmer.swift similarity index 100% rename from damus/Components/Shimmer.swift rename to damus/Shared/Components/Shimmer.swift diff --git a/damus/Components/SupporterBadge.swift b/damus/Shared/Components/SupporterBadge.swift similarity index 100% rename from damus/Components/SupporterBadge.swift rename to damus/Shared/Components/SupporterBadge.swift diff --git a/damus/Components/SelectableText.swift b/damus/Shared/Components/Text/SelectableText.swift similarity index 100% rename from damus/Components/SelectableText.swift rename to damus/Shared/Components/Text/SelectableText.swift diff --git a/damus/Views/TextViewWrapper.swift b/damus/Shared/Components/Text/TextViewWrapper.swift similarity index 100% rename from damus/Views/TextViewWrapper.swift rename to damus/Shared/Components/Text/TextViewWrapper.swift diff --git a/damus/Components/TruncatedText.swift b/damus/Shared/Components/Text/TruncatedText.swift similarity index 100% rename from damus/Components/TruncatedText.swift rename to damus/Shared/Components/Text/TruncatedText.swift diff --git a/damus/Components/ThiccDivider.swift b/damus/Shared/Components/ThiccDivider.swift similarity index 100% rename from damus/Components/ThiccDivider.swift rename to damus/Shared/Components/ThiccDivider.swift diff --git a/damus/Components/UserView.swift b/damus/Shared/Components/UserView.swift similarity index 100% rename from damus/Components/UserView.swift rename to damus/Shared/Components/UserView.swift diff --git a/damus/Components/WebsiteLink.swift b/damus/Shared/Components/WebsiteLink.swift similarity index 100% rename from damus/Components/WebsiteLink.swift rename to damus/Shared/Components/WebsiteLink.swift diff --git a/damus/Views/Empty Views/EmptyTimelineView.swift b/damus/Shared/Empty Views/EmptyTimelineView.swift similarity index 100% rename from damus/Views/Empty Views/EmptyTimelineView.swift rename to damus/Shared/Empty Views/EmptyTimelineView.swift diff --git a/damus/Views/Empty Views/EmptyUserSearchView.swift b/damus/Shared/Empty Views/EmptyUserSearchView.swift similarity index 100% rename from damus/Views/Empty Views/EmptyUserSearchView.swift rename to damus/Shared/Empty Views/EmptyUserSearchView.swift diff --git a/damus/Views/ErrorHandling/ErrorView.swift b/damus/Shared/ErrorHandling/ErrorView.swift similarity index 100% rename from damus/Views/ErrorHandling/ErrorView.swift rename to damus/Shared/ErrorHandling/ErrorView.swift diff --git a/damus/Util/Extensions/Array.swift b/damus/Shared/Extensions/Array.swift similarity index 100% rename from damus/Util/Extensions/Array.swift rename to damus/Shared/Extensions/Array.swift diff --git a/damus/Views/Extensions/DamusFullScreenCover.swift b/damus/Shared/Extensions/DamusFullScreenCover.swift similarity index 100% rename from damus/Views/Extensions/DamusFullScreenCover.swift rename to damus/Shared/Extensions/DamusFullScreenCover.swift diff --git a/damus/Util/Extensions/FillAndStroke.swift b/damus/Shared/Extensions/FillAndStroke.swift similarity index 100% rename from damus/Util/Extensions/FillAndStroke.swift rename to damus/Shared/Extensions/FillAndStroke.swift diff --git a/damus/Util/Extensions/KFOptionSetter+.swift b/damus/Shared/Extensions/KFOptionSetter+.swift similarity index 100% rename from damus/Util/Extensions/KFOptionSetter+.swift rename to damus/Shared/Extensions/KFOptionSetter+.swift diff --git a/damus/Util/Extensions/OffsetExtension.swift b/damus/Shared/Extensions/OffsetExtension.swift similarity index 100% rename from damus/Util/Extensions/OffsetExtension.swift rename to damus/Shared/Extensions/OffsetExtension.swift diff --git a/damus/Util/Extensions/VectorMath.swift b/damus/Shared/Extensions/VectorMath.swift similarity index 100% rename from damus/Util/Extensions/VectorMath.swift rename to damus/Shared/Extensions/VectorMath.swift diff --git a/damus/Views/Extensions/VisibilityTracker.swift b/damus/Shared/Extensions/VisibilityTracker.swift similarity index 100% rename from damus/Views/Extensions/VisibilityTracker.swift rename to damus/Shared/Extensions/VisibilityTracker.swift diff --git a/damus/Util/AVPlayer+Additions.swift b/damus/Shared/Media/AVPlayer+Additions.swift similarity index 100% rename from damus/Util/AVPlayer+Additions.swift rename to damus/Shared/Media/AVPlayer+Additions.swift diff --git a/damus/Util/BlurHash/BlurHashDecode.swift b/damus/Shared/Media/BlurHash/BlurHashDecode.swift similarity index 100% rename from damus/Util/BlurHash/BlurHashDecode.swift rename to damus/Shared/Media/BlurHash/BlurHashDecode.swift diff --git a/damus/Util/BlurHash/BlurHashEncode.swift b/damus/Shared/Media/BlurHash/BlurHashEncode.swift similarity index 100% rename from damus/Util/BlurHash/BlurHashEncode.swift rename to damus/Shared/Media/BlurHash/BlurHashEncode.swift diff --git a/damus/Util/BlurHash/License.txt b/damus/Shared/Media/BlurHash/License.txt similarity index 100% rename from damus/Util/BlurHash/License.txt rename to damus/Shared/Media/BlurHash/License.txt diff --git a/damus/Util/BlurHash/Readme.md b/damus/Shared/Media/BlurHash/Readme.md similarity index 100% rename from damus/Util/BlurHash/Readme.md rename to damus/Shared/Media/BlurHash/Readme.md diff --git a/damus/Views/Camera/CameraController.swift b/damus/Shared/Media/Camera/CameraController.swift similarity index 100% rename from damus/Views/Camera/CameraController.swift rename to damus/Shared/Media/Camera/CameraController.swift diff --git a/damus/Views/Camera/CameraPreview.swift b/damus/Shared/Media/Camera/CameraPreview.swift similarity index 100% rename from damus/Views/Camera/CameraPreview.swift rename to damus/Shared/Media/Camera/CameraPreview.swift diff --git a/damus/Models/Camera/CameraModel.swift b/damus/Shared/Media/Camera/Models/CameraModel.swift similarity index 100% rename from damus/Models/Camera/CameraModel.swift rename to damus/Shared/Media/Camera/Models/CameraModel.swift diff --git a/damus/Models/Camera/CameraService.swift b/damus/Shared/Media/Camera/Models/CameraService.swift similarity index 100% rename from damus/Models/Camera/CameraService.swift rename to damus/Shared/Media/Camera/Models/CameraService.swift diff --git a/damus/Models/Camera/ImageResizer.swift b/damus/Shared/Media/Camera/Models/ImageResizer.swift similarity index 100% rename from damus/Models/Camera/ImageResizer.swift rename to damus/Shared/Media/Camera/Models/ImageResizer.swift diff --git a/damus/Models/Camera/PhotoCaptureProcessor.swift b/damus/Shared/Media/Camera/Models/PhotoCaptureProcessor.swift similarity index 100% rename from damus/Models/Camera/PhotoCaptureProcessor.swift rename to damus/Shared/Media/Camera/Models/PhotoCaptureProcessor.swift diff --git a/damus/Models/Camera/VideoCaptureProcessor.swift b/damus/Shared/Media/Camera/Models/VideoCaptureProcessor.swift similarity index 100% rename from damus/Models/Camera/VideoCaptureProcessor.swift rename to damus/Shared/Media/Camera/Models/VideoCaptureProcessor.swift diff --git a/damus/Util/CoreSVG.swift b/damus/Shared/Media/CoreSVG.swift similarity index 100% rename from damus/Util/CoreSVG.swift rename to damus/Shared/Media/CoreSVG.swift diff --git a/damus/Util/ImageCacheMigrations.swift b/damus/Shared/Media/ImageCacheMigrations.swift similarity index 100% rename from damus/Util/ImageCacheMigrations.swift rename to damus/Shared/Media/ImageCacheMigrations.swift diff --git a/damus/Views/AttachMediaUtility.swift b/damus/Shared/Media/Images/AttachMediaUtility.swift similarity index 100% rename from damus/Views/AttachMediaUtility.swift rename to damus/Shared/Media/Images/AttachMediaUtility.swift diff --git a/damus/Views/BannerImageView.swift b/damus/Shared/Media/Images/BannerImageView.swift similarity index 100% rename from damus/Views/BannerImageView.swift rename to damus/Shared/Media/Images/BannerImageView.swift diff --git a/damus/Views/CarouselView.swift b/damus/Shared/Media/Images/CarouselView.swift similarity index 100% rename from damus/Views/CarouselView.swift rename to damus/Shared/Media/Images/CarouselView.swift diff --git a/damus/Views/Images/FullScreenCarouselView.swift b/damus/Shared/Media/Images/FullScreenCarouselView.swift similarity index 100% rename from damus/Views/Images/FullScreenCarouselView.swift rename to damus/Shared/Media/Images/FullScreenCarouselView.swift diff --git a/damus/Views/Images/ImageContainerView.swift b/damus/Shared/Media/Images/ImageContainerView.swift similarity index 100% rename from damus/Views/Images/ImageContainerView.swift rename to damus/Shared/Media/Images/ImageContainerView.swift diff --git a/damus/Views/Images/ImageContextMenuModifier.swift b/damus/Shared/Media/Images/ImageContextMenuModifier.swift similarity index 100% rename from damus/Views/Images/ImageContextMenuModifier.swift rename to damus/Shared/Media/Images/ImageContextMenuModifier.swift diff --git a/damus/Util/Images/ImageMetadata.swift b/damus/Shared/Media/Images/ImageMetadata.swift similarity index 100% rename from damus/Util/Images/ImageMetadata.swift rename to damus/Shared/Media/Images/ImageMetadata.swift diff --git a/damus/Util/Images/ImageProcessing.swift b/damus/Shared/Media/Images/ImageProcessing.swift similarity index 100% rename from damus/Util/Images/ImageProcessing.swift rename to damus/Shared/Media/Images/ImageProcessing.swift diff --git a/damus/Views/Images/MediaView.swift b/damus/Shared/Media/Images/MediaView.swift similarity index 100% rename from damus/Views/Images/MediaView.swift rename to damus/Shared/Media/Images/MediaView.swift diff --git a/damus/Views/Images/ProfilePicImageView.swift b/damus/Shared/Media/Images/ProfilePicImageView.swift similarity index 100% rename from damus/Views/Images/ProfilePicImageView.swift rename to damus/Shared/Media/Images/ProfilePicImageView.swift diff --git a/damus/Components/ZoomableScrollView.swift b/damus/Shared/Media/Images/ZoomableScrollView.swift similarity index 100% rename from damus/Components/ZoomableScrollView.swift rename to damus/Shared/Media/Images/ZoomableScrollView.swift diff --git a/damus/Components/ImageCarousel.swift b/damus/Shared/Media/Models/ImageCarousel.swift similarity index 100% rename from damus/Components/ImageCarousel.swift rename to damus/Shared/Media/Models/ImageCarousel.swift diff --git a/damus/Models/ImageUploadModel.swift b/damus/Shared/Media/Models/ImageUploadModel.swift similarity index 100% rename from damus/Models/ImageUploadModel.swift rename to damus/Shared/Media/Models/ImageUploadModel.swift diff --git a/damus/Views/MediaPicker.swift b/damus/Shared/Media/Models/MediaPicker.swift similarity index 100% rename from damus/Views/MediaPicker.swift rename to damus/Shared/Media/Models/MediaPicker.swift diff --git a/damus/Models/MediaUploader.swift b/damus/Shared/Media/Models/MediaUploader.swift similarity index 100% rename from damus/Models/MediaUploader.swift rename to damus/Shared/Media/Models/MediaUploader.swift diff --git a/damus/Views/Video/DamusVideoControlsView.swift b/damus/Shared/Media/Video/DamusVideoControlsView.swift similarity index 100% rename from damus/Views/Video/DamusVideoControlsView.swift rename to damus/Shared/Media/Video/DamusVideoControlsView.swift diff --git a/damus/Views/Video/DamusVideoCoordinator.swift b/damus/Shared/Media/Video/DamusVideoCoordinator.swift similarity index 100% rename from damus/Views/Video/DamusVideoCoordinator.swift rename to damus/Shared/Media/Video/DamusVideoCoordinator.swift diff --git a/damus/Views/Video/DamusVideoPlayer.swift b/damus/Shared/Media/Video/DamusVideoPlayer.swift similarity index 100% rename from damus/Views/Video/DamusVideoPlayer.swift rename to damus/Shared/Media/Video/DamusVideoPlayer.swift diff --git a/damus/Views/Video/DamusVideoPlayerView.swift b/damus/Shared/Media/Video/DamusVideoPlayerView.swift similarity index 100% rename from damus/Views/Video/DamusVideoPlayerView.swift rename to damus/Shared/Media/Video/DamusVideoPlayerView.swift diff --git a/damus/Modifiers/SwipeToDismiss.swift b/damus/Shared/Modifiers/SwipeToDismiss.swift similarity index 100% rename from damus/Modifiers/SwipeToDismiss.swift rename to damus/Shared/Modifiers/SwipeToDismiss.swift diff --git a/damus/Util/AccountDeletion.swift b/damus/Shared/Utilities/AccountDeletion.swift similarity index 100% rename from damus/Util/AccountDeletion.swift rename to damus/Shared/Utilities/AccountDeletion.swift diff --git a/damus/Util/AnyCodable/AnyCodable.swift b/damus/Shared/Utilities/AnyCodable/AnyCodable.swift similarity index 100% rename from damus/Util/AnyCodable/AnyCodable.swift rename to damus/Shared/Utilities/AnyCodable/AnyCodable.swift diff --git a/damus/Util/AnyCodable/AnyDecodable.swift b/damus/Shared/Utilities/AnyCodable/AnyDecodable.swift similarity index 100% rename from damus/Util/AnyCodable/AnyDecodable.swift rename to damus/Shared/Utilities/AnyCodable/AnyDecodable.swift diff --git a/damus/Util/AnyCodable/AnyEncodable.swift b/damus/Shared/Utilities/AnyCodable/AnyEncodable.swift similarity index 100% rename from damus/Util/AnyCodable/AnyEncodable.swift rename to damus/Shared/Utilities/AnyCodable/AnyEncodable.swift diff --git a/damus/Util/Bech32.swift b/damus/Shared/Utilities/Bech32.swift similarity index 100% rename from damus/Util/Bech32.swift rename to damus/Shared/Utilities/Bech32.swift diff --git a/damus/Util/Bech32Object.swift b/damus/Shared/Utilities/Bech32Object.swift similarity index 100% rename from damus/Util/Bech32Object.swift rename to damus/Shared/Utilities/Bech32Object.swift diff --git a/damus/Util/CollectionExtension.swift b/damus/Shared/Utilities/CollectionExtension.swift similarity index 100% rename from damus/Util/CollectionExtension.swift rename to damus/Shared/Utilities/CollectionExtension.swift diff --git a/damus/Util/CompatibleAttribute.swift b/damus/Shared/Utilities/CompatibleAttribute.swift similarity index 100% rename from damus/Util/CompatibleAttribute.swift rename to damus/Shared/Utilities/CompatibleAttribute.swift diff --git a/damus/Util/Constants.swift b/damus/Shared/Utilities/Constants.swift similarity index 100% rename from damus/Util/Constants.swift rename to damus/Shared/Utilities/Constants.swift diff --git a/damus/Util/CredentialHandler.swift b/damus/Shared/Utilities/CredentialHandler.swift similarity index 100% rename from damus/Util/CredentialHandler.swift rename to damus/Shared/Utilities/CredentialHandler.swift diff --git a/damus/Util/DamusAliases.swift b/damus/Shared/Utilities/DamusAliases.swift similarity index 100% rename from damus/Util/DamusAliases.swift rename to damus/Shared/Utilities/DamusAliases.swift diff --git a/damus/Util/DebouncedOnChange.swift b/damus/Shared/Utilities/DebouncedOnChange.swift similarity index 100% rename from damus/Util/DebouncedOnChange.swift rename to damus/Shared/Utilities/DebouncedOnChange.swift diff --git a/damus/Util/Debouncer.swift b/damus/Shared/Utilities/Debouncer.swift similarity index 100% rename from damus/Util/Debouncer.swift rename to damus/Shared/Utilities/Debouncer.swift diff --git a/damus/Util/DisplayName.swift b/damus/Shared/Utilities/DisplayName.swift similarity index 100% rename from damus/Util/DisplayName.swift rename to damus/Shared/Utilities/DisplayName.swift diff --git a/damus/Util/EventCache.swift b/damus/Shared/Utilities/EventCache.swift similarity index 100% rename from damus/Util/EventCache.swift rename to damus/Shared/Utilities/EventCache.swift diff --git a/damus/Util/EventHolder.swift b/damus/Shared/Utilities/EventHolder.swift similarity index 100% rename from damus/Util/EventHolder.swift rename to damus/Shared/Utilities/EventHolder.swift diff --git a/damus/Util/ExtraFonts.swift b/damus/Shared/Utilities/ExtraFonts.swift similarity index 100% rename from damus/Util/ExtraFonts.swift rename to damus/Shared/Utilities/ExtraFonts.swift diff --git a/damus/Util/FaviconCache.swift b/damus/Shared/Utilities/FaviconCache.swift similarity index 100% rename from damus/Util/FaviconCache.swift rename to damus/Shared/Utilities/FaviconCache.swift diff --git a/damus/Models/HeadlessDamusState.swift b/damus/Shared/Utilities/HeadlessDamusState.swift similarity index 100% rename from damus/Models/HeadlessDamusState.swift rename to damus/Shared/Utilities/HeadlessDamusState.swift diff --git a/damus/Util/InputDismissKeyboard.swift b/damus/Shared/Utilities/InputDismissKeyboard.swift similarity index 100% rename from damus/Util/InputDismissKeyboard.swift rename to damus/Shared/Utilities/InputDismissKeyboard.swift diff --git a/damus/Util/InsertSort.swift b/damus/Shared/Utilities/InsertSort.swift similarity index 100% rename from damus/Util/InsertSort.swift rename to damus/Shared/Utilities/InsertSort.swift diff --git a/damus/Views/Utils/KFClickable.swift b/damus/Shared/Utilities/KFClickable.swift similarity index 100% rename from damus/Views/Utils/KFClickable.swift rename to damus/Shared/Utilities/KFClickable.swift diff --git a/damus/Util/KeyboardVisible.swift b/damus/Shared/Utilities/KeyboardVisible.swift similarity index 100% rename from damus/Util/KeyboardVisible.swift rename to damus/Shared/Utilities/KeyboardVisible.swift diff --git a/damus/Util/LNUrlPayRequest.swift b/damus/Shared/Utilities/LNUrlPayRequest.swift similarity index 100% rename from damus/Util/LNUrlPayRequest.swift rename to damus/Shared/Utilities/LNUrlPayRequest.swift diff --git a/damus/Util/LNUrls.swift b/damus/Shared/Utilities/LNUrls.swift similarity index 100% rename from damus/Util/LNUrls.swift rename to damus/Shared/Utilities/LNUrls.swift diff --git a/damus/Util/LinkView.swift b/damus/Shared/Utilities/LinkView.swift similarity index 100% rename from damus/Util/LinkView.swift rename to damus/Shared/Utilities/LinkView.swift diff --git a/damus/Util/LocalNotification.swift b/damus/Shared/Utilities/LocalNotification.swift similarity index 100% rename from damus/Util/LocalNotification.swift rename to damus/Shared/Utilities/LocalNotification.swift diff --git a/damus/Util/LocalizationUtil.swift b/damus/Shared/Utilities/LocalizationUtil.swift similarity index 100% rename from damus/Util/LocalizationUtil.swift rename to damus/Shared/Utilities/LocalizationUtil.swift diff --git a/damus/Util/Log.swift b/damus/Shared/Utilities/Log.swift similarity index 100% rename from damus/Util/Log.swift rename to damus/Shared/Utilities/Log.swift diff --git a/damus/Util/NIPURLBuilder.swift b/damus/Shared/Utilities/NIPURLBuilder.swift similarity index 100% rename from damus/Util/NIPURLBuilder.swift rename to damus/Shared/Utilities/NIPURLBuilder.swift diff --git a/damus/Models/NewEventsBits.swift b/damus/Shared/Utilities/NewEventsBits.swift similarity index 100% rename from damus/Models/NewEventsBits.swift rename to damus/Shared/Utilities/NewEventsBits.swift diff --git a/damus/Util/Parser.swift b/damus/Shared/Utilities/Parser.swift similarity index 100% rename from damus/Util/Parser.swift rename to damus/Shared/Utilities/Parser.swift diff --git a/damus/Util/PreviewCache.swift b/damus/Shared/Utilities/PreviewCache.swift similarity index 100% rename from damus/Util/PreviewCache.swift rename to damus/Shared/Utilities/PreviewCache.swift diff --git a/damus/Util/Router.swift b/damus/Shared/Utilities/Router.swift similarity index 100% rename from damus/Util/Router.swift rename to damus/Shared/Utilities/Router.swift diff --git a/damus/Util/SequenceUtils.swift b/damus/Shared/Utilities/SequenceUtils.swift similarity index 100% rename from damus/Util/SequenceUtils.swift rename to damus/Shared/Utilities/SequenceUtils.swift diff --git a/damus/Util/StringCodable.swift b/damus/Shared/Utilities/StringCodable.swift similarity index 100% rename from damus/Util/StringCodable.swift rename to damus/Shared/Utilities/StringCodable.swift diff --git a/damus/Util/StringUtil.swift b/damus/Shared/Utilities/StringUtil.swift similarity index 100% rename from damus/Util/StringUtil.swift rename to damus/Shared/Utilities/StringUtil.swift diff --git a/damus/Util/Theme.swift b/damus/Shared/Utilities/Theme.swift similarity index 100% rename from damus/Util/Theme.swift rename to damus/Shared/Utilities/Theme.swift diff --git a/damus/Util/TimeAgo.swift b/damus/Shared/Utilities/TimeAgo.swift similarity index 100% rename from damus/Util/TimeAgo.swift rename to damus/Shared/Utilities/TimeAgo.swift diff --git a/damus/Util/URIParsing.swift b/damus/Shared/Utilities/URIParsing.swift similarity index 100% rename from damus/Util/URIParsing.swift rename to damus/Shared/Utilities/URIParsing.swift diff --git a/damus/Models/URLHandler.swift b/damus/Shared/Utilities/URLHandler.swift similarity index 100% rename from damus/Models/URLHandler.swift rename to damus/Shared/Utilities/URLHandler.swift diff --git a/damus/Util/Undistractor.swift b/damus/Shared/Utilities/Undistractor.swift similarity index 100% rename from damus/Util/Undistractor.swift rename to damus/Shared/Utilities/Undistractor.swift diff --git a/damus/Util/VersionInfo.swift b/damus/Shared/Utilities/VersionInfo.swift similarity index 100% rename from damus/Util/VersionInfo.swift rename to damus/Shared/Utilities/VersionInfo.swift diff --git a/damus/Views/Buttons/AlbyButton.swift b/damus/Views/Buttons/AlbyButton.swift deleted file mode 100644 index ebe18546..00000000 --- a/damus/Views/Buttons/AlbyButton.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// AlbyButton.swift -// damus -// -// Created by William Casarin on 2023-05-09. -// - -import SwiftUI - -struct AlbyButton: View { - let action: () -> () - - @Environment(\.colorScheme) var colorScheme - - init(action: @escaping () -> ()) { - self.action = action - } - - var body: some View { - Button(action: { - action() - }) { - HStack { - Image("alby") - - Text("Connect to Alby Wallet", comment: "Button to attach an Alby Wallet, a service that provides a Lightning wallet for zapping sats. Alby is the name of the service and should not be translated.") - .padding() - } - .frame(minWidth: 300, maxWidth: .infinity, alignment: .center) - .foregroundColor(DamusColors.black) - .background { - RoundedRectangle(cornerRadius: 12) - .fill(AlbyGradient, strokeBorder: colorScheme == .light ? DamusColors.black.opacity(0.2) : DamusColors.white, lineWidth: 1) - } - } - } -} - -struct AlbyButton_Previews: PreviewProvider { - static var previews: some View { - AlbyButton(action: { - print("alby button") - }) - } -}