From 0a622f6ca886a991da4c559775f77a9d88de07f9 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 13:41:40 +0800 Subject: [PATCH 01/23] chore: isolate ASDK build --- Mastodon.xcodeproj/project.pbxproj | 561 +++++++++++++----- .../xcschemes/xcschememanagement.plist | 4 +- Mastodon/Coordinator/SceneCoordinator.swift | 4 + .../Diffiable/DataSource/ASTableNode.swift | 4 + .../TableNodeDiffableDataSource.swift | 4 + .../Diffiable/Section/StatusSection.swift | 8 +- .../StatusProvider+StatusNodeDelegate.swift | 4 + .../StatusProvider/StatusProvider.swift | 7 + .../StatusProvider/StatusProviderFacade.swift | 5 + ...meTimelineViewController+DebugAction.swift | 9 +- ...cHomeTimelineViewController+Provider.swift | 4 + .../AsyncHomeTimelineViewController.swift | 29 +- .../AsyncHomeTimelineViewModel+Diffable.swift | 4 + ...omeTimelineViewModel+LoadLatestState.swift | 4 + ...omeTimelineViewModel+LoadMiddleState.swift | 4 + ...omeTimelineViewModel+LoadOldestState.swift | 4 + .../AsyncHomeTimelineViewModel.swift | 4 + ...meTimelineViewController+DebugAction.swift | 4 - .../HomeTimelineViewController.swift | 28 - .../Scene/MainTab/MainTabBarController.swift | 42 ++ .../View/Node/ASMetaEditableTextNode.swift | 4 + .../Share/View/Node/Status/StatusNode.swift | 4 + .../Status/TimelineBottomLoaderNode.swift | 4 + .../Status/TimelineMiddleLoaderNode.swift | 4 + Mastodon/State/AppContext.swift | 6 - Mastodon/Supporting Files/AppDelegate.swift | 7 +- Mastodon/Vender/ActivityIndicatorNode.swift | 4 + Podfile | 6 +- Podfile.lock | 2 +- 29 files changed, 549 insertions(+), 229 deletions(-) diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 91a63516d..dd3b14de9 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -68,7 +68,7 @@ 2D38F1FE25CD481700561493 /* StatusProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1FD25CD481700561493 /* StatusProvider.swift */; }; 2D38F20825CD491300561493 /* DisposeBagCollectable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F20725CD491300561493 /* DisposeBagCollectable.swift */; }; 2D3F9E0425DFA133004262D9 /* UITapGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D3F9E0325DFA133004262D9 /* UITapGestureRecognizer.swift */; }; - 2D42FF6125C8177C004A627A /* ActiveLabel in Frameworks */ = {isa = PBXBuildFile; productRef = 2D42FF6025C8177C004A627A /* ActiveLabel */; }; + 2D42FF6125C8177C004A627A /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = 2D42FF6025C8177C004A627A /* SwiftPackageProductDependency */; }; 2D42FF6B25C817D2004A627A /* MastodonStatusContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D42FF6A25C817D2004A627A /* MastodonStatusContent.swift */; }; 2D42FF7E25C82218004A627A /* ActionToolBarContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D42FF7D25C82218004A627A /* ActionToolBarContainer.swift */; }; 2D42FF8525C8224F004A627A /* HitTestExpandedButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D42FF8425C8224F004A627A /* HitTestExpandedButton.swift */; }; @@ -81,7 +81,7 @@ 2D571B2F26004EC000540450 /* NavigationBarProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D571B2E26004EC000540450 /* NavigationBarProgressView.swift */; }; 2D59819B25E4A581000FB903 /* MastodonConfirmEmailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D59819A25E4A581000FB903 /* MastodonConfirmEmailViewController.swift */; }; 2D5981A125E4A593000FB903 /* MastodonConfirmEmailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5981A025E4A593000FB903 /* MastodonConfirmEmailViewModel.swift */; }; - 2D5981BA25E4D7F8000FB903 /* ThirdPartyMailer in Frameworks */ = {isa = PBXBuildFile; productRef = 2D5981B925E4D7F8000FB903 /* ThirdPartyMailer */; }; + 2D5981BA25E4D7F8000FB903 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = 2D5981B925E4D7F8000FB903 /* SwiftPackageProductDependency */; }; 2D5A3D0325CF8742002347D6 /* ControlContainableScrollViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5A3D0225CF8742002347D6 /* ControlContainableScrollViews.swift */; }; 2D5A3D2825CF8BC9002347D6 /* HomeTimelineViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5A3D2725CF8BC9002347D6 /* HomeTimelineViewModel+Diffable.swift */; }; 2D5A3D3825CF8D9F002347D6 /* ScrollViewContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5A3D3725CF8D9F002347D6 /* ScrollViewContainer.swift */; }; @@ -91,7 +91,7 @@ 2D61254D262547C200299647 /* APIService+Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61254C262547C200299647 /* APIService+Notification.swift */; }; 2D61335825C188A000CAE157 /* APIService+Persist+Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61335725C188A000CAE157 /* APIService+Persist+Status.swift */; }; 2D61335E25C1894B00CAE157 /* APIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61335D25C1894B00CAE157 /* APIService.swift */; }; - 2D61336925C18A4F00CAE157 /* AlamofireNetworkActivityIndicator in Frameworks */ = {isa = PBXBuildFile; productRef = 2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */; }; + 2D61336925C18A4F00CAE157 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = 2D61336825C18A4F00CAE157 /* SwiftPackageProductDependency */; }; 2D650FAB25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D650FAA25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift */; }; 2D694A7425F9EB4E0038ADDC /* ContentWarningOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D694A7325F9EB4E0038ADDC /* ContentWarningOverlayView.swift */; }; 2D69CFF425CA9E2200C3A1B2 /* LoadMoreConfigurableTableViewContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D69CFF325CA9E2200C3A1B2 /* LoadMoreConfigurableTableViewContainer.swift */; }; @@ -117,7 +117,7 @@ 2D927F0E25C7E9C9004F19B8 /* History.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D927F0D25C7E9C9004F19B8 /* History.swift */; }; 2D927F1425C7EDD9004F19B8 /* Emoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D927F1325C7EDD9004F19B8 /* Emoji.swift */; }; 2D939AB525EDD8A90076FA61 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D939AB425EDD8A90076FA61 /* String.swift */; }; - 2D939AC825EE14620076FA61 /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 2D939AC725EE14620076FA61 /* CropViewController */; }; + 2D939AC825EE14620076FA61 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = 2D939AC725EE14620076FA61 /* SwiftPackageProductDependency */; }; 2D939AE825EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D939AE725EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift */; }; 2D9DB967263A76FB007C1D71 /* BlockDomainService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D9DB966263A76FB007C1D71 /* BlockDomainService.swift */; }; 2D9DB969263A833E007C1D71 /* DomainBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D9DB968263A833E007C1D71 /* DomainBlock.swift */; }; @@ -165,7 +165,7 @@ 5BB04FF5262F0E6D0043BFF6 /* ReportSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB04FF4262F0E6D0043BFF6 /* ReportSection.swift */; }; 5D0393902612D259007FE196 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D03938F2612D259007FE196 /* WebViewController.swift */; }; 5D0393962612D266007FE196 /* WebViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D0393952612D266007FE196 /* WebViewModel.swift */; }; - 5D526FE225BE9AC400460CB9 /* MastodonSDK in Frameworks */ = {isa = PBXBuildFile; productRef = 5D526FE125BE9AC400460CB9 /* MastodonSDK */; }; + 5D526FE225BE9AC400460CB9 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = 5D526FE125BE9AC400460CB9 /* SwiftPackageProductDependency */; }; 5DA732CC2629CEF500A92342 /* UIView+Remove.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DA732CB2629CEF500A92342 /* UIView+Remove.swift */; }; 5DDDF1932617442700311060 /* Mastodon+Entity+Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DDDF1922617442700311060 /* Mastodon+Entity+Account.swift */; }; 5DDDF1992617447F00311060 /* Mastodon+Entity+Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DDDF1982617447F00311060 /* Mastodon+Entity+Tag.swift */; }; @@ -181,8 +181,8 @@ 5E44BF88AD33646E64727BCF /* Pods_MastodonTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD92E0F10BDE4FE7C4B999F2 /* Pods_MastodonTests.framework */; }; 87FFDA5D898A5C42ADCB35E7 /* Pods_Mastodon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4ABE34829701A4496C5BB64 /* Pods_Mastodon.framework */; }; B914FC6B0B8AF18573C0B291 /* Pods_NotificationService.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 374AA339A20E0FAC75BCDA6D /* Pods_NotificationService.framework */; }; - DB00CA972632DDB600A54956 /* CommonOSLog in Frameworks */ = {isa = PBXBuildFile; productRef = DB00CA962632DDB600A54956 /* CommonOSLog */; }; - DB0140BD25C40D7500F9F3CF /* CommonOSLog in Frameworks */ = {isa = PBXBuildFile; productRef = DB0140BC25C40D7500F9F3CF /* CommonOSLog */; }; + DB00CA972632DDB600A54956 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB00CA962632DDB600A54956 /* SwiftPackageProductDependency */; }; + DB0140BD25C40D7500F9F3CF /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB0140BC25C40D7500F9F3CF /* SwiftPackageProductDependency */; }; DB0140CF25C42AEE00F9F3CF /* OSLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0140CE25C42AEE00F9F3CF /* OSLog.swift */; }; DB023295267F0AB800031745 /* ASMetaEditableTextNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023294267F0AB800031745 /* ASMetaEditableTextNode.swift */; }; DB029E95266A20430062874E /* MastodonAuthenticationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB029E94266A20430062874E /* MastodonAuthenticationController.swift */; }; @@ -220,7 +220,7 @@ DB35FC1F2612F1D9006193C9 /* ProfileRelationshipActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB35FC1E2612F1D9006193C9 /* ProfileRelationshipActionButton.swift */; }; DB35FC252612FD7A006193C9 /* ProfileFieldView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB35FC242612FD7A006193C9 /* ProfileFieldView.swift */; }; DB35FC2F26130172006193C9 /* MastodonField.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB35FC2E26130172006193C9 /* MastodonField.swift */; }; - DB3D0FF325BAA61700EAA174 /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB3D0FF225BAA61700EAA174 /* AlamofireImage */; }; + DB3D0FF325BAA61700EAA174 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB3D0FF225BAA61700EAA174 /* SwiftPackageProductDependency */; }; DB3D100D25BAA75E00EAA174 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DB3D100F25BAA75E00EAA174 /* Localizable.strings */; }; DB427DD625BAA00100D1B89D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB427DD525BAA00100D1B89D /* AppDelegate.swift */; }; DB427DD825BAA00100D1B89D /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB427DD725BAA00100D1B89D /* SceneDelegate.swift */; }; @@ -261,7 +261,7 @@ DB49A63D25FF609300B98345 /* PlayerContainerView+MediaTypeIndicotorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A63C25FF609300B98345 /* PlayerContainerView+MediaTypeIndicotorView.swift */; }; DB5086A525CC0B7000C2C187 /* AvatarBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5086A425CC0B7000C2C187 /* AvatarBarButtonItem.swift */; }; DB5086AB25CC0BBB00C2C187 /* AvatarConfigurableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5086AA25CC0BBB00C2C187 /* AvatarConfigurableView.swift */; }; - DB5086B825CC0D6400C2C187 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = DB5086B725CC0D6400C2C187 /* Kingfisher */; }; + DB5086B825CC0D6400C2C187 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB5086B725CC0D6400C2C187 /* SwiftPackageProductDependency */; }; DB5086BE25CC0D9900C2C187 /* SplashPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5086BD25CC0D9900C2C187 /* SplashPreference.swift */; }; DB51D172262832380062B7A1 /* BlurHashDecode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB51D170262832380062B7A1 /* BlurHashDecode.swift */; }; DB51D173262832380062B7A1 /* BlurHashEncode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB51D171262832380062B7A1 /* BlurHashEncode.swift */; }; @@ -297,7 +297,7 @@ DB6804C82637CE2F00430867 /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; DB6804D12637CE4700430867 /* UserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6804D02637CE4700430867 /* UserDefaults.swift */; }; DB6804FD2637CFEC00430867 /* AppSecret.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6804FC2637CFEC00430867 /* AppSecret.swift */; }; - DB6805102637D0F800430867 /* KeychainAccess in Frameworks */ = {isa = PBXBuildFile; productRef = DB68050F2637D0F800430867 /* KeychainAccess */; }; + DB6805102637D0F800430867 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB68050F2637D0F800430867 /* SwiftPackageProductDependency */; }; DB6805262637D7DD00430867 /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; DB68586425E619B700F0A850 /* NSKeyValueObservation.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB68586325E619B700F0A850 /* NSKeyValueObservation.swift */; }; DB68A04A25E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB68A04925E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift */; }; @@ -310,7 +310,7 @@ DB6D1B3D2636857500ACB481 /* AppearancePreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D1B3C2636857500ACB481 /* AppearancePreference.swift */; }; DB6D1B44263691CF00ACB481 /* Mastodon+API+Subscriptions+Policy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D1B43263691CF00ACB481 /* Mastodon+API+Subscriptions+Policy.swift */; }; DB6D9F3526351B7A008423CD /* NotificationService+Decrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D9F3426351B7A008423CD /* NotificationService+Decrypt.swift */; }; - DB6D9F42263527CE008423CD /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB6D9F41263527CE008423CD /* AlamofireImage */; }; + DB6D9F42263527CE008423CD /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB6D9F41263527CE008423CD /* SwiftPackageProductDependency */; }; DB6D9F4926353FD7008423CD /* Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D9F4826353FD6008423CD /* Subscription.swift */; }; DB6D9F502635761F008423CD /* SubscriptionAlerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D9F4F2635761F008423CD /* SubscriptionAlerts.swift */; }; DB6D9F57263577D2008423CD /* APIService+CoreData+Setting.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D9F56263577D2008423CD /* APIService+CoreData+Setting.swift */; }; @@ -321,8 +321,8 @@ DB6D9F8426358EEC008423CD /* SettingsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D9F8326358EEC008423CD /* SettingsItem.swift */; }; DB6D9F9726367249008423CD /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D9F9626367249008423CD /* SettingsViewController.swift */; }; DB6F5E2F264E5518009108F4 /* MastodonRegex.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6F5E2E264E5518009108F4 /* MastodonRegex.swift */; }; - DB6F5E32264E7410009108F4 /* TwitterTextEditor in Frameworks */ = {isa = PBXBuildFile; productRef = DB6F5E31264E7410009108F4 /* TwitterTextEditor */; }; - DB6F5E33264E7410009108F4 /* TwitterTextEditor in Embed Frameworks */ = {isa = PBXBuildFile; productRef = DB6F5E31264E7410009108F4 /* TwitterTextEditor */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + DB6F5E32264E7410009108F4 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB6F5E31264E7410009108F4 /* SwiftPackageProductDependency */; }; + DB6F5E33264E7410009108F4 /* BuildFile in Embed Frameworks */ = {isa = PBXBuildFile; productRef = DB6F5E31264E7410009108F4 /* SwiftPackageProductDependency */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; DB6F5E35264E78E7009108F4 /* AutoCompleteViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6F5E34264E78E7009108F4 /* AutoCompleteViewController.swift */; }; DB6F5E38264E994A009108F4 /* AutoCompleteTopChevronView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6F5E37264E994A009108F4 /* AutoCompleteTopChevronView.swift */; }; DB71FD2C25F86A5100512AE1 /* AvatarStackContainerButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB71FD2B25F86A5100512AE1 /* AvatarStackContainerButton.swift */; }; @@ -387,7 +387,7 @@ DB98339C25C96DE600AD9700 /* APIService+Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98339B25C96DE600AD9700 /* APIService+Account.swift */; }; DB9A485C2603010E008B817C /* PHPickerResultLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A485B2603010E008B817C /* PHPickerResultLoader.swift */; }; DB9A486C26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A486B26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift */; }; - DB9A487E2603456B008B817C /* UITextView+Placeholder in Frameworks */ = {isa = PBXBuildFile; productRef = DB9A487D2603456B008B817C /* UITextView+Placeholder */; }; + DB9A487E2603456B008B817C /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB9A487D2603456B008B817C /* SwiftPackageProductDependency */; }; DB9A488A26034D40008B817C /* ComposeViewModel+PublishState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A488926034D40008B817C /* ComposeViewModel+PublishState.swift */; }; DB9A489026035963008B817C /* APIService+Media.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A488F26035963008B817C /* APIService+Media.swift */; }; DB9A48962603685D008B817C /* MastodonAttachmentService+UploadState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A48952603685D008B817C /* MastodonAttachmentService+UploadState.swift */; }; @@ -412,7 +412,7 @@ DBA9443E265CFA6400C537E1 /* ProfileFieldCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA9443D265CFA6400C537E1 /* ProfileFieldCollectionViewCell.swift */; }; DBA94440265D137600C537E1 /* Mastodon+Entity+Field.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA9443F265D137600C537E1 /* Mastodon+Entity+Field.swift */; }; DBABE3EC25ECAC4B00879EE5 /* WelcomeIllustrationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBABE3EB25ECAC4B00879EE5 /* WelcomeIllustrationView.swift */; }; - DBAC6483267D0B21007FE9FD /* DifferenceKit in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC6482267D0B21007FE9FD /* DifferenceKit */; }; + DBAC6483267D0B21007FE9FD /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC6482267D0B21007FE9FD /* SwiftPackageProductDependency */; }; DBAC6485267D0F9E007FE9FD /* StatusNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6484267D0F9E007FE9FD /* StatusNode.swift */; }; DBAC6488267D388B007FE9FD /* ASTableNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6487267D388B007FE9FD /* ASTableNode.swift */; }; DBAC648A267DC355007FE9FD /* NSDiffableDataSourceSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6489267DC355007FE9FD /* NSDiffableDataSourceSnapshot.swift */; }; @@ -420,8 +420,8 @@ DBAC6497267DECCB007FE9FD /* TimelineMiddleLoaderNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6496267DECCB007FE9FD /* TimelineMiddleLoaderNode.swift */; }; DBAC6499267DF2C4007FE9FD /* TimelineBottomLoaderNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6498267DF2C4007FE9FD /* TimelineBottomLoaderNode.swift */; }; DBAC649B267DF8C8007FE9FD /* ActivityIndicatorNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC649A267DF8C8007FE9FD /* ActivityIndicatorNode.swift */; }; - DBAC649E267DFE43007FE9FD /* DiffableDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC649D267DFE43007FE9FD /* DiffableDataSources */; }; - DBAC64A1267E6D02007FE9FD /* Fuzi in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC64A0267E6D02007FE9FD /* Fuzi */; }; + DBAC649E267DFE43007FE9FD /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC649D267DFE43007FE9FD /* SwiftPackageProductDependency */; }; + DBAC64A1267E6D02007FE9FD /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC64A0267E6D02007FE9FD /* SwiftPackageProductDependency */; }; DBAE3F682615DD60004B8251 /* UserProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F672615DD60004B8251 /* UserProvider.swift */; }; DBAE3F822615DDA3004B8251 /* ProfileViewController+UserProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F812615DDA3004B8251 /* ProfileViewController+UserProvider.swift */; }; DBAE3F882615DDF4004B8251 /* UserProviderFacade.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F872615DDF4004B8251 /* UserProviderFacade.swift */; }; @@ -431,10 +431,10 @@ DBAE3FA92617106E004B8251 /* MastodonMetricFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3FA82617106E004B8251 /* MastodonMetricFormatter.swift */; }; DBAE3FAF26172FC0004B8251 /* RemoteProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3FAE26172FC0004B8251 /* RemoteProfileViewModel.swift */; }; DBAEDE5C267A058D00D25FF5 /* BlurhashImageCacheService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAEDE5B267A058D00D25FF5 /* BlurhashImageCacheService.swift */; }; - DBAEDE5F267A0B1500D25FF5 /* Nuke in Frameworks */ = {isa = PBXBuildFile; productRef = DBAEDE5E267A0B1500D25FF5 /* Nuke */; }; + DBAEDE5F267A0B1500D25FF5 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DBAEDE5E267A0B1500D25FF5 /* SwiftPackageProductDependency */; }; DBAEDE61267B342D00D25FF5 /* StatusContentCacheService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAEDE60267B342D00D25FF5 /* StatusContentCacheService.swift */; }; DBAFB7352645463500371D5F /* Emojis.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAFB7342645463500371D5F /* Emojis.swift */; }; - DBB525082611EAC0002F1F29 /* Tabman in Frameworks */ = {isa = PBXBuildFile; productRef = DBB525072611EAC0002F1F29 /* Tabman */; }; + DBB525082611EAC0002F1F29 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DBB525072611EAC0002F1F29 /* SwiftPackageProductDependency */; }; DBB5250E2611EBAF002F1F29 /* ProfileSegmentedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB5250D2611EBAF002F1F29 /* ProfileSegmentedViewController.swift */; }; DBB525212611EBD6002F1F29 /* ProfilePagingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB525202611EBD6002F1F29 /* ProfilePagingViewController.swift */; }; DBB525302611EBF3002F1F29 /* ProfilePagingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB5252F2611EBF3002F1F29 /* ProfilePagingViewModel.swift */; }; @@ -579,7 +579,7 @@ files = ( DB6804872637CD4C00430867 /* AppShared.framework in Embed Frameworks */, DB89BA0425C10FD0008580ED /* CoreDataStack.framework in Embed Frameworks */, - DB6F5E33264E7410009108F4 /* TwitterTextEditor in Embed Frameworks */, + DB6F5E33264E7410009108F4 /* BuildFile in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -620,6 +620,7 @@ 0FB3D33125E5F50E00AAD544 /* PickServerSearchCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerSearchCell.swift; sourceTree = ""; }; 0FB3D33725E6401400AAD544 /* PickServerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PickServerCell.swift; sourceTree = ""; }; 164F0EBB267D4FE400249499 /* BoopSound.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = BoopSound.caf; sourceTree = ""; }; + 1D6D967E77A5357E2C6110D9 /* Pods-Mastodon.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.asdk - debug.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.asdk - debug.xcconfig"; sourceTree = ""; }; 2D04F42425C255B9003F936F /* APIService+PublicTimeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+PublicTimeline.swift"; sourceTree = ""; }; 2D084B8C26258EA3003AA3AF /* NotificationViewModel+diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+diffable.swift"; sourceTree = ""; }; 2D084B9226259545003AA3AF /* NotificationViewModel+LoadLatestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+LoadLatestState.swift"; sourceTree = ""; }; @@ -733,9 +734,11 @@ 2DFAD5362617010500F9EE7C /* SearchingTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchingTableViewCell.swift; sourceTree = ""; }; 2E1F6A67FDF9771D3E064FDC /* Pods-Mastodon.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.debug.xcconfig"; sourceTree = ""; }; 374AA339A20E0FAC75BCDA6D /* Pods_NotificationService.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_NotificationService.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B7FD8F28DDA8FBCE5562B78 /* Pods-NotificationService.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.asdk - debug.xcconfig"; path = "Target Support Files/Pods-NotificationService/Pods-NotificationService.asdk - debug.xcconfig"; sourceTree = ""; }; 3C030226D3C73DCC23D67452 /* Pods_Mastodon_MastodonUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Mastodon_MastodonUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 452147B2903DF38070FE56A2 /* Pods_MastodonTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MastodonTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 459EA4F43058CAB47719E963 /* Pods-Mastodon-MastodonUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.debug.xcconfig"; sourceTree = ""; }; + 46DAB0EBDDFB678347CD96FF /* Pods-MastodonTests.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonTests.asdk - release.xcconfig"; path = "Target Support Files/Pods-MastodonTests/Pods-MastodonTests.asdk - release.xcconfig"; sourceTree = ""; }; 5B24BBD7262DB14800A9381B /* ReportViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReportViewModel.swift; sourceTree = ""; }; 5B24BBD8262DB14800A9381B /* ReportViewModel+Diffable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ReportViewModel+Diffable.swift"; sourceTree = ""; }; 5B24BBE1262DB19100A9381B /* APIService+Report.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "APIService+Report.swift"; sourceTree = ""; }; @@ -770,17 +773,22 @@ 5DF1058425F88AE500D6C0D4 /* NeedsDependency+AVPlayerViewControllerDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NeedsDependency+AVPlayerViewControllerDelegate.swift"; sourceTree = ""; }; 5DFC35DE262068D20045711D /* SearchViewController+Follow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SearchViewController+Follow.swift"; sourceTree = ""; }; 75E3471C898DDD9631729B6E /* Pods-Mastodon.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.release.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.release.xcconfig"; sourceTree = ""; }; + 7CEFFAE9AF9284B13C0A758D /* Pods-MastodonTests.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonTests.asdk - debug.xcconfig"; path = "Target Support Files/Pods-MastodonTests/Pods-MastodonTests.asdk - debug.xcconfig"; sourceTree = ""; }; 819CEC9DCAD8E8E7BD85A7BB /* Pods-Mastodon.asdk.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.asdk.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.asdk.xcconfig"; sourceTree = ""; }; + 8850E70A1D5FF51432E43653 /* Pods-Mastodon-MastodonUITests.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.asdk - release.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.asdk - release.xcconfig"; sourceTree = ""; }; 8ED8C4B1F1BA2DCFF2926BB1 /* Pods-Mastodon-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-NotificationService/Pods-Mastodon-NotificationService.debug.xcconfig"; sourceTree = ""; }; 9553C689FFA9EBC880CAB78D /* Pods-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-NotificationService/Pods-NotificationService.debug.xcconfig"; sourceTree = ""; }; 9776D7C4B79101CF70181127 /* Pods-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-NotificationService/Pods-NotificationService.release.xcconfig"; sourceTree = ""; }; 9780A4C98FFC65B32B50D1C0 /* Pods-MastodonTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonTests.release.xcconfig"; path = "Target Support Files/Pods-MastodonTests/Pods-MastodonTests.release.xcconfig"; sourceTree = ""; }; 9A0982D8F349244EB558CDFD /* Pods-AppShared.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AppShared.debug.xcconfig"; path = "Target Support Files/Pods-AppShared/Pods-AppShared.debug.xcconfig"; sourceTree = ""; }; + 9CFF58FD900AC059428700E7 /* Pods-NotificationService.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NotificationService.asdk - release.xcconfig"; path = "Target Support Files/Pods-NotificationService/Pods-NotificationService.asdk - release.xcconfig"; sourceTree = ""; }; A4ABE34829701A4496C5BB64 /* Pods_Mastodon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Mastodon.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A67FD038ECDA0E411AF8DB4D /* Pods-Mastodon-MastodonUITests.asdk.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.asdk.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.asdk.xcconfig"; sourceTree = ""; }; + A9B1FB898DFD6063B044298C /* Pods-AppShared.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AppShared.asdk - debug.xcconfig"; path = "Target Support Files/Pods-AppShared/Pods-AppShared.asdk - debug.xcconfig"; sourceTree = ""; }; B31D44635FCF6452F7E1B865 /* Pods-Mastodon-AppShared.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-AppShared.release.xcconfig"; path = "Target Support Files/Pods-Mastodon-AppShared/Pods-Mastodon-AppShared.release.xcconfig"; sourceTree = ""; }; B44342AC2B6585F8295F1DDF /* Pods-Mastodon-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-Mastodon-NotificationService/Pods-Mastodon-NotificationService.release.xcconfig"; sourceTree = ""; }; BB482D32A7B9825BF5327C4F /* Pods-Mastodon-MastodonUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.release.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.release.xcconfig"; sourceTree = ""; }; + BD7598A87F4497045EDEF252 /* Pods-Mastodon.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.asdk - release.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.asdk - release.xcconfig"; sourceTree = ""; }; CD92E0F10BDE4FE7C4B999F2 /* Pods_MastodonTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MastodonTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D7D7CF93E262178800077512 /* Pods-Mastodon-AppShared.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-AppShared.debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-AppShared/Pods-Mastodon-AppShared.debug.xcconfig"; sourceTree = ""; }; DB0140CE25C42AEE00F9F3CF /* OSLog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OSLog.swift; sourceTree = ""; }; @@ -1091,6 +1099,8 @@ DBF96325262EC0A6001D8D25 /* AuthenticationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AuthenticationServices.framework; path = System/Library/Frameworks/AuthenticationServices.framework; sourceTree = SDKROOT; }; DBF98149265E24F500E4BA07 /* ProfileFieldCollectionViewHeaderFooterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileFieldCollectionViewHeaderFooterView.swift; sourceTree = ""; }; DBF9814B265E339500E4BA07 /* ProfileFieldAddEntryCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileFieldAddEntryCollectionViewCell.swift; sourceTree = ""; }; + DDB1B139FA8EA26F510D58B6 /* Pods-AppShared.asdk - release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AppShared.asdk - release.xcconfig"; path = "Target Support Files/Pods-AppShared/Pods-AppShared.asdk - release.xcconfig"; sourceTree = ""; }; + E5C7236E58D14A0322FE00F2 /* Pods-Mastodon-MastodonUITests.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon-MastodonUITests.asdk - debug.xcconfig"; path = "Target Support Files/Pods-Mastodon-MastodonUITests/Pods-Mastodon-MastodonUITests.asdk - debug.xcconfig"; sourceTree = ""; }; EC6E707B68A67DB08EC288FA /* Pods-MastodonTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MastodonTests.debug.xcconfig"; path = "Target Support Files/Pods-MastodonTests/Pods-MastodonTests.debug.xcconfig"; sourceTree = ""; }; ECA373ABA86BE3C2D7ED878E /* Pods-AppShared.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AppShared.release.xcconfig"; path = "Target Support Files/Pods-AppShared/Pods-AppShared.release.xcconfig"; sourceTree = ""; }; EE13214BC0246BE5210CCC10 /* Pods-AppShared.asdk.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AppShared.asdk.xcconfig"; path = "Target Support Files/Pods-AppShared/Pods-AppShared.asdk.xcconfig"; sourceTree = ""; }; @@ -1103,24 +1113,24 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DBAEDE5F267A0B1500D25FF5 /* Nuke in Frameworks */, - DB6F5E32264E7410009108F4 /* TwitterTextEditor in Frameworks */, - DB0140BD25C40D7500F9F3CF /* CommonOSLog in Frameworks */, + DBAEDE5F267A0B1500D25FF5 /* BuildFile in Frameworks */, + DB6F5E32264E7410009108F4 /* BuildFile in Frameworks */, + DB0140BD25C40D7500F9F3CF /* BuildFile in Frameworks */, DB89BA0325C10FD0008580ED /* CoreDataStack.framework in Frameworks */, - 2D42FF6125C8177C004A627A /* ActiveLabel in Frameworks */, - DB9A487E2603456B008B817C /* UITextView+Placeholder in Frameworks */, - 2D939AC825EE14620076FA61 /* CropViewController in Frameworks */, - DBB525082611EAC0002F1F29 /* Tabman in Frameworks */, - 5D526FE225BE9AC400460CB9 /* MastodonSDK in Frameworks */, + 2D42FF6125C8177C004A627A /* BuildFile in Frameworks */, + DB9A487E2603456B008B817C /* BuildFile in Frameworks */, + 2D939AC825EE14620076FA61 /* BuildFile in Frameworks */, + DBB525082611EAC0002F1F29 /* BuildFile in Frameworks */, + 5D526FE225BE9AC400460CB9 /* BuildFile in Frameworks */, DB6804862637CD4C00430867 /* AppShared.framework in Frameworks */, - DB5086B825CC0D6400C2C187 /* Kingfisher in Frameworks */, + DB5086B825CC0D6400C2C187 /* BuildFile in Frameworks */, DBF96326262EC0A6001D8D25 /* AuthenticationServices.framework in Frameworks */, - DBAC6483267D0B21007FE9FD /* DifferenceKit in Frameworks */, - 2D61336925C18A4F00CAE157 /* AlamofireNetworkActivityIndicator in Frameworks */, - DBAC64A1267E6D02007FE9FD /* Fuzi in Frameworks */, - DB3D0FF325BAA61700EAA174 /* AlamofireImage in Frameworks */, - DBAC649E267DFE43007FE9FD /* DiffableDataSources in Frameworks */, - 2D5981BA25E4D7F8000FB903 /* ThirdPartyMailer in Frameworks */, + DBAC6483267D0B21007FE9FD /* BuildFile in Frameworks */, + 2D61336925C18A4F00CAE157 /* BuildFile in Frameworks */, + DBAC64A1267E6D02007FE9FD /* BuildFile in Frameworks */, + DB3D0FF325BAA61700EAA174 /* BuildFile in Frameworks */, + DBAC649E267DFE43007FE9FD /* BuildFile in Frameworks */, + 2D5981BA25E4D7F8000FB903 /* BuildFile in Frameworks */, 87FFDA5D898A5C42ADCB35E7 /* Pods_Mastodon.framework in Frameworks */, DB6804C82637CE2F00430867 /* AppShared.framework in Frameworks */, ); @@ -1147,7 +1157,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DB6805102637D0F800430867 /* KeychainAccess in Frameworks */, + DB6805102637D0F800430867 /* BuildFile in Frameworks */, EE93E8E8F9E0C39EAAEBD92F /* Pods_AppShared.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1172,8 +1182,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DB00CA972632DDB600A54956 /* CommonOSLog in Frameworks */, - DB6D9F42263527CE008423CD /* AlamofireImage in Frameworks */, + DB00CA972632DDB600A54956 /* BuildFile in Frameworks */, + DB6D9F42263527CE008423CD /* BuildFile in Frameworks */, DB6804A52637CDCC00430867 /* AppShared.framework in Frameworks */, B914FC6B0B8AF18573C0B291 /* Pods_NotificationService.framework in Frameworks */, ); @@ -1271,6 +1281,16 @@ A67FD038ECDA0E411AF8DB4D /* Pods-Mastodon-MastodonUITests.asdk.xcconfig */, 5DA82A9B4ABDAFA3AB9A49C7 /* Pods-MastodonTests.asdk.xcconfig */, F31E7502A7E3945B98C6CBAF /* Pods-NotificationService.asdk.xcconfig */, + A9B1FB898DFD6063B044298C /* Pods-AppShared.asdk - debug.xcconfig */, + DDB1B139FA8EA26F510D58B6 /* Pods-AppShared.asdk - release.xcconfig */, + 1D6D967E77A5357E2C6110D9 /* Pods-Mastodon.asdk - debug.xcconfig */, + BD7598A87F4497045EDEF252 /* Pods-Mastodon.asdk - release.xcconfig */, + E5C7236E58D14A0322FE00F2 /* Pods-Mastodon-MastodonUITests.asdk - debug.xcconfig */, + 8850E70A1D5FF51432E43653 /* Pods-Mastodon-MastodonUITests.asdk - release.xcconfig */, + 7CEFFAE9AF9284B13C0A758D /* Pods-MastodonTests.asdk - debug.xcconfig */, + 46DAB0EBDDFB678347CD96FF /* Pods-MastodonTests.asdk - release.xcconfig */, + 3B7FD8F28DDA8FBCE5562B78 /* Pods-NotificationService.asdk - debug.xcconfig */, + 9CFF58FD900AC059428700E7 /* Pods-NotificationService.asdk - release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -2609,21 +2629,21 @@ ); name = Mastodon; packageProductDependencies = ( - DB3D0FF225BAA61700EAA174 /* AlamofireImage */, - 5D526FE125BE9AC400460CB9 /* MastodonSDK */, - 2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */, - 2D42FF6025C8177C004A627A /* ActiveLabel */, - DB0140BC25C40D7500F9F3CF /* CommonOSLog */, - DB5086B725CC0D6400C2C187 /* Kingfisher */, - 2D5981B925E4D7F8000FB903 /* ThirdPartyMailer */, - 2D939AC725EE14620076FA61 /* CropViewController */, - DB9A487D2603456B008B817C /* UITextView+Placeholder */, - DBB525072611EAC0002F1F29 /* Tabman */, - DB6F5E31264E7410009108F4 /* TwitterTextEditor */, - DBAEDE5E267A0B1500D25FF5 /* Nuke */, - DBAC6482267D0B21007FE9FD /* DifferenceKit */, - DBAC649D267DFE43007FE9FD /* DiffableDataSources */, - DBAC64A0267E6D02007FE9FD /* Fuzi */, + DB3D0FF225BAA61700EAA174 /* SwiftPackageProductDependency */, + 5D526FE125BE9AC400460CB9 /* SwiftPackageProductDependency */, + 2D61336825C18A4F00CAE157 /* SwiftPackageProductDependency */, + 2D42FF6025C8177C004A627A /* SwiftPackageProductDependency */, + DB0140BC25C40D7500F9F3CF /* SwiftPackageProductDependency */, + DB5086B725CC0D6400C2C187 /* SwiftPackageProductDependency */, + 2D5981B925E4D7F8000FB903 /* SwiftPackageProductDependency */, + 2D939AC725EE14620076FA61 /* SwiftPackageProductDependency */, + DB9A487D2603456B008B817C /* SwiftPackageProductDependency */, + DBB525072611EAC0002F1F29 /* SwiftPackageProductDependency */, + DB6F5E31264E7410009108F4 /* SwiftPackageProductDependency */, + DBAEDE5E267A0B1500D25FF5 /* SwiftPackageProductDependency */, + DBAC6482267D0B21007FE9FD /* SwiftPackageProductDependency */, + DBAC649D267DFE43007FE9FD /* SwiftPackageProductDependency */, + DBAC64A0267E6D02007FE9FD /* SwiftPackageProductDependency */, ); productName = Mastodon; productReference = DB427DD225BAA00100D1B89D /* Mastodon.app */; @@ -2684,7 +2704,7 @@ ); name = AppShared; packageProductDependencies = ( - DB68050F2637D0F800430867 /* KeychainAccess */, + DB68050F2637D0F800430867 /* SwiftPackageProductDependency */, ); productName = AppShared; productReference = DB68047F2637CD4C00430867 /* AppShared.framework */; @@ -2744,8 +2764,8 @@ ); name = NotificationService; packageProductDependencies = ( - DB00CA962632DDB600A54956 /* CommonOSLog */, - DB6D9F41263527CE008423CD /* AlamofireImage */, + DB00CA962632DDB600A54956 /* SwiftPackageProductDependency */, + DB6D9F41263527CE008423CD /* SwiftPackageProductDependency */, ); productName = NotificationService; productReference = DBF8AE13263293E400C9C23C /* NotificationService.appex */; @@ -2800,21 +2820,21 @@ ); mainGroup = DB427DC925BAA00100D1B89D; packageReferences = ( - DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */, - 2D61336725C18A4F00CAE157 /* XCRemoteSwiftPackageReference "AlamofireNetworkActivityIndicator" */, - 2D42FF5F25C8177C004A627A /* XCRemoteSwiftPackageReference "ActiveLabel" */, - DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */, - DB5086B625CC0D6400C2C187 /* XCRemoteSwiftPackageReference "Kingfisher" */, - 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer" */, - 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController" */, - DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */, - DBB525062611EAC0002F1F29 /* XCRemoteSwiftPackageReference "Tabman" */, - DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */, - DB6F5E30264E7410009108F4 /* XCRemoteSwiftPackageReference "TwitterTextEditor" */, - DBAEDE5D267A0B1500D25FF5 /* XCRemoteSwiftPackageReference "Nuke" */, - DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit" */, - DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources" */, - DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi" */, + DB3D0FF125BAA61700EAA174 /* RemoteSwiftPackageReference */, + 2D61336725C18A4F00CAE157 /* RemoteSwiftPackageReference */, + 2D42FF5F25C8177C004A627A /* RemoteSwiftPackageReference */, + DB0140BB25C40D7500F9F3CF /* RemoteSwiftPackageReference */, + DB5086B625CC0D6400C2C187 /* RemoteSwiftPackageReference */, + 2D5981B825E4D7F8000FB903 /* RemoteSwiftPackageReference */, + 2D939AC625EE14620076FA61 /* RemoteSwiftPackageReference */, + DB9A487C2603456B008B817C /* RemoteSwiftPackageReference */, + DBB525062611EAC0002F1F29 /* RemoteSwiftPackageReference */, + DB6804722637CC1200430867 /* RemoteSwiftPackageReference */, + DB6F5E30264E7410009108F4 /* RemoteSwiftPackageReference */, + DBAEDE5D267A0B1500D25FF5 /* RemoteSwiftPackageReference */, + DBAC6481267D0B21007FE9FD /* RemoteSwiftPackageReference */, + DBAC649C267DFE43007FE9FD /* RemoteSwiftPackageReference */, + DBAC649F267E6D01007FE9FD /* RemoteSwiftPackageReference */, ); productRefGroup = DB427DD325BAA00100D1B89D /* Products */; projectDirPath = ""; @@ -4052,7 +4072,7 @@ }; name = Release; }; - DBCBCC0E2680BE3E000F5B51 /* ASDK */ = { + DBCBCC0E2680BE3E000F5B51 /* ASDK - Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -4112,11 +4132,11 @@ SWIFT_ACTIVE_COMPILATION_CONDITIONS = ASDK; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; }; - name = ASDK; + name = "ASDK - Release"; }; - DBCBCC0F2680BE3E000F5B51 /* ASDK */ = { + DBCBCC0F2680BE3E000F5B51 /* ASDK - Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 819CEC9DCAD8E8E7BD85A7BB /* Pods-Mastodon.asdk.xcconfig */; + baseConfigurationReference = BD7598A87F4497045EDEF252 /* Pods-Mastodon.asdk - release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -4139,11 +4159,11 @@ SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; - name = ASDK; + name = "ASDK - Release"; }; - DBCBCC102680BE3E000F5B51 /* ASDK */ = { + DBCBCC102680BE3E000F5B51 /* ASDK - Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5DA82A9B4ABDAFA3AB9A49C7 /* Pods-MastodonTests.asdk.xcconfig */; + baseConfigurationReference = 46DAB0EBDDFB678347CD96FF /* Pods-MastodonTests.asdk - release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -4160,11 +4180,11 @@ TARGETED_DEVICE_FAMILY = "1,2"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mastodon.app/Mastodon"; }; - name = ASDK; + name = "ASDK - Release"; }; - DBCBCC112680BE3E000F5B51 /* ASDK */ = { + DBCBCC112680BE3E000F5B51 /* ASDK - Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A67FD038ECDA0E411AF8DB4D /* Pods-Mastodon-MastodonUITests.asdk.xcconfig */; + baseConfigurationReference = 8850E70A1D5FF51432E43653 /* Pods-Mastodon-MastodonUITests.asdk - release.xcconfig */; buildSettings = { CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = 5Z4GVSS33P; @@ -4180,9 +4200,9 @@ TARGETED_DEVICE_FAMILY = "1,2"; TEST_TARGET_NAME = Mastodon; }; - name = ASDK; + name = "ASDK - Release"; }; - DBCBCC122680BE3E000F5B51 /* ASDK */ = { + DBCBCC122680BE3E000F5B51 /* ASDK - Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; @@ -4209,9 +4229,9 @@ VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = ASDK; + name = "ASDK - Release"; }; - DBCBCC132680BE3E000F5B51 /* ASDK */ = { + DBCBCC132680BE3E000F5B51 /* ASDK - Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; @@ -4229,11 +4249,11 @@ TARGETED_DEVICE_FAMILY = "1,2"; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mastodon.app/Mastodon"; }; - name = ASDK; + name = "ASDK - Release"; }; - DBCBCC142680BE3E000F5B51 /* ASDK */ = { + DBCBCC142680BE3E000F5B51 /* ASDK - Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F31E7502A7E3945B98C6CBAF /* Pods-NotificationService.asdk.xcconfig */; + baseConfigurationReference = 9CFF58FD900AC059428700E7 /* Pods-NotificationService.asdk - release.xcconfig */; buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; @@ -4252,11 +4272,11 @@ SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; - name = ASDK; + name = "ASDK - Release"; }; - DBCBCC152680BE3E000F5B51 /* ASDK */ = { + DBCBCC152680BE3E000F5B51 /* ASDK - Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EE13214BC0246BE5210CCC10 /* Pods-AppShared.asdk.xcconfig */; + baseConfigurationReference = DDB1B139FA8EA26F510D58B6 /* Pods-AppShared.asdk - release.xcconfig */; buildSettings = { APPLICATION_EXTENSION_API_ONLY = YES; CLANG_ENABLE_MODULES = YES; @@ -4283,7 +4303,240 @@ VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = ASDK; + name = "ASDK - Release"; + }; + DBCBCC1E26818F6F000F5B51 /* ASDK - Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG ASDK"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = "ASDK - Debug"; + }; + DBCBCC1F26818F6F000F5B51 /* ASDK - Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1D6D967E77A5357E2C6110D9 /* Pods-Mastodon.asdk - debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 16; + DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + INFOPLIST_FILE = Mastodon/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 0.7.1; + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "ASDK - Debug"; + }; + DBCBCC2026818F6F000F5B51 /* ASDK - Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7CEFFAE9AF9284B13C0A758D /* Pods-MastodonTests.asdk - debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + INFOPLIST_FILE = MastodonTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.MastodonTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mastodon.app/Mastodon"; + }; + name = "ASDK - Debug"; + }; + DBCBCC2126818F6F000F5B51 /* ASDK - Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E5C7236E58D14A0322FE00F2 /* Pods-Mastodon-MastodonUITests.asdk - debug.xcconfig */; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + INFOPLIST_FILE = MastodonUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.MastodonUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Mastodon; + }; + name = "ASDK - Debug"; + }; + DBCBCC2226818F6F000F5B51 /* ASDK - Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = CoreDataStack/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.CoreDataStack; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = "ASDK - Debug"; + }; + DBCBCC2326818F6F000F5B51 /* ASDK - Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + INFOPLIST_FILE = CoreDataStackTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.CoreDataStackTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mastodon.app/Mastodon"; + }; + name = "ASDK - Debug"; + }; + DBCBCC2426818F6F000F5B51 /* ASDK - Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3B7FD8F28DDA8FBCE5562B78 /* Pods-NotificationService.asdk - debug.xcconfig */; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 16; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + INFOPLIST_FILE = NotificationService/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 0.7.1; + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = "ASDK - Debug"; + }; + DBCBCC2526818F6F000F5B51 /* ASDK - Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A9B1FB898DFD6063B044298C /* Pods-AppShared.asdk - debug.xcconfig */; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DEVELOPMENT_TEAM = 5Z4GVSS33P; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = AppShared/Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.AppShared; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = "ASDK - Debug"; }; DBF8AE1C263293E400C9C23C /* Debug */ = { isa = XCBuildConfiguration; @@ -4338,7 +4591,8 @@ isa = XCConfigurationList; buildConfigurations = ( DB427DFA25BAA00100D1B89D /* Debug */, - DBCBCC0E2680BE3E000F5B51 /* ASDK */, + DBCBCC1E26818F6F000F5B51 /* ASDK - Debug */, + DBCBCC0E2680BE3E000F5B51 /* ASDK - Release */, DB427DFB25BAA00100D1B89D /* Release */, ); defaultConfigurationIsVisible = 0; @@ -4348,7 +4602,8 @@ isa = XCConfigurationList; buildConfigurations = ( DB427DFD25BAA00100D1B89D /* Debug */, - DBCBCC0F2680BE3E000F5B51 /* ASDK */, + DBCBCC1F26818F6F000F5B51 /* ASDK - Debug */, + DBCBCC0F2680BE3E000F5B51 /* ASDK - Release */, DB427DFE25BAA00100D1B89D /* Release */, ); defaultConfigurationIsVisible = 0; @@ -4358,7 +4613,8 @@ isa = XCConfigurationList; buildConfigurations = ( DB427E0025BAA00100D1B89D /* Debug */, - DBCBCC102680BE3E000F5B51 /* ASDK */, + DBCBCC2026818F6F000F5B51 /* ASDK - Debug */, + DBCBCC102680BE3E000F5B51 /* ASDK - Release */, DB427E0125BAA00100D1B89D /* Release */, ); defaultConfigurationIsVisible = 0; @@ -4368,7 +4624,8 @@ isa = XCConfigurationList; buildConfigurations = ( DB427E0325BAA00100D1B89D /* Debug */, - DBCBCC112680BE3E000F5B51 /* ASDK */, + DBCBCC2126818F6F000F5B51 /* ASDK - Debug */, + DBCBCC112680BE3E000F5B51 /* ASDK - Release */, DB427E0425BAA00100D1B89D /* Release */, ); defaultConfigurationIsVisible = 0; @@ -4378,7 +4635,8 @@ isa = XCConfigurationList; buildConfigurations = ( DB6804892637CD4C00430867 /* Debug */, - DBCBCC152680BE3E000F5B51 /* ASDK */, + DBCBCC2526818F6F000F5B51 /* ASDK - Debug */, + DBCBCC152680BE3E000F5B51 /* ASDK - Release */, DB68048A2637CD4C00430867 /* Release */, ); defaultConfigurationIsVisible = 0; @@ -4388,7 +4646,8 @@ isa = XCConfigurationList; buildConfigurations = ( DB89BA0625C10FD0008580ED /* Debug */, - DBCBCC122680BE3E000F5B51 /* ASDK */, + DBCBCC2226818F6F000F5B51 /* ASDK - Debug */, + DBCBCC122680BE3E000F5B51 /* ASDK - Release */, DB89BA0725C10FD0008580ED /* Release */, ); defaultConfigurationIsVisible = 0; @@ -4398,7 +4657,8 @@ isa = XCConfigurationList; buildConfigurations = ( DB89BA0A25C10FD0008580ED /* Debug */, - DBCBCC132680BE3E000F5B51 /* ASDK */, + DBCBCC2326818F6F000F5B51 /* ASDK - Debug */, + DBCBCC132680BE3E000F5B51 /* ASDK - Release */, DB89BA0B25C10FD0008580ED /* Release */, ); defaultConfigurationIsVisible = 0; @@ -4408,7 +4668,8 @@ isa = XCConfigurationList; buildConfigurations = ( DBF8AE1C263293E400C9C23C /* Debug */, - DBCBCC142680BE3E000F5B51 /* ASDK */, + DBCBCC2426818F6F000F5B51 /* ASDK - Debug */, + DBCBCC142680BE3E000F5B51 /* ASDK - Release */, DBF8AE1D263293E400C9C23C /* Release */, ); defaultConfigurationIsVisible = 0; @@ -4417,7 +4678,7 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 2D42FF5F25C8177C004A627A /* XCRemoteSwiftPackageReference "ActiveLabel" */ = { + 2D42FF5F25C8177C004A627A /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/TwidereProject/ActiveLabel.swift"; requirement = { @@ -4425,7 +4686,7 @@ version = 5.0.3; }; }; - 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer" */ = { + 2D5981B825E4D7F8000FB903 /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/vtourraine/ThirdPartyMailer.git"; requirement = { @@ -4433,7 +4694,7 @@ minimumVersion = 1.7.1; }; }; - 2D61336725C18A4F00CAE157 /* XCRemoteSwiftPackageReference "AlamofireNetworkActivityIndicator" */ = { + 2D61336725C18A4F00CAE157 /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Alamofire/AlamofireNetworkActivityIndicator"; requirement = { @@ -4441,7 +4702,7 @@ minimumVersion = 3.1.0; }; }; - 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController" */ = { + 2D939AC625EE14620076FA61 /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/TimOliver/TOCropViewController.git"; requirement = { @@ -4449,7 +4710,7 @@ minimumVersion = 2.6.0; }; }; - DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */ = { + DB0140BB25C40D7500F9F3CF /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/CommonOSLog"; requirement = { @@ -4457,7 +4718,7 @@ minimumVersion = 0.1.1; }; }; - DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */ = { + DB3D0FF125BAA61700EAA174 /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Alamofire/AlamofireImage.git"; requirement = { @@ -4465,7 +4726,7 @@ minimumVersion = 4.1.0; }; }; - DB5086B625CC0D6400C2C187 /* XCRemoteSwiftPackageReference "Kingfisher" */ = { + DB5086B625CC0D6400C2C187 /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/onevcat/Kingfisher.git"; requirement = { @@ -4473,7 +4734,7 @@ minimumVersion = 6.1.0; }; }; - DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */ = { + DB6804722637CC1200430867 /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/kishikawakatsumi/KeychainAccess.git"; requirement = { @@ -4481,7 +4742,7 @@ minimumVersion = 4.2.2; }; }; - DB6F5E30264E7410009108F4 /* XCRemoteSwiftPackageReference "TwitterTextEditor" */ = { + DB6F5E30264E7410009108F4 /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/TwitterTextEditor.git"; requirement = { @@ -4489,7 +4750,7 @@ kind = branch; }; }; - DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */ = { + DB9A487C2603456B008B817C /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/UITextView-Placeholder"; requirement = { @@ -4497,7 +4758,7 @@ minimumVersion = 1.4.1; }; }; - DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit" */ = { + DBAC6481267D0B21007FE9FD /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/ra1028/DifferenceKit.git"; requirement = { @@ -4505,7 +4766,7 @@ version = 1.2.0; }; }; - DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources" */ = { + DBAC649C267DFE43007FE9FD /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/DiffableDataSources.git"; requirement = { @@ -4513,7 +4774,7 @@ kind = branch; }; }; - DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi" */ = { + DBAC649F267E6D01007FE9FD /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/cezheng/Fuzi.git"; requirement = { @@ -4521,7 +4782,7 @@ minimumVersion = 3.1.3; }; }; - DBAEDE5D267A0B1500D25FF5 /* XCRemoteSwiftPackageReference "Nuke" */ = { + DBAEDE5D267A0B1500D25FF5 /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/kean/Nuke.git"; requirement = { @@ -4529,7 +4790,7 @@ minimumVersion = 10.3.0; }; }; - DBB525062611EAC0002F1F29 /* XCRemoteSwiftPackageReference "Tabman" */ = { + DBB525062611EAC0002F1F29 /* RemoteSwiftPackageReference */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/uias/Tabman"; requirement = { @@ -4540,93 +4801,93 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - 2D42FF6025C8177C004A627A /* ActiveLabel */ = { + 2D42FF6025C8177C004A627A /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = 2D42FF5F25C8177C004A627A /* XCRemoteSwiftPackageReference "ActiveLabel" */; + package = 2D42FF5F25C8177C004A627A /* RemoteSwiftPackageReference */; productName = ActiveLabel; }; - 2D5981B925E4D7F8000FB903 /* ThirdPartyMailer */ = { + 2D5981B925E4D7F8000FB903 /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer" */; + package = 2D5981B825E4D7F8000FB903 /* RemoteSwiftPackageReference */; productName = ThirdPartyMailer; }; - 2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */ = { + 2D61336825C18A4F00CAE157 /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = 2D61336725C18A4F00CAE157 /* XCRemoteSwiftPackageReference "AlamofireNetworkActivityIndicator" */; + package = 2D61336725C18A4F00CAE157 /* RemoteSwiftPackageReference */; productName = AlamofireNetworkActivityIndicator; }; - 2D939AC725EE14620076FA61 /* CropViewController */ = { + 2D939AC725EE14620076FA61 /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController" */; + package = 2D939AC625EE14620076FA61 /* RemoteSwiftPackageReference */; productName = CropViewController; }; - 5D526FE125BE9AC400460CB9 /* MastodonSDK */ = { + 5D526FE125BE9AC400460CB9 /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; productName = MastodonSDK; }; - DB00CA962632DDB600A54956 /* CommonOSLog */ = { + DB00CA962632DDB600A54956 /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */; + package = DB0140BB25C40D7500F9F3CF /* RemoteSwiftPackageReference */; productName = CommonOSLog; }; - DB0140BC25C40D7500F9F3CF /* CommonOSLog */ = { + DB0140BC25C40D7500F9F3CF /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */; + package = DB0140BB25C40D7500F9F3CF /* RemoteSwiftPackageReference */; productName = CommonOSLog; }; - DB3D0FF225BAA61700EAA174 /* AlamofireImage */ = { + DB3D0FF225BAA61700EAA174 /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; + package = DB3D0FF125BAA61700EAA174 /* RemoteSwiftPackageReference */; productName = AlamofireImage; }; - DB5086B725CC0D6400C2C187 /* Kingfisher */ = { + DB5086B725CC0D6400C2C187 /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DB5086B625CC0D6400C2C187 /* XCRemoteSwiftPackageReference "Kingfisher" */; + package = DB5086B625CC0D6400C2C187 /* RemoteSwiftPackageReference */; productName = Kingfisher; }; - DB68050F2637D0F800430867 /* KeychainAccess */ = { + DB68050F2637D0F800430867 /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */; + package = DB6804722637CC1200430867 /* RemoteSwiftPackageReference */; productName = KeychainAccess; }; - DB6D9F41263527CE008423CD /* AlamofireImage */ = { + DB6D9F41263527CE008423CD /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; + package = DB3D0FF125BAA61700EAA174 /* RemoteSwiftPackageReference */; productName = AlamofireImage; }; - DB6F5E31264E7410009108F4 /* TwitterTextEditor */ = { + DB6F5E31264E7410009108F4 /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DB6F5E30264E7410009108F4 /* XCRemoteSwiftPackageReference "TwitterTextEditor" */; + package = DB6F5E30264E7410009108F4 /* RemoteSwiftPackageReference */; productName = TwitterTextEditor; }; - DB9A487D2603456B008B817C /* UITextView+Placeholder */ = { + DB9A487D2603456B008B817C /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */; + package = DB9A487C2603456B008B817C /* RemoteSwiftPackageReference */; productName = "UITextView+Placeholder"; }; - DBAC6482267D0B21007FE9FD /* DifferenceKit */ = { + DBAC6482267D0B21007FE9FD /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit" */; + package = DBAC6481267D0B21007FE9FD /* RemoteSwiftPackageReference */; productName = DifferenceKit; }; - DBAC649D267DFE43007FE9FD /* DiffableDataSources */ = { + DBAC649D267DFE43007FE9FD /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources" */; + package = DBAC649C267DFE43007FE9FD /* RemoteSwiftPackageReference */; productName = DiffableDataSources; }; - DBAC64A0267E6D02007FE9FD /* Fuzi */ = { + DBAC64A0267E6D02007FE9FD /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi" */; + package = DBAC649F267E6D01007FE9FD /* RemoteSwiftPackageReference */; productName = Fuzi; }; - DBAEDE5E267A0B1500D25FF5 /* Nuke */ = { + DBAEDE5E267A0B1500D25FF5 /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DBAEDE5D267A0B1500D25FF5 /* XCRemoteSwiftPackageReference "Nuke" */; + package = DBAEDE5D267A0B1500D25FF5 /* RemoteSwiftPackageReference */; productName = Nuke; }; - DBB525072611EAC0002F1F29 /* Tabman */ = { + DBB525072611EAC0002F1F29 /* SwiftPackageProductDependency */ = { isa = XCSwiftPackageProductDependency; - package = DBB525062611EAC0002F1F29 /* XCRemoteSwiftPackageReference "Tabman" */; + package = DBB525062611EAC0002F1F29 /* RemoteSwiftPackageReference */; productName = Tabman; }; /* End XCSwiftPackageProductDependency section */ diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 87ae76985..5a9abdf28 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -12,7 +12,7 @@ CoreDataStack.xcscheme_^#shared#^_ orderHint - 31 + 39 Mastodon - ASDK.xcscheme_^#shared#^_ @@ -37,7 +37,7 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 30 + 40 SuppressBuildableAutocreation diff --git a/Mastodon/Coordinator/SceneCoordinator.swift b/Mastodon/Coordinator/SceneCoordinator.swift index f0ffcc892..a12a72d93 100644 --- a/Mastodon/Coordinator/SceneCoordinator.swift +++ b/Mastodon/Coordinator/SceneCoordinator.swift @@ -48,8 +48,10 @@ extension SceneCoordinator { case mastodonResendEmail(viewModel: MastodonResendEmailViewModel) case mastodonWebView(viewModel:WebViewModel) + #if ASDK // ASDK case asyncHome + #endif // compose case compose(viewModel: ComposeViewModel) @@ -239,9 +241,11 @@ private extension SceneCoordinator { let _viewController = WebViewController() _viewController.viewModel = viewModel viewController = _viewController + #if ASDK case .asyncHome: let _viewController = AsyncHomeTimelineViewController() viewController = _viewController + #endif case .compose(let viewModel): let _viewController = ComposeViewController() _viewController.viewModel = viewModel diff --git a/Mastodon/Diffiable/DataSource/ASTableNode.swift b/Mastodon/Diffiable/DataSource/ASTableNode.swift index f2849cfe8..36ff1fb07 100644 --- a/Mastodon/Diffiable/DataSource/ASTableNode.swift +++ b/Mastodon/Diffiable/DataSource/ASTableNode.swift @@ -5,6 +5,8 @@ // Created by Cirno MainasuK on 2021-6-19. // +#if ASDK + import UIKit import AsyncDisplayKit import DifferenceKit @@ -79,3 +81,5 @@ extension ASTableNode: ReloadableTableView { } } } + +#endif diff --git a/Mastodon/Diffiable/DataSource/TableNodeDiffableDataSource.swift b/Mastodon/Diffiable/DataSource/TableNodeDiffableDataSource.swift index 508f07de9..155c8d8af 100644 --- a/Mastodon/Diffiable/DataSource/TableNodeDiffableDataSource.swift +++ b/Mastodon/Diffiable/DataSource/TableNodeDiffableDataSource.swift @@ -5,6 +5,8 @@ // Created by Cirno MainasuK on 2021-6-19. // +#if ASDK + import UIKit import AsyncDisplayKit import DiffableDataSources @@ -109,3 +111,5 @@ open class TableNodeDiffableDataSource Item? func items(indexPaths: [IndexPath]) -> [Item] + #if ASDK func status(node: ASCellNode?, indexPath: IndexPath?) -> Status? + #endif } +#if ASDK extension StatusProvider { func status(node: ASCellNode?, indexPath: IndexPath?) -> Status? { fatalError("Needs implement this") } } +#endif diff --git a/Mastodon/Protocol/StatusProvider/StatusProviderFacade.swift b/Mastodon/Protocol/StatusProvider/StatusProviderFacade.swift index ff5b61583..4d5ea5fc1 100644 --- a/Mastodon/Protocol/StatusProvider/StatusProviderFacade.swift +++ b/Mastodon/Protocol/StatusProvider/StatusProviderFacade.swift @@ -12,7 +12,10 @@ import CoreData import CoreDataStack import MastodonSDK import ActiveLabel + +#if ASDK import AsyncDisplayKit +#endif enum StatusProviderFacade { } @@ -146,6 +149,7 @@ extension StatusProviderFacade { } } + #if ASDK static func responseToStatusActiveLabelAction(provider: StatusProvider, node: ASCellNode, didSelectActiveEntityType type: ActiveEntityType) { switch type { case .hashtag(let text, _): @@ -175,6 +179,7 @@ extension StatusProviderFacade { guard let status = provider.status(node: node, indexPath: nil) else { return } coordinateToStatusMentionProfileScene(for: target, provider: provider, status: status, mention: mention) } + #endif private static func coordinateToStatusMentionProfileScene(for target: Target, provider: StatusProvider, cell: UITableViewCell, mention: String) { provider.status(for: cell, indexPath: nil) diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+DebugAction.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+DebugAction.swift index 2e2304ac3..19c3244c9 100644 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+DebugAction.swift +++ b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+DebugAction.swift @@ -5,12 +5,12 @@ // Created by MainasuK Cirno on 2021-6-21. // +#if ASDK && DEBUG + import os.log import UIKit import CoreData import CoreDataStack - -#if DEBUG import FLEX extension AsyncHomeTimelineViewController { @@ -25,10 +25,6 @@ extension AsyncHomeTimelineViewController { guard let self = self else { return } self.showFLEXAction(action) }), - UIAction(title: "Toggle Home", image: nil, identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] action in - guard let self = self else { return } - self.context.toggleHomePreference(action) - }), moveMenu, dropMenu, UIAction(title: "Show Welcome", image: UIImage(systemName: "figure.walk"), attributes: []) { [weak self] action in @@ -384,4 +380,5 @@ extension AsyncHomeTimelineViewController { .store(in: &disposeBag) } } + #endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+Provider.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+Provider.swift index c1533ce43..4896c58b9 100644 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+Provider.swift +++ b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController+Provider.swift @@ -5,6 +5,8 @@ // Created by MainasuK Cirno on 2021-6-21. // +#if ASDK + import os.log import UIKit import Combine @@ -111,3 +113,5 @@ extension AsyncHomeTimelineViewController: StatusProvider { } extension AsyncHomeTimelineViewController: UserProvider {} + +#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController.swift index 93a0436f5..247364801 100644 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewController.swift @@ -5,6 +5,8 @@ // Created by MainasuK Cirno on 2021-6-21. // +#if ASDK + import os.log import UIKit import AVKit @@ -56,16 +58,6 @@ final class AsyncHomeTimelineViewController: ASDKViewController, Ne }() var tableView: UITableView { node.view } - //let tableView: UITableView = { - // let tableView = ControlContainableTableView() - // tableView.register(StatusTableViewCell.self, forCellReuseIdentifier: String(describing: StatusTableViewCell.self)) - // tableView.register(TimelineMiddleLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineMiddleLoaderTableViewCell.self)) - // tableView.register(TimelineBottomLoaderTableViewCell.self, forCellReuseIdentifier: String(describing: TimelineBottomLoaderTableViewCell.self)) - // tableView.rowHeight = UITableView.automaticDimension - // tableView.separatorStyle = .none - // tableView.backgroundColor = .clear - // return tableView - //}() let publishProgressView: UIProgressView = { let progressView = UIProgressView(progressViewStyle: .bar) @@ -116,25 +108,10 @@ extension AsyncHomeTimelineViewController { // long press to trigger debug menu settingBarButtonItem.menu = debugMenu PerformanceMonitor.shared().delegate = self - #else settingBarButtonItem.target = self settingBarButtonItem.action = #selector(AsyncHomeTimelineViewController.settingBarButtonItemPressed(_:)) #endif - settingBarButtonItem.menu = UIMenu(title: "Toggle Home", image: nil, identifier: nil, options: [], children: [ - UIAction(title: "Setting", image: nil, identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] _ in - guard let self = self else { return } - self.settingBarButtonItemPressed(self.settingBarButtonItem) - }), - UIAction(title: "Toggle Home", image: nil, identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] action in - guard let self = self else { return } - self.context.toggleHomePreference(action) - let alertController = UIAlertController(title: "Please Restart App", message: nil, preferredStyle: .alert) - let okAction = UIAlertAction(title: "OK", style: .default, handler: nil) - alertController.addAction(okAction) - self.coordinator.present(scene: .alertController(alertController: alertController), from: nil, transition: .alertController(animated: true, completion: nil)) - }) - ]) navigationItem.rightBarButtonItem = composeBarButtonItem composeBarButtonItem.target = self @@ -604,3 +581,5 @@ extension AsyncHomeTimelineViewController: ASTableDelegate { // MARK: - StatusNodeDelegate extension AsyncHomeTimelineViewController: StatusNodeDelegate { } + +#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+Diffable.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+Diffable.swift index 90d5d9f46..fbd5c1438 100644 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+Diffable.swift @@ -5,6 +5,8 @@ // Created by MainasuK Cirno on 2021-6-21. // +#if ASDK + import os.log import UIKit import CoreData @@ -153,3 +155,5 @@ extension AsyncHomeTimelineViewModel: NSFetchedResultsControllerDelegate { } } + +#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadLatestState.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadLatestState.swift index 4f3aaadc3..4d73eae5a 100644 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadLatestState.swift +++ b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadLatestState.swift @@ -6,6 +6,8 @@ // // +#if ASDK + import os.log import func QuartzCore.CACurrentMediaTime import Foundation @@ -128,3 +130,5 @@ extension AsyncHomeTimelineViewModel.LoadLatestState { } } + +#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadMiddleState.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadMiddleState.swift index e25f60ca9..f568a6aaa 100644 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadMiddleState.swift +++ b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadMiddleState.swift @@ -5,6 +5,8 @@ // Created by MainasuK Cirno on 2021-6-21. // +#if ASDK + import os.log import Foundation import GameplayKit @@ -106,3 +108,5 @@ extension AsyncHomeTimelineViewModel.LoadMiddleState { } } + +#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadOldestState.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadOldestState.swift index 8a58cd722..5743ab292 100644 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadOldestState.swift +++ b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel+LoadOldestState.swift @@ -5,6 +5,8 @@ // Created by MainasuK Cirno on 2021-6-21. // +#if ASDK + import os.log import Foundation import GameplayKit @@ -111,3 +113,5 @@ extension AsyncHomeTimelineViewModel.LoadOldestState { } } } + +#endif diff --git a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel.swift b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel.swift index 3b5013a8c..c33b91c02 100644 --- a/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel.swift +++ b/Mastodon/Scene/HomeTimeline/AsyncHomeTimeline/AsyncHomeTimelineViewModel.swift @@ -6,6 +6,8 @@ // // +#if ASDK + import os.log import func AVFoundation.AVMakeRect import UIKit @@ -146,3 +148,5 @@ final class AsyncHomeTimelineViewModel: NSObject { } extension AsyncHomeTimelineViewModel: SuggestionAccountViewModelDelegate { } + +#endif diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift index 588f90aeb..69eff4a82 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift @@ -25,10 +25,6 @@ extension HomeTimelineViewController { guard let self = self else { return } self.showFLEXAction(action) }), - UIAction(title: "Toggle Home", image: nil, identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] action in - guard let self = self else { return } - self.context.toggleHomePreference(action) - }), moveMenu, dropMenu, UIAction(title: "Show Welcome", image: UIImage(systemName: "figure.walk"), attributes: []) { [weak self] action in diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index e6417f06c..8f1558554 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -15,10 +15,6 @@ import GameplayKit import MastodonSDK import AlamofireImage -#if DEBUG -import GDPerformanceView_Swift -#endif - final class HomeTimelineViewController: UIViewController, NeedsDependency, MediaPreviewableViewController { weak var context: AppContext! { willSet { precondition(!isViewLoaded) } } @@ -102,22 +98,6 @@ extension HomeTimelineViewController { #if DEBUG // long press to trigger debug menu settingBarButtonItem.menu = debugMenu - PerformanceMonitor.shared().delegate = self - #elseif ASDK - settingBarButtonItem.menu = UIMenu(title: "Toggle Home", image: nil, identifier: nil, options: [], children: [ - UIAction(title: "Setting", image: nil, identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] _ in - guard let self = self else { return } - self.settingBarButtonItemPressed(self.settingBarButtonItem) - }), - UIAction(title: "Show Async Home", image: nil, identifier: nil, discoverabilityTitle: nil, attributes: [], state: .off, handler: { [weak self] action in - guard let self = self else { return } - self.context.toggleHomePreference(action) - let alertController = UIAlertController(title: "Please Restart App", message: nil, preferredStyle: .alert) - let okAction = UIAlertAction(title: "OK", style: .default, handler: nil) - alertController.addAction(okAction) - self.coordinator.present(scene: .alertController(alertController: alertController), from: nil, transition: .alertController(animated: true, completion: nil)) - }) - ]) #else settingBarButtonItem.target = self settingBarButtonItem.action = #selector(HomeTimelineViewController.settingBarButtonItemPressed(_:)) @@ -578,11 +558,3 @@ extension HomeTimelineViewController: StatusTableViewControllerNavigateable { statusKeyCommandHandler(sender) } } - -#if DEBUG -extension HomeTimelineViewController: PerformanceMonitorDelegate { - func performanceMonitor(didReport performanceReport: PerformanceReport) { - // print(performanceReport) - } -} -#endif diff --git a/Mastodon/Scene/MainTab/MainTabBarController.swift b/Mastodon/Scene/MainTab/MainTabBarController.swift index e16ebc202..50c3d0b6c 100644 --- a/Mastodon/Scene/MainTab/MainTabBarController.swift +++ b/Mastodon/Scene/MainTab/MainTabBarController.swift @@ -10,6 +10,10 @@ import UIKit import Combine import SafariServices +#if DEBUG +import GDPerformanceView_Swift +#endif + class MainTabBarController: UITabBarController { var disposeBag = Set() @@ -185,6 +189,14 @@ extension MainTabBarController { } .store(in: &disposeBag) } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + + #if DEBUG + PerformanceMonitor.shared().start() + #endif + } } @@ -345,3 +357,33 @@ extension MainTabBarController { } } + +#if ASDK +extension MainTabBarController { + override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) { + guard let event = event else { return } + switch event.subtype { + case .motionShake: + let alertController = UIAlertController(title: "ASDK Debug Panel", message: nil, preferredStyle: .alert) + let toggleHomeAction = UIAlertAction(title: "Toggle Home", style: .default) { [weak self] _ in + guard let self = self else { return } + MainTabBarController.toggleAsyncHome() + let okAlertController = UIAlertController(title: "Success", message: "Please restart the app", preferredStyle: .alert) + let okAction = UIAlertAction(title: "OK", style: .default, handler: nil) + okAlertController.addAction(okAction) + self.coordinator.present(scene: .alertController(alertController: okAlertController), from: nil, transition: .alertController(animated: true, completion: nil)) + } + alertController.addAction(toggleHomeAction) + let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) + alertController.addAction(cancelAction) + self.coordinator.present(scene: .alertController(alertController: alertController), from: nil, transition: .alertController(animated: true, completion: nil)) + default: + break + } + } + + static func toggleAsyncHome() { + UserDefaults.shared.preferAsyncHomeTimeline.toggle() + } +} +#endif diff --git a/Mastodon/Scene/Share/View/Node/ASMetaEditableTextNode.swift b/Mastodon/Scene/Share/View/Node/ASMetaEditableTextNode.swift index e98e81d57..e5037fdf6 100644 --- a/Mastodon/Scene/Share/View/Node/ASMetaEditableTextNode.swift +++ b/Mastodon/Scene/Share/View/Node/ASMetaEditableTextNode.swift @@ -5,6 +5,8 @@ // Created by Cirno MainasuK on 2021-6-20. // +#if ASDK + import UIKit import AsyncDisplayKit @@ -19,3 +21,5 @@ final class ASMetaEditableTextNode: ASEditableTextNode, UITextViewDelegate { return metaEditableTextNodeDelegate?.metaEditableTextNode(self, shouldInteractWith: URL, in: characterRange, interaction: interaction) ?? false } } + +#endif diff --git a/Mastodon/Scene/Share/View/Node/Status/StatusNode.swift b/Mastodon/Scene/Share/View/Node/Status/StatusNode.swift index 739babe39..874836fa9 100644 --- a/Mastodon/Scene/Share/View/Node/Status/StatusNode.swift +++ b/Mastodon/Scene/Share/View/Node/Status/StatusNode.swift @@ -5,6 +5,8 @@ // Created by Cirno MainasuK on 2021-6-19. // +#if ASDK + import UIKit import Combine import AsyncDisplayKit @@ -235,3 +237,5 @@ extension StatusNode: ASMultiplexImageNodeDataSource { } } } + +#endif diff --git a/Mastodon/Scene/Share/View/Node/Status/TimelineBottomLoaderNode.swift b/Mastodon/Scene/Share/View/Node/Status/TimelineBottomLoaderNode.swift index aeff71e4f..0ec83dfef 100644 --- a/Mastodon/Scene/Share/View/Node/Status/TimelineBottomLoaderNode.swift +++ b/Mastodon/Scene/Share/View/Node/Status/TimelineBottomLoaderNode.swift @@ -5,6 +5,8 @@ // Created by Cirno MainasuK on 2021-6-19. // +#if ASDK + import UIKit import AsyncDisplayKit @@ -35,3 +37,5 @@ final class TimelineBottomLoaderNode: ASCellNode { } } + +#endif diff --git a/Mastodon/Scene/Share/View/Node/Status/TimelineMiddleLoaderNode.swift b/Mastodon/Scene/Share/View/Node/Status/TimelineMiddleLoaderNode.swift index 33a15dd75..bd662ad70 100644 --- a/Mastodon/Scene/Share/View/Node/Status/TimelineMiddleLoaderNode.swift +++ b/Mastodon/Scene/Share/View/Node/Status/TimelineMiddleLoaderNode.swift @@ -5,6 +5,8 @@ // Created by Cirno MainasuK on 2021-6-19. // +#if ASDK + import UIKit import AsyncDisplayKit @@ -48,3 +50,5 @@ final class TimelineMiddleLoaderNode: ASCellNode { } } + +#endif diff --git a/Mastodon/State/AppContext.swift b/Mastodon/State/AppContext.swift index 3989ea1b3..ef7589516 100644 --- a/Mastodon/State/AppContext.swift +++ b/Mastodon/State/AppContext.swift @@ -211,9 +211,3 @@ extension AppContext { } } - -extension AppContext { - @objc func toggleHomePreference(_ action: UIAction) { - UserDefaults.shared.preferAsyncHomeTimeline.toggle() - } -} diff --git a/Mastodon/Supporting Files/AppDelegate.swift b/Mastodon/Supporting Files/AppDelegate.swift index 71073729e..c92b077c1 100644 --- a/Mastodon/Supporting Files/AppDelegate.swift +++ b/Mastodon/Supporting Files/AppDelegate.swift @@ -9,12 +9,15 @@ import os.log import UIKit import UserNotifications import AppShared -import AsyncDisplayKit #if DEBUG import GDPerformanceView_Swift #endif +#if ASDK +import AsyncDisplayKit +#endif + @main class AppDelegate: UIResponder, UIApplicationDelegate { @@ -32,7 +35,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { UNUserNotificationCenter.current().delegate = self application.registerForRemoteNotifications() - #if DEBUG + #if ASDK && DEBUG // PerformanceMonitor.shared().start() // ASDisplayNode.shouldShowRangeDebugOverlay = true // ASControlNode.enableHitTestDebug = true diff --git a/Mastodon/Vender/ActivityIndicatorNode.swift b/Mastodon/Vender/ActivityIndicatorNode.swift index 6d34072f3..8778f5ec2 100644 --- a/Mastodon/Vender/ActivityIndicatorNode.swift +++ b/Mastodon/Vender/ActivityIndicatorNode.swift @@ -1,5 +1,7 @@ // ref: https://github.com/Adlai-Holler/ASDKPlaceholderTest/blob/eea9fa7cff2d16a57efb47d208422ea9b49a630a/ASDKPlaceholderTest/ASDisplayNodeSubclasses.swift +#if ASDK + import Foundation import AsyncDisplayKit import UIKit @@ -69,3 +71,5 @@ class ActivityIndicatorNode: ASDisplayNode { } } } + +#endif diff --git a/Podfile b/Podfile index d888d37f4..1039ff0ff 100644 --- a/Podfile +++ b/Podfile @@ -8,7 +8,7 @@ target 'Mastodon' do # UI pod 'UITextField+Shake', '~> 1.2' - pod 'Texture', '~> 3.0.0' + pod 'Texture', '~> 3.0.0', :configurations => ['ASDK - Debug', 'ASDK - Release'] # misc pod 'SwiftGen', '~> 6.4.0' @@ -16,8 +16,8 @@ target 'Mastodon' do pod 'Kanna', '~> 5.2.2' # DEBUG - pod 'FLEX', '~> 4.4.0', :configurations => ['Debug'] - pod 'GDPerformanceView-Swift', '~> 2.1.1', :configurations => ['Debug'] + pod 'FLEX', '~> 4.4.0', :configurations => ['Debug', 'ASDK - Debug'] + pod 'GDPerformanceView-Swift', '~> 2.1.1', :configurations => ['Debug', 'ASDK - Debug'] target 'MastodonTests' do inherit! :search_paths diff --git a/Podfile.lock b/Podfile.lock index 9370907f9..ff92fb243 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -82,6 +82,6 @@ SPEC CHECKSUMS: Texture: 2f109e937850d94d1d07232041c9c7313ccddb81 "UITextField+Shake": 298ac5a0f239d731bdab999b19b628c956ca0ac3 -PODFILE CHECKSUM: ffa234348a25b078905180858ee4119fec0712d1 +PODFILE CHECKSUM: a0d0a385a2888802244e7841940a7d5a55315e1f COCOAPODS: 1.10.1 From 69f6c5176e1835e5f176520ce42a32dedb3d742d Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 13:42:03 +0800 Subject: [PATCH 02/23] chore: profile media image container layout --- .../Container/MosaicImageViewContainer.swift | 53 ++++++++++--------- 1 file changed, 28 insertions(+), 25 deletions(-) diff --git a/Mastodon/Scene/Share/View/Container/MosaicImageViewContainer.swift b/Mastodon/Scene/Share/View/Container/MosaicImageViewContainer.swift index 2bb32288f..4a6c61d8f 100644 --- a/Mastodon/Scene/Share/View/Container/MosaicImageViewContainer.swift +++ b/Mastodon/Scene/Share/View/Container/MosaicImageViewContainer.swift @@ -24,18 +24,21 @@ final class MosaicImageViewContainer: UIView { weak var delegate: MosaicImageViewContainerDelegate? let container = UIStackView() - var imageViews: [UIImageView] = [] { - didSet { - imageViews.forEach { imageView in - imageView.isUserInteractionEnabled = true - let tapGesture = UITapGestureRecognizer.singleTapGestureRecognizer - tapGesture.addTarget(self, action: #selector(MosaicImageViewContainer.photoTapGestureRecognizerHandler(_:))) - imageView.addGestureRecognizer(tapGesture) - imageView.isAccessibilityElement = true - } + private(set) lazy var imageViews: [UIImageView] = { + (0..<4).map { _ -> UIImageView in + let imageView = UIImageView() + imageView.isUserInteractionEnabled = true + let tapGesture = UITapGestureRecognizer.singleTapGestureRecognizer + tapGesture.addTarget(self, action: #selector(MosaicImageViewContainer.photoTapGestureRecognizerHandler(_:))) + imageView.addGestureRecognizer(tapGesture) + imageView.isAccessibilityElement = true + imageView.backgroundColor = .systemFill + return imageView } - } - var blurhashOverlayImageViews: [UIImageView] = [] + }() + let blurhashOverlayImageViews: [UIImageView] = { + (0..<4).map { _ in UIImageView() } + }() let contentWarningOverlayView: ContentWarningOverlayView = { let contentWarningOverlayView = ContentWarningOverlayView() @@ -97,12 +100,19 @@ extension MosaicImageViewContainer { container.subviews.forEach { subview in subview.removeFromSuperview() } + imageViews.forEach { imageView in + imageView.constraints.forEach { imageView.removeConstraint($0) } + imageView.removeFromSuperview() + } + blurhashOverlayImageViews.forEach { imageView in + imageView.constraints.forEach { imageView.removeConstraint($0) } + imageView.removeFromSuperview() + } + contentWarningOverlayView.removeFromSuperview() contentWarningOverlayView.blurVisualEffectView.effect = ContentWarningOverlayView.blurVisualEffect contentWarningOverlayView.vibrancyVisualEffectView.alpha = 1.0 contentWarningOverlayView.isUserInteractionEnabled = true - imageViews = [] - blurhashOverlayImageViews = [] container.spacing = UIView.separatorLineHeight(of: self) * 2 // 2px } @@ -129,8 +139,7 @@ extension MosaicImageViewContainer { }() let imageViewFrame = CGRect(origin: .zero, size: imageViewSize) - let imageView = UIImageView(frame: imageViewFrame) - imageViews.append(imageView) + let imageView = imageViews[0] imageView.layer.masksToBounds = true imageView.layer.cornerRadius = ContentWarningOverlayView.cornerRadius imageView.layer.cornerCurve = .continuous @@ -147,12 +156,11 @@ extension MosaicImageViewContainer { containerHeightLayoutConstraint.constant = imageViewFrame.height containerHeightLayoutConstraint.isActive = true - let blurhashOverlayImageView = UIImageView() + let blurhashOverlayImageView = blurhashOverlayImageViews[0] blurhashOverlayImageView.layer.masksToBounds = true blurhashOverlayImageView.layer.cornerRadius = ContentWarningOverlayView.cornerRadius blurhashOverlayImageView.layer.cornerCurve = .continuous blurhashOverlayImageView.contentMode = .scaleAspectFill - blurhashOverlayImageViews.append(blurhashOverlayImageView) blurhashOverlayImageView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(blurhashOverlayImageView) NSLayoutConstraint.activate([ @@ -200,14 +208,9 @@ extension MosaicImageViewContainer { container.addArrangedSubview(contentLeftStackView) container.addArrangedSubview(contentRightStackView) - var imageViews: [UIImageView] = [] - var blurhashOverlayImageViews: [UIImageView] = [] - for _ in 0.. Date: Tue, 22 Jun 2021 17:10:21 +0800 Subject: [PATCH 03/23] fix: add animation for footer when keyboard display --- Mastodon/Scene/Report/ReportViewController.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Mastodon/Scene/Report/ReportViewController.swift b/Mastodon/Scene/Report/ReportViewController.swift index b0c6ddcc9..5e81ba139 100644 --- a/Mastodon/Scene/Report/ReportViewController.swift +++ b/Mastodon/Scene/Report/ReportViewController.swift @@ -222,10 +222,16 @@ class ReportViewController: UIViewController, NeedsDependency { let padding = contentFrame.maxY - endFrame.minY guard padding > 0 else { self.bottomConstraint.constant = 0.0 + UIView.animate(withDuration: 0.33) { + self.view.layoutIfNeeded() + } return } self.bottomConstraint.constant = padding + UIView.animate(withDuration: 0.33) { + self.view.layoutIfNeeded() + } }) .store(in: &disposeBag) } From 8f26fea875c6da21f58e1ca928c01fa28c75607a Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 17:26:26 +0800 Subject: [PATCH 04/23] fix: missing highlighted state for hashtag cell in search scene --- .../SearchRecommendTagsCollectionViewCell.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift index 002929510..3048037c8 100644 --- a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift +++ b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift @@ -51,6 +51,12 @@ class SearchRecommendTagsCollectionViewCell: UICollectionViewCell { super.init(coder: coder) configure() } + + override var isHighlighted: Bool { + didSet { + backgroundColor = isHighlighted ? Asset.Colors.brandBlueDarken20.color : Asset.Colors.brandBlue.color + } + } } extension SearchRecommendTagsCollectionViewCell { From ca8656be1b9899163dfca892b7c8cd244a2f5b87 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 17:26:49 +0800 Subject: [PATCH 05/23] fix: icon can be compressed issue in search scene --- .../SearchRecommendTagsCollectionViewCell.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift index 3048037c8..e555e1fac 100644 --- a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift +++ b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendTagsCollectionViewCell.swift @@ -112,7 +112,7 @@ extension SearchRecommendTagsCollectionViewCell { flameIconView.translatesAutoresizingMaskIntoConstraints = false horizontalStackView.addArrangedSubview(flameIconView) - + flameIconView.setContentHuggingPriority(.required - 1, for: .horizontal) containerStackView.addArrangedSubview(horizontalStackView) peopleLabel.translatesAutoresizingMaskIntoConstraints = false From cb2a89afca611a2b9d22ea00d4224234e5790115 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 17:30:42 +0800 Subject: [PATCH 06/23] fix: missing highlighted state for account recommend cell in search scene --- .../SearchRecommendAccountsCollectionViewCell.swift | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift index 289583aec..d76cb24bd 100644 --- a/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift +++ b/Mastodon/Scene/Search/CollectionViewCell/SearchRecommendAccountsCollectionViewCell.swift @@ -90,6 +90,13 @@ class SearchRecommendAccountsCollectionViewCell: UICollectionViewCell { super.init(coder: coder) configure() } + + override var isHighlighted: Bool { + didSet { + contentView.alpha = isHighlighted ? 0.8 : 1.0 + } + } + } extension SearchRecommendAccountsCollectionViewCell { From a23fc3cab8d7e85d847057151010f5aeee088766 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 17:47:21 +0800 Subject: [PATCH 07/23] fix: "clear" button wrong i18n string issue in searching scene --- Localization/app.json | 2 +- .../mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist | 4 ++-- Mastodon/Generated/Strings.swift | 2 +- Mastodon/Resources/ar.lproj/Localizable.strings | 2 +- Mastodon/Resources/en.lproj/Localizable.strings | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Localization/app.json b/Localization/app.json index f370022ab..7fd8a2df3 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -465,7 +465,7 @@ "hashtags": "Hashtags" }, "recent_search": "Recent searches", - "clear": "clear" + "clear": "Clear" } }, "hashtag": { diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 5a9abdf28..6be08c840 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -12,7 +12,7 @@ CoreDataStack.xcscheme_^#shared#^_ orderHint - 39 + 34 Mastodon - ASDK.xcscheme_^#shared#^_ @@ -37,7 +37,7 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 40 + 31 SuppressBuildableAutocreation diff --git a/Mastodon/Generated/Strings.swift b/Mastodon/Generated/Strings.swift index 07cab3974..f688b9eda 100644 --- a/Mastodon/Generated/Strings.swift +++ b/Mastodon/Generated/Strings.swift @@ -843,7 +843,7 @@ internal enum L10n { internal static let placeholder = L10n.tr("Localizable", "Scene.Search.Searchbar.Placeholder") } internal enum Searching { - /// clear + /// Clear internal static let clear = L10n.tr("Localizable", "Scene.Search.Searching.Clear") /// Recent searches internal static let recentSearch = L10n.tr("Localizable", "Scene.Search.Searching.RecentSearch") diff --git a/Mastodon/Resources/ar.lproj/Localizable.strings b/Mastodon/Resources/ar.lproj/Localizable.strings index e6bb7b217..4fbf4d872 100644 --- a/Mastodon/Resources/ar.lproj/Localizable.strings +++ b/Mastodon/Resources/ar.lproj/Localizable.strings @@ -277,7 +277,7 @@ tap the link to confirm your account."; "Scene.Search.Recommend.HashTag.Title" = "Trending in your timeline"; "Scene.Search.Searchbar.Cancel" = "Cancel"; "Scene.Search.Searchbar.Placeholder" = "Search hashtags and users"; -"Scene.Search.Searching.Clear" = "clear"; +"Scene.Search.Searching.Clear" = "Clear"; "Scene.Search.Searching.RecentSearch" = "Recent searches"; "Scene.Search.Searching.Segment.All" = "All"; "Scene.Search.Searching.Segment.Hashtags" = "Hashtags"; diff --git a/Mastodon/Resources/en.lproj/Localizable.strings b/Mastodon/Resources/en.lproj/Localizable.strings index e6bb7b217..4fbf4d872 100644 --- a/Mastodon/Resources/en.lproj/Localizable.strings +++ b/Mastodon/Resources/en.lproj/Localizable.strings @@ -277,7 +277,7 @@ tap the link to confirm your account."; "Scene.Search.Recommend.HashTag.Title" = "Trending in your timeline"; "Scene.Search.Searchbar.Cancel" = "Cancel"; "Scene.Search.Searchbar.Placeholder" = "Search hashtags and users"; -"Scene.Search.Searching.Clear" = "clear"; +"Scene.Search.Searching.Clear" = "Clear"; "Scene.Search.Searching.RecentSearch" = "Recent searches"; "Scene.Search.Searching.Segment.All" = "All"; "Scene.Search.Searching.Segment.Hashtags" = "Hashtags"; From 80330c0809dddc42c10065c1dc960709475d422b Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 17:47:40 +0800 Subject: [PATCH 08/23] fix: searching background UI issue --- Mastodon/Scene/Search/SearchViewController+Searching.swift | 1 + .../Scene/Search/TableViewCell/SearchingTableViewCell.swift | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Mastodon/Scene/Search/SearchViewController+Searching.swift b/Mastodon/Scene/Search/SearchViewController+Searching.swift index 0602ac200..8319781c4 100644 --- a/Mastodon/Scene/Search/SearchViewController+Searching.swift +++ b/Mastodon/Scene/Search/SearchViewController+Searching.swift @@ -29,6 +29,7 @@ extension SearchViewController { searchingTableView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor), ]) searchingTableView.tableFooterView = UIView() + searchingTableView.backgroundColor = Asset.Colors.Background.systemGroupedBackground.color viewModel.isSearching .receive(on: DispatchQueue.main) .sink { [weak self] isSearching in diff --git a/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift b/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift index a3a7b58ac..d020136d8 100644 --- a/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift +++ b/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift @@ -54,7 +54,7 @@ final class SearchingTableViewCell: UITableViewCell { extension SearchingTableViewCell { private func configure() { - backgroundColor = .clear + backgroundColor = Asset.Colors.Background.systemBackground.color let containerStackView = UIStackView() containerStackView.axis = .horizontal From 091856ddf0fe908b4ad9f7abe1c79e0d8622c435 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 17:49:07 +0800 Subject: [PATCH 09/23] feat: add loader for initial snapshot and fix loader animation issue --- .../HomeTimeline/HomeTimelineViewModel+Diffable.swift | 10 +++++++--- .../Timeline/UserTimelineViewModel+Diffable.swift | 3 +++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift index 6f5e66c0e..d83a8bfb8 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift @@ -33,9 +33,13 @@ extension HomeTimelineViewModel { threadReplyLoaderTableViewCellDelegate: nil ) -// var snapshot = NSDiffableDataSourceSnapshot() -// snapshot.appendSections([.main]) -// diffableDataSource?.apply(snapshot) + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + diffableDataSource?.apply(snapshot) + + // workaround to append loader wrong animation issue + snapshot.appendItems([.bottomLoader], toSection: .main) + diffableDataSource?.apply(snapshot) } } diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift index 7e4ec8728..276c3566f 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewModel+Diffable.swift @@ -32,6 +32,9 @@ extension UserTimelineViewModel { // set empty section to make update animation top-to-bottom style var snapshot = NSDiffableDataSourceSnapshot() snapshot.appendSections([.main]) + diffableDataSource?.apply(snapshot) + + // workaround to append loader wrong animation issue snapshot.appendItems([.bottomLoader], toSection: .main) diffableDataSource?.apply(snapshot) } From 7b6647181918a367b5d802a85831fbfaa6301691 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 17:49:14 +0800 Subject: [PATCH 10/23] fix: typo --- .../Search/TableViewCell/SearchingTableViewCell.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift b/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift index d020136d8..d0e06ba18 100644 --- a/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift +++ b/Mastodon/Scene/Search/TableViewCell/SearchingTableViewCell.swift @@ -115,11 +115,11 @@ extension SearchingTableViewCell { let image = UIImage(systemName: "number.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 34, weight: .regular))!.withRenderingMode(.alwaysTemplate) _imageView.image = image _titleLabel.text = "# " + tag.name - guard let historys = tag.history else { + guard let histories = tag.history else { _subTitleLabel.text = "" return } - let recentHistory = historys.prefix(2) + let recentHistory = histories.prefix(2) let peopleAreTalking = recentHistory.compactMap { Int($0.accounts) }.reduce(0, +) let string = L10n.Scene.Search.Recommend.HashTag.peopleTalking(String(peopleAreTalking)) _subTitleLabel.text = string @@ -129,13 +129,13 @@ extension SearchingTableViewCell { let image = UIImage(systemName: "number.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 34, weight: .regular))!.withRenderingMode(.alwaysTemplate) _imageView.image = image _titleLabel.text = "# " + tag.name - guard let historys = tag.histories?.sorted(by: { + guard let histories = tag.histories?.sorted(by: { $0.createAt.compare($1.createAt) == .orderedAscending }) else { _subTitleLabel.text = "" return } - let recentHistory = historys.prefix(2) + let recentHistory = histories.prefix(2) let peopleAreTalking = recentHistory.compactMap { Int($0.accounts) }.reduce(0, +) let string = L10n.Scene.Search.Recommend.HashTag.peopleTalking(String(peopleAreTalking)) _subTitleLabel.text = string From c656fe956b6efe9ed2e4eba1174d2532919a58b1 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 17:52:14 +0800 Subject: [PATCH 11/23] fix: segmented control width issue in notification scene --- Mastodon/Scene/Notification/NotificationViewController.swift | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 47fee4d66..eb319548b 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -48,8 +48,13 @@ extension NotificationViewController { super.viewDidLoad() view.backgroundColor = Asset.Colors.Background.secondarySystemBackground.color + segmentControl.translatesAutoresizingMaskIntoConstraints = false navigationItem.titleView = segmentControl + NSLayoutConstraint.activate([ + segmentControl.widthAnchor.constraint(equalToConstant: 287) + ]) segmentControl.addTarget(self, action: #selector(NotificationViewController.segmentedControlValueChanged(_:)), for: .valueChanged) + tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) NSLayoutConstraint.activate([ From d9490533ee9acca9239f5cd8b8f648c5a63c7c0d Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 17:57:40 +0800 Subject: [PATCH 12/23] fix: display short version timestamp in notification scene issue --- Mastodon/Diffiable/Section/NotificationSection.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index 47e3b5bbf..c7cc9917f 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -38,7 +38,7 @@ extension NotificationSection { } let createAt = notification.createAt - let timeText = createAt.slowedTimeAgoSinceNow + let timeText = createAt.timeAgoSinceNow let actionText = type.actionText let actionImageName = type.actionImageName From 6400729367b2f005b14089acb85dac1281cf55c5 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 17:58:11 +0800 Subject: [PATCH 13/23] feat: add loader for initial snapshot in notification scene --- .../Notification/NotificationViewModel+diffable.swift | 8 ++++++++ Mastodon/Scene/Notification/NotificationViewModel.swift | 1 + 2 files changed, 9 insertions(+) diff --git a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift index 4e0d9b6d9..7ef313e15 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift @@ -29,6 +29,14 @@ extension NotificationViewModel { delegate: delegate, dependency: dependency ) + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + diffableDataSource.apply(snapshot) + + // workaround to append loader wrong animation issue + snapshot.appendItems([.bottomLoader], toSection: .main) + diffableDataSource.apply(snapshot) } } diff --git a/Mastodon/Scene/Notification/NotificationViewModel.swift b/Mastodon/Scene/Notification/NotificationViewModel.swift index f535c5598..8ecec7900 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel.swift @@ -35,6 +35,7 @@ final class NotificationViewModel: NSObject { // output var diffableDataSource: UITableViewDiffableDataSource! + // top loader private(set) lazy var loadLatestStateMachine: GKStateMachine = { // exclude timeline middle fetcher state From 1d4f425d14721c789b5b8bc9cc7a9aed2dd3db20 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 18:28:27 +0800 Subject: [PATCH 14/23] fix: content offset fixed after toggle segmented control issue. resolve #151 --- Mastodon.xcodeproj/project.pbxproj | 250 +++++++++--------- .../Section/NotificationSection.swift | 4 +- .../NotificationViewController.swift | 26 ++ ...t => NotificationViewModel+Diffable.swift} | 56 +--- .../Notification/NotificationViewModel.swift | 2 + 5 files changed, 163 insertions(+), 175 deletions(-) rename Mastodon/Scene/Notification/{NotificationViewModel+diffable.swift => NotificationViewModel+Diffable.swift} (65%) diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index dd3b14de9..dfd0e1253 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -31,7 +31,7 @@ 164F0EBC267D4FE400249499 /* BoopSound.caf in Resources */ = {isa = PBXBuildFile; fileRef = 164F0EBB267D4FE400249499 /* BoopSound.caf */; }; 18BC7629F65E6DB12CB8416D /* Pods_Mastodon_MastodonUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C030226D3C73DCC23D67452 /* Pods_Mastodon_MastodonUITests.framework */; }; 2D04F42525C255B9003F936F /* APIService+PublicTimeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D04F42425C255B9003F936F /* APIService+PublicTimeline.swift */; }; - 2D084B8D26258EA3003AA3AF /* NotificationViewModel+diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D084B8C26258EA3003AA3AF /* NotificationViewModel+diffable.swift */; }; + 2D084B8D26258EA3003AA3AF /* NotificationViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D084B8C26258EA3003AA3AF /* NotificationViewModel+Diffable.swift */; }; 2D084B9326259545003AA3AF /* NotificationViewModel+LoadLatestState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D084B9226259545003AA3AF /* NotificationViewModel+LoadLatestState.swift */; }; 2D0B7A1D261D839600B44727 /* SearchHistory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D0B7A1C261D839600B44727 /* SearchHistory.swift */; }; 2D152A8C25C295CC009AA50C /* StatusView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D152A8B25C295CC009AA50C /* StatusView.swift */; }; @@ -68,7 +68,7 @@ 2D38F1FE25CD481700561493 /* StatusProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F1FD25CD481700561493 /* StatusProvider.swift */; }; 2D38F20825CD491300561493 /* DisposeBagCollectable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D38F20725CD491300561493 /* DisposeBagCollectable.swift */; }; 2D3F9E0425DFA133004262D9 /* UITapGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D3F9E0325DFA133004262D9 /* UITapGestureRecognizer.swift */; }; - 2D42FF6125C8177C004A627A /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = 2D42FF6025C8177C004A627A /* SwiftPackageProductDependency */; }; + 2D42FF6125C8177C004A627A /* ActiveLabel in Frameworks */ = {isa = PBXBuildFile; productRef = 2D42FF6025C8177C004A627A /* ActiveLabel */; }; 2D42FF6B25C817D2004A627A /* MastodonStatusContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D42FF6A25C817D2004A627A /* MastodonStatusContent.swift */; }; 2D42FF7E25C82218004A627A /* ActionToolBarContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D42FF7D25C82218004A627A /* ActionToolBarContainer.swift */; }; 2D42FF8525C8224F004A627A /* HitTestExpandedButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D42FF8425C8224F004A627A /* HitTestExpandedButton.swift */; }; @@ -81,7 +81,7 @@ 2D571B2F26004EC000540450 /* NavigationBarProgressView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D571B2E26004EC000540450 /* NavigationBarProgressView.swift */; }; 2D59819B25E4A581000FB903 /* MastodonConfirmEmailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D59819A25E4A581000FB903 /* MastodonConfirmEmailViewController.swift */; }; 2D5981A125E4A593000FB903 /* MastodonConfirmEmailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5981A025E4A593000FB903 /* MastodonConfirmEmailViewModel.swift */; }; - 2D5981BA25E4D7F8000FB903 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = 2D5981B925E4D7F8000FB903 /* SwiftPackageProductDependency */; }; + 2D5981BA25E4D7F8000FB903 /* ThirdPartyMailer in Frameworks */ = {isa = PBXBuildFile; productRef = 2D5981B925E4D7F8000FB903 /* ThirdPartyMailer */; }; 2D5A3D0325CF8742002347D6 /* ControlContainableScrollViews.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5A3D0225CF8742002347D6 /* ControlContainableScrollViews.swift */; }; 2D5A3D2825CF8BC9002347D6 /* HomeTimelineViewModel+Diffable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5A3D2725CF8BC9002347D6 /* HomeTimelineViewModel+Diffable.swift */; }; 2D5A3D3825CF8D9F002347D6 /* ScrollViewContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5A3D3725CF8D9F002347D6 /* ScrollViewContainer.swift */; }; @@ -91,7 +91,7 @@ 2D61254D262547C200299647 /* APIService+Notification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61254C262547C200299647 /* APIService+Notification.swift */; }; 2D61335825C188A000CAE157 /* APIService+Persist+Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61335725C188A000CAE157 /* APIService+Persist+Status.swift */; }; 2D61335E25C1894B00CAE157 /* APIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D61335D25C1894B00CAE157 /* APIService.swift */; }; - 2D61336925C18A4F00CAE157 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = 2D61336825C18A4F00CAE157 /* SwiftPackageProductDependency */; }; + 2D61336925C18A4F00CAE157 /* AlamofireNetworkActivityIndicator in Frameworks */ = {isa = PBXBuildFile; productRef = 2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */; }; 2D650FAB25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D650FAA25ECDC9300851B58 /* Mastodon+Entity+Error+Detail.swift */; }; 2D694A7425F9EB4E0038ADDC /* ContentWarningOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D694A7325F9EB4E0038ADDC /* ContentWarningOverlayView.swift */; }; 2D69CFF425CA9E2200C3A1B2 /* LoadMoreConfigurableTableViewContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D69CFF325CA9E2200C3A1B2 /* LoadMoreConfigurableTableViewContainer.swift */; }; @@ -117,7 +117,7 @@ 2D927F0E25C7E9C9004F19B8 /* History.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D927F0D25C7E9C9004F19B8 /* History.swift */; }; 2D927F1425C7EDD9004F19B8 /* Emoji.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D927F1325C7EDD9004F19B8 /* Emoji.swift */; }; 2D939AB525EDD8A90076FA61 /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D939AB425EDD8A90076FA61 /* String.swift */; }; - 2D939AC825EE14620076FA61 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = 2D939AC725EE14620076FA61 /* SwiftPackageProductDependency */; }; + 2D939AC825EE14620076FA61 /* CropViewController in Frameworks */ = {isa = PBXBuildFile; productRef = 2D939AC725EE14620076FA61 /* CropViewController */; }; 2D939AE825EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D939AE725EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift */; }; 2D9DB967263A76FB007C1D71 /* BlockDomainService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D9DB966263A76FB007C1D71 /* BlockDomainService.swift */; }; 2D9DB969263A833E007C1D71 /* DomainBlock.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D9DB968263A833E007C1D71 /* DomainBlock.swift */; }; @@ -165,7 +165,7 @@ 5BB04FF5262F0E6D0043BFF6 /* ReportSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB04FF4262F0E6D0043BFF6 /* ReportSection.swift */; }; 5D0393902612D259007FE196 /* WebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D03938F2612D259007FE196 /* WebViewController.swift */; }; 5D0393962612D266007FE196 /* WebViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D0393952612D266007FE196 /* WebViewModel.swift */; }; - 5D526FE225BE9AC400460CB9 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = 5D526FE125BE9AC400460CB9 /* SwiftPackageProductDependency */; }; + 5D526FE225BE9AC400460CB9 /* MastodonSDK in Frameworks */ = {isa = PBXBuildFile; productRef = 5D526FE125BE9AC400460CB9 /* MastodonSDK */; }; 5DA732CC2629CEF500A92342 /* UIView+Remove.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DA732CB2629CEF500A92342 /* UIView+Remove.swift */; }; 5DDDF1932617442700311060 /* Mastodon+Entity+Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DDDF1922617442700311060 /* Mastodon+Entity+Account.swift */; }; 5DDDF1992617447F00311060 /* Mastodon+Entity+Tag.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DDDF1982617447F00311060 /* Mastodon+Entity+Tag.swift */; }; @@ -181,8 +181,8 @@ 5E44BF88AD33646E64727BCF /* Pods_MastodonTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CD92E0F10BDE4FE7C4B999F2 /* Pods_MastodonTests.framework */; }; 87FFDA5D898A5C42ADCB35E7 /* Pods_Mastodon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4ABE34829701A4496C5BB64 /* Pods_Mastodon.framework */; }; B914FC6B0B8AF18573C0B291 /* Pods_NotificationService.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 374AA339A20E0FAC75BCDA6D /* Pods_NotificationService.framework */; }; - DB00CA972632DDB600A54956 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB00CA962632DDB600A54956 /* SwiftPackageProductDependency */; }; - DB0140BD25C40D7500F9F3CF /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB0140BC25C40D7500F9F3CF /* SwiftPackageProductDependency */; }; + DB00CA972632DDB600A54956 /* CommonOSLog in Frameworks */ = {isa = PBXBuildFile; productRef = DB00CA962632DDB600A54956 /* CommonOSLog */; }; + DB0140BD25C40D7500F9F3CF /* CommonOSLog in Frameworks */ = {isa = PBXBuildFile; productRef = DB0140BC25C40D7500F9F3CF /* CommonOSLog */; }; DB0140CF25C42AEE00F9F3CF /* OSLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB0140CE25C42AEE00F9F3CF /* OSLog.swift */; }; DB023295267F0AB800031745 /* ASMetaEditableTextNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB023294267F0AB800031745 /* ASMetaEditableTextNode.swift */; }; DB029E95266A20430062874E /* MastodonAuthenticationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB029E94266A20430062874E /* MastodonAuthenticationController.swift */; }; @@ -220,7 +220,7 @@ DB35FC1F2612F1D9006193C9 /* ProfileRelationshipActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB35FC1E2612F1D9006193C9 /* ProfileRelationshipActionButton.swift */; }; DB35FC252612FD7A006193C9 /* ProfileFieldView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB35FC242612FD7A006193C9 /* ProfileFieldView.swift */; }; DB35FC2F26130172006193C9 /* MastodonField.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB35FC2E26130172006193C9 /* MastodonField.swift */; }; - DB3D0FF325BAA61700EAA174 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB3D0FF225BAA61700EAA174 /* SwiftPackageProductDependency */; }; + DB3D0FF325BAA61700EAA174 /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB3D0FF225BAA61700EAA174 /* AlamofireImage */; }; DB3D100D25BAA75E00EAA174 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = DB3D100F25BAA75E00EAA174 /* Localizable.strings */; }; DB427DD625BAA00100D1B89D /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB427DD525BAA00100D1B89D /* AppDelegate.swift */; }; DB427DD825BAA00100D1B89D /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB427DD725BAA00100D1B89D /* SceneDelegate.swift */; }; @@ -261,7 +261,7 @@ DB49A63D25FF609300B98345 /* PlayerContainerView+MediaTypeIndicotorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB49A63C25FF609300B98345 /* PlayerContainerView+MediaTypeIndicotorView.swift */; }; DB5086A525CC0B7000C2C187 /* AvatarBarButtonItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5086A425CC0B7000C2C187 /* AvatarBarButtonItem.swift */; }; DB5086AB25CC0BBB00C2C187 /* AvatarConfigurableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5086AA25CC0BBB00C2C187 /* AvatarConfigurableView.swift */; }; - DB5086B825CC0D6400C2C187 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB5086B725CC0D6400C2C187 /* SwiftPackageProductDependency */; }; + DB5086B825CC0D6400C2C187 /* Kingfisher in Frameworks */ = {isa = PBXBuildFile; productRef = DB5086B725CC0D6400C2C187 /* Kingfisher */; }; DB5086BE25CC0D9900C2C187 /* SplashPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB5086BD25CC0D9900C2C187 /* SplashPreference.swift */; }; DB51D172262832380062B7A1 /* BlurHashDecode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB51D170262832380062B7A1 /* BlurHashDecode.swift */; }; DB51D173262832380062B7A1 /* BlurHashEncode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB51D171262832380062B7A1 /* BlurHashEncode.swift */; }; @@ -297,7 +297,7 @@ DB6804C82637CE2F00430867 /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; DB6804D12637CE4700430867 /* UserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6804D02637CE4700430867 /* UserDefaults.swift */; }; DB6804FD2637CFEC00430867 /* AppSecret.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6804FC2637CFEC00430867 /* AppSecret.swift */; }; - DB6805102637D0F800430867 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB68050F2637D0F800430867 /* SwiftPackageProductDependency */; }; + DB6805102637D0F800430867 /* KeychainAccess in Frameworks */ = {isa = PBXBuildFile; productRef = DB68050F2637D0F800430867 /* KeychainAccess */; }; DB6805262637D7DD00430867 /* AppShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DB68047F2637CD4C00430867 /* AppShared.framework */; }; DB68586425E619B700F0A850 /* NSKeyValueObservation.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB68586325E619B700F0A850 /* NSKeyValueObservation.swift */; }; DB68A04A25E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB68A04925E9027700CFDF14 /* AdaptiveStatusBarStyleNavigationController.swift */; }; @@ -310,7 +310,7 @@ DB6D1B3D2636857500ACB481 /* AppearancePreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D1B3C2636857500ACB481 /* AppearancePreference.swift */; }; DB6D1B44263691CF00ACB481 /* Mastodon+API+Subscriptions+Policy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D1B43263691CF00ACB481 /* Mastodon+API+Subscriptions+Policy.swift */; }; DB6D9F3526351B7A008423CD /* NotificationService+Decrypt.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D9F3426351B7A008423CD /* NotificationService+Decrypt.swift */; }; - DB6D9F42263527CE008423CD /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB6D9F41263527CE008423CD /* SwiftPackageProductDependency */; }; + DB6D9F42263527CE008423CD /* AlamofireImage in Frameworks */ = {isa = PBXBuildFile; productRef = DB6D9F41263527CE008423CD /* AlamofireImage */; }; DB6D9F4926353FD7008423CD /* Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D9F4826353FD6008423CD /* Subscription.swift */; }; DB6D9F502635761F008423CD /* SubscriptionAlerts.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D9F4F2635761F008423CD /* SubscriptionAlerts.swift */; }; DB6D9F57263577D2008423CD /* APIService+CoreData+Setting.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D9F56263577D2008423CD /* APIService+CoreData+Setting.swift */; }; @@ -321,8 +321,8 @@ DB6D9F8426358EEC008423CD /* SettingsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D9F8326358EEC008423CD /* SettingsItem.swift */; }; DB6D9F9726367249008423CD /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6D9F9626367249008423CD /* SettingsViewController.swift */; }; DB6F5E2F264E5518009108F4 /* MastodonRegex.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6F5E2E264E5518009108F4 /* MastodonRegex.swift */; }; - DB6F5E32264E7410009108F4 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB6F5E31264E7410009108F4 /* SwiftPackageProductDependency */; }; - DB6F5E33264E7410009108F4 /* BuildFile in Embed Frameworks */ = {isa = PBXBuildFile; productRef = DB6F5E31264E7410009108F4 /* SwiftPackageProductDependency */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; + DB6F5E32264E7410009108F4 /* TwitterTextEditor in Frameworks */ = {isa = PBXBuildFile; productRef = DB6F5E31264E7410009108F4 /* TwitterTextEditor */; }; + DB6F5E33264E7410009108F4 /* TwitterTextEditor in Embed Frameworks */ = {isa = PBXBuildFile; productRef = DB6F5E31264E7410009108F4 /* TwitterTextEditor */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; DB6F5E35264E78E7009108F4 /* AutoCompleteViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6F5E34264E78E7009108F4 /* AutoCompleteViewController.swift */; }; DB6F5E38264E994A009108F4 /* AutoCompleteTopChevronView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6F5E37264E994A009108F4 /* AutoCompleteTopChevronView.swift */; }; DB71FD2C25F86A5100512AE1 /* AvatarStackContainerButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB71FD2B25F86A5100512AE1 /* AvatarStackContainerButton.swift */; }; @@ -387,7 +387,7 @@ DB98339C25C96DE600AD9700 /* APIService+Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB98339B25C96DE600AD9700 /* APIService+Account.swift */; }; DB9A485C2603010E008B817C /* PHPickerResultLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A485B2603010E008B817C /* PHPickerResultLoader.swift */; }; DB9A486C26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A486B26032AC1008B817C /* AttachmentContainerView+EmptyStateView.swift */; }; - DB9A487E2603456B008B817C /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DB9A487D2603456B008B817C /* SwiftPackageProductDependency */; }; + DB9A487E2603456B008B817C /* UITextView+Placeholder in Frameworks */ = {isa = PBXBuildFile; productRef = DB9A487D2603456B008B817C /* UITextView+Placeholder */; }; DB9A488A26034D40008B817C /* ComposeViewModel+PublishState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A488926034D40008B817C /* ComposeViewModel+PublishState.swift */; }; DB9A489026035963008B817C /* APIService+Media.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A488F26035963008B817C /* APIService+Media.swift */; }; DB9A48962603685D008B817C /* MastodonAttachmentService+UploadState.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB9A48952603685D008B817C /* MastodonAttachmentService+UploadState.swift */; }; @@ -412,7 +412,7 @@ DBA9443E265CFA6400C537E1 /* ProfileFieldCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA9443D265CFA6400C537E1 /* ProfileFieldCollectionViewCell.swift */; }; DBA94440265D137600C537E1 /* Mastodon+Entity+Field.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBA9443F265D137600C537E1 /* Mastodon+Entity+Field.swift */; }; DBABE3EC25ECAC4B00879EE5 /* WelcomeIllustrationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBABE3EB25ECAC4B00879EE5 /* WelcomeIllustrationView.swift */; }; - DBAC6483267D0B21007FE9FD /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC6482267D0B21007FE9FD /* SwiftPackageProductDependency */; }; + DBAC6483267D0B21007FE9FD /* DifferenceKit in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC6482267D0B21007FE9FD /* DifferenceKit */; }; DBAC6485267D0F9E007FE9FD /* StatusNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6484267D0F9E007FE9FD /* StatusNode.swift */; }; DBAC6488267D388B007FE9FD /* ASTableNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6487267D388B007FE9FD /* ASTableNode.swift */; }; DBAC648A267DC355007FE9FD /* NSDiffableDataSourceSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6489267DC355007FE9FD /* NSDiffableDataSourceSnapshot.swift */; }; @@ -420,8 +420,8 @@ DBAC6497267DECCB007FE9FD /* TimelineMiddleLoaderNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6496267DECCB007FE9FD /* TimelineMiddleLoaderNode.swift */; }; DBAC6499267DF2C4007FE9FD /* TimelineBottomLoaderNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC6498267DF2C4007FE9FD /* TimelineBottomLoaderNode.swift */; }; DBAC649B267DF8C8007FE9FD /* ActivityIndicatorNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAC649A267DF8C8007FE9FD /* ActivityIndicatorNode.swift */; }; - DBAC649E267DFE43007FE9FD /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC649D267DFE43007FE9FD /* SwiftPackageProductDependency */; }; - DBAC64A1267E6D02007FE9FD /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC64A0267E6D02007FE9FD /* SwiftPackageProductDependency */; }; + DBAC649E267DFE43007FE9FD /* DiffableDataSources in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC649D267DFE43007FE9FD /* DiffableDataSources */; }; + DBAC64A1267E6D02007FE9FD /* Fuzi in Frameworks */ = {isa = PBXBuildFile; productRef = DBAC64A0267E6D02007FE9FD /* Fuzi */; }; DBAE3F682615DD60004B8251 /* UserProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F672615DD60004B8251 /* UserProvider.swift */; }; DBAE3F822615DDA3004B8251 /* ProfileViewController+UserProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F812615DDA3004B8251 /* ProfileViewController+UserProvider.swift */; }; DBAE3F882615DDF4004B8251 /* UserProviderFacade.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3F872615DDF4004B8251 /* UserProviderFacade.swift */; }; @@ -431,10 +431,10 @@ DBAE3FA92617106E004B8251 /* MastodonMetricFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3FA82617106E004B8251 /* MastodonMetricFormatter.swift */; }; DBAE3FAF26172FC0004B8251 /* RemoteProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAE3FAE26172FC0004B8251 /* RemoteProfileViewModel.swift */; }; DBAEDE5C267A058D00D25FF5 /* BlurhashImageCacheService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAEDE5B267A058D00D25FF5 /* BlurhashImageCacheService.swift */; }; - DBAEDE5F267A0B1500D25FF5 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DBAEDE5E267A0B1500D25FF5 /* SwiftPackageProductDependency */; }; + DBAEDE5F267A0B1500D25FF5 /* Nuke in Frameworks */ = {isa = PBXBuildFile; productRef = DBAEDE5E267A0B1500D25FF5 /* Nuke */; }; DBAEDE61267B342D00D25FF5 /* StatusContentCacheService.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAEDE60267B342D00D25FF5 /* StatusContentCacheService.swift */; }; DBAFB7352645463500371D5F /* Emojis.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBAFB7342645463500371D5F /* Emojis.swift */; }; - DBB525082611EAC0002F1F29 /* BuildFile in Frameworks */ = {isa = PBXBuildFile; productRef = DBB525072611EAC0002F1F29 /* SwiftPackageProductDependency */; }; + DBB525082611EAC0002F1F29 /* Tabman in Frameworks */ = {isa = PBXBuildFile; productRef = DBB525072611EAC0002F1F29 /* Tabman */; }; DBB5250E2611EBAF002F1F29 /* ProfileSegmentedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB5250D2611EBAF002F1F29 /* ProfileSegmentedViewController.swift */; }; DBB525212611EBD6002F1F29 /* ProfilePagingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB525202611EBD6002F1F29 /* ProfilePagingViewController.swift */; }; DBB525302611EBF3002F1F29 /* ProfilePagingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBB5252F2611EBF3002F1F29 /* ProfilePagingViewModel.swift */; }; @@ -579,7 +579,7 @@ files = ( DB6804872637CD4C00430867 /* AppShared.framework in Embed Frameworks */, DB89BA0425C10FD0008580ED /* CoreDataStack.framework in Embed Frameworks */, - DB6F5E33264E7410009108F4 /* BuildFile in Embed Frameworks */, + DB6F5E33264E7410009108F4 /* TwitterTextEditor in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -622,7 +622,7 @@ 164F0EBB267D4FE400249499 /* BoopSound.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = BoopSound.caf; sourceTree = ""; }; 1D6D967E77A5357E2C6110D9 /* Pods-Mastodon.asdk - debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Mastodon.asdk - debug.xcconfig"; path = "Target Support Files/Pods-Mastodon/Pods-Mastodon.asdk - debug.xcconfig"; sourceTree = ""; }; 2D04F42425C255B9003F936F /* APIService+PublicTimeline.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "APIService+PublicTimeline.swift"; sourceTree = ""; }; - 2D084B8C26258EA3003AA3AF /* NotificationViewModel+diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+diffable.swift"; sourceTree = ""; }; + 2D084B8C26258EA3003AA3AF /* NotificationViewModel+Diffable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+Diffable.swift"; sourceTree = ""; }; 2D084B9226259545003AA3AF /* NotificationViewModel+LoadLatestState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NotificationViewModel+LoadLatestState.swift"; sourceTree = ""; }; 2D0B7A1C261D839600B44727 /* SearchHistory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchHistory.swift; sourceTree = ""; }; 2D152A8B25C295CC009AA50C /* StatusView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusView.swift; sourceTree = ""; }; @@ -1113,24 +1113,24 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DBAEDE5F267A0B1500D25FF5 /* BuildFile in Frameworks */, - DB6F5E32264E7410009108F4 /* BuildFile in Frameworks */, - DB0140BD25C40D7500F9F3CF /* BuildFile in Frameworks */, + DBAEDE5F267A0B1500D25FF5 /* Nuke in Frameworks */, + DB6F5E32264E7410009108F4 /* TwitterTextEditor in Frameworks */, + DB0140BD25C40D7500F9F3CF /* CommonOSLog in Frameworks */, DB89BA0325C10FD0008580ED /* CoreDataStack.framework in Frameworks */, - 2D42FF6125C8177C004A627A /* BuildFile in Frameworks */, - DB9A487E2603456B008B817C /* BuildFile in Frameworks */, - 2D939AC825EE14620076FA61 /* BuildFile in Frameworks */, - DBB525082611EAC0002F1F29 /* BuildFile in Frameworks */, - 5D526FE225BE9AC400460CB9 /* BuildFile in Frameworks */, + 2D42FF6125C8177C004A627A /* ActiveLabel in Frameworks */, + DB9A487E2603456B008B817C /* UITextView+Placeholder in Frameworks */, + 2D939AC825EE14620076FA61 /* CropViewController in Frameworks */, + DBB525082611EAC0002F1F29 /* Tabman in Frameworks */, + 5D526FE225BE9AC400460CB9 /* MastodonSDK in Frameworks */, DB6804862637CD4C00430867 /* AppShared.framework in Frameworks */, - DB5086B825CC0D6400C2C187 /* BuildFile in Frameworks */, + DB5086B825CC0D6400C2C187 /* Kingfisher in Frameworks */, DBF96326262EC0A6001D8D25 /* AuthenticationServices.framework in Frameworks */, - DBAC6483267D0B21007FE9FD /* BuildFile in Frameworks */, - 2D61336925C18A4F00CAE157 /* BuildFile in Frameworks */, - DBAC64A1267E6D02007FE9FD /* BuildFile in Frameworks */, - DB3D0FF325BAA61700EAA174 /* BuildFile in Frameworks */, - DBAC649E267DFE43007FE9FD /* BuildFile in Frameworks */, - 2D5981BA25E4D7F8000FB903 /* BuildFile in Frameworks */, + DBAC6483267D0B21007FE9FD /* DifferenceKit in Frameworks */, + 2D61336925C18A4F00CAE157 /* AlamofireNetworkActivityIndicator in Frameworks */, + DBAC64A1267E6D02007FE9FD /* Fuzi in Frameworks */, + DB3D0FF325BAA61700EAA174 /* AlamofireImage in Frameworks */, + DBAC649E267DFE43007FE9FD /* DiffableDataSources in Frameworks */, + 2D5981BA25E4D7F8000FB903 /* ThirdPartyMailer in Frameworks */, 87FFDA5D898A5C42ADCB35E7 /* Pods_Mastodon.framework in Frameworks */, DB6804C82637CE2F00430867 /* AppShared.framework in Frameworks */, ); @@ -1157,7 +1157,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DB6805102637D0F800430867 /* BuildFile in Frameworks */, + DB6805102637D0F800430867 /* KeychainAccess in Frameworks */, EE93E8E8F9E0C39EAAEBD92F /* Pods_AppShared.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1182,8 +1182,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DB00CA972632DDB600A54956 /* BuildFile in Frameworks */, - DB6D9F42263527CE008423CD /* BuildFile in Frameworks */, + DB00CA972632DDB600A54956 /* CommonOSLog in Frameworks */, + DB6D9F42263527CE008423CD /* AlamofireImage in Frameworks */, DB6804A52637CDCC00430867 /* AppShared.framework in Frameworks */, B914FC6B0B8AF18573C0B291 /* Pods_NotificationService.framework in Frameworks */, ); @@ -2330,7 +2330,7 @@ children = ( DB9D6BF725E4F5690051B173 /* NotificationViewController.swift */, 2D607AD726242FC500B70763 /* NotificationViewModel.swift */, - 2D084B8C26258EA3003AA3AF /* NotificationViewModel+diffable.swift */, + 2D084B8C26258EA3003AA3AF /* NotificationViewModel+Diffable.swift */, 2D084B9226259545003AA3AF /* NotificationViewModel+LoadLatestState.swift */, 2D24E12C2626FD2E00A59D4F /* NotificationViewModel+LoadOldestState.swift */, 2D35237F26256F470031AF25 /* TableViewCell */, @@ -2629,21 +2629,21 @@ ); name = Mastodon; packageProductDependencies = ( - DB3D0FF225BAA61700EAA174 /* SwiftPackageProductDependency */, - 5D526FE125BE9AC400460CB9 /* SwiftPackageProductDependency */, - 2D61336825C18A4F00CAE157 /* SwiftPackageProductDependency */, - 2D42FF6025C8177C004A627A /* SwiftPackageProductDependency */, - DB0140BC25C40D7500F9F3CF /* SwiftPackageProductDependency */, - DB5086B725CC0D6400C2C187 /* SwiftPackageProductDependency */, - 2D5981B925E4D7F8000FB903 /* SwiftPackageProductDependency */, - 2D939AC725EE14620076FA61 /* SwiftPackageProductDependency */, - DB9A487D2603456B008B817C /* SwiftPackageProductDependency */, - DBB525072611EAC0002F1F29 /* SwiftPackageProductDependency */, - DB6F5E31264E7410009108F4 /* SwiftPackageProductDependency */, - DBAEDE5E267A0B1500D25FF5 /* SwiftPackageProductDependency */, - DBAC6482267D0B21007FE9FD /* SwiftPackageProductDependency */, - DBAC649D267DFE43007FE9FD /* SwiftPackageProductDependency */, - DBAC64A0267E6D02007FE9FD /* SwiftPackageProductDependency */, + DB3D0FF225BAA61700EAA174 /* AlamofireImage */, + 5D526FE125BE9AC400460CB9 /* MastodonSDK */, + 2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */, + 2D42FF6025C8177C004A627A /* ActiveLabel */, + DB0140BC25C40D7500F9F3CF /* CommonOSLog */, + DB5086B725CC0D6400C2C187 /* Kingfisher */, + 2D5981B925E4D7F8000FB903 /* ThirdPartyMailer */, + 2D939AC725EE14620076FA61 /* CropViewController */, + DB9A487D2603456B008B817C /* UITextView+Placeholder */, + DBB525072611EAC0002F1F29 /* Tabman */, + DB6F5E31264E7410009108F4 /* TwitterTextEditor */, + DBAEDE5E267A0B1500D25FF5 /* Nuke */, + DBAC6482267D0B21007FE9FD /* DifferenceKit */, + DBAC649D267DFE43007FE9FD /* DiffableDataSources */, + DBAC64A0267E6D02007FE9FD /* Fuzi */, ); productName = Mastodon; productReference = DB427DD225BAA00100D1B89D /* Mastodon.app */; @@ -2704,7 +2704,7 @@ ); name = AppShared; packageProductDependencies = ( - DB68050F2637D0F800430867 /* SwiftPackageProductDependency */, + DB68050F2637D0F800430867 /* KeychainAccess */, ); productName = AppShared; productReference = DB68047F2637CD4C00430867 /* AppShared.framework */; @@ -2764,8 +2764,8 @@ ); name = NotificationService; packageProductDependencies = ( - DB00CA962632DDB600A54956 /* SwiftPackageProductDependency */, - DB6D9F41263527CE008423CD /* SwiftPackageProductDependency */, + DB00CA962632DDB600A54956 /* CommonOSLog */, + DB6D9F41263527CE008423CD /* AlamofireImage */, ); productName = NotificationService; productReference = DBF8AE13263293E400C9C23C /* NotificationService.appex */; @@ -2820,21 +2820,21 @@ ); mainGroup = DB427DC925BAA00100D1B89D; packageReferences = ( - DB3D0FF125BAA61700EAA174 /* RemoteSwiftPackageReference */, - 2D61336725C18A4F00CAE157 /* RemoteSwiftPackageReference */, - 2D42FF5F25C8177C004A627A /* RemoteSwiftPackageReference */, - DB0140BB25C40D7500F9F3CF /* RemoteSwiftPackageReference */, - DB5086B625CC0D6400C2C187 /* RemoteSwiftPackageReference */, - 2D5981B825E4D7F8000FB903 /* RemoteSwiftPackageReference */, - 2D939AC625EE14620076FA61 /* RemoteSwiftPackageReference */, - DB9A487C2603456B008B817C /* RemoteSwiftPackageReference */, - DBB525062611EAC0002F1F29 /* RemoteSwiftPackageReference */, - DB6804722637CC1200430867 /* RemoteSwiftPackageReference */, - DB6F5E30264E7410009108F4 /* RemoteSwiftPackageReference */, - DBAEDE5D267A0B1500D25FF5 /* RemoteSwiftPackageReference */, - DBAC6481267D0B21007FE9FD /* RemoteSwiftPackageReference */, - DBAC649C267DFE43007FE9FD /* RemoteSwiftPackageReference */, - DBAC649F267E6D01007FE9FD /* RemoteSwiftPackageReference */, + DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */, + 2D61336725C18A4F00CAE157 /* XCRemoteSwiftPackageReference "AlamofireNetworkActivityIndicator" */, + 2D42FF5F25C8177C004A627A /* XCRemoteSwiftPackageReference "ActiveLabel" */, + DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */, + DB5086B625CC0D6400C2C187 /* XCRemoteSwiftPackageReference "Kingfisher" */, + 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer" */, + 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController" */, + DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */, + DBB525062611EAC0002F1F29 /* XCRemoteSwiftPackageReference "Tabman" */, + DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */, + DB6F5E30264E7410009108F4 /* XCRemoteSwiftPackageReference "TwitterTextEditor" */, + DBAEDE5D267A0B1500D25FF5 /* XCRemoteSwiftPackageReference "Nuke" */, + DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit" */, + DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources" */, + DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi" */, ); productRefGroup = DB427DD325BAA00100D1B89D /* Products */; projectDirPath = ""; @@ -3301,7 +3301,7 @@ DB789A1C25F9F76A0071ACA0 /* ComposeStatusContentCollectionViewCell.swift in Sources */, DB1FD43625F26899004CFCFC /* MastodonPickServerViewModel+LoadIndexedServerState.swift in Sources */, 2D939AE825EE1CF80076FA61 /* MastodonRegisterViewController+Avatar.swift in Sources */, - 2D084B8D26258EA3003AA3AF /* NotificationViewModel+diffable.swift in Sources */, + 2D084B8D26258EA3003AA3AF /* NotificationViewModel+Diffable.swift in Sources */, DB6D1B24263684C600ACB481 /* UserDefaults.swift in Sources */, DB1D186C25EF5BA7003F1F23 /* PollTableView.swift in Sources */, DBA94434265CBB5300C537E1 /* ProfileFieldSection.swift in Sources */, @@ -4678,7 +4678,7 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 2D42FF5F25C8177C004A627A /* RemoteSwiftPackageReference */ = { + 2D42FF5F25C8177C004A627A /* XCRemoteSwiftPackageReference "ActiveLabel" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/TwidereProject/ActiveLabel.swift"; requirement = { @@ -4686,7 +4686,7 @@ version = 5.0.3; }; }; - 2D5981B825E4D7F8000FB903 /* RemoteSwiftPackageReference */ = { + 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/vtourraine/ThirdPartyMailer.git"; requirement = { @@ -4694,7 +4694,7 @@ minimumVersion = 1.7.1; }; }; - 2D61336725C18A4F00CAE157 /* RemoteSwiftPackageReference */ = { + 2D61336725C18A4F00CAE157 /* XCRemoteSwiftPackageReference "AlamofireNetworkActivityIndicator" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Alamofire/AlamofireNetworkActivityIndicator"; requirement = { @@ -4702,7 +4702,7 @@ minimumVersion = 3.1.0; }; }; - 2D939AC625EE14620076FA61 /* RemoteSwiftPackageReference */ = { + 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/TimOliver/TOCropViewController.git"; requirement = { @@ -4710,7 +4710,7 @@ minimumVersion = 2.6.0; }; }; - DB0140BB25C40D7500F9F3CF /* RemoteSwiftPackageReference */ = { + DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/CommonOSLog"; requirement = { @@ -4718,7 +4718,7 @@ minimumVersion = 0.1.1; }; }; - DB3D0FF125BAA61700EAA174 /* RemoteSwiftPackageReference */ = { + DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/Alamofire/AlamofireImage.git"; requirement = { @@ -4726,7 +4726,7 @@ minimumVersion = 4.1.0; }; }; - DB5086B625CC0D6400C2C187 /* RemoteSwiftPackageReference */ = { + DB5086B625CC0D6400C2C187 /* XCRemoteSwiftPackageReference "Kingfisher" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/onevcat/Kingfisher.git"; requirement = { @@ -4734,7 +4734,7 @@ minimumVersion = 6.1.0; }; }; - DB6804722637CC1200430867 /* RemoteSwiftPackageReference */ = { + DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/kishikawakatsumi/KeychainAccess.git"; requirement = { @@ -4742,7 +4742,7 @@ minimumVersion = 4.2.2; }; }; - DB6F5E30264E7410009108F4 /* RemoteSwiftPackageReference */ = { + DB6F5E30264E7410009108F4 /* XCRemoteSwiftPackageReference "TwitterTextEditor" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/TwitterTextEditor.git"; requirement = { @@ -4750,7 +4750,7 @@ kind = branch; }; }; - DB9A487C2603456B008B817C /* RemoteSwiftPackageReference */ = { + DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/UITextView-Placeholder"; requirement = { @@ -4758,7 +4758,7 @@ minimumVersion = 1.4.1; }; }; - DBAC6481267D0B21007FE9FD /* RemoteSwiftPackageReference */ = { + DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/ra1028/DifferenceKit.git"; requirement = { @@ -4766,7 +4766,7 @@ version = 1.2.0; }; }; - DBAC649C267DFE43007FE9FD /* RemoteSwiftPackageReference */ = { + DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/MainasuK/DiffableDataSources.git"; requirement = { @@ -4774,7 +4774,7 @@ kind = branch; }; }; - DBAC649F267E6D01007FE9FD /* RemoteSwiftPackageReference */ = { + DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/cezheng/Fuzi.git"; requirement = { @@ -4782,7 +4782,7 @@ minimumVersion = 3.1.3; }; }; - DBAEDE5D267A0B1500D25FF5 /* RemoteSwiftPackageReference */ = { + DBAEDE5D267A0B1500D25FF5 /* XCRemoteSwiftPackageReference "Nuke" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/kean/Nuke.git"; requirement = { @@ -4790,7 +4790,7 @@ minimumVersion = 10.3.0; }; }; - DBB525062611EAC0002F1F29 /* RemoteSwiftPackageReference */ = { + DBB525062611EAC0002F1F29 /* XCRemoteSwiftPackageReference "Tabman" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/uias/Tabman"; requirement = { @@ -4801,93 +4801,93 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - 2D42FF6025C8177C004A627A /* SwiftPackageProductDependency */ = { + 2D42FF6025C8177C004A627A /* ActiveLabel */ = { isa = XCSwiftPackageProductDependency; - package = 2D42FF5F25C8177C004A627A /* RemoteSwiftPackageReference */; + package = 2D42FF5F25C8177C004A627A /* XCRemoteSwiftPackageReference "ActiveLabel" */; productName = ActiveLabel; }; - 2D5981B925E4D7F8000FB903 /* SwiftPackageProductDependency */ = { + 2D5981B925E4D7F8000FB903 /* ThirdPartyMailer */ = { isa = XCSwiftPackageProductDependency; - package = 2D5981B825E4D7F8000FB903 /* RemoteSwiftPackageReference */; + package = 2D5981B825E4D7F8000FB903 /* XCRemoteSwiftPackageReference "ThirdPartyMailer" */; productName = ThirdPartyMailer; }; - 2D61336825C18A4F00CAE157 /* SwiftPackageProductDependency */ = { + 2D61336825C18A4F00CAE157 /* AlamofireNetworkActivityIndicator */ = { isa = XCSwiftPackageProductDependency; - package = 2D61336725C18A4F00CAE157 /* RemoteSwiftPackageReference */; + package = 2D61336725C18A4F00CAE157 /* XCRemoteSwiftPackageReference "AlamofireNetworkActivityIndicator" */; productName = AlamofireNetworkActivityIndicator; }; - 2D939AC725EE14620076FA61 /* SwiftPackageProductDependency */ = { + 2D939AC725EE14620076FA61 /* CropViewController */ = { isa = XCSwiftPackageProductDependency; - package = 2D939AC625EE14620076FA61 /* RemoteSwiftPackageReference */; + package = 2D939AC625EE14620076FA61 /* XCRemoteSwiftPackageReference "TOCropViewController" */; productName = CropViewController; }; - 5D526FE125BE9AC400460CB9 /* SwiftPackageProductDependency */ = { + 5D526FE125BE9AC400460CB9 /* MastodonSDK */ = { isa = XCSwiftPackageProductDependency; productName = MastodonSDK; }; - DB00CA962632DDB600A54956 /* SwiftPackageProductDependency */ = { + DB00CA962632DDB600A54956 /* CommonOSLog */ = { isa = XCSwiftPackageProductDependency; - package = DB0140BB25C40D7500F9F3CF /* RemoteSwiftPackageReference */; + package = DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */; productName = CommonOSLog; }; - DB0140BC25C40D7500F9F3CF /* SwiftPackageProductDependency */ = { + DB0140BC25C40D7500F9F3CF /* CommonOSLog */ = { isa = XCSwiftPackageProductDependency; - package = DB0140BB25C40D7500F9F3CF /* RemoteSwiftPackageReference */; + package = DB0140BB25C40D7500F9F3CF /* XCRemoteSwiftPackageReference "CommonOSLog" */; productName = CommonOSLog; }; - DB3D0FF225BAA61700EAA174 /* SwiftPackageProductDependency */ = { + DB3D0FF225BAA61700EAA174 /* AlamofireImage */ = { isa = XCSwiftPackageProductDependency; - package = DB3D0FF125BAA61700EAA174 /* RemoteSwiftPackageReference */; + package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; productName = AlamofireImage; }; - DB5086B725CC0D6400C2C187 /* SwiftPackageProductDependency */ = { + DB5086B725CC0D6400C2C187 /* Kingfisher */ = { isa = XCSwiftPackageProductDependency; - package = DB5086B625CC0D6400C2C187 /* RemoteSwiftPackageReference */; + package = DB5086B625CC0D6400C2C187 /* XCRemoteSwiftPackageReference "Kingfisher" */; productName = Kingfisher; }; - DB68050F2637D0F800430867 /* SwiftPackageProductDependency */ = { + DB68050F2637D0F800430867 /* KeychainAccess */ = { isa = XCSwiftPackageProductDependency; - package = DB6804722637CC1200430867 /* RemoteSwiftPackageReference */; + package = DB6804722637CC1200430867 /* XCRemoteSwiftPackageReference "KeychainAccess" */; productName = KeychainAccess; }; - DB6D9F41263527CE008423CD /* SwiftPackageProductDependency */ = { + DB6D9F41263527CE008423CD /* AlamofireImage */ = { isa = XCSwiftPackageProductDependency; - package = DB3D0FF125BAA61700EAA174 /* RemoteSwiftPackageReference */; + package = DB3D0FF125BAA61700EAA174 /* XCRemoteSwiftPackageReference "AlamofireImage" */; productName = AlamofireImage; }; - DB6F5E31264E7410009108F4 /* SwiftPackageProductDependency */ = { + DB6F5E31264E7410009108F4 /* TwitterTextEditor */ = { isa = XCSwiftPackageProductDependency; - package = DB6F5E30264E7410009108F4 /* RemoteSwiftPackageReference */; + package = DB6F5E30264E7410009108F4 /* XCRemoteSwiftPackageReference "TwitterTextEditor" */; productName = TwitterTextEditor; }; - DB9A487D2603456B008B817C /* SwiftPackageProductDependency */ = { + DB9A487D2603456B008B817C /* UITextView+Placeholder */ = { isa = XCSwiftPackageProductDependency; - package = DB9A487C2603456B008B817C /* RemoteSwiftPackageReference */; + package = DB9A487C2603456B008B817C /* XCRemoteSwiftPackageReference "UITextView-Placeholder" */; productName = "UITextView+Placeholder"; }; - DBAC6482267D0B21007FE9FD /* SwiftPackageProductDependency */ = { + DBAC6482267D0B21007FE9FD /* DifferenceKit */ = { isa = XCSwiftPackageProductDependency; - package = DBAC6481267D0B21007FE9FD /* RemoteSwiftPackageReference */; + package = DBAC6481267D0B21007FE9FD /* XCRemoteSwiftPackageReference "DifferenceKit" */; productName = DifferenceKit; }; - DBAC649D267DFE43007FE9FD /* SwiftPackageProductDependency */ = { + DBAC649D267DFE43007FE9FD /* DiffableDataSources */ = { isa = XCSwiftPackageProductDependency; - package = DBAC649C267DFE43007FE9FD /* RemoteSwiftPackageReference */; + package = DBAC649C267DFE43007FE9FD /* XCRemoteSwiftPackageReference "DiffableDataSources" */; productName = DiffableDataSources; }; - DBAC64A0267E6D02007FE9FD /* SwiftPackageProductDependency */ = { + DBAC64A0267E6D02007FE9FD /* Fuzi */ = { isa = XCSwiftPackageProductDependency; - package = DBAC649F267E6D01007FE9FD /* RemoteSwiftPackageReference */; + package = DBAC649F267E6D01007FE9FD /* XCRemoteSwiftPackageReference "Fuzi" */; productName = Fuzi; }; - DBAEDE5E267A0B1500D25FF5 /* SwiftPackageProductDependency */ = { + DBAEDE5E267A0B1500D25FF5 /* Nuke */ = { isa = XCSwiftPackageProductDependency; - package = DBAEDE5D267A0B1500D25FF5 /* RemoteSwiftPackageReference */; + package = DBAEDE5D267A0B1500D25FF5 /* XCRemoteSwiftPackageReference "Nuke" */; productName = Nuke; }; - DBB525072611EAC0002F1F29 /* SwiftPackageProductDependency */ = { + DBB525072611EAC0002F1F29 /* Tabman */ = { isa = XCSwiftPackageProductDependency; - package = DBB525062611EAC0002F1F29 /* RemoteSwiftPackageReference */; + package = DBB525062611EAC0002F1F29 /* XCRemoteSwiftPackageReference "Tabman" */; productName = Tabman; }; /* End XCSwiftPackageProductDependency section */ diff --git a/Mastodon/Diffiable/Section/NotificationSection.swift b/Mastodon/Diffiable/Section/NotificationSection.swift index c7cc9917f..d71e5ea7c 100644 --- a/Mastodon/Diffiable/Section/NotificationSection.swift +++ b/Mastodon/Diffiable/Section/NotificationSection.swift @@ -65,7 +65,7 @@ extension NotificationSection { timestampUpdatePublisher .sink { [weak cell] _ in guard let cell = cell else { return } - let timeText = createAt.slowedTimeAgoSinceNow + let timeText = createAt.timeAgoSinceNow cell.actionLabel.text = actionText + " · " + timeText } .store(in: &cell.disposeBag) @@ -91,7 +91,7 @@ extension NotificationSection { timestampUpdatePublisher .sink { [weak cell] _ in guard let cell = cell else { return } - let timeText = createAt.slowedTimeAgoSinceNow + let timeText = createAt.timeAgoSinceNow cell.actionLabel.text = actionText + " · " + timeText } .store(in: &cell.disposeBag) diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index eb319548b..4ed5b5208 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -86,6 +86,17 @@ extension NotificationViewController { } } .store(in: &disposeBag) + + viewModel.dataSourceDidUpdated + .receive(on: RunLoop.main) + .sink { [weak self] in + guard let self = self else { return } + self.viewModel.needsScrollToTopAfterDataSourceUpdate = false + DispatchQueue.main.asyncAfter(deadline: .now() + 0.33) { + self.scrollToTop(animated: true) + } + } + .store(in: &disposeBag) viewModel.selectedIndex .removeDuplicates() @@ -97,6 +108,9 @@ extension NotificationViewController { guard let domain = self.viewModel.activeMastodonAuthenticationBox.value?.domain, let userID = self.viewModel.activeMastodonAuthenticationBox.value?.userID else { return } + + self.viewModel.needsScrollToTopAfterDataSourceUpdate = true + switch segment { case .EveryThing: self.viewModel.notificationPredicate.value = MastodonNotification.predicate(domain: domain, userID: userID) @@ -282,6 +296,18 @@ extension NotificationViewController { } } +// MARK: - ScrollViewContainer +extension NotificationViewController: ScrollViewContainer { + + var scrollView: UIScrollView { tableView } + + func scrollToTop(animated: Bool) { + let indexPath = IndexPath(row: 0, section: 0) + guard viewModel.diffableDataSource?.itemIdentifier(for: indexPath) != nil else { return } + tableView.scrollToRow(at: indexPath, at: .top, animated: true) + } +} + extension NotificationViewController: LoadMoreConfigurableTableViewContainer { typealias BottomLoaderTableViewCell = TimelineBottomLoaderTableViewCell typealias LoadingState = NotificationViewModel.LoadOldestState.Loading diff --git a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift b/Mastodon/Scene/Notification/NotificationViewModel+Diffable.swift similarity index 65% rename from Mastodon/Scene/Notification/NotificationViewModel+diffable.swift rename to Mastodon/Scene/Notification/NotificationViewModel+Diffable.swift index 7ef313e15..b8c70f3b1 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel+diffable.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel+Diffable.swift @@ -1,5 +1,5 @@ // -// NotificationViewModel+diffable.swift +// NotificationViewModel+Diffable.swift // Mastodon // // Created by sxiaojian on 2021/4/13. @@ -95,55 +95,15 @@ extension NotificationViewModel: NSFetchedResultsControllerDelegate { if !notifications.isEmpty, self.noMoreNotification.value == false { newSnapshot.appendItems([.bottomLoader], toSection: .main) } - guard let difference = self.calculateReloadSnapshotDifference(navigationBar: navigationBar, tableView: tableView, oldSnapshot: oldSnapshot, newSnapshot: newSnapshot) else { - diffableDataSource.apply(newSnapshot, animatingDifferences: false) - self.isFetchingLatestNotification.value = false - tableView.reloadData() - return - } - - diffableDataSource.apply(newSnapshot, animatingDifferences: false) { - tableView.scrollToRow(at: difference.targetIndexPath, at: .top, animated: false) - tableView.contentOffset.y = tableView.contentOffset.y - difference.offset - self.isFetchingLatestNotification.value = false + + self.isFetchingLatestNotification.value = false + + diffableDataSource.apply(newSnapshot, animatingDifferences: false) { [weak self] in + guard let self = self else { return } + self.dataSourceDidUpdated.send() } } } } - - private struct Difference { - let item: T - let sourceIndexPath: IndexPath - let targetIndexPath: IndexPath - let offset: CGFloat - } - - private func calculateReloadSnapshotDifference( - navigationBar: UINavigationBar, - tableView: UITableView, - oldSnapshot: NSDiffableDataSourceSnapshot, - newSnapshot: NSDiffableDataSourceSnapshot - ) -> Difference? { - guard oldSnapshot.numberOfItems != 0 else { return nil } - - // old snapshot not empty. set source index path to first item if not match - let sourceIndexPath = UIViewController.topVisibleTableViewCellIndexPath(in: tableView, navigationBar: navigationBar) ?? IndexPath(row: 0, section: 0) - - guard sourceIndexPath.row < oldSnapshot.itemIdentifiers(inSection: .main).count else { return nil } - - if oldSnapshot.itemIdentifiers.elementsEqual(newSnapshot.itemIdentifiers) { - return nil - } - let timelineItem = oldSnapshot.itemIdentifiers(inSection: .main)[sourceIndexPath.row] - guard let itemIndex = newSnapshot.itemIdentifiers(inSection: .main).firstIndex(of: timelineItem) else { return nil } - let targetIndexPath = IndexPath(row: itemIndex, section: 0) - - let offset = UIViewController.tableViewCellOriginOffsetToWindowTop(in: tableView, at: sourceIndexPath, navigationBar: navigationBar) - return Difference( - item: timelineItem, - sourceIndexPath: sourceIndexPath, - targetIndexPath: targetIndexPath, - offset: offset - ) - } + } diff --git a/Mastodon/Scene/Notification/NotificationViewModel.swift b/Mastodon/Scene/Notification/NotificationViewModel.swift index 8ecec7900..4947dbbd0 100644 --- a/Mastodon/Scene/Notification/NotificationViewModel.swift +++ b/Mastodon/Scene/Notification/NotificationViewModel.swift @@ -31,6 +31,8 @@ final class NotificationViewModel: NSObject { let notificationPredicate = CurrentValueSubject(nil) let cellFrameCache = NSCache() + var needsScrollToTopAfterDataSourceUpdate = false + let dataSourceDidUpdated = PassthroughSubject() let isFetchingLatestNotification = CurrentValueSubject(false) // output From 78a444f14b0dc4b382ee98b1b7b5a4e841864a80 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 18:57:31 +0800 Subject: [PATCH 15/23] chore: revamp icon to Display P3 --- .../AppIcon.appiconset/Contents.json | 34 +++++++++--------- .../AppIcon.appiconset/Icon-60@2x.png | Bin 16052 -> 0 bytes .../AppIcon.appiconset/Icon-60@3x.png | Bin 33367 -> 0 bytes .../AppIcon.appiconset/Icon-76.png | Bin 7683 -> 0 bytes .../AppIcon.appiconset/Icon-76@2x.png | Bin 24590 -> 0 bytes .../AppIcon.appiconset/Icon-83.5@2x.png | Bin 29075 -> 0 bytes .../AppIcon.appiconset/Icon-Small-40.png | Bin 3022 -> 0 bytes .../AppIcon.appiconset/Icon-Small-40@2x-1.png | Bin 8250 -> 0 bytes .../AppIcon.appiconset/Icon-Small-40@2x.png | Bin 8250 -> 0 bytes .../AppIcon.appiconset/Icon-Small-41.png | Bin 3022 -> 0 bytes .../AppIcon.appiconset/Icon-Small-42.png | Bin 3022 -> 0 bytes .../AppIcon.appiconset/Icon-Small.png | Bin 2054 -> 0 bytes .../AppIcon.appiconset/Icon-Small@2x-1.png | Bin 5060 -> 0 bytes .../AppIcon.appiconset/Icon-Small@2x.png | Bin 5060 -> 0 bytes .../AppIcon.appiconset/Icon-Small@3x.png | Bin 9398 -> 0 bytes .../AppIcon.appiconset/icon-60@2x-1.png | Bin 16026 -> 0 bytes .../AppIcon.appiconset/icon_20pt.png | Bin 0 -> 1399 bytes .../AppIcon.appiconset/icon_20pt@2x-1.png | Bin 0 -> 3183 bytes .../AppIcon.appiconset/icon_20pt@2x.png | Bin 0 -> 3183 bytes .../AppIcon.appiconset/icon_20pt@3x.png | Bin 0 -> 5855 bytes .../AppIcon.appiconset/icon_29pt.png | Bin 0 -> 2091 bytes .../AppIcon.appiconset/icon_29pt@2x-1.png | Bin 0 -> 5379 bytes .../AppIcon.appiconset/icon_29pt@2x.png | Bin 0 -> 5379 bytes .../AppIcon.appiconset/icon_29pt@3x.png | Bin 0 -> 10567 bytes .../AppIcon.appiconset/icon_40pt.png | Bin 0 -> 3183 bytes .../AppIcon.appiconset/icon_40pt@2x-1.png | Bin 0 -> 9227 bytes .../AppIcon.appiconset/icon_40pt@2x.png | Bin 0 -> 9227 bytes .../AppIcon.appiconset/icon_40pt@3x.png | Bin 0 -> 18460 bytes .../AppIcon.appiconset/icon_60pt@2x.png | Bin 0 -> 18460 bytes .../AppIcon.appiconset/icon_60pt@3x.png | Bin 0 -> 39485 bytes .../AppIcon.appiconset/icon_76pt.png | Bin 0 -> 8206 bytes .../AppIcon.appiconset/icon_76pt@2x.png | Bin 0 -> 28578 bytes .../AppIcon.appiconset/icon_83.5@2x.png | Bin 0 -> 34107 bytes .../notification-icon@3x.png | Bin 4952 -> 0 bytes .../notification-icon~ipad.png | Bin 1009 -> 0 bytes 35 files changed, 17 insertions(+), 17 deletions(-) delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x-1.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-41.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-42.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x-1.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon-60@2x-1.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_20pt.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_20pt@3x.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_29pt.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x-1.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_29pt@3x.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_40pt.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x-1.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_40pt@3x.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_60pt@2x.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_60pt@3x.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_76pt.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_76pt@2x.png create mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_83.5@2x.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/notification-icon@3x.png delete mode 100644 Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/notification-icon~ipad.png diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json index 625cb0904..a0a28b621 100644 --- a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,103 +1,103 @@ { "images" : [ { - "filename" : "Icon-Small-40.png", + "filename" : "icon_20pt@2x.png", "idiom" : "iphone", "scale" : "2x", "size" : "20x20" }, { - "filename" : "notification-icon@3x.png", + "filename" : "icon_20pt@3x.png", "idiom" : "iphone", "scale" : "3x", "size" : "20x20" }, { - "filename" : "Icon-Small@2x-1.png", + "filename" : "icon_29pt@2x.png", "idiom" : "iphone", "scale" : "2x", "size" : "29x29" }, { - "filename" : "Icon-Small@3x.png", + "filename" : "icon_29pt@3x.png", "idiom" : "iphone", "scale" : "3x", "size" : "29x29" }, { - "filename" : "Icon-Small-40@2x.png", + "filename" : "icon_40pt@2x.png", "idiom" : "iphone", "scale" : "2x", "size" : "40x40" }, { - "filename" : "Icon-60@2x.png", + "filename" : "icon_40pt@3x.png", "idiom" : "iphone", "scale" : "3x", "size" : "40x40" }, { - "filename" : "icon-60@2x-1.png", + "filename" : "icon_60pt@2x.png", "idiom" : "iphone", "scale" : "2x", "size" : "60x60" }, { - "filename" : "Icon-60@3x.png", + "filename" : "icon_60pt@3x.png", "idiom" : "iphone", "scale" : "3x", "size" : "60x60" }, { - "filename" : "notification-icon~ipad.png", + "filename" : "icon_20pt.png", "idiom" : "ipad", "scale" : "1x", "size" : "20x20" }, { - "filename" : "Icon-Small-41.png", + "filename" : "icon_20pt@2x-1.png", "idiom" : "ipad", "scale" : "2x", "size" : "20x20" }, { - "filename" : "Icon-Small.png", + "filename" : "icon_29pt.png", "idiom" : "ipad", "scale" : "1x", "size" : "29x29" }, { - "filename" : "Icon-Small@2x.png", + "filename" : "icon_29pt@2x-1.png", "idiom" : "ipad", "scale" : "2x", "size" : "29x29" }, { - "filename" : "Icon-Small-42.png", + "filename" : "icon_40pt.png", "idiom" : "ipad", "scale" : "1x", "size" : "40x40" }, { - "filename" : "Icon-Small-40@2x-1.png", + "filename" : "icon_40pt@2x-1.png", "idiom" : "ipad", "scale" : "2x", "size" : "40x40" }, { - "filename" : "Icon-76.png", + "filename" : "icon_76pt.png", "idiom" : "ipad", "scale" : "1x", "size" : "76x76" }, { - "filename" : "Icon-76@2x.png", + "filename" : "icon_76pt@2x.png", "idiom" : "ipad", "scale" : "2x", "size" : "76x76" }, { - "filename" : "Icon-83.5@2x.png", + "filename" : "icon_83.5@2x.png", "idiom" : "ipad", "scale" : "2x", "size" : "83.5x83.5" diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png deleted file mode 100644 index ef12e2f50c6645d43be92d39a998ff1d49e427a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16052 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 u2ZsS^T!PeQWyD4;ZO$v00003L=XC3T*`4RYbAS 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 diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png deleted file mode 100644 index aea203fb553dce2b481b81cd5b5920ab933889a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24590 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

`njJYnovMLRqi?qq5}8FLDLCW2LMG zPAC=F)>nBJnmEkgX`Iwh04`_*ny@MrA3V5<`pB7fN@+62mQ-&QUZvJ=bm*SlPe1ya z?#UInwv#N~gaK7d5gQ*Sg8{Ir*CnbO?mvnyMx2{?GHBJet&w`AFiH%i z%5M@#3qr6_el5$6hS4;X+%TecX&sqNgtb#|9xR%h?%3j^?ZTPNVgM#8Ahtd9FFh0f z(}zPlNjCda5%7g8cKn+OalIcp-NvQ(*=I)=ciO9a?anA2wHev&2Dj4l>;15~?C(0! zeehi00gOhIy)5 z?h~DtobNdw+Ht#mlvrBM-{RI46J&edEf3uHz9jtKBV&Tmgeqgy=|ZgId{uo@awtnF zW=&8OfK*UjNA>174(cMNCR1&=_AhX1i{m6+I ze}3b)v#mR9;tHKA^-p&07*naR1C*g_Qo-`FFO<7 z`kM70c$~1Ij&*{Mb5_H~rjT$}&t*+mqbreGl?~YuGWdM48;AJAU)y>4IoKO&-p!O` zpFRBZ0qlg(Y5c}Y=imL=_V@kTl}C4)m)*6wy1e9klPaJ@ttSDC9F=n+pCh}M8_P?l z)_U)G;^?H%{M41S-jf6<31x9on1$fA{0CQ^V=tO2u>qj z&q8eip>HV_WPwgDQ=jjN{=wT%_E*-v|JSem z;s>_Ym%G7hP;}~nOSSYFo?TtHB5%&%UU!E-97$R@!|0aJrfDux+an?2B~%jMU{=dn z5QyC>UWQ;ndju(kfKx(4&ZcZnD&Jpf7#bUnV)%^zxve3-^t6BQls`C1Qk{4Xx}K|V zJ{3|)2~Vzd-u1bizwsZo?z(X5!sbe*xJRK0=#pu6aS>5q;Wnzg>^Q(Yj(Got_0(Pc zFaFJQ+xwGKt0C%ciRd<0nyb6xzxqp;_ub&(+fU}CmOOo}rG{6m(}cF*ic(1`KTSxR z+=Y{?cbz@))_2_a?N4ln! zEcwGy0($0Q7yaUj$#{CLbMgA3iA?+O(vmHaEy$V@V2&mW~)~~pNYvmbYcA$KQaET zkL|9nWH}#`JF(jRgHP}L>yM8gzHNh2&uE!5_Q>alqNCV zc5<+r20#A0HzpGtbmsN?ExisV?!+oQe9CPd@oXodu&UhUI?JeK=dC~iXaQumv8ARtsbQl*+rkH$^VrLp0mY6YC)OV^IPJU#YV55`n+w?AeIjbI%TU+k@ z=Ervb{TJGYZd+^H#2KkMXe%;M+_R!za^A3Kj}y^S!rkjRh9kCDsK z7`IEx^_2&%QaAJ!N{viuyQPIs@Q#y9pStdU_K&x_-LTYe{@I^weejaIYjcU?MqDTo znOq>5=vtmoMIhJGv9k`g3#z&xJog)`gWvqjs2#WcTZua@o*8_}>9F3Kl_rbvyp&5$jk*;dZ7WO>aw_aaGY3FBpYt-Hl#F|%v4H*#;h zv$?Pe+ruiBj+M`%@C(1DpmKC8%i(uFx&OXr(p{%}QA0_EvR#$rk_e&0NrD@PaTsAT z$!pf@gq5ya@8?>2Nm`ajtG6u7oO|)(SFi3&d`+#I z6N6Y%lx3pw^R;+pkdw40xo$86+h7C;OJmdW#ieR78)8kP`o4q8;M1NGes{D;PTUnzpdk+~eBZ6sTaOcn2g6fU)FNRkAc zZ0*#x;+{aOU4z01zTbC$k8+Q&g4h1=JoBIu9vJhyQK%zsW zPNzA!+aFOrv(mGY5@D?;*66r zWIi2dp?fRPNG(FVK~5^PwID6mGUIwA#d#$Q*?BG)NPdLx`mBoF3v*KR<>9ke+MSWl zhm#63fmEZFC*ZO^2)Tj|GM+xwYs9mGld-1g-9VVbn;=;VtZPSVxw zc6)F97w_x*{F?{EaT-O?CTC#t&b|-Tv`KrD@agB`0u1^VUMxTRK20W+ibQpbD!@yP zZ^woO;|AW!<%0T?mIcR_rbq32U{xtOs#E87mJVzcI>8(|$bIx8*HvP4sMo-1Z@T5u z3wg{hT#KU!r67DV5+>g+5A><+^nEYuzWL$K&i-W7Ca;78s1OVf?#4kJk0(F%ElYpl z?#?qiLL4RsR}>G|%d@I;;NYq4_6>LWpZT`_cs#zgpTbnOrCb~!li0WS#^3rt^Os-J zy|}~aL`lfZNi@2xOhotijrjcD%c2)wrQ28}Ogg-!h*8=Ok`0m&E3-+=x+rdk<)Ubv zH_*f9O@+qX{Pj=FC2nvh&i5#2}8gjYkvr1Fy>Z^Tt8) zi@YsbgBuc%!~ny+Ioum555w9W=h8 zSp)Vb@7-jK+e2sqSl32-F!NP*NA4A8!z<3h@F+enNhWwV9>v$+2@jtJ#x=PNtwmD= z3Za93Fmd;sfUh|h;-n4LX|2a^_wxXgQF_H$xc4L+On^)3Dg_NJoQ(;)9w>!eEp&N7??GVPunn8j2o$bT%g_X29@P`w# z{TD2`@O!*3j=wy7gpin zGht__EH*K8@?uZM6UNk*x_;{@?T)Y$riKUA$m@Bii3TdRrRNP-eBt#jpIKfWv7AJI43fyr;du{``(a(%A(`9z0skPS|u{6AM9VXc<%}gPyg5*+FV8Ov~ z+}^booOe+QO_wq#3$xdAHdqJF4BR+7f7Z%Q*lN}wCwM=O+4J`0!K)uM#b@zT@IHW2 zV~m3iQl^LPEtF2AY_c&j?zJ5Pi{WVt-+4_()FzNl7?zzz8pDaq*WqY4KqxR-mFvpP zmRVg}&WNscQ6jZ}>MQ^#Wz7`S0I8|WJv_rw1FC1Hg~}r3!D5}f_9CIDd`i7g19)~t zCk84ErS7#<%^m;J4T9Kvu9>Q+2zQgKK#tI}$+)SI(yJe^54CDl|= zR@+{(BNf~0h7&69pvriJ^gEj%rY z&5qH(X%Rh?FuZ(>LWxtI`>F?+HyI1riR-=zFOkhInA$BkW!ui@z`Lo-I-KEFIEvdE zUx*QNDeUICP;D;rl(ZfU(_F0@oi~}!QodBlbylAg%Q>RDmKJl9WM%~f zxZ#JRhVj}^Pe)Cn!dTEynJ-wczy46g=D5|Eut?Z7ryASS%UxZ>%5CEO@mEd}Q{@=U zqR4$r8u*y2r*zYw>q~3X_XGt51#5&^57ag#JIr<%VD5pYmA8oZRBkO`E*6@WSKw zJnHmOyT@_`>5Xhu=+a-Rn#sjKPmO_gH}_B_s;kz{6PqTwscl%c>FnN`x~Yr^R6uH| z0wleNx0qdb<{~p?E~Y3FItZ#cDLz;!=*1-)OZ!mjZKDPRYU%y#Iw~oMy>F>QW^JpD zUMUHStk9i64HkP>^SiWrQOb_cvrAO|`Cbb?W!h0}7Hw^$0-DO<#)Xskyf*`}u@S7a zxxh6^x7_p>Zuu69lPHr@njuB2*)e0&&feqZH$^v5{Iw7jSwqF7OxaXGEiAu+Qi{FS zDB|WfzEyBdL~asM$9XNrxOCD2H7-)lMM7xM7U#zP0$$p|Oseo$8*2}K#^t^BSCQ2c zlF;~s<%-h7!wbE(R8-?4L4j=@uS#A>YTzxk`vp%0{hz34fZ7Ylb`X)qbXQF|%<7;@ zH%iHJvpxikcU%Hiyf}8~o%+Mpv{PF0nFsI1vnt&l6uZs#-_65qH_dA!^HFwe6=g!CaD zlRRZS<@*w<0ZQP}CS|4>b2u?CP>}v=g3c1S1J+v28t(F97Lp~2)#RY~bWs`;I$|xN z@@mjJ0xvj`W(e0f>KycJH8IsbP@{yy0m|{d*~HD?(HW&o#_1X00 zx+P5GxYZ_`vN@)6xyVv!L_er^g_;1&=W+_DogQQn`O}Le>;%wMW90l20T#gYZMAjg z%No@Gt}mWr6Ky)2K*xg_5TuJas;ga`d`V%InvWvBK)atKXD&qgV#6Cng&g{-v5$od zc{^*jdkVO6iVUSoSp{;gB#YB9(=D1YII~DX(2Fzm&FY=K$eX(P_2mjlD%Cq}R^mz< zRy_7<^Y`L^Q$g*RFjQSEm8!+?NSxJ4xagV-FYbxabuh|ps_YPQqbotFDf65orQ+;x zaVU1Yxs$A8!KUPH%tfOb2TVY==AO)aElof;bi*5hdemcRJS!M1ZKXtiKA*XE{7Y1n zG{X_D3)RzsT#kU-t|vc(q}<}Q!TMr=74&q{+1RqxQU&n5fET-eoERl7b&amVhDds$ z1=r-&c(*so1scP2!BCtznZkOI$OTtqx88BASs9{Xnk$!tHtA8yP7B?Y4o3*mj64g6 zyav+Zg=*U>GAucAE-9jV?5f=Sebk&n>h$WpwuGcVDS77wdsvE3NhHZo<~q|uJF>lC zFUwL*lbF$(J}y<6B-!lCcr_mOMrn5#iLsL^DNzhtl)C?7X);D@o&+PNU@>G{-B@a|}wj>f48UNczKoG6+= zw5)=3QpcT34Wl|84AiiN-Z-0uDFK2^@UKcFsC}TmB7Tg z6I{JVss$BvDc&tV}mkrZhND}idRkQ}h;yk2iqX9jvqev6`-i*BG%KLjqX*k9~FP8-Klx1Ducv?bo6thTgf>13uw+p0$tmLbh zub(A6IUc#H43(Vmrt_o{6(fPt#8KUGcK%FxXbBYZ7#yb}SU=}QxXewfafv4x69j2p zDt*Pcgm$h`KUGM>-j+L)W#(v%U#(|M-%j_{V2nRbK4+dv=Nmy zuUPttJ2Qbnl2hpvQSyxV`09Xp#p$?Lr@-@6HXTZ{efjXwI9}O_ehNgq z$;AuhBB-WQ3Yzpv5`C|-44!f<&ZN3@ z`cCp@&U2$4%h9scNft@jI=1jQPTWq$T!+^7Ec^88HKK0MeAb5(OUj&in0n!79#z*s z**G4c@|;nM5`dHo&;^}`xoViMn&oVgM6(6$6Llm^&N{;wr+S7rcS~x zshVd_tMB@@I5#b3HQ>$>huS0)$XB)gxuSp}^WwLsg0|HI(|}gKT_a$9KGPViHDmdP zkj=2jcBeh&EK@+mmUQgLgK=8anQaDtT=Y(j#5p&UAMYx_OFw@c-E2zI_zb|~?oqTG zN_V4~^=020=C3e+EwyD+9K(v=bQ2&hyaGI>*v~eT%Ri}!0=(JW= zKH=iJ5(JO~x6Ik#K8r}D;F*qN^i=BbDlIyNomutw$~HE-gYmHsSuNACD^!&is{(aY z3xkSINjk)FbBD9X3g_2v-qV{gJr<5_?nd^L5DY=p95dQt+Y0=kB+P}$F7xxlKlD2A z++KTeD-L?WscscFm5gxf-3VAFO8^AN_3}{G-Z?uq4$zluM~50Zl7pcQCghxXqft{| z2w#|&*0f(DORz90n-bV zqaar_lChJdEeo(8Gv-C__Zzr&kggx5ey3D^V<=Fm9AW?^snU;3=CNEj&JE?HJ}FN` zP1hQ(sF7o)sBoBiloEkv!zv$rAXFz|y>xm55ok1=qj7TDE_h0(&s(gOa#vk0!F&qB zD7K*PtrU=%yFx8OW(>QjgAdamnDHm(mtbD)&iq`r#-Uk}PUl){n@x8X&kL0V+O6mK zqn#$#V?7*Ux0^`9Ij2D~>)T>QB#JcxoaT`viG^e(pGK&XSj4W83WS_^qT~}U3LaBx zW7JGGn`k{ANiiYuqSL6A^s-yp+T~{%c{ZseTS)Lx$*{!P%2-oZm>0yyY2#y6OZ8@j zpdBmj(V6yf9yI9W1OXG)Vp8;V?lo<&Krp2Fg=oY(ugZJy%_{$H{_0B7;sNGg|ov*%7zAmcW_cR#>wvlU5qkWIpgPia7hA z^GbNZ3)Kln?)6U8ZtWyTQz%}}eDq~rTfWfO%{Stn3a>>Zbnxv5-;m`yM1?9MC<8zv4G-%g; zh-3>eT4K(UfPjueti^5PbzmLe1iwE@qZWO2;O9l-!WXzAzFd`#MY z2$V|ZINg{1Q|YYCfly!gh7`8>J@XDr7Scxk&Ts4`g^=+n+qQ3+Ninua<32uwr&XCVOdb7@ddXj`utyw9rs@ zBB!QSdUg$}FV4Vb@+S{@i*HY^^%W=+N`<2`Y!eTDcjOuunHY1N%V0m)&%Fk&?ZwBg zO;-DjOQ?Z!B~x&HQI@%(ESA-e(QMx?EFJ&=AOJ~3K~#36RO+T`{X#f=X&@toS_Mgl z(ik)qdI{ABvcw^wU`miNF}=}V(8UW==}zyuQ;mv9<{)j(gQVkBM(JPO$+&9s&J&q2xt zQq=-;=Ggx9p%H4Vf^M2foWnjSHKm!YQBrBh#;3%0z@4MGa~N;iX!b|*E56{xLua1Q zFMj{oj1e1cq-yU8;*8{~ftR;qWx38S+wlNY8DxZ++d`-+aS{x@@)C1*+IQ_wb%EQb)G zG56mDyLDbv6)QWgsHO^YDKvKT**XeYpyVuq})Hz*kn^{bq0!&c&E4tiIH4+ zXLp!rxbZlm$o$&y;SjW3y2u$Dq2%QA#I&_Ahf_z?m{p;sV1mP4qA5EF`lQm z8;VIK1!}mBBm|#(tXHO)nejWhNJI73Lbs!L7)3Q;ZKYC%6^Z&x!rHCJ5=`9-Yr#AXO_xqRr*Z+Ix#dn^v zA}3x0(A?dLYYM0vB~epmWiw$$^Or3gYdc;BlKa}315hUpa!MTJuUwX)=4^^G0Q1J$jci3#Wx-Qj?iiAeljXJvN zZCKw(KUS~?U3i>+v)WPR2@4kwtBVH@=QjJl^4{lu>^Gh}duF583G5?jZK04snO5ip zr2vZI@Emnj!&{aEB;~&Ok4V z2ar4Ebo}|v!N33TwZHZY&zx9WIkmRrjPsnhwr4`CSE-`QSP0h3)#;mRdnuVtp*m(x zHg(X(9z9YO3m$O>dB`#3NTQ@|%HK-0L~iWN!T(<4F733Jw%gk_`Uj)-7$nM`f8Lau zTejJc!J>tq-&G422Il^{@Ycs7us8j6W<1Ajukvdf@$_1EuoV8s-+$(9zjbAO{lwW5 zOXG0_?~*{Ja&WabuJ(74m|K!^d^w`p1}$7%XenArE2g9|j+|2wh*lGgjmUv^&V+EN zEILhIXN@i)S4rX(Qk(X!g;DNTdm^(gEW3*b7e zD}u7Y?gTY4?hD6eoM!B@G-r|ANU}-7(xZ`wl$qyrv*eo4pd`#`%djAEKK^D zOUZw7E31AuvDW*{#r+@rg(u(t$oNHfpYCVGp;v@ zVQ*H1Bq%Dv%COxZTD>dC~65-J+6U$#;sHo>p z%Dg6k%5tCiRx#=-dhK_i< zpZmRw|LAv~+a7lxy!W&t?1U;pL}fv7a=6u~l3mDEa$f6}qPKX3eGrt$3vE!t#l4+kVG?`qE_oAT|M7gDdC6{rt-&4{>&7 zroO0`nzH54O_6679`?B(77t_QvQ8GknQOO5_$<^w_I|c`J=}RZTWY`dr&oXO4=#WB zi=)%0Hy%2_oEvv>%_?!hIlT*I@CliN>pc8=oI9LyX;V^AGC>(z(n z?7!JnJm$2@Enx2S&3yQHbZ>so&At}d53=6qx(%E=)pzLL`N{2n{?5zq_~>45u>8P1 z=NyDdi)tY`r`3@xW-7*-wkmbXCle-Q20DPXfYeyFnPI9Ku|9+bAjQyp16n`HxD47K zN>cB+%t4BhUBQu@j1>_3s;W}Q-F>D1>v9jCxYmB=OQVNw@9!89eFi<5U*P$bJZ^I5 zwZ%;mOKxJz&-{8Tl40S87r7S+bJg?B)lRn?4v!}9_|WxVegBQ$`S|W=29|- zX;Dh9P}PaV{p+{|e&jSaN=@Yrq*|5w*2uk(v(l(Q0jEq;>sTqn!sLt0_z)>5BPQ|! z_3kGv4pyR@OA{D{och6WWl*qMQ%s`esI3L-oER7WXyiV9Y4jFNkXt-`&-jr= z-|RZ)b`Im=D3#59li>Nn*R5~9`PcCuW>Bo(^(O{RryGXD_CsIX`{)w~zyHbIcYp4n z#pbSaCztxYxc~gp9h===F9&%hlQbHqgK^|^+W)shto69~M#00N z7Y1G5>E<(VWoz{QNB2JRDZYq#*&+o+C&*SsNl0Pz@-@BiRJM5%cIX;8a{m6()Ineo~C)oYF^>a3t%Jwxz`W> z%_U;{}i`R!&b|;TKJN(qe!%tp3{PZ(NTL;kT_0FF< zxp}HX6|^$<1_&_W1x{M*Q4-Lt%{iOsB+wwa>8&^ zYk-OrVxr1plHNw;et3GAj3MN6WQ-RoOJ0q%?;Kk?HKYgXSxa&T1`Dij4HzBPr!Nzj);?uo5Hai=G=FZLT zi_i4e2Vtcj&a8D$44Qsd=%MB6mfpp&XO0>Ro~=t=eK;mJYSZpvym)=QdlU~w?X~^( z$t$Dhb|?G8_R4Pj;+65W{r38P*03upy%TFEPMz)m1V;fa9EfgAU*~~eO>IHz- zsmiamouu5o1t&iItj{+5SYa2&g0?+o^n?rb%K;cA1V`={1lBuN)~{S3d{R!5-@-! z1y_($-mR5RzGkDBF$W(t)`D78*ve%}MFA*vX@tDR2`k#k8Vnyex6ys?qlce(>hQq} zMaX|8uS9Og-J4DBvCoMH=pl6aOWi)WwH1blA~h|@|J!flm1oBvy*Nw^H8QC;Gr=<_ zoJ&%70yK@Mrv2IBZS&Lml&iOD^L9vLd^x8zx1>Z?cBZp!M4%1VB^I0&s9dn-Hh7^g5=JfoS!)U;#niSEG=hj0vI4cn#*d($UBymA1fQWtP)>l`Utj>X8F4e+`0o<}!tX*w* zkh29WY(-#XjxTd7t6;U(CAN_TIInds*U&nt;;sioV7Fo5Eg6NpEb%6gsqrgPi*&@?Plw40^iZTbkH zoj?@vrH0*n2`g2N8WfB%c6-e`KX>>yzq#!;3eqifwW~#)2JUBJa*TLp)h~4&71zjO zESEe)P0-Vzy_HfVYeQWmp0@y*BF+t9oEXv#2{viF2+j(2G?LN6CE1aS<~q#>GBL;k z5S3FQ=fV5Xp6P&V44LWPOlh{6-sxQ5Wi<+<;*YhX(A9`Z^fyegG zu6L#gOw-!C`fU!go%%I5;ry!Gd-t8`+}Ll~x8>>;Y(+9^20i?iAB>Y?yp5h zbwg!H&!K?BT7H}#BXH6w^$WzQB6JKk$u(me&uuQfgAQSa4-^*r`O7X+VjG~&(zE0_T0{3}%AOa&bTuZ7Rqnd2P})$F>nq8Z}WU{qdw?XOemmoYhbYVaPmt?mCdH z>5c}P?36Gen!R;YuiL3*Zm=uckOlKmJP56@YnFIP+DBD%4z%i1Y)5H-NR$l@Zhg=^ zdoBIKd#?9-L60}gig@Ry-!v1hoOX#Jf_rvr{Pp(_zVFqmU%EW$SXnHoY?B|xe4vMA4pVafr)a^ zk_d-vm$of0As-G+tpV0ds>lm6W5r}xyRcKy#&quN^4s6L^MNny-gT> z-f?w?@&(Zy4aYz8-6vmsd-w6HZ7!lk>Ri^zOYvUnJlJv>Nj?dzv1ObjQMuudmSi#^ zQA(sU2`N<|Io&Ijy~&-etfmKQizOADHk(m9k+OeV+yN>l5mQuj0(t5LG)v+lOGb-& zN=dtO@CKFA|I#9s+^eWTH7o^md62%?y4>$c0Rcnev}Yhpt%aaE@?xt&MkX6xrAEr; z{l;>4_t5{--@gJOmtZIged={{%26T8d2pAuCTG^eFaO}#woR9|+D?Enn4%tJ*xvGe z6Xymb&DAy2!nxAOu6$AGMO16gntampmcDaZELI{2Ya)bm;rttabljF+sOD=*M_&oHdYx`x zY8Zl-hK@wm>9|PgihFK*g0rl zdgtI}w|9T}Pj>evZgV*pjYJxaS0)Tr{cD|829qg}M&>dxTBQ%nutH;+D4bQRNn@Z) zrv?agt-hRg^z({bqUc>TE|V1u;Q*_WM3^M$so{qfF>~rgmlz#anQ~TTRzj2|MOC`= zBX)xeXaB;FjG~r5usR?*eNIo0*y?uDC1xNawq{IBvvg1&cJ*$9-yOD}ySVqCzwYFq z+Z>Fdb)q_M`4_SrWZ}uTIT*IDxp(FD4-Nj~=Z_wHY6Oj2?)%z4n37wHehAnsMl04g zlit9p3!PfB^-6O==HVoNup3Hia}$D~7pYRVWGc)x;lw~Q6lI*sUUZsbY^@rSav&VY z5=x4aG~_|8K2UYIxUv@75DJxB zUzOY@5qEO6|M{m5ukIYZ9 zRU47QcxgISEdya@OAB&X$esT+yBRGn44H57V<-lN&p+ z+ky2#XswMuZ~bDgf%QQG)89@U0YMM6<(Diir5Ss3!#tE;m|}_x7S4(OvR<0pq~4`r z=a$rgvNKcy^%@B0UjN?=#}XbWfV(SuMk_BQT~{gM%-uvPX{NF>Rq{a8D!EL=+88V~ zfBa`RE}RT+eCf%p{Rz06it~C0Ec#Pk_~f?tCYvk%TVA^MonO6tYCVi5?&%xt<>yA* zLmX1Uw?>v6s>A238V|`QnKQO>#R3L@G|AkJt9$MBopx(KdJp%U>Ae2F{ttcA#!tR! z^9z^9fA;ifeTl2I$`KS*!eE)qSb0d{6{2z#b-GFoP(|VttVn8Sa7#WpiW!Lyo=uI4 zovaP%lzqjgjpUZM_3braSrAT54?RsPZ4!6(mmGO{0B!)96C87W@vL)_Gv#4S0pO54 z<4|ndFZDVn&u;wi+n>JoT<@D+cJhmt4w`WMvfrFgO)pk<&u&e;Z|^zP`TO5}`fYED zAN=CzBTpWE?1|wM*Ty#v+%q>u`@`tCoeZN1WP5NMDQ<-l$-<+CQnda7mV4psTDW_& zb85AD$%XDcXFB(t?LK^4_sn|8RY4pE7mr2}u|cQh%yn%gRfYZ$Rj6&Z7!VQ(Lz3Q1 zOX|DF7Px>v%$6i}6nJ9DMeT!~L-nd$HFBdOil$xrk|fE00JX<+LY-|u?%_nauMFNQ z_<&%d+&DZS!7cSEg=r(cDHH3shq{%Q$sfob#i{lF-ofB4Kl|u=e)=UZy=(Q0&mJ_l zl#PDuOJe+p7q5>!OqP58^$&Jm|KPy691g#-8=ts3d2Tm{O81ZA_F>!~yZvE09O3>j zwn^k?$EW4KKQRcWR>R4aX1NEaR>F%(wlUA%1gt5YrBp-_KX`pCxu14gEqQW9V zfWTG`v50&odq`;_DY50%7gSZRkfiiIPy?QGuTg6j^HG>2yzh>UN1xt${ZD=Bci#5U ztMA`<`pQ8}>RH{|YhL^t`po-n+~TOsrJ})2?1(9s+esn2DxH`b-8yZcjK#FETbaR> zX8>0FIRZ;;(@8O42`uuGhLYckZ4~;thSk+cq4=qzs1kGD1Q%$LVulY5 zwUhr6WdQEK^Tf5I?l=B}&-})FFW-4)Wqr_T<1|XY2)4C99cStZDX+LPdMPT(86!?2 zPTDkTCe)!+x$GCD3-z;yTAz5$)pzxuO}z3u;abgAd> zxiFwXE?&!d^lm1LaQ+7q0AMFo4B|4WwS8TbK#6ITi_c)ly@pCVq6iMoH&$Fnqmdfn zHVl-v1}$Hfz)g@cV5;IuxpIY3+0JxjKbT-p$iHNwpi~p$!W96Tv7>+;=Qb0dmYg|O+3PPYEg7Rv`?DQHr(C83i5Fm;xsLNiRfiT+y7f!F9J-7K!e&g~R{@y3v z`SGp0&n=(b=tYgq>7p)B@AGi(!av~jds81<^vU|CnQv7)DSx@&5wR{k{G9@{3a2v# z+AF)1y|pn88LM@NSiyGgofl7&H;tudLzl|lcW`_Fy&$@FbM^VuK#XP)=9>TDmhz*jr}R20TxN*?pdXW1uLGwiC9vxkRd;1VuSR8Wu;Y_sbrw~vVG}W zAq4&~|B$cQuzEue>B{xJy{o%t&-MP3SFC^igKKYic;lXPOHBg@NA1pGTVh4?YdO!e zpIT|0)zvfm;Fx#Vtm`yzYPHkvHCub*cYkX84?lk6ou3&Vq@_W>Q%c?f(@eZ22(-kW zlXt8UtoFpqxh0geX3g)_j`LiUIB54a+mxXR;w`CxoIg`#I7_~Y3L%!NT!KvwT7XK__85Oq&<>@AkBC@f}ewNm(vT8(JCJ0T0 zbEtH+@8M-{dvy0OqA}qm3MuOwM@B07%50ObkK~!^04YdxrjNa24%fzd9E^9MhGuWB5Es`&Z9RL0MjE{05bU&0Hbo+iTge3@O6Hf9DJP!@{<# zun39Z5}cmhztDu@c(B6e@L!3iTAyp(xKN6hs{}?) zOz}pZ;k+_+jLa1xtj$B5w8h*}sw-j-cG303 zhb|{Ic|mA94Jq=@%Al9SErR3}ng*)>%a3ZghE5Hjs5LpAvTlsoLV?lbw5FpK0kPJa z7QQNFEe)>Flv9Gk<-UdMfvJE_3MCt7m193<5_<3}eP~#MaJN_T?pQ-)SP!Uauavza z4z}<$ZJ*|)4T1xRQL1}f)C9SE|4&udwre?!M5~;D1VU&Y=l}l@iIE0%Tt=>Su^XOf z`s|ZrJ9gE&)uM6atGR=(5p7t@gAz3jz5)M$ewi8saLLCd)J0_ryt^>o=HP8adVhU> zf9sFmf1^ub?-1M)TS^uo*$kHa*xDXZeXUNfVg~c<7f2}&eJWj@4^FRs0lMoEf~t^h zJc%|yEu;rlcOwEH>kU-`?gFB{*?vxS&%F3mn}*jR?Cb=*VU8%bd| zC>BcgJH?6BAhk*?h@_-4hb9ZvrBJ{V<+;|WnvJ1`#BQSbm~+~%Ny8+XnoxYBnzSDa zg8%KYs;SebNWKmB6gw%LTj;FN1OR->ymDb-6U8ti;%*ogp-KRqVP3^5UJLeet(N36 zB9e95ffT-bg_fog&%`$^QhDW#2Sp8Q)CZalsGhNg)Mpg85=9@g2-!2xlb8$K*kYkii9} zWC$>WTdy?S5`)D{dUBi*qY<=S`9G|-B@i8`3Y@`?Dr6PnyH$}a#7RU*R%A(?F4MMA zb3n;Omi*#}NDYDT`^$s*p;mo6kql((8emiTxI$WKcFUaY0ICk3)pGp8evUQ%bekbo zAi2#N>mVM$xskX-!3eWey~9dE6corKM+ML~#(e_608d=h-#KoqGsLz>mA_Biom%s} z`?OA1l;SE=yMOc3S|u)w_pb}poI3u&b|k0UD!c7gZeqtyGqGg7Qff#%t2)7r{MmOq zT^}z+&};m^jxxY1Ib`oB#sjFTrOQGWxwoDNX2(47Pgu>9P%g#Id-Tv)G502{=euvR z5A0|KmL-%oZ2*nWIpXLCQCdy)_)Gd5p( zv<4MotUAwypqsMWRL^j8+FLrNHzaXP)i@m@sEg)k&Ba;z_Mag36CmA2vTJ_dR2zxt z_^=(tU@Hyoa4zdIU+)z#DatDpKH&8t1!u-7Bvk|hhd%d~pe{>|Z2SFD@=oiE4`ydb zZWR;D+U2|Dm(PnGS7OuC#of|$O*-L=#Q=!1W(zxl?;^e#w3KFTN)GY$+ZkviZ#9XS}Ly0i~ zsP*^k|CI{IL?Vx7-Svz?d4myzhWrR_C0dKlst_L8!z>sVutMW|arTSuPXFco00+Dc z{5p5LCC;0fh|18PX7%ZGIR@T-C91!YI^~u@kno-AXloOsaOkl_bPB=>Wdrs4D9ub3 zL|uJK2Usqm*XK?R9vpSmMdY;b_wkq~bZde-U)fy`2s;PL8dG&W8&~#Th3fvJG3#uT?M_agB{~Kg?`` zd`OfM&!edodF`_6WdI55ZSu=v2LPIG4LCv%#^e0-{fLiMCJyDQ6yD>F)x^VOK&|QvFW(ZI`Qi1DTBptd=s;MaLYb)U@l91{{aG z;8zvbHlT#brxQE4^QwDW-aj05o5Y1Ymu!F8-;b|s>SX&@o=Syn_Uq$Tf)Vb?_}5}k zZ++DDUNRhXr}P68%aoHyD^(9#v(Mz~6MwofAG8lv9vretXCgC8X$z_{!yt zvkfp|l2!r=&ZLRvn|TdkS+cM(a|A>!y_n0oPs!^<8Pq!&zhP=`FTL5OfaiHi?Kdnq zW5CQj6mXC_p?~XgvI- z5T|}FPn^Wuko`D{<4Ju|V&oC+ETwYZ5==thHYHtODuSj+n=Vls8{ed4;Z*Ip_;9SZ z!tdZrF2Vdd)DS7jvL8%wqeo-Waj}8~L23mr)Y1MH=+^EqqV~S*LZkVWF*MPMc(vP@ zPDIo|$IBjdo?uUk(iz9MN8|r`RINBf`hYOTv@fT3xn1N-U02#zc6qlK-=atXt;?WE zIB7;4rlOIqpm|QDynOJ3=ZK#V$TahtT#m%iZrKsutzM1~L5~h~yhJb2oAv^=&d$PC z)(f)qVB9ldaSYe;YoBn zh)VC7bRzrKv43bNM*6pu%2*3HL4Xo9UhD2+Qi?=-Kk!+PaK<5Y76TOGA@ORr%FStd zt>DwUR-gGiUL|R~e)$VVDXj}$r=v!QfddO~G(vS!j`5CEh#C8L-gc3`#o>KxHq50o z^J=&_q>*RA}Nb-#cwpQXK(v(uO z1hsYr?|8mwFaCaeuF+?nm4f@~4_wN6F{vm8oRBiLo!#cUzFbawre?O4Ar$OMp1<7MEg~mj5;il z>yK`v|C}lbCQ?+*8=yhQCY?D6A+u+VE3Hgz=oLjV z#6yFf0zaz+^&qRnou4P^00%EMH>?iQP~=6BAH^8zN_-9YxS~-_a-jAdM4aoS!wcec zW{wS!;xwq}RoUDYcRMpE`q`rhyEKBVK>M`QgKc1cM@l8$wv>>^#O@(}@Bs+Q#LzHl z2M85ni{2E)EZ3wWvqMqWf=e&ACgS#_lt`f>lS_Qoj~}0>mN`X28WvR+Dz0(9qAqD# zeOgNzk|(bfJ4C&vwNC4bcni@UOF)bQ3+1cHzB3;e z9L^Z><7_WucV3^F7>2@~x!1Nq(S(n8h5W)H>sHkPmG%Q^ze~Ft#YZ|Xgh~}yr0+j( z8qXbVGFgk|w(X!m#hrIY5UqQVu_U6KhC^1 zYaqpFm$G|F1JW`_Pvc?giUoklG)CWOl0O0@>H9FE;|Ns0B5Oeed7K)klFNR0&j(2|l`kzw7yZga+jN9wev|!D3CAf8M z&t83_h81E`)Tk<)Qv6dwQJ{9@j&77f+?cT)DoRP$$~ZC3G#iz4eCO0v=A&d}P#R$w z%{VDdVS}gA9o@cPeN;N$&;6B8K0EX{rd&0wxjfcBO1Z&kW0i7%)1QIE4|pe}YTS^iu7TuYh}O0(4=aI8Nf6N@`OY_ZqwZir z(?@{9G+Dc>VQUh!dq&GCIYq=nBUcuH9hD<>p?ei|FyXeagPJxJ^UXb!mI@gcd}vkM zoRque(Y9f+l*E(lXxg35CZXYae!-#{x{PQ(6Y?*RA;?yglmQP19T_}tE(!kp?fDnQ WmDC*T&wR%K00003L=XC3T*`4RYbAS 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 QNdN!<07*qoM6N<$f)n4nA^-pY diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x-1.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-40@2x-1.png deleted file mode 100644 index 3a92c0d613bb7198070301b6f1cb8cc29e229a58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8250 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 QNdN!<07*qoM6N<$f)n4nA^-pY diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-42.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-42.png deleted file mode 100644 index 63350076c7b0ccd9d33205f51c0fa01fb07aa009..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3022 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 QNdN!<07*qoM6N<$f)n4nA^-pY diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small.png deleted file mode 100644 index 26a937e3511b3675c3e47994308cac20e61e1b99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2054 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 diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon-60@2x-1.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon-60@2x-1.png deleted file mode 100644 index 96cde3e354dbc7b71432da0d4f94d43ccbe6daf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16026 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 U7T#znwEzGB07*qoM6N<$f*VdHegFUf diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_20pt.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_20pt.png new file mode 100644 index 0000000000000000000000000000000000000000..ae8e49ce1c0c725c5ae2063560e16a0efa39a648 GIT binary patch literal 1399 zcmV--1&I2IP)?Z1&#p$K0qZ5Fd7wnyT-r>qA%-$%sM4CwMn&Jz}I4?@YRd2M4K?xqX4dy z)Z%0y{RfCslM9MU7#J8+fNbURk^&IB1IQLB0y+xFo&#d1L)aTY>?8>L2v|)>kTZ~d z1ISiL&PW8B!T1Bn)=5GVPe)=y?F9jDm(1dVoWx3n0Am8KB?FYCR+NBf=lp`oqRjM+ z5(P(KD5WZR<|XUtC>R+Snlmtf!W^Rdb09b@8O6>Z#G3CjFxc+@|NsAPgqYWU28NA5 zom@K+Vj30<41(MY3@3ILBo-xtg_wbuDJ_kG;nQ*k2Hr>p2H^`pJ<-K!#ztUyMjj^y z2G)E3|9@6vU|^rj!0>m%|Np-i{r~@WF;Mdz28IK902Lu+?ls5J`v3p{IAvH#W=%~1 zDgXcg2mk?xX#fNO00031000^Q000000-yo_1ONa40RR916rckD1ONa40RR916aWAK z0Ff2a#{d8WjY&j7R5%f(R7;EuQ4~F|s=9k-jAj@N;x{rGzl1PCB5Wiif`qli!b&1y zA+ZrF8!J0YiG^TcVP!!G3o#@T5}zUd!XSg5nV#yd&wI{!)q{kco35^R-@W&|b3d=l zwky^(a|Z*8X_YOYdlWeT{+$wSfdHAV<t1Y-W;7Q!{s4|l)loBZ>eCxRA4pzufNVwCVTZZ za2abzw4AM;#d=j}_*!?k`Xa~P{t)N)RPcoLy79{4?5+w9tch^rrN#T2Wkw)V=VN`Q z#9_+pGEWstNfJ9E+57#ehYY5n?Bn3S>z=Xv`VOvXTeczqagw ziN!sKIA)9oboenrc8a4-bKB~20XW{s{Tx;zgPqIDSU5dELV&*RfUX21;_Oa?-789{ zwiz_Y`rSwh0;^5im45zP+qP@hEIoNddqFM!HrJDm~r(OOPT~>$4 zP^zxwg}dWe&6_dM+lGA`reJP0#L#f+n=-#E!lU<1Tz?!R)F4mRf#3p^S~SHo6m{U+ zn8neHBiOa39Ro|+u(F5X3)_8jKG!nbd6xRQE3gzHp(cig&0Bi-shhm~g^>mt6HPr? zbd(M2$B|-cb(X}ZrSI2Y;^-IfYr~XtHAOxI@-+D>DS!u0#18zh_-*;90l!j}Pb;RF z1c!+ACRLWX@b-35G-M$sA^F1;tNoVpYpr-W@?B!eKLJ*-9ZYRwc2xiX002ovPDHLk FV1gYaaEJf^ literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_20pt@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..965ec20145dbf1029c17e9e4629b31746eab28ee GIT binary patch literal 3183 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 literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_29pt@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb3c08e730c9c9b13ec858bedb2bfb0af0763c5 GIT binary patch literal 5379 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 literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_29pt@3x.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_29pt@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..d288ff81fe2b8ba9a4041b5a94a8b594f361ae1b GIT binary patch literal 10567 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 literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_40pt@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..35726ff68f6b6637582b3e8743af316bcb69865a GIT binary patch literal 9227 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 literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_40pt@3x.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_40pt@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..adf3d119dfec4cc01f0622dadc2456061997a9f1 GIT binary patch literal 18460 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

FKxzIQ;nMi4q^Y`^`^Yu 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

FKxzIQ;nMi4q^Y`^`^Yu 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 A`v3p{ literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_76pt@2x.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_76pt@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c6000830a96d4a7d15d7347662be07ef1096c4fd GIT binary patch literal 28578 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 literal 0 HcmV?d00001 diff --git a/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_83.5@2x.png b/Mastodon/Resources/Assets.xcassets/AppIcon.appiconset/icon_83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d5705366e0b26e1fc9e7a06e9f8b2b75b88cbddb GIT binary patch literal 34107 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

NgO(ro#<&LBLwBk3A4W=vqc^3F~jg{ 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 From 526f125cb22572b890920052f1a8a52e5490efa5 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 19:33:36 +0800 Subject: [PATCH 16/23] fix: edit state overlay views display when push profile scene issue --- .../Profile/Header/ProfileHeaderViewController.swift | 3 +++ .../Scene/Profile/Header/ProfileHeaderViewModel.swift | 2 +- .../Scene/Profile/Header/View/ProfileHeaderView.swift | 9 +++++++-- Mastodon/Scene/Profile/ProfileViewController.swift | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/Mastodon/Scene/Profile/Header/ProfileHeaderViewController.swift b/Mastodon/Scene/Profile/Header/ProfileHeaderViewController.swift index 199903792..2088df72f 100644 --- a/Mastodon/Scene/Profile/Header/ProfileHeaderViewController.swift +++ b/Mastodon/Scene/Profile/Header/ProfileHeaderViewController.swift @@ -220,6 +220,9 @@ extension ProfileHeaderViewController { super.viewDidAppear(animated) viewModel.viewDidAppear.value = true + + // set display after view appear + profileHeaderView.setupAvatarOverlayViews() } override func viewDidLayoutSubviews() { diff --git a/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel.swift b/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel.swift index d0a29762c..0c728788d 100644 --- a/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel.swift +++ b/Mastodon/Scene/Profile/Header/ProfileHeaderViewModel.swift @@ -144,7 +144,7 @@ extension ProfileHeaderViewModel { return html?.text } - // check if profile chagned or not + // check if profile change or not func isProfileInfoEdited() -> Bool { guard isEditing.value else { return false } diff --git a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift index 54c57139d..e289cb493 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift @@ -73,10 +73,15 @@ final class ProfileHeaderView: UIView { imageView.image = placeholderImage return imageView }() + + func setupAvatarOverlayViews() { + editAvatarBackgroundView.backgroundColor = UIColor.black.withAlphaComponent(0.6) + editAvatarButton.tintColor = .white + } let editAvatarBackgroundView: UIView = { let view = UIView() - view.backgroundColor = UIColor.black.withAlphaComponent(0.6) + view.backgroundColor = .clear // set value after view appeared view.layer.masksToBounds = true view.layer.cornerCurve = .continuous view.layer.cornerRadius = ProfileHeaderView.avatarImageViewCornerRadius @@ -87,7 +92,7 @@ final class ProfileHeaderView: UIView { let editAvatarButton: HighlightDimmableButton = { let button = HighlightDimmableButton() button.setImage(UIImage(systemName: "photo", withConfiguration: UIImage.SymbolConfiguration(pointSize: 28)), for: .normal) - button.tintColor = .white + button.tintColor = .clear return button }() diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index 267e5bcee..d3425b486 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -58,7 +58,7 @@ final class ProfileViewController: UIViewController, NeedsDependency, MediaPrevi let refreshControl: UIRefreshControl = { let refreshControl = UIRefreshControl() - refreshControl.tintColor = .label + refreshControl.tintColor = .white return refreshControl }() From 4bee550f83fd3e01a5e3994589ac9f9ec8371329 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 19:37:34 +0800 Subject: [PATCH 17/23] fix: "Edit info" wrong i18n string issue in profile scene --- Localization/app.json | 2 +- Mastodon/Generated/Strings.swift | 2 +- Mastodon/Resources/ar.lproj/Localizable.strings | 2 +- Mastodon/Resources/en.lproj/Localizable.strings | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Localization/app.json b/Localization/app.json index 7fd8a2df3..130f2c035 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -170,7 +170,7 @@ "unmute": "Unmute", "unmute_user": "Unmute %s", "muted": "Muted", - "edit_info": "Edit info" + "edit_info": "Edit Info" }, "timeline": { "timestamp": { diff --git a/Mastodon/Generated/Strings.swift b/Mastodon/Generated/Strings.swift index f688b9eda..be6079342 100644 --- a/Mastodon/Generated/Strings.swift +++ b/Mastodon/Generated/Strings.swift @@ -180,7 +180,7 @@ internal enum L10n { internal static func blockUser(_ p1: Any) -> String { return L10n.tr("Localizable", "Common.Controls.Firendship.BlockUser", String(describing: p1)) } - /// Edit info + /// Edit Info internal static let editInfo = L10n.tr("Localizable", "Common.Controls.Firendship.EditInfo") /// Follow internal static let follow = L10n.tr("Localizable", "Common.Controls.Firendship.Follow") diff --git a/Mastodon/Resources/ar.lproj/Localizable.strings b/Mastodon/Resources/ar.lproj/Localizable.strings index 4fbf4d872..bb61c122f 100644 --- a/Mastodon/Resources/ar.lproj/Localizable.strings +++ b/Mastodon/Resources/ar.lproj/Localizable.strings @@ -60,7 +60,7 @@ Please check your internet connection."; "Common.Controls.Firendship.BlockDomain" = "Block %@"; "Common.Controls.Firendship.BlockUser" = "Block %@"; "Common.Controls.Firendship.Blocked" = "Blocked"; -"Common.Controls.Firendship.EditInfo" = "Edit info"; +"Common.Controls.Firendship.EditInfo" = "Edit Info"; "Common.Controls.Firendship.Follow" = "Follow"; "Common.Controls.Firendship.Following" = "Following"; "Common.Controls.Firendship.Mute" = "Mute"; diff --git a/Mastodon/Resources/en.lproj/Localizable.strings b/Mastodon/Resources/en.lproj/Localizable.strings index 4fbf4d872..bb61c122f 100644 --- a/Mastodon/Resources/en.lproj/Localizable.strings +++ b/Mastodon/Resources/en.lproj/Localizable.strings @@ -60,7 +60,7 @@ Please check your internet connection."; "Common.Controls.Firendship.BlockDomain" = "Block %@"; "Common.Controls.Firendship.BlockUser" = "Block %@"; "Common.Controls.Firendship.Blocked" = "Blocked"; -"Common.Controls.Firendship.EditInfo" = "Edit info"; +"Common.Controls.Firendship.EditInfo" = "Edit Info"; "Common.Controls.Firendship.Follow" = "Follow"; "Common.Controls.Firendship.Following" = "Following"; "Common.Controls.Firendship.Mute" = "Mute"; From f36bcf25ec5e2e6ca1704e8d4cf1cc6b5cf4d1f5 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 19:58:20 +0800 Subject: [PATCH 18/23] feat: scroll to top when select current segment in notification scene --- .../Notification/NotificationViewController.swift | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/Mastodon/Scene/Notification/NotificationViewController.swift b/Mastodon/Scene/Notification/NotificationViewController.swift index 4ed5b5208..322f804af 100644 --- a/Mastodon/Scene/Notification/NotificationViewController.swift +++ b/Mastodon/Scene/Notification/NotificationViewController.swift @@ -18,6 +18,8 @@ final class NotificationViewController: UIViewController, NeedsDependency { weak var coordinator: SceneCoordinator! { willSet { precondition(!isViewLoaded) } } var disposeBag = Set() + var observations = Set() + private(set) lazy var viewModel = NotificationViewModel(context: context) let segmentControl: UISegmentedControl = { @@ -119,6 +121,15 @@ extension NotificationViewController { } } .store(in: &disposeBag) + + segmentControl.observe(\.selectedSegmentIndex, options: [.new]) { [weak self] segmentControl, _ in + guard let self = self else { return } + // scroll to top when select same segment + if segmentControl.selectedSegmentIndex == self.viewModel.selectedIndex.value.rawValue { + self.scrollToTop(animated: true) + } + } + .store(in: &observations) } override func viewWillAppear(_ animated: Bool) { From 19d4a2ffc548b10925aade0cfce017c2a6d3217c Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 20:03:40 +0800 Subject: [PATCH 19/23] fix: wrong loader appear animation in hashtag scene issue --- .../HashtagTimeline/HashtagTimelineViewController.swift | 7 +++---- .../HashtagTimelineViewModel+Diffable.swift | 8 ++++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift index 7c7e8a274..eb7753337 100644 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift @@ -117,10 +117,9 @@ extension HashtagTimelineViewController { aspectViewWillAppear(animated) viewModel.fetchTag() - guard viewModel.loadLatestStateMachine.currentState is HashtagTimelineViewModel.LoadLatestState.Initial else { return } - - refreshControl.beginRefreshing() - refreshControl.sendActions(for: .valueChanged) + if viewModel.loadLatestStateMachine.currentState is HashtagTimelineViewModel.LoadLatestState.Initial { + viewModel.loadLatestStateMachine.enter(HashtagTimelineViewModel.LoadLatestState.Loading.self) + } } override func viewDidDisappear(_ animated: Bool) { diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+Diffable.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+Diffable.swift index ed7b3a844..41b4d9210 100644 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+Diffable.swift @@ -31,6 +31,14 @@ extension HashtagTimelineViewModel { timelineMiddleLoaderTableViewCellDelegate: timelineMiddleLoaderTableViewCellDelegate, threadReplyLoaderTableViewCellDelegate: nil ) + + var snapshot = NSDiffableDataSourceSnapshot() + snapshot.appendSections([.main]) + diffableDataSource?.apply(snapshot) + + // workaround to append loader wrong animation issue + snapshot.appendItems([.bottomLoader], toSection: .main) + diffableDataSource?.apply(snapshot) } } From a07104053ce2c4a6321c617547d5d58b9cb4dcf1 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 20:52:07 +0800 Subject: [PATCH 20/23] chore: update version to 0.7.2 (17) --- Mastodon.xcodeproj/project.pbxproj | 32 +++++++++---------- .../xcschemes/xcschememanagement.plist | 4 +-- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index dfd0e1253..74fac405b 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -3788,7 +3788,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 16; + CURRENT_PROJECT_VERSION = 17; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -3796,7 +3796,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.7.1; + MARKETING_VERSION = 0.7.2; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -3815,7 +3815,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 16; + CURRENT_PROJECT_VERSION = 17; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -3823,7 +3823,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.7.1; + MARKETING_VERSION = 0.7.2; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4143,7 +4143,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 16; + CURRENT_PROJECT_VERSION = 17; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4151,7 +4151,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.7.1; + MARKETING_VERSION = 0.7.2; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4257,7 +4257,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 16; + CURRENT_PROJECT_VERSION = 17; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4265,7 +4265,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 0.7.1; + MARKETING_VERSION = 0.7.2; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4376,7 +4376,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 16; + CURRENT_PROJECT_VERSION = 17; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4384,7 +4384,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.7.1; + MARKETING_VERSION = 0.7.2; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -4490,7 +4490,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 16; + CURRENT_PROJECT_VERSION = 17; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4498,7 +4498,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 0.7.1; + MARKETING_VERSION = 0.7.2; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4544,7 +4544,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 16; + CURRENT_PROJECT_VERSION = 17; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4552,7 +4552,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 0.7.1; + MARKETING_VERSION = 0.7.2; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; @@ -4567,7 +4567,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 16; + CURRENT_PROJECT_VERSION = 17; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4575,7 +4575,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 0.7.1; + MARKETING_VERSION = 0.7.2; PRODUCT_BUNDLE_IDENTIFIER = org.joinmastodon.app.NotificationService; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist index 6be08c840..ffae1ea21 100644 --- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist @@ -12,7 +12,7 @@ CoreDataStack.xcscheme_^#shared#^_ orderHint - 34 + 21 Mastodon - ASDK.xcscheme_^#shared#^_ @@ -37,7 +37,7 @@ NotificationService.xcscheme_^#shared#^_ orderHint - 31 + 22 SuppressBuildableAutocreation From af42540ee745391da32bda26707f4828ad05ad22 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 20:52:30 +0800 Subject: [PATCH 21/23] fix: using wrong color issue --- Mastodon/Diffiable/Item/SettingsItem.swift | 6 +-- Mastodon/Diffiable/Section/PollSection.swift | 2 +- Mastodon/Extension/ActiveLabel.swift | 6 +-- Mastodon/Extension/UITableView.swift | 2 +- Mastodon/Generated/Assets.swift | 7 ---- .../Background/AudioPlayer/Contents.json | 9 ----- .../highlight.colorset/Contents.json | 20 ---------- .../Poll/highlight.colorset/Contents.json | 20 ---------- .../Button/normal.colorset/Contents.json | 38 ------------------- .../Label/highlight.colorset/Contents.json | 20 ---------- .../highlight.colorset/Contents.json | 20 ---------- .../Cell/AutoCompleteTableViewCell.swift | 2 +- ...sPollExpiresOptionCollectionViewCell.swift | 2 +- ...lOptionAppendEntryCollectionViewCell.swift | 2 +- .../Scene/Compose/ComposeViewController.swift | 8 ++-- .../Compose/View/ComposeToolbarView.swift | 2 +- .../HomeTimelineNavigationBarTitleView.swift | 2 +- .../MastodonRegisterViewController.swift | 2 +- .../MastodonServerRulesViewController.swift | 12 ++++-- .../Welcome/WelcomeViewController.swift | 4 +- Mastodon/Scene/Profile/ProfileViewModel.swift | 22 +++++------ .../Scene/Report/ReportViewController.swift | 2 +- .../Report/ReportedStatusTableviewCell.swift | 2 +- .../Settings/SettingsViewController.swift | 4 +- .../Scene/Settings/SettingsViewModel.swift | 4 +- .../SettingsAppearanceTableViewCell.swift | 2 +- .../View/Button/PrimaryActionButton.swift | 12 +++++- .../View/Container/AudioContainerView.swift | 4 +- .../Share/View/Content/PollOptionView.swift | 6 +-- .../Scene/Share/View/Content/StatusView.swift | 6 +-- .../Share/View/Content/ThreadMetaView.swift | 8 ++-- .../ThreadReplyLoaderTableViewCell.swift | 2 +- .../TimelineLoaderTableViewCell.swift | 2 +- Mastodon/Supporting Files/SceneDelegate.swift | 2 + 34 files changed, 73 insertions(+), 191 deletions(-) delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/Background/AudioPlayer/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/Background/AudioPlayer/highlight.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/Background/Poll/highlight.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/Button/normal.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/Label/highlight.colorset/Contents.json delete mode 100644 Mastodon/Resources/Assets.xcassets/Colors/TextField/highlight.colorset/Contents.json diff --git a/Mastodon/Diffiable/Item/SettingsItem.swift b/Mastodon/Diffiable/Item/SettingsItem.swift index 8aabdc741..e81d7b599 100644 --- a/Mastodon/Diffiable/Item/SettingsItem.swift +++ b/Mastodon/Diffiable/Item/SettingsItem.swift @@ -9,7 +9,7 @@ import UIKit import CoreData enum SettingsItem: Hashable { - case apperance(settingObjectID: NSManagedObjectID) + case appearance(settingObjectID: NSManagedObjectID) case notification(settingObjectID: NSManagedObjectID, switchMode: NotificationSwitchMode) case boringZone(item: Link) case spicyZone(item: Link) @@ -56,8 +56,8 @@ extension SettingsItem { var textColor: UIColor { switch self { - case .termsOfService: return .systemBlue - case .privacyPolicy: return .systemBlue + case .termsOfService: return Asset.Colors.brandBlue.color + case .privacyPolicy: return Asset.Colors.brandBlue.color case .clearMediaCache: return .systemRed case .signOut: return .systemRed } diff --git a/Mastodon/Diffiable/Section/PollSection.swift b/Mastodon/Diffiable/Section/PollSection.swift index 044f4fb9d..3c31d9b93 100644 --- a/Mastodon/Diffiable/Section/PollSection.swift +++ b/Mastodon/Diffiable/Section/PollSection.swift @@ -91,7 +91,7 @@ extension PollSection { cell.pollOptionView.optionPercentageLabel.isHidden = false cell.pollOptionView.optionPercentageLabel.text = String(Int(100 * percentage)) + "%" cell.pollOptionView.voteProgressStripView.isHidden = false - cell.pollOptionView.voteProgressStripView.tintColor = voted ? Asset.Colors.Background.Poll.highlight.color : Asset.Colors.Background.Poll.disabled.color + cell.pollOptionView.voteProgressStripView.tintColor = voted ? Asset.Colors.brandBlue.color : Asset.Colors.Background.Poll.disabled.color cell.pollOptionView.voteProgressStripView.setProgress(CGFloat(percentage), animated: animated) } } diff --git a/Mastodon/Extension/ActiveLabel.swift b/Mastodon/Extension/ActiveLabel.swift index 3d59fc92d..9e5c53eed 100644 --- a/Mastodon/Extension/ActiveLabel.swift +++ b/Mastodon/Extension/ActiveLabel.swift @@ -25,9 +25,9 @@ extension ActiveLabel { numberOfLines = 0 lineSpacing = 5 - mentionColor = Asset.Colors.Label.highlight.color - hashtagColor = Asset.Colors.Label.highlight.color - URLColor = Asset.Colors.Label.highlight.color + mentionColor = Asset.Colors.brandBlue.color + hashtagColor = Asset.Colors.brandBlue.color + URLColor = Asset.Colors.brandBlue.color emojiPlaceholderColor = .systemFill #if DEBUG text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." diff --git a/Mastodon/Extension/UITableView.swift b/Mastodon/Extension/UITableView.swift index 8e3cc957d..3d96f97cd 100644 --- a/Mastodon/Extension/UITableView.swift +++ b/Mastodon/Extension/UITableView.swift @@ -33,7 +33,7 @@ extension UITableView { let backgroundColor = cell.backgroundColor UIView.animate(withDuration: 0.3) { - cell.backgroundColor = Asset.Colors.Label.highlight.color.withAlphaComponent(0.5) + cell.backgroundColor = Asset.Colors.brandBlue.color.withAlphaComponent(0.5) DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { UIView.animate(withDuration: 0.3) { cell.backgroundColor = backgroundColor diff --git a/Mastodon/Generated/Assets.swift b/Mastodon/Generated/Assets.swift index b71299203..a680db4a5 100644 --- a/Mastodon/Generated/Assets.swift +++ b/Mastodon/Generated/Assets.swift @@ -32,12 +32,8 @@ internal enum Asset { } internal enum Colors { internal enum Background { - internal enum AudioPlayer { - internal static let highlight = ColorAsset(name: "Colors/Background/AudioPlayer/highlight") - } internal enum Poll { internal static let disabled = ColorAsset(name: "Colors/Background/Poll/disabled") - internal static let highlight = ColorAsset(name: "Colors/Background/Poll/highlight") } internal static let alertYellow = ColorAsset(name: "Colors/Background/alert.yellow") internal static let dangerBorder = ColorAsset(name: "Colors/Background/danger.border") @@ -61,13 +57,11 @@ internal enum Asset { internal static let actionToolbar = ColorAsset(name: "Colors/Button/action.toolbar") internal static let disabled = ColorAsset(name: "Colors/Button/disabled") internal static let inactive = ColorAsset(name: "Colors/Button/inactive") - internal static let normal = ColorAsset(name: "Colors/Button/normal") } internal enum Icon { internal static let plus = ColorAsset(name: "Colors/Icon/plus") } internal enum Label { - internal static let highlight = ColorAsset(name: "Colors/Label/highlight") internal static let primary = ColorAsset(name: "Colors/Label/primary") internal static let secondary = ColorAsset(name: "Colors/Label/secondary") internal static let tertiary = ColorAsset(name: "Colors/Label/tertiary") @@ -85,7 +79,6 @@ internal enum Asset { } internal enum TextField { internal static let background = ColorAsset(name: "Colors/TextField/background") - internal static let highlight = ColorAsset(name: "Colors/TextField/highlight") internal static let invalid = ColorAsset(name: "Colors/TextField/invalid") internal static let valid = ColorAsset(name: "Colors/TextField/valid") } diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Background/AudioPlayer/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Background/AudioPlayer/Contents.json deleted file mode 100644 index 6e965652d..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/Background/AudioPlayer/Contents.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "info" : { - "author" : "xcode", - "version" : 1 - }, - "properties" : { - "provides-namespace" : true - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Background/AudioPlayer/highlight.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Background/AudioPlayer/highlight.colorset/Contents.json deleted file mode 100644 index 2e1ce5f3a..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/Background/AudioPlayer/highlight.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0.851", - "green" : "0.565", - "red" : "0.169" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Background/Poll/highlight.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Background/Poll/highlight.colorset/Contents.json deleted file mode 100644 index 2e1ce5f3a..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/Background/Poll/highlight.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0.851", - "green" : "0.565", - "red" : "0.169" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Button/normal.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Button/normal.colorset/Contents.json deleted file mode 100644 index 869ed278a..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/Button/normal.colorset/Contents.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xD9", - "green" : "0x90", - "red" : "0x2B" - } - }, - "idiom" : "universal" - }, - { - "appearances" : [ - { - "appearance" : "luminosity", - "value" : "dark" - } - ], - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "0xFF", - "green" : "0x84", - "red" : "0x0A" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/Label/highlight.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/Label/highlight.colorset/Contents.json deleted file mode 100644 index d853a71aa..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/Label/highlight.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "217", - "green" : "144", - "red" : "43" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Resources/Assets.xcassets/Colors/TextField/highlight.colorset/Contents.json b/Mastodon/Resources/Assets.xcassets/Colors/TextField/highlight.colorset/Contents.json deleted file mode 100644 index d853a71aa..000000000 --- a/Mastodon/Resources/Assets.xcassets/Colors/TextField/highlight.colorset/Contents.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "colors" : [ - { - "color" : { - "color-space" : "srgb", - "components" : { - "alpha" : "1.000", - "blue" : "217", - "green" : "144", - "red" : "43" - } - }, - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Mastodon/Scene/Compose/AutoComplete/Cell/AutoCompleteTableViewCell.swift b/Mastodon/Scene/Compose/AutoComplete/Cell/AutoCompleteTableViewCell.swift index c9f0a55d1..a13e82f31 100644 --- a/Mastodon/Scene/Compose/AutoComplete/Cell/AutoCompleteTableViewCell.swift +++ b/Mastodon/Scene/Compose/AutoComplete/Cell/AutoCompleteTableViewCell.swift @@ -32,7 +32,7 @@ final class AutoCompleteTableViewCell: UITableViewCell { let titleLabel: UILabel = { let label = UILabel() label.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold), maximumPointSize: 22) - label.textColor = Asset.Colors.Label.highlight.color + label.textColor = Asset.Colors.brandBlue.color label.text = "Title" return label }() diff --git a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollExpiresOptionCollectionViewCell.swift b/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollExpiresOptionCollectionViewCell.swift index 8347f5641..4ef0dbe5a 100644 --- a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollExpiresOptionCollectionViewCell.swift +++ b/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollExpiresOptionCollectionViewCell.swift @@ -23,7 +23,7 @@ final class ComposeStatusPollExpiresOptionCollectionViewCell: UICollectionViewCe button.titleLabel?.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 12)) button.expandEdgeInsets = UIEdgeInsets(top: 0, left: -10, bottom: -20, right: -20) button.setTitle(L10n.Scene.Compose.Poll.durationTime(L10n.Scene.Compose.Poll.thirtyMinutes), for: .normal) - button.setTitleColor(Asset.Colors.Button.normal.color, for: .normal) + button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal) return button }() diff --git a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollOptionAppendEntryCollectionViewCell.swift b/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollOptionAppendEntryCollectionViewCell.swift index dbe9ef4ad..4827c16f7 100644 --- a/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollOptionAppendEntryCollectionViewCell.swift +++ b/Mastodon/Scene/Compose/CollectionViewCell/ComposeStatusPollOptionAppendEntryCollectionViewCell.swift @@ -30,7 +30,7 @@ final class ComposeStatusPollOptionAppendEntryCollectionViewCell: UICollectionVi override var isHighlighted: Bool { didSet { pollOptionView.roundedBackgroundView.backgroundColor = isHighlighted ? Asset.Colors.Background.tertiarySystemBackground.color : Asset.Colors.Background.secondarySystemBackground.color - pollOptionView.plusCircleImageView.tintColor = isHighlighted ? Asset.Colors.Button.normal.color.withAlphaComponent(0.5) : Asset.Colors.Button.normal.color + pollOptionView.plusCircleImageView.tintColor = isHighlighted ? Asset.Colors.brandBlue.color.withAlphaComponent(0.5) : Asset.Colors.brandBlue.color } } diff --git a/Mastodon/Scene/Compose/ComposeViewController.swift b/Mastodon/Scene/Compose/ComposeViewController.swift index 0c1bf3a34..a9fe951f7 100644 --- a/Mastodon/Scene/Compose/ComposeViewController.swift +++ b/Mastodon/Scene/Compose/ComposeViewController.swift @@ -29,8 +29,8 @@ final class ComposeViewController: UIViewController, NeedsDependency { let button = RoundedEdgesButton(type: .custom) button.setTitle(L10n.Scene.Compose.composeAction, for: .normal) button.titleLabel?.font = .systemFont(ofSize: 14, weight: .bold) - button.setBackgroundImage(.placeholder(color: Asset.Colors.Button.normal.color), for: .normal) - button.setBackgroundImage(.placeholder(color: Asset.Colors.Button.normal.color.withAlphaComponent(0.5)), for: .highlighted) + button.setBackgroundImage(.placeholder(color: Asset.Colors.brandBlue.color), for: .normal) + button.setBackgroundImage(.placeholder(color: Asset.Colors.brandBlue.color.withAlphaComponent(0.5)), for: .highlighted) button.setBackgroundImage(.placeholder(color: Asset.Colors.Button.disabled.color), for: .disabled) button.setTitleColor(.white, for: .normal) button.contentEdgeInsets = UIEdgeInsets(top: 6, left: 16, bottom: 5, right: 16) // set 28pt height @@ -711,7 +711,7 @@ extension ComposeViewController: TextEditorViewTextAttributesDelegate { for match in highlightMatches { // set highlight var attributes = [NSAttributedString.Key: Any]() - attributes[.foregroundColor] = Asset.Colors.Label.highlight.color + attributes[.foregroundColor] = Asset.Colors.brandBlue.color // See `traitCollectionDidChange(_:)` // set accessibility @@ -780,7 +780,7 @@ extension ComposeViewController: TextEditorViewTextAttributesDelegate { // set highlight var attributes = [NSAttributedString.Key: Any]() - attributes[.foregroundColor] = Asset.Colors.Label.highlight.color + attributes[.foregroundColor] = Asset.Colors.brandBlue.color // See `traitCollectionDidChange(_:)` // set accessibility diff --git a/Mastodon/Scene/Compose/View/ComposeToolbarView.swift b/Mastodon/Scene/Compose/View/ComposeToolbarView.swift index d1ba5fdab..1dd19c552 100644 --- a/Mastodon/Scene/Compose/View/ComposeToolbarView.swift +++ b/Mastodon/Scene/Compose/View/ComposeToolbarView.swift @@ -225,7 +225,7 @@ extension ComposeToolbarView { extension ComposeToolbarView { private static func configureToolbarButtonAppearance(button: UIButton) { - button.tintColor = Asset.Colors.Button.normal.color + button.tintColor = Asset.Colors.brandBlue.color button.setBackgroundImage(.placeholder(size: ComposeToolbarView.toolbarButtonSize, color: .systemFill), for: .highlighted) button.layer.masksToBounds = true button.layer.cornerRadius = 5 diff --git a/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift b/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift index ac39ce1ae..84a463671 100644 --- a/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift +++ b/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift @@ -106,7 +106,7 @@ extension HomeTimelineNavigationBarTitleView { configureButton( title: L10n.Scene.HomeTimeline.NavigationBarState.newPosts, textColor: .white, - backgroundColor: Asset.Colors.Button.normal.color + backgroundColor: Asset.Colors.brandBlue.color ) button.isHidden = false case .offlineButton: diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift index ebd9b6ead..955f70a0f 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift @@ -713,7 +713,7 @@ extension MastodonRegisterViewController: UITextFieldDelegate { private func setTextFieldValidAppearance(_ textField: UITextField, validateState: MastodonRegisterViewModel.ValidateState) { switch validateState { case .empty: - showShadowWithColor(color: textField.isFirstResponder ? Asset.Colors.TextField.highlight.color : .clear, textField: textField) + showShadowWithColor(color: textField.isFirstResponder ? Asset.Colors.brandBlue.color : .clear, textField: textField) case .valid: showShadowWithColor(color: Asset.Colors.TextField.valid.color, textField: textField) case .invalid: diff --git a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift index 8b238cf0f..fda790913 100644 --- a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift +++ b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift @@ -175,15 +175,19 @@ extension MastodonServerRulesViewController { } func configTextView() { - let linkColor = Asset.Colors.Button.normal.color - let str = NSString(string: L10n.Scene.ServerRules.prompt(viewModel.domain)) let termsOfServiceRange = str.range(of: L10n.Scene.ServerRules.termsOfService) let privacyRange = str.range(of: L10n.Scene.ServerRules.privacyPolicy) - let attributeString = NSMutableAttributedString(string: L10n.Scene.ServerRules.prompt(viewModel.domain), attributes: [NSAttributedString.Key.font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .regular), maximumPointSize: 22), NSAttributedString.Key.foregroundColor: UIColor.label]) + let attributeString = NSMutableAttributedString( + string: L10n.Scene.ServerRules.prompt(viewModel.domain), + attributes: [ + NSAttributedString.Key.font: UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 17, weight: .regular), maximumPointSize: 22), + NSAttributedString.Key.foregroundColor: UIColor.label + ] + ) attributeString.addAttribute(.link, value: Mastodon.API.serverRulesURL(domain: viewModel.domain), range: termsOfServiceRange) attributeString.addAttribute(.link, value: Mastodon.API.privacyURL(domain: viewModel.domain), range: privacyRange) - let linkAttributes = [NSAttributedString.Key.foregroundColor:linkColor] + let linkAttributes = [NSAttributedString.Key.foregroundColor: Asset.Colors.brandBlue.color] bottomPromptTextView.attributedText = attributeString bottomPromptTextView.linkTextAttributes = linkAttributes bottomPromptTextView.delegate = self diff --git a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift index dea4de017..3ee2a4b07 100644 --- a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift +++ b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift @@ -41,7 +41,7 @@ final class WelcomeViewController: UIViewController, NeedsDependency { let backgroundImageHighlightedColor: UIColor = traitCollection.userInterfaceIdiom == .phone ? UIColor(white: 0.8, alpha: 1.0) : Asset.Colors.brandBlueDarken20.color button.setBackgroundImage(.placeholder(color: backgroundImageColor), for: .normal) button.setBackgroundImage(.placeholder(color: backgroundImageHighlightedColor), for: .highlighted) - let titleColor: UIColor = traitCollection.userInterfaceIdiom == .phone ? Asset.Colors.Button.normal.color : UIColor.white + let titleColor: UIColor = traitCollection.userInterfaceIdiom == .phone ? Asset.Colors.brandBlue.color : UIColor.white button.setTitleColor(titleColor, for: .normal) button.translatesAutoresizingMaskIntoConstraints = false return button @@ -51,7 +51,7 @@ final class WelcomeViewController: UIViewController, NeedsDependency { let button = UIButton(type: .system) button.titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold)) button.setTitle(L10n.Common.Controls.Actions.signIn, for: .normal) - let titleColor: UIColor = traitCollection.userInterfaceIdiom == .phone ? UIColor.white.withAlphaComponent(0.8) : Asset.Colors.Button.normal.color + let titleColor: UIColor = traitCollection.userInterfaceIdiom == .phone ? UIColor.white.withAlphaComponent(0.8) : Asset.Colors.brandBlue.color button.setTitleColor(titleColor, for: .normal) button.translatesAutoresizingMaskIntoConstraints = false return button diff --git a/Mastodon/Scene/Profile/ProfileViewModel.swift b/Mastodon/Scene/Profile/ProfileViewModel.swift index f9a89909c..289772033 100644 --- a/Mastodon/Scene/Profile/ProfileViewModel.swift +++ b/Mastodon/Scene/Profile/ProfileViewModel.swift @@ -395,21 +395,21 @@ extension ProfileViewModel { var backgroundColor: UIColor { guard let highPriorityAction = self.highPriorityAction(except: []) else { assertionFailure() - return Asset.Colors.Button.normal.color + return Asset.Colors.brandBlue.color } switch highPriorityAction { - case .none: return Asset.Colors.Button.normal.color - case .follow: return Asset.Colors.Button.normal.color - case .reqeust: return Asset.Colors.Button.normal.color - case .pending: return Asset.Colors.Button.normal.color - case .following: return Asset.Colors.Button.normal.color + case .none: return Asset.Colors.brandBlue.color + case .follow: return Asset.Colors.brandBlue.color + case .reqeust: return Asset.Colors.brandBlue.color + case .pending: return Asset.Colors.brandBlue.color + case .following: return Asset.Colors.brandBlue.color case .muting: return Asset.Colors.Background.alertYellow.color - case .blocked: return Asset.Colors.Button.normal.color + case .blocked: return Asset.Colors.brandBlue.color case .blocking: return Asset.Colors.Background.danger.color - case .suspended: return Asset.Colors.Button.normal.color - case .edit: return Asset.Colors.Button.normal.color - case .editing: return Asset.Colors.Button.normal.color - case .updating: return Asset.Colors.Button.normal.color + case .suspended: return Asset.Colors.brandBlue.color + case .edit: return Asset.Colors.brandBlue.color + case .editing: return Asset.Colors.brandBlue.color + case .updating: return Asset.Colors.brandBlue.color } } diff --git a/Mastodon/Scene/Report/ReportViewController.swift b/Mastodon/Scene/Report/ReportViewController.swift index 5e81ba139..7143912d5 100644 --- a/Mastodon/Scene/Report/ReportViewController.swift +++ b/Mastodon/Scene/Report/ReportViewController.swift @@ -241,7 +241,7 @@ class ReportViewController: UIViewController, NeedsDependency { = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.cancel, target: self, action: #selector(doneButtonDidClick)) - navigationItem.rightBarButtonItem?.tintColor = Asset.Colors.Label.highlight.color + navigationItem.rightBarButtonItem?.tintColor = Asset.Colors.brandBlue.color // fetch old mastodon user let beReportedUser: MastodonUser? = { diff --git a/Mastodon/Scene/Report/ReportedStatusTableviewCell.swift b/Mastodon/Scene/Report/ReportedStatusTableviewCell.swift index b1d0af6b0..95198312f 100644 --- a/Mastodon/Scene/Report/ReportedStatusTableviewCell.swift +++ b/Mastodon/Scene/Report/ReportedStatusTableviewCell.swift @@ -76,7 +76,7 @@ final class ReportedStatusTableViewCell: UITableViewCell, StatusCell { super.setHighlighted(highlighted, animated: animated) if highlighted { checkbox.image = UIImage(systemName: "checkmark.circle.fill") - checkbox.tintColor = Asset.Colors.Label.highlight.color + checkbox.tintColor = Asset.Colors.brandBlue.color } else if !isSelected { checkbox.image = UIImage(systemName: "circle") checkbox.tintColor = Asset.Colors.Label.secondary.color diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index 077058466..e7be49b33 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -328,7 +328,7 @@ extension SettingsViewController: UITableViewDelegate { guard let item = dataSource.itemIdentifier(for: indexPath) else { return } switch item { - case .apperance: + case .appearance: // do nothing break case .notification: @@ -399,7 +399,7 @@ extension SettingsViewController: SettingsAppearanceTableViewCellDelegate { guard let dataSource = viewModel.dataSource else { return } guard let indexPath = tableView.indexPath(for: cell) else { return } let item = dataSource.itemIdentifier(for: indexPath) - guard case let .apperance(settingObjectID) = item else { return } + guard case let .appearance(settingObjectID) = item else { return } context.managedObjectContext.performChanges { let setting = self.context.managedObjectContext.object(with: settingObjectID) as! Setting diff --git a/Mastodon/Scene/Settings/SettingsViewModel.swift b/Mastodon/Scene/Settings/SettingsViewModel.swift index c168b5611..c489f2133 100644 --- a/Mastodon/Scene/Settings/SettingsViewModel.swift +++ b/Mastodon/Scene/Settings/SettingsViewModel.swift @@ -71,7 +71,7 @@ extension SettingsViewModel { var snapshot = NSDiffableDataSourceSnapshot() // appearance - let appearanceItems = [SettingsItem.apperance(settingObjectID: setting.objectID)] + let appearanceItems = [SettingsItem.appearance(settingObjectID: setting.objectID)] snapshot.appendSections([.apperance]) snapshot.appendItems(appearanceItems, toSection: .apperance) @@ -123,7 +123,7 @@ extension SettingsViewModel { guard let self = self else { return nil } switch item { - case .apperance(let objectID): + case .appearance(let objectID): let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: SettingsAppearanceTableViewCell.self), for: indexPath) as! SettingsAppearanceTableViewCell self.context.managedObjectContext.performAndWait { let setting = self.context.managedObjectContext.object(with: objectID) as! Setting diff --git a/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift b/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift index 9a9ff7454..25bf4f1a0 100644 --- a/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift +++ b/Mastodon/Scene/Settings/View/Cell/SettingsAppearanceTableViewCell.swift @@ -48,7 +48,7 @@ class AppearanceView: UIView { didSet { checkBox.isSelected = selected if selected { - checkBox.imageView?.tintColor = Asset.Colors.Label.highlight.color + checkBox.imageView?.tintColor = Asset.Colors.brandBlue.color } else { checkBox.imageView?.tintColor = Asset.Colors.Label.secondary.color } diff --git a/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift b/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift index 82d0319f7..75e03d97c 100644 --- a/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift +++ b/Mastodon/Scene/Share/View/Button/PrimaryActionButton.swift @@ -38,10 +38,20 @@ extension PrimaryActionButton { private func _init() { titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 17, weight: .semibold)) setTitleColor(.white, for: .normal) + setupBackgroundAppearance() + applyCornerRadius(radius: 10) + } + + func setupBackgroundAppearance() { setBackgroundImage(UIImage.placeholder(color: Asset.Colors.brandBlue.color), for: .normal) setBackgroundImage(UIImage.placeholder(color: Asset.Colors.brandBlueDarken20.color), for: .highlighted) setBackgroundImage(UIImage.placeholder(color: Asset.Colors.disabled.color), for: .disabled) - applyCornerRadius(radius: 10) + } + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + + setupBackgroundAppearance() } func showLoading() { diff --git a/Mastodon/Scene/Share/View/Container/AudioContainerView.swift b/Mastodon/Scene/Share/View/Container/AudioContainerView.swift index 5661f833a..c4cf4f490 100644 --- a/Mastodon/Scene/Share/View/Container/AudioContainerView.swift +++ b/Mastodon/Scene/Share/View/Container/AudioContainerView.swift @@ -22,7 +22,7 @@ final class AudioContainerView: UIView { stackView.isLayoutMarginsRelativeArrangement = true stackView.layer.cornerRadius = AudioContainerView.cornerRadius stackView.clipsToBounds = true - stackView.backgroundColor = Asset.Colors.Background.AudioPlayer.highlight.color + stackView.backgroundColor = Asset.Colors.brandBlue.color stackView.translatesAutoresizingMaskIntoConstraints = false return stackView }() @@ -31,7 +31,7 @@ final class AudioContainerView: UIView { let view = UIView() view.layer.cornerRadius = 16 view.clipsToBounds = true - view.backgroundColor = Asset.Colors.Background.AudioPlayer.highlight.color + view.backgroundColor = Asset.Colors.brandBlue.color view.translatesAutoresizingMaskIntoConstraints = false return view }() diff --git a/Mastodon/Scene/Share/View/Content/PollOptionView.swift b/Mastodon/Scene/Share/View/Content/PollOptionView.swift index 2a248ec3f..e95de4624 100644 --- a/Mastodon/Scene/Share/View/Content/PollOptionView.swift +++ b/Mastodon/Scene/Share/View/Content/PollOptionView.swift @@ -21,7 +21,7 @@ final class PollOptionView: UIView { let roundedBackgroundView = UIView() let voteProgressStripView: StripProgressView = { let view = StripProgressView() - view.tintColor = Asset.Colors.Background.Poll.highlight.color + view.tintColor = Asset.Colors.brandBlue.color return view }() @@ -35,7 +35,7 @@ final class PollOptionView: UIView { let imageView = UIImageView() let image = UIImage(systemName: "checkmark", withConfiguration: UIImage.SymbolConfiguration(pointSize: 14, weight: .bold))! imageView.image = image.withRenderingMode(.alwaysTemplate) - imageView.tintColor = Asset.Colors.Button.normal.color + imageView.tintColor = Asset.Colors.brandBlue.color return imageView }() @@ -43,7 +43,7 @@ final class PollOptionView: UIView { let imageView = UIImageView() let image = Asset.Circles.plusCircle.image imageView.image = image.withRenderingMode(.alwaysTemplate) - imageView.tintColor = Asset.Colors.Button.normal.color + imageView.tintColor = Asset.Colors.brandBlue.color return imageView }() diff --git a/Mastodon/Scene/Share/View/Content/StatusView.swift b/Mastodon/Scene/Share/View/Content/StatusView.swift index d61210117..7cb2aef87 100644 --- a/Mastodon/Scene/Share/View/Content/StatusView.swift +++ b/Mastodon/Scene/Share/View/Content/StatusView.swift @@ -126,7 +126,7 @@ final class StatusView: UIView { let revealContentWarningButton: UIButton = { let button = HighlightDimmableButton() button.setImage(UIImage(systemName: "eye", withConfiguration: UIImage.SymbolConfiguration(pointSize: 17, weight: .medium)), for: .normal) - button.tintColor = Asset.Colors.Button.normal.color + button.tintColor = Asset.Colors.brandBlue.color return button }() @@ -175,8 +175,8 @@ final class StatusView: UIView { let button = HitTestExpandedButton() button.titleLabel?.font = UIFontMetrics(forTextStyle: .body).scaledFont(for: .systemFont(ofSize: 14, weight: .semibold)) button.setTitle(L10n.Common.Controls.Status.Poll.vote, for: .normal) - button.setTitleColor(Asset.Colors.Button.normal.color, for: .normal) - button.setTitleColor(Asset.Colors.Button.normal.color.withAlphaComponent(0.8), for: .highlighted) + button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal) + button.setTitleColor(Asset.Colors.brandBlue.color.withAlphaComponent(0.8), for: .highlighted) button.setTitleColor(Asset.Colors.Button.disabled.color, for: .disabled) button.isEnabled = false return button diff --git a/Mastodon/Scene/Share/View/Content/ThreadMetaView.swift b/Mastodon/Scene/Share/View/Content/ThreadMetaView.swift index ff5fa58d6..ff2f94a0e 100644 --- a/Mastodon/Scene/Share/View/Content/ThreadMetaView.swift +++ b/Mastodon/Scene/Share/View/Content/ThreadMetaView.swift @@ -20,8 +20,8 @@ final class ThreadMetaView: UIView { let button = UIButton() button.titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold)) button.setTitle("0 reblog", for: .normal) - button.setTitleColor(Asset.Colors.Button.normal.color, for: .normal) - button.setTitleColor(Asset.Colors.Button.normal.color.withAlphaComponent(0.5), for: .highlighted) + button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal) + button.setTitleColor(Asset.Colors.brandBlue.color.withAlphaComponent(0.5), for: .highlighted) return button }() @@ -29,8 +29,8 @@ final class ThreadMetaView: UIView { let button = UIButton() button.titleLabel?.font = UIFontMetrics(forTextStyle: .headline).scaledFont(for: .systemFont(ofSize: 15, weight: .semibold)) button.setTitle("0 favorite", for: .normal) - button.setTitleColor(Asset.Colors.Button.normal.color, for: .normal) - button.setTitleColor(Asset.Colors.Button.normal.color.withAlphaComponent(0.5), for: .highlighted) + button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal) + button.setTitleColor(Asset.Colors.brandBlue.color.withAlphaComponent(0.5), for: .highlighted) return button }() diff --git a/Mastodon/Scene/Share/View/TableviewCell/ThreadReplyLoaderTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/ThreadReplyLoaderTableViewCell.swift index 03359df51..9461bb282 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/ThreadReplyLoaderTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/ThreadReplyLoaderTableViewCell.swift @@ -23,7 +23,7 @@ final class ThreadReplyLoaderTableViewCell: UITableViewCell { let button = HighlightDimmableButton() button.titleLabel?.font = TimelineLoaderTableViewCell.labelFont button.backgroundColor = Asset.Colors.Background.secondaryGroupedSystemBackground.color - button.setTitleColor(Asset.Colors.Button.normal.color, for: .normal) + button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal) button.setTitle(L10n.Common.Controls.Timeline.Loader.showMoreReplies, for: .normal) return button }() diff --git a/Mastodon/Scene/Share/View/TableviewCell/TimelineLoaderTableViewCell.swift b/Mastodon/Scene/Share/View/TableviewCell/TimelineLoaderTableViewCell.swift index ded8fa49b..271a08a61 100644 --- a/Mastodon/Scene/Share/View/TableviewCell/TimelineLoaderTableViewCell.swift +++ b/Mastodon/Scene/Share/View/TableviewCell/TimelineLoaderTableViewCell.swift @@ -23,7 +23,7 @@ class TimelineLoaderTableViewCell: UITableViewCell { let button = HighlightDimmableButton() button.titleLabel?.font = TimelineLoaderTableViewCell.labelFont button.backgroundColor = Asset.Colors.Background.systemBackground.color - button.setTitleColor(Asset.Colors.Button.normal.color, for: .normal) + button.setTitleColor(Asset.Colors.brandBlue.color, for: .normal) button.setTitle(L10n.Common.Controls.Timeline.Loader.loadMissingPosts, for: .normal) button.setTitle("", for: .disabled) return button diff --git a/Mastodon/Supporting Files/SceneDelegate.swift b/Mastodon/Supporting Files/SceneDelegate.swift index 81869153f..948911a2a 100644 --- a/Mastodon/Supporting Files/SceneDelegate.swift +++ b/Mastodon/Supporting Files/SceneDelegate.swift @@ -22,6 +22,8 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { let window = UIWindow(windowScene: windowScene) self.window = window + // set tint color + window.tintColor = Asset.Colors.brandBlue.color let appContext = AppContext.shared let sceneCoordinator = SceneCoordinator(scene: scene, sceneDelegate: self, appContext: appContext) From 5ae2474b30cc3acd63e169b519ab4526dc7032a9 Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 20:54:34 +0800 Subject: [PATCH 22/23] fix: typo --- Localization/app.json | 2 +- Mastodon/Generated/Strings.swift | 34 +++++++++---------- .../UserProvider/UserProviderFacade.swift | 12 +++---- .../Resources/ar.lproj/Localizable.strings | 32 ++++++++--------- .../Resources/en.lproj/Localizable.strings | 32 ++++++++--------- .../Scene/Profile/ProfileViewController.swift | 6 ++-- Mastodon/Scene/Profile/ProfileViewModel.swift | 24 ++++++------- .../Search/SearchViewController+Follow.swift | 4 +-- 8 files changed, 73 insertions(+), 73 deletions(-) diff --git a/Localization/app.json b/Localization/app.json index 130f2c035..a631f61d6 100644 --- a/Localization/app.json +++ b/Localization/app.json @@ -154,7 +154,7 @@ "emoji": "Emoji" } }, - "firendship": { + "friendship": { "follow": "Follow", "following": "Following", "request": "Request", diff --git a/Mastodon/Generated/Strings.swift b/Mastodon/Generated/Strings.swift index be6079342..5ef064149 100644 --- a/Mastodon/Generated/Strings.swift +++ b/Mastodon/Generated/Strings.swift @@ -167,48 +167,48 @@ internal enum L10n { return L10n.tr("Localizable", "Common.Controls.Actions.UnblockDomain", String(describing: p1)) } } - internal enum Firendship { + internal enum Friendship { /// Block - internal static let block = L10n.tr("Localizable", "Common.Controls.Firendship.Block") + internal static let block = L10n.tr("Localizable", "Common.Controls.Friendship.Block") /// Block %@ internal static func blockDomain(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Firendship.BlockDomain", String(describing: p1)) + return L10n.tr("Localizable", "Common.Controls.Friendship.BlockDomain", String(describing: p1)) } /// Blocked - internal static let blocked = L10n.tr("Localizable", "Common.Controls.Firendship.Blocked") + internal static let blocked = L10n.tr("Localizable", "Common.Controls.Friendship.Blocked") /// Block %@ internal static func blockUser(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Firendship.BlockUser", String(describing: p1)) + return L10n.tr("Localizable", "Common.Controls.Friendship.BlockUser", String(describing: p1)) } /// Edit Info - internal static let editInfo = L10n.tr("Localizable", "Common.Controls.Firendship.EditInfo") + internal static let editInfo = L10n.tr("Localizable", "Common.Controls.Friendship.EditInfo") /// Follow - internal static let follow = L10n.tr("Localizable", "Common.Controls.Firendship.Follow") + internal static let follow = L10n.tr("Localizable", "Common.Controls.Friendship.Follow") /// Following - internal static let following = L10n.tr("Localizable", "Common.Controls.Firendship.Following") + internal static let following = L10n.tr("Localizable", "Common.Controls.Friendship.Following") /// Mute - internal static let mute = L10n.tr("Localizable", "Common.Controls.Firendship.Mute") + internal static let mute = L10n.tr("Localizable", "Common.Controls.Friendship.Mute") /// Muted - internal static let muted = L10n.tr("Localizable", "Common.Controls.Firendship.Muted") + internal static let muted = L10n.tr("Localizable", "Common.Controls.Friendship.Muted") /// Mute %@ internal static func muteUser(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Firendship.MuteUser", String(describing: p1)) + return L10n.tr("Localizable", "Common.Controls.Friendship.MuteUser", String(describing: p1)) } /// Pending - internal static let pending = L10n.tr("Localizable", "Common.Controls.Firendship.Pending") + internal static let pending = L10n.tr("Localizable", "Common.Controls.Friendship.Pending") /// Request - internal static let request = L10n.tr("Localizable", "Common.Controls.Firendship.Request") + internal static let request = L10n.tr("Localizable", "Common.Controls.Friendship.Request") /// Unblock - internal static let unblock = L10n.tr("Localizable", "Common.Controls.Firendship.Unblock") + internal static let unblock = L10n.tr("Localizable", "Common.Controls.Friendship.Unblock") /// Unblock %@ internal static func unblockUser(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Firendship.UnblockUser", String(describing: p1)) + return L10n.tr("Localizable", "Common.Controls.Friendship.UnblockUser", String(describing: p1)) } /// Unmute - internal static let unmute = L10n.tr("Localizable", "Common.Controls.Firendship.Unmute") + internal static let unmute = L10n.tr("Localizable", "Common.Controls.Friendship.Unmute") /// Unmute %@ internal static func unmuteUser(_ p1: Any) -> String { - return L10n.tr("Localizable", "Common.Controls.Firendship.UnmuteUser", String(describing: p1)) + return L10n.tr("Localizable", "Common.Controls.Friendship.UnmuteUser", String(describing: p1)) } } internal enum Keyboard { diff --git a/Mastodon/Protocol/UserProvider/UserProviderFacade.swift b/Mastodon/Protocol/UserProvider/UserProviderFacade.swift index 1f9215a76..b5e381f1b 100644 --- a/Mastodon/Protocol/UserProvider/UserProviderFacade.swift +++ b/Mastodon/Protocol/UserProvider/UserProviderFacade.swift @@ -164,9 +164,9 @@ extension UserProviderFacade { if !isMyself { // mute let muteAction = UIAction( - title: isMuting ? L10n.Common.Controls.Firendship.unmuteUser(name) : L10n.Common.Controls.Firendship.mute, + title: isMuting ? L10n.Common.Controls.Friendship.unmuteUser(name) : L10n.Common.Controls.Friendship.mute, image: isMuting ? UIImage(systemName: "speaker") : UIImage(systemName: "speaker.slash"), - discoverabilityTitle: isMuting ? nil : L10n.Common.Controls.Firendship.muteUser(name), + discoverabilityTitle: isMuting ? nil : L10n.Common.Controls.Friendship.muteUser(name), attributes: isMuting ? [] : .destructive, state: .off ) { [weak provider] _ in @@ -186,7 +186,7 @@ extension UserProviderFacade { if isMuting { children.append(muteAction) } else { - let muteMenu = UIMenu(title: L10n.Common.Controls.Firendship.muteUser(name), image: UIImage(systemName: "speaker.slash"), options: [], children: [muteAction]) + let muteMenu = UIMenu(title: L10n.Common.Controls.Friendship.muteUser(name), image: UIImage(systemName: "speaker.slash"), options: [], children: [muteAction]) children.append(muteMenu) } } @@ -194,9 +194,9 @@ extension UserProviderFacade { if !isMyself { // block let blockAction = UIAction( - title: isBlocking ? L10n.Common.Controls.Firendship.unblockUser(name) : L10n.Common.Controls.Firendship.block, + title: isBlocking ? L10n.Common.Controls.Friendship.unblockUser(name) : L10n.Common.Controls.Friendship.block, image: isBlocking ? UIImage(systemName: "hand.raised.slash") : UIImage(systemName: "hand.raised"), - discoverabilityTitle: isBlocking ? nil : L10n.Common.Controls.Firendship.blockUser(name), + discoverabilityTitle: isBlocking ? nil : L10n.Common.Controls.Friendship.blockUser(name), attributes: isBlocking ? [] : .destructive, state: .off ) { [weak provider] _ in @@ -216,7 +216,7 @@ extension UserProviderFacade { if isBlocking { children.append(blockAction) } else { - let blockMenu = UIMenu(title: L10n.Common.Controls.Firendship.blockUser(name), image: UIImage(systemName: "hand.raised"), options: [], children: [blockAction]) + let blockMenu = UIMenu(title: L10n.Common.Controls.Friendship.blockUser(name), image: UIImage(systemName: "hand.raised"), options: [], children: [blockAction]) children.append(blockMenu) } } diff --git a/Mastodon/Resources/ar.lproj/Localizable.strings b/Mastodon/Resources/ar.lproj/Localizable.strings index bb61c122f..79f2a8897 100644 --- a/Mastodon/Resources/ar.lproj/Localizable.strings +++ b/Mastodon/Resources/ar.lproj/Localizable.strings @@ -56,22 +56,22 @@ Please check your internet connection."; "Common.Controls.Actions.TakePhoto" = "Take photo"; "Common.Controls.Actions.TryAgain" = "Try Again"; "Common.Controls.Actions.UnblockDomain" = "Unblock %@"; -"Common.Controls.Firendship.Block" = "Block"; -"Common.Controls.Firendship.BlockDomain" = "Block %@"; -"Common.Controls.Firendship.BlockUser" = "Block %@"; -"Common.Controls.Firendship.Blocked" = "Blocked"; -"Common.Controls.Firendship.EditInfo" = "Edit Info"; -"Common.Controls.Firendship.Follow" = "Follow"; -"Common.Controls.Firendship.Following" = "Following"; -"Common.Controls.Firendship.Mute" = "Mute"; -"Common.Controls.Firendship.MuteUser" = "Mute %@"; -"Common.Controls.Firendship.Muted" = "Muted"; -"Common.Controls.Firendship.Pending" = "Pending"; -"Common.Controls.Firendship.Request" = "Request"; -"Common.Controls.Firendship.Unblock" = "Unblock"; -"Common.Controls.Firendship.UnblockUser" = "Unblock %@"; -"Common.Controls.Firendship.Unmute" = "Unmute"; -"Common.Controls.Firendship.UnmuteUser" = "Unmute %@"; +"Common.Controls.Friendship.Block" = "Block"; +"Common.Controls.Friendship.BlockDomain" = "Block %@"; +"Common.Controls.Friendship.BlockUser" = "Block %@"; +"Common.Controls.Friendship.Blocked" = "Blocked"; +"Common.Controls.Friendship.EditInfo" = "Edit Info"; +"Common.Controls.Friendship.Follow" = "Follow"; +"Common.Controls.Friendship.Following" = "Following"; +"Common.Controls.Friendship.Mute" = "Mute"; +"Common.Controls.Friendship.MuteUser" = "Mute %@"; +"Common.Controls.Friendship.Muted" = "Muted"; +"Common.Controls.Friendship.Pending" = "Pending"; +"Common.Controls.Friendship.Request" = "Request"; +"Common.Controls.Friendship.Unblock" = "Unblock"; +"Common.Controls.Friendship.UnblockUser" = "Unblock %@"; +"Common.Controls.Friendship.Unmute" = "Unmute"; +"Common.Controls.Friendship.UnmuteUser" = "Unmute %@"; "Common.Controls.Keyboard.Common.ComposeNewPost" = "Compose New Post"; "Common.Controls.Keyboard.Common.OpenSettings" = "Open Settings"; "Common.Controls.Keyboard.Common.ShowFavorites" = "Show Favorites"; diff --git a/Mastodon/Resources/en.lproj/Localizable.strings b/Mastodon/Resources/en.lproj/Localizable.strings index bb61c122f..79f2a8897 100644 --- a/Mastodon/Resources/en.lproj/Localizable.strings +++ b/Mastodon/Resources/en.lproj/Localizable.strings @@ -56,22 +56,22 @@ Please check your internet connection."; "Common.Controls.Actions.TakePhoto" = "Take photo"; "Common.Controls.Actions.TryAgain" = "Try Again"; "Common.Controls.Actions.UnblockDomain" = "Unblock %@"; -"Common.Controls.Firendship.Block" = "Block"; -"Common.Controls.Firendship.BlockDomain" = "Block %@"; -"Common.Controls.Firendship.BlockUser" = "Block %@"; -"Common.Controls.Firendship.Blocked" = "Blocked"; -"Common.Controls.Firendship.EditInfo" = "Edit Info"; -"Common.Controls.Firendship.Follow" = "Follow"; -"Common.Controls.Firendship.Following" = "Following"; -"Common.Controls.Firendship.Mute" = "Mute"; -"Common.Controls.Firendship.MuteUser" = "Mute %@"; -"Common.Controls.Firendship.Muted" = "Muted"; -"Common.Controls.Firendship.Pending" = "Pending"; -"Common.Controls.Firendship.Request" = "Request"; -"Common.Controls.Firendship.Unblock" = "Unblock"; -"Common.Controls.Firendship.UnblockUser" = "Unblock %@"; -"Common.Controls.Firendship.Unmute" = "Unmute"; -"Common.Controls.Firendship.UnmuteUser" = "Unmute %@"; +"Common.Controls.Friendship.Block" = "Block"; +"Common.Controls.Friendship.BlockDomain" = "Block %@"; +"Common.Controls.Friendship.BlockUser" = "Block %@"; +"Common.Controls.Friendship.Blocked" = "Blocked"; +"Common.Controls.Friendship.EditInfo" = "Edit Info"; +"Common.Controls.Friendship.Follow" = "Follow"; +"Common.Controls.Friendship.Following" = "Following"; +"Common.Controls.Friendship.Mute" = "Mute"; +"Common.Controls.Friendship.MuteUser" = "Mute %@"; +"Common.Controls.Friendship.Muted" = "Muted"; +"Common.Controls.Friendship.Pending" = "Pending"; +"Common.Controls.Friendship.Request" = "Request"; +"Common.Controls.Friendship.Unblock" = "Unblock"; +"Common.Controls.Friendship.UnblockUser" = "Unblock %@"; +"Common.Controls.Friendship.Unmute" = "Unmute"; +"Common.Controls.Friendship.UnmuteUser" = "Unmute %@"; "Common.Controls.Keyboard.Common.ComposeNewPost" = "Compose New Post"; "Common.Controls.Keyboard.Common.OpenSettings" = "Open Settings"; "Common.Controls.Keyboard.Common.ShowFavorites" = "Show Favorites"; diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index d3425b486..8ba7851cd 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -813,7 +813,7 @@ extension ProfileViewController: ProfileHeaderViewDelegate { switch relationshipAction { case .none: break - case .follow, .reqeust, .pending, .following: + case .follow, .request, .pending, .following: UserProviderFacade.toggleUserFollowRelationship(provider: self) .sink { _ in // TODO: handle error @@ -829,7 +829,7 @@ extension ProfileViewController: ProfileHeaderViewDelegate { message: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.message(name), preferredStyle: .alert ) - let unmuteAction = UIAlertAction(title: L10n.Common.Controls.Firendship.unmute, style: .default) { [weak self] _ in + let unmuteAction = UIAlertAction(title: L10n.Common.Controls.Friendship.unmute, style: .default) { [weak self] _ in guard let self = self else { return } UserProviderFacade.toggleUserMuteRelationship(provider: self, cell: nil) .sink { _ in @@ -851,7 +851,7 @@ extension ProfileViewController: ProfileHeaderViewDelegate { message: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.message(name), preferredStyle: .alert ) - let unblockAction = UIAlertAction(title: L10n.Common.Controls.Firendship.unblock, style: .default) { [weak self] _ in + let unblockAction = UIAlertAction(title: L10n.Common.Controls.Friendship.unblock, style: .default) { [weak self] _ in guard let self = self else { return } UserProviderFacade.toggleUserBlockRelationship(provider: self, cell: nil) .sink { _ in diff --git a/Mastodon/Scene/Profile/ProfileViewModel.swift b/Mastodon/Scene/Profile/ProfileViewModel.swift index 289772033..619d55ba3 100644 --- a/Mastodon/Scene/Profile/ProfileViewModel.swift +++ b/Mastodon/Scene/Profile/ProfileViewModel.swift @@ -327,7 +327,7 @@ extension ProfileViewModel { enum RelationshipAction: Int, CaseIterable { case none // set hide from UI case follow - case reqeust + case request case pending case following case muting @@ -349,7 +349,7 @@ extension ProfileViewModel { static let none = RelationshipAction.none.option static let follow = RelationshipAction.follow.option - static let request = RelationshipAction.reqeust.option + static let request = RelationshipAction.request.option static let pending = RelationshipAction.pending.option static let following = RelationshipAction.following.option static let muting = RelationshipAction.muting.option @@ -378,15 +378,15 @@ extension ProfileViewModel { } switch highPriorityAction { case .none: return " " - case .follow: return L10n.Common.Controls.Firendship.follow - case .reqeust: return L10n.Common.Controls.Firendship.request - case .pending: return L10n.Common.Controls.Firendship.pending - case .following: return L10n.Common.Controls.Firendship.following - case .muting: return L10n.Common.Controls.Firendship.muted - case .blocked: return L10n.Common.Controls.Firendship.follow // blocked by user - case .blocking: return L10n.Common.Controls.Firendship.blocked - case .suspended: return L10n.Common.Controls.Firendship.follow - case .edit: return L10n.Common.Controls.Firendship.editInfo + case .follow: return L10n.Common.Controls.Friendship.follow + case .request: return L10n.Common.Controls.Friendship.request + case .pending: return L10n.Common.Controls.Friendship.pending + case .following: return L10n.Common.Controls.Friendship.following + case .muting: return L10n.Common.Controls.Friendship.muted + case .blocked: return L10n.Common.Controls.Friendship.follow // blocked by user + case .blocking: return L10n.Common.Controls.Friendship.blocked + case .suspended: return L10n.Common.Controls.Friendship.follow + case .edit: return L10n.Common.Controls.Friendship.editInfo case .editing: return L10n.Common.Controls.Actions.done case .updating: return " " } @@ -400,7 +400,7 @@ extension ProfileViewModel { switch highPriorityAction { case .none: return Asset.Colors.brandBlue.color case .follow: return Asset.Colors.brandBlue.color - case .reqeust: return Asset.Colors.brandBlue.color + case .request: return Asset.Colors.brandBlue.color case .pending: return Asset.Colors.brandBlue.color case .following: return Asset.Colors.brandBlue.color case .muting: return Asset.Colors.Background.alertYellow.color diff --git a/Mastodon/Scene/Search/SearchViewController+Follow.swift b/Mastodon/Scene/Search/SearchViewController+Follow.swift index a7f7faf90..c31f6d82a 100644 --- a/Mastodon/Scene/Search/SearchViewController+Follow.swift +++ b/Mastodon/Scene/Search/SearchViewController+Follow.swift @@ -52,7 +52,7 @@ extension SearchViewController: SearchRecommendAccountsCollectionViewCellDelegat message: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnmuteUser.message(name), preferredStyle: .alert ) - let unmuteAction = UIAlertAction(title: L10n.Common.Controls.Firendship.unmute, style: .default) { [weak self] _ in + let unmuteAction = UIAlertAction(title: L10n.Common.Controls.Friendship.unmute, style: .default) { [weak self] _ in guard let self = self else { return } UserProviderFacade.toggleUserMuteRelationship(provider: self, cell: nil) .sink { _ in @@ -74,7 +74,7 @@ extension SearchViewController: SearchRecommendAccountsCollectionViewCellDelegat message: L10n.Scene.Profile.RelationshipActionAlert.ConfirmUnblockUsre.message(name), preferredStyle: .alert ) - let unblockAction = UIAlertAction(title: L10n.Common.Controls.Firendship.unblock, style: .default) { [weak self] _ in + let unblockAction = UIAlertAction(title: L10n.Common.Controls.Friendship.unblock, style: .default) { [weak self] _ in guard let self = self else { return } UserProviderFacade.toggleUserBlockRelationship(provider: self, cell: nil) .sink { _ in From 721822c9bdffd45c4ec01230ddfe115df605afbf Mon Sep 17 00:00:00 2001 From: CMK Date: Tue, 22 Jun 2021 20:55:08 +0800 Subject: [PATCH 23/23] chore: update version to 0.7.2 (18) --- Mastodon.xcodeproj/project.pbxproj | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index 74fac405b..6a29831ea 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -3788,7 +3788,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 17; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -3815,7 +3815,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 17; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4143,7 +4143,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 17; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4257,7 +4257,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 17; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4376,7 +4376,7 @@ CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = Mastodon/Mastodon.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 17; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_ASSET_PATHS = "Mastodon/Resources/Preview\\ Assets.xcassets"; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = Mastodon/Info.plist; @@ -4490,7 +4490,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 17; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4544,7 +4544,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 17; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( @@ -4567,7 +4567,7 @@ buildSettings = { CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 17; + CURRENT_PROJECT_VERSION = 18; DEVELOPMENT_TEAM = 5Z4GVSS33P; INFOPLIST_FILE = NotificationService/Info.plist; LD_RUNPATH_SEARCH_PATHS = (