From 93c4128a505fe9a115bf8351b23a2bec059c190f Mon Sep 17 00:00:00 2001 From: Marcin Czachursk Date: Fri, 7 Apr 2023 16:59:18 +0200 Subject: [PATCH] Create WidgetsKit package --- CoreData/ApplicationSettingsHandler.swift | 1 + CoreData/CoreDataHandler.swift | 1 + EnvironmentKit/.gitignore | 9 + EnvironmentKit/Package.swift | 33 +++ .../EnvironmentKit}/ApplicationState.swift | 44 ++-- .../Extensions/AvatarShape+Shape.swift | 2 +- .../Extensions/Color+Assets.swift | 4 +- .../Extensions/Color+SystemColors.swift | 2 +- .../Extensions/Theme+ColorScheme.swift | 4 +- .../Extensions/TintColor+Color.swift | 6 +- .../EnvironmentKit/Models}/AppConstants.swift | 0 .../EnvironmentKit/Models}/AvatarShape.swift | 0 .../EnvironmentKit/Models}/MenuPosition.swift | 0 .../EnvironmentKit/Models}/Theme.swift | 0 .../EnvironmentKit/Models}/TintColor.swift | 0 .../EnvironmentKitTests.swift | 11 + Localization/en.lproj/Localizable.strings | 2 + Localization/eu.lproj/Localizable.strings | 2 + Localization/pl.lproj/Localizable.strings | 2 + ServicesKit/Package.swift | 6 +- .../Sources/ServicesKit}/HapticService.swift | 1 + Vernissage.xcodeproj/project.pbxproj | 206 +++--------------- Vernissage/Extensions/UIImage+Rounded.swift | 1 + Vernissage/SceneDelegate.swift | 1 + .../Services/AuthorizationService.swift | 1 + Vernissage/VernissageApp.swift | 1 + Vernissage/ViewModifiers/NavigationMenu.swift | 1 + Vernissage/Views/AccountsPhotoView.swift | 2 + Vernissage/Views/AccountsView.swift | 2 + .../Views/ComposeView/ComposeView.swift | 2 + .../Subviews/ImageUploadView.swift | 2 + Vernissage/Views/EditProfileView.swift | 2 + Vernissage/Views/HashtagsView.swift | 2 + Vernissage/Views/HomeFeedView.swift | 2 + Vernissage/Views/InstanceView.swift | 2 + Vernissage/Views/MainView.swift | 1 + .../NotificationsView/NotificationsView.swift | 2 + .../Subviews/NotificationRowView.swift | 2 + Vernissage/Views/PaginableStatusesView.swift | 2 + Vernissage/Views/PhotoEditorView.swift | 1 + Vernissage/Views/PlaceSelectorView.swift | 2 + Vernissage/Views/ReportView.swift | 1 + .../Views/SettingsView/SettingsView.swift | 1 + .../Subviews/AccentsSectionView.swift | 1 + .../Subviews/AccountsSectionView.swift | 2 + .../Subviews/AvatarShapesSectionView.swift | 1 + .../Subviews/GeneralSectionView.swift | 1 + .../Subviews/HapticsSectionView.swift | 1 + .../Subviews/MediaSettingsView.swift | 1 + .../SettingsView/Subviews/SupportView.swift | 1 + .../SettingsView/Subviews/ThanksView.swift | 1 + Vernissage/Views/SignInView/SignInView.swift | 2 + .../SignInView/Subviews/InstanceRowView.swift | 2 + Vernissage/Views/StatusView/StatusView.swift | 2 + .../StatusView/Subviews/CommentBodyView.swift | 2 + .../Subviews/CommentsSectionView.swift | 2 + .../Subviews/StatusPlaceholderView.swift | 1 + Vernissage/Views/StatusesView.swift | 2 + Vernissage/Views/TrendStatusesView.swift | 2 + .../Subviews/UserProfileHeaderView.swift | 6 +- .../Subviews/UserProfileStatusesView.swift | 2 + .../UserProfileView/UserProfileView.swift | 2 + Vernissage/Widgets/ImageCarouselPicture.swift | 1 + Vernissage/Widgets/ImageGrid.swift | 2 + Vernissage/Widgets/ImageRowItem.swift | 2 + Vernissage/Widgets/ImageRowItemAsync.swift | 2 + Vernissage/Widgets/ImageViewer.swift | 1 + Vernissage/Widgets/InteractionRow.swift | 2 + VernissageWidget/Views/LargeWidgetView.swift | 1 + VernissageWidget/Views/MediumWidgetView.swift | 1 + VernissageWidget/Views/SmallWidgetView.swift | 1 + WidgetsKit/.gitignore | 9 + WidgetsKit/Package.swift | 38 ++++ .../Sources/WidgetsKit}/ActionButton.swift | 5 +- .../Sources/WidgetsKit}/ActionMenu.swift | 7 +- .../Sources/WidgetsKit}/BlurredImage.swift | 9 +- .../Sources/WidgetsKit}/BottomRight.swift | 6 +- .../Sources/WidgetsKit}/ContentWarning.swift | 10 +- .../Sources/WidgetsKit}/ErrorView.swift | 9 +- .../Extensions/UIImage+Blurhash.swift | 2 +- .../Sources/WidgetsKit}/FavouriteTouch.swift | 6 +- .../Sources/WidgetsKit}/LabelIcon.swift | 9 +- .../WidgetsKit}/LoadingIndicator.swift | 7 +- .../WidgetsKit}/MarkdownFormattedText.swift | 8 +- .../Sources/WidgetsKit}/NoDataView.swift | 6 +- .../Sources/WidgetsKit}/TagWidget.swift | 10 +- .../Sources/WidgetsKit}/TextInputField.swift | 6 +- .../WidgetsKit/TextView}/TextModel.swift | 21 +- .../WidgetsKit/TextView}/TextView.swift | 0 .../Sources/WidgetsKit}/UserAvatar.swift | 5 +- .../Sources/WidgetsKit}/UsernameRow.swift | 16 +- .../WidgetsKitTests/WidgetsKitTests.swift | 11 + 92 files changed, 346 insertions(+), 270 deletions(-) create mode 100644 EnvironmentKit/.gitignore create mode 100644 EnvironmentKit/Package.swift rename {Vernissage/EnvironmentObjects => EnvironmentKit/Sources/EnvironmentKit}/ApplicationState.swift (69%) rename {Vernissage => EnvironmentKit/Sources/EnvironmentKit}/Extensions/AvatarShape+Shape.swift (93%) rename {Vernissage => EnvironmentKit/Sources/EnvironmentKit}/Extensions/Color+Assets.swift (95%) rename {Vernissage => EnvironmentKit/Sources/EnvironmentKit}/Extensions/Color+SystemColors.swift (99%) rename {Vernissage => EnvironmentKit/Sources/EnvironmentKit}/Extensions/Theme+ColorScheme.swift (85%) rename {Vernissage => EnvironmentKit/Sources/EnvironmentKit}/Extensions/TintColor+Color.swift (90%) rename {Models => EnvironmentKit/Sources/EnvironmentKit/Models}/AppConstants.swift (100%) rename {Models => EnvironmentKit/Sources/EnvironmentKit/Models}/AvatarShape.swift (100%) rename {Models => EnvironmentKit/Sources/EnvironmentKit/Models}/MenuPosition.swift (100%) rename {Models => EnvironmentKit/Sources/EnvironmentKit/Models}/Theme.swift (100%) rename {Models => EnvironmentKit/Sources/EnvironmentKit/Models}/TintColor.swift (100%) create mode 100644 EnvironmentKit/Tests/EnvironmentKitTests/EnvironmentKitTests.swift rename {Vernissage/Haptics => ServicesKit/Sources/ServicesKit}/HapticService.swift (98%) create mode 100644 WidgetsKit/.gitignore create mode 100644 WidgetsKit/Package.swift rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/ActionButton.swift (92%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/ActionMenu.swift (82%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/BlurredImage.swift (80%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/BottomRight.swift (79%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/ContentWarning.swift (90%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/ErrorView.swift (81%) rename {Vernissage => WidgetsKit/Sources/WidgetsKit}/Extensions/UIImage+Blurhash.swift (99%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/FavouriteTouch.swift (91%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/LabelIcon.swift (79%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/LoadingIndicator.swift (81%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/MarkdownFormattedText.swift (75%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/NoDataView.swift (83%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/TagWidget.swift (76%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/TextInputField.swift (84%) rename {TextView => WidgetsKit/Sources/WidgetsKit/TextView}/TextModel.swift (92%) rename {TextView => WidgetsKit/Sources/WidgetsKit/TextView}/TextView.swift (100%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/UserAvatar.swift (96%) rename {Vernissage/Widgets => WidgetsKit/Sources/WidgetsKit}/UsernameRow.swift (60%) create mode 100644 WidgetsKit/Tests/WidgetsKitTests/WidgetsKitTests.swift diff --git a/CoreData/ApplicationSettingsHandler.swift b/CoreData/ApplicationSettingsHandler.swift index f302c8c..b2362d5 100644 --- a/CoreData/ApplicationSettingsHandler.swift +++ b/CoreData/ApplicationSettingsHandler.swift @@ -6,6 +6,7 @@ import Foundation import CoreData +import EnvironmentKit class ApplicationSettingsHandler { public static let shared = ApplicationSettingsHandler() diff --git a/CoreData/CoreDataHandler.swift b/CoreData/CoreDataHandler.swift index 6576179..f636ee5 100644 --- a/CoreData/CoreDataHandler.swift +++ b/CoreData/CoreDataHandler.swift @@ -5,6 +5,7 @@ // import CoreData +import EnvironmentKit public class CoreDataHandler { public static let shared = CoreDataHandler() diff --git a/EnvironmentKit/.gitignore b/EnvironmentKit/.gitignore new file mode 100644 index 0000000..3b29812 --- /dev/null +++ b/EnvironmentKit/.gitignore @@ -0,0 +1,9 @@ +.DS_Store +/.build +/Packages +/*.xcodeproj +xcuserdata/ +DerivedData/ +.swiftpm/config/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/EnvironmentKit/Package.swift b/EnvironmentKit/Package.swift new file mode 100644 index 0000000..46abb1e --- /dev/null +++ b/EnvironmentKit/Package.swift @@ -0,0 +1,33 @@ +// swift-tools-version: 5.8 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "EnvironmentKit", + platforms: [ + .iOS(.v16), + .macOS(.v12), + .watchOS(.v8) + ], + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "EnvironmentKit", + targets: ["EnvironmentKit"]) + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + .package(name: "ClientKit", path: "../ClientKit") + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "EnvironmentKit", + dependencies: ["ClientKit"]), + .testTarget( + name: "EnvironmentKitTests", + dependencies: ["EnvironmentKit"]) + ] +) diff --git a/Vernissage/EnvironmentObjects/ApplicationState.swift b/EnvironmentKit/Sources/EnvironmentKit/ApplicationState.swift similarity index 69% rename from Vernissage/EnvironmentObjects/ApplicationState.swift rename to EnvironmentKit/Sources/EnvironmentKit/ApplicationState.swift index 52600cb..69beda8 100644 --- a/Vernissage/EnvironmentObjects/ApplicationState.swift +++ b/EnvironmentKit/Sources/EnvironmentKit/ApplicationState.swift @@ -24,70 +24,70 @@ public class ApplicationState: ObservableObject { private static let defaults = Defaults() /// Actual signed in account. - @Published private(set) var account: AccountModel? + @Published public private(set) var account: AccountModel? /// The maximum number of allowed characters per status. - @Published private(set) var statusMaxCharacters = defaults.statusMaxCharacters + @Published public private(set) var statusMaxCharacters = defaults.statusMaxCharacters /// The maximum number of media attachments that can be added to a status. - @Published private(set) var statusMaxMediaAttachments = defaults.statusMaxMediaAttachments + @Published public private(set) var statusMaxMediaAttachments = defaults.statusMaxMediaAttachments /// Each URL in a status will be assumed to be exactly this many characters. - @Published private(set) var statusCharactersReservedPerUrl = defaults.statusCharactersReservedPerUrl + @Published public private(set) var statusCharactersReservedPerUrl = defaults.statusCharactersReservedPerUrl /// Last status seen by the user. - @Published var lastSeenStatusId: String? + @Published public var lastSeenStatusId: String? /// Amount of new statuses which are not displayed yet to the user. - @Published var amountOfNewStatuses = 0 + @Published public var amountOfNewStatuses = 0 /// Model for newly created comment. - @Published var newComment: CommentModel? + @Published public var newComment: CommentModel? /// Active icon name. - @Published var activeIcon = "Default" + @Published public var activeIcon = "Default" /// Tint color in whole application. - @Published var tintColor = TintColor.accentColor2 + @Published public var tintColor = TintColor.accentColor2 /// Application theme. - @Published var theme = Theme.system + @Published public var theme = Theme.system /// Avatar shape. - @Published var avatarShape = AvatarShape.circle + @Published public var avatarShape = AvatarShape.circle /// Status id for showed interaction row. - @Published var showInteractionStatusId = String.empty() + @Published public var showInteractionStatusId = "" /// Should we fire haptic when user change tabs. - @Published var hapticTabSelectionEnabled = true + @Published public var hapticTabSelectionEnabled = true /// Should we fire haptic when user refresh list. - @Published var hapticRefreshEnabled = true + @Published public var hapticRefreshEnabled = true /// Should we fire haptic when user tap button. - @Published var hapticButtonPressEnabled = true + @Published public var hapticButtonPressEnabled = true /// Should we fire haptic when animation is finished. - @Published var hapticAnimationEnabled = true + @Published public var hapticAnimationEnabled = true /// Should we fire haptic when notification occures. - @Published var hapticNotificationEnabled = true + @Published public var hapticNotificationEnabled = true /// Should sensitive photos without mask. - @Published var showSensitive = false + @Published public var showSensitive = false /// Should photo description for visually impaired be displayed. - @Published var showPhotoDescription = false + @Published public var showPhotoDescription = false /// Status which should be shown from URL. - @Published var showStatusId: String? + @Published public var showStatusId: String? /// Updated user profile. - @Published var updatedProfile: Account? + @Published public var updatedProfile: Account? /// Information which menu should be shown (top or bottom). - @Published var menuPosition = MenuPosition.top + @Published public var menuPosition = MenuPosition.top public func changeApplicationState(accountModel: AccountModel, instance: Instance?, lastSeenStatusId: String?) { self.account = accountModel diff --git a/Vernissage/Extensions/AvatarShape+Shape.swift b/EnvironmentKit/Sources/EnvironmentKit/Extensions/AvatarShape+Shape.swift similarity index 93% rename from Vernissage/Extensions/AvatarShape+Shape.swift rename to EnvironmentKit/Sources/EnvironmentKit/Extensions/AvatarShape+Shape.swift index 58ad328..b6d8c0b 100644 --- a/Vernissage/Extensions/AvatarShape+Shape.swift +++ b/EnvironmentKit/Sources/EnvironmentKit/Extensions/AvatarShape+Shape.swift @@ -7,7 +7,7 @@ import Foundation import SwiftUI -extension AvatarShape { +public extension AvatarShape { func shape() -> some Shape { switch self { case .circle: diff --git a/Vernissage/Extensions/Color+Assets.swift b/EnvironmentKit/Sources/EnvironmentKit/Extensions/Color+Assets.swift similarity index 95% rename from Vernissage/Extensions/Color+Assets.swift rename to EnvironmentKit/Sources/EnvironmentKit/Extensions/Color+Assets.swift index 78c6cea..b22b6a1 100644 --- a/Vernissage/Extensions/Color+Assets.swift +++ b/EnvironmentKit/Sources/EnvironmentKit/Extensions/Color+Assets.swift @@ -6,7 +6,7 @@ import SwiftUI -extension Color { +public extension Color { // MARK: - Text Colors static let dangerColor = Color("DangerColor") @@ -28,7 +28,7 @@ extension Color { static let accentColor10 = Color("AccentColor10") } -extension Color { +public extension Color { func toUIColor() -> UIColor { UIColor(self) } diff --git a/Vernissage/Extensions/Color+SystemColors.swift b/EnvironmentKit/Sources/EnvironmentKit/Extensions/Color+SystemColors.swift similarity index 99% rename from Vernissage/Extensions/Color+SystemColors.swift rename to EnvironmentKit/Sources/EnvironmentKit/Extensions/Color+SystemColors.swift index 2b76ded..a04d735 100644 --- a/Vernissage/Extensions/Color+SystemColors.swift +++ b/EnvironmentKit/Sources/EnvironmentKit/Extensions/Color+SystemColors.swift @@ -6,7 +6,7 @@ import SwiftUI -extension Color { +public extension Color { // MARK: - Text Colors static let lightText = Color(UIColor.lightText) diff --git a/Vernissage/Extensions/Theme+ColorScheme.swift b/EnvironmentKit/Sources/EnvironmentKit/Extensions/Theme+ColorScheme.swift similarity index 85% rename from Vernissage/Extensions/Theme+ColorScheme.swift rename to EnvironmentKit/Sources/EnvironmentKit/Extensions/Theme+ColorScheme.swift index 3f92078..cc47cf2 100644 --- a/Vernissage/Extensions/Theme+ColorScheme.swift +++ b/EnvironmentKit/Sources/EnvironmentKit/Extensions/Theme+ColorScheme.swift @@ -7,8 +7,8 @@ import Foundation import SwiftUI -extension Theme { - public func colorScheme() -> ColorScheme? { +public extension Theme { + func colorScheme() -> ColorScheme? { switch self { case .system: return nil diff --git a/Vernissage/Extensions/TintColor+Color.swift b/EnvironmentKit/Sources/EnvironmentKit/Extensions/TintColor+Color.swift similarity index 90% rename from Vernissage/Extensions/TintColor+Color.swift rename to EnvironmentKit/Sources/EnvironmentKit/Extensions/TintColor+Color.swift index 035a8fb..4de8a44 100644 --- a/Vernissage/Extensions/TintColor+Color.swift +++ b/EnvironmentKit/Sources/EnvironmentKit/Extensions/TintColor+Color.swift @@ -7,8 +7,8 @@ import Foundation import SwiftUI -extension TintColor { - public func color() -> Color { +public extension TintColor { + func color() -> Color { switch self { case .accentColor1: return Color.accentColor1 @@ -33,7 +33,7 @@ extension TintColor { } } - public func uiColor() -> UIColor { + func uiColor() -> UIColor { return self.color().toUIColor() } } diff --git a/Models/AppConstants.swift b/EnvironmentKit/Sources/EnvironmentKit/Models/AppConstants.swift similarity index 100% rename from Models/AppConstants.swift rename to EnvironmentKit/Sources/EnvironmentKit/Models/AppConstants.swift diff --git a/Models/AvatarShape.swift b/EnvironmentKit/Sources/EnvironmentKit/Models/AvatarShape.swift similarity index 100% rename from Models/AvatarShape.swift rename to EnvironmentKit/Sources/EnvironmentKit/Models/AvatarShape.swift diff --git a/Models/MenuPosition.swift b/EnvironmentKit/Sources/EnvironmentKit/Models/MenuPosition.swift similarity index 100% rename from Models/MenuPosition.swift rename to EnvironmentKit/Sources/EnvironmentKit/Models/MenuPosition.swift diff --git a/Models/Theme.swift b/EnvironmentKit/Sources/EnvironmentKit/Models/Theme.swift similarity index 100% rename from Models/Theme.swift rename to EnvironmentKit/Sources/EnvironmentKit/Models/Theme.swift diff --git a/Models/TintColor.swift b/EnvironmentKit/Sources/EnvironmentKit/Models/TintColor.swift similarity index 100% rename from Models/TintColor.swift rename to EnvironmentKit/Sources/EnvironmentKit/Models/TintColor.swift diff --git a/EnvironmentKit/Tests/EnvironmentKitTests/EnvironmentKitTests.swift b/EnvironmentKit/Tests/EnvironmentKitTests/EnvironmentKitTests.swift new file mode 100644 index 0000000..27cb6bd --- /dev/null +++ b/EnvironmentKit/Tests/EnvironmentKitTests/EnvironmentKitTests.swift @@ -0,0 +1,11 @@ +import XCTest +@testable import EnvironmentKit + +final class EnvironmentKitTests: XCTestCase { + func testExample() throws { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct + // results. + // XCTAssertEqual(EnvironmentKit().text, "Hello, World!") + } +} diff --git a/Localization/en.lproj/Localizable.strings b/Localization/en.lproj/Localizable.strings index 611a6f2..9181c01 100644 --- a/Localization/en.lproj/Localizable.strings +++ b/Localization/en.lproj/Localizable.strings @@ -110,6 +110,8 @@ "userProfile.error.block" = "Block/unblock action failed."; "userProfile.error.relationship" = "Relationship action failed."; "userProfile.title.edit" = "Edit"; +"userProfile.title.muted" = "Muted"; +"userProfile.title.blocked" = "Blocked"; // Mark: Notifications view. "notifications.navigationBar.title" = "Notifications"; diff --git a/Localization/eu.lproj/Localizable.strings b/Localization/eu.lproj/Localizable.strings index 77c000e..45c9ad8 100644 --- a/Localization/eu.lproj/Localizable.strings +++ b/Localization/eu.lproj/Localizable.strings @@ -110,6 +110,8 @@ "userProfile.error.block" = "Blokeatu/Blokeatzeari uzteak huts egin du."; "userProfile.error.relationship" = "Harreman ekintzak huts egin du."; "userProfile.title.edit" = "Editatu"; +"userProfile.title.muted" = "Muted"; +"userProfile.title.blocked" = "Blocked"; // Mark: Notifications view. "notifications.navigationBar.title" = "Jakinarazpenak"; diff --git a/Localization/pl.lproj/Localizable.strings b/Localization/pl.lproj/Localizable.strings index 520623a..5814d1a 100644 --- a/Localization/pl.lproj/Localizable.strings +++ b/Localization/pl.lproj/Localizable.strings @@ -110,6 +110,8 @@ "userProfile.error.block" = "Błąd podczas blokowania/odblokowywania użytkownika."; "userProfile.error.relationship" = "Błąd podczas zmiany relacji z użytkownikiem."; "userProfile.title.edit" = "Edytuj"; +"userProfile.title.muted" = "Wyciszony"; +"userProfile.title.blocked" = "Zablokowany"; // Mark: Notifications view. "notifications.navigationBar.title" = "Powiadomienia"; diff --git a/ServicesKit/Package.swift b/ServicesKit/Package.swift index 650cbb0..cc03b67 100644 --- a/ServicesKit/Package.swift +++ b/ServicesKit/Package.swift @@ -18,17 +18,17 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - // .package(url: /* package url */, from: "1.0.0"), .package(url: "https://github.com/omaralbeik/Drops", .upToNextMajor(from: "1.6.1")), .package(url: "https://github.com/kean/Nuke", .upToNextMajor(from: "12.0.0")), - .package(name: "PixelfedKit", path: "../PixelfedKit") + .package(name: "PixelfedKit", path: "../PixelfedKit"), + .package(name: "EnvironmentKit", path: "../EnvironmentKit") ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. // Targets can depend on other targets in this package, and on products in packages this package depends on. .target( name: "ServicesKit", - dependencies: ["Drops", "Nuke", "PixelfedKit"]), + dependencies: ["Drops", "Nuke", "PixelfedKit", "EnvironmentKit"]), .testTarget( name: "ServicesKitTests", dependencies: ["ServicesKit"]) diff --git a/Vernissage/Haptics/HapticService.swift b/ServicesKit/Sources/ServicesKit/HapticService.swift similarity index 98% rename from Vernissage/Haptics/HapticService.swift rename to ServicesKit/Sources/ServicesKit/HapticService.swift index f511701..808e3f8 100644 --- a/Vernissage/Haptics/HapticService.swift +++ b/ServicesKit/Sources/ServicesKit/HapticService.swift @@ -6,6 +6,7 @@ import CoreHaptics import UIKit +import EnvironmentKit public class HapticService { public static let shared: HapticService = .init() diff --git a/Vernissage.xcodeproj/project.pbxproj b/Vernissage.xcodeproj/project.pbxproj index 037f2f6..7dfbeaf 100644 --- a/Vernissage.xcodeproj/project.pbxproj +++ b/Vernissage.xcodeproj/project.pbxproj @@ -23,21 +23,15 @@ F8210DD92966BB7E001D9973 /* NukeUI in Frameworks */ = {isa = PBXBuildFile; productRef = F8210DD82966BB7E001D9973 /* NukeUI */; }; F8210DDD2966CF17001D9973 /* StatusData+Status.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8210DDC2966CF17001D9973 /* StatusData+Status.swift */; }; F8210DDF2966CFC7001D9973 /* AttachmentData+Attachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8210DDE2966CFC7001D9973 /* AttachmentData+Attachment.swift */; }; - F8210DE52966E160001D9973 /* Color+SystemColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8210DE42966E160001D9973 /* Color+SystemColors.swift */; }; - F8210DE72966E1D1001D9973 /* Color+Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8210DE62966E1D1001D9973 /* Color+Assets.swift */; }; F8210DEA2966E4F9001D9973 /* AnimatePlaceholderModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8210DE92966E4F9001D9973 /* AnimatePlaceholderModifier.swift */; }; F835082329BEF9C400DE3247 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F835082629BEF9C400DE3247 /* Localizable.strings */; }; F835082429BEF9C400DE3247 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F835082629BEF9C400DE3247 /* Localizable.strings */; }; - F83901A6295D8EC000456AE2 /* LabelIcon.swift in Sources */ = {isa = PBXBuildFile; fileRef = F83901A5295D8EC000456AE2 /* LabelIcon.swift */; }; F83CBEFB298298A1002972C8 /* ImageCarouselPicture.swift in Sources */ = {isa = PBXBuildFile; fileRef = F83CBEFA298298A1002972C8 /* ImageCarouselPicture.swift */; }; F83E00ED29A2237C005D25A3 /* PixelfedKit in Frameworks */ = {isa = PBXBuildFile; productRef = F83E00EC29A2237C005D25A3 /* PixelfedKit */; }; - F857F9FD297D8ED3002C109C /* ActionMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = F857F9FC297D8ED3002C109C /* ActionMenu.swift */; }; F85D4971296402DC00751DF7 /* AuthorizationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85D4970296402DC00751DF7 /* AuthorizationService.swift */; }; - F85D4973296406E700751DF7 /* BottomRight.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85D4972296406E700751DF7 /* BottomRight.swift */; }; F85D4975296407F100751DF7 /* HomeTimelineService.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85D4974296407F100751DF7 /* HomeTimelineService.swift */; }; F85D497729640A5200751DF7 /* ImageRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85D497629640A5200751DF7 /* ImageRow.swift */; }; F85D497929640B9D00751DF7 /* ImagesCarousel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85D497829640B9D00751DF7 /* ImagesCarousel.swift */; }; - F85D497B29640C8200751DF7 /* UsernameRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85D497A29640C8200751DF7 /* UsernameRow.swift */; }; F85D497D29640D5900751DF7 /* InteractionRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85D497C29640D5900751DF7 /* InteractionRow.swift */; }; F85D497F296416C800751DF7 /* CommentsSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85D497E296416C800751DF7 /* CommentsSectionView.swift */; }; F85D498329642FAC00751DF7 /* AttachmentData+Comperable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85D498229642FAC00751DF7 /* AttachmentData+Comperable.swift */; }; @@ -45,9 +39,7 @@ F85D49872964334100751DF7 /* String+Date.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85D49862964334100751DF7 /* String+Date.swift */; }; F85D4DFE29B78C8400345267 /* HashtagModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85D4DFD29B78C8400345267 /* HashtagModel.swift */; }; F85DBF8F296732E20069BF89 /* AccountsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F85DBF8E296732E20069BF89 /* AccountsView.swift */; }; - F85E132529741F05006A051D /* ActivityIndicatorView in Frameworks */ = {isa = PBXBuildFile; productRef = F85E132429741F05006A051D /* ActivityIndicatorView */; }; F86167C6297FE6CC004D1F67 /* AvatarShapesSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86167C5297FE6CC004D1F67 /* AvatarShapesSectionView.swift */; }; - F86167C8297FE781004D1F67 /* AvatarShape.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86167C7297FE781004D1F67 /* AvatarShape.swift */; }; F864F75F29BB91B400B13921 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F864F75E29BB91B400B13921 /* WidgetKit.framework */; }; F864F76129BB91B400B13921 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F864F76029BB91B400B13921 /* SwiftUI.framework */; }; F864F76429BB91B400B13921 /* VernissageWidgetBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = F864F76329BB91B400B13921 /* VernissageWidgetBundle.swift */; }; @@ -72,13 +64,6 @@ F864F78A29BB9A8000B13921 /* ApplicationSettingsHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = F866F6A429604194002E8F88 /* ApplicationSettingsHandler.swift */; }; F864F78B29BB9A8300B13921 /* StatusDataHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = F80048072961E6DE00E6868A /* StatusDataHandler.swift */; }; F864F78C29BB9A8500B13921 /* AttachmentDataHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = F80048092961EA1900E6868A /* AttachmentDataHandler.swift */; }; - F864F78E29BB9B2F00B13921 /* Theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = F89D6C3E29716E41001DA3D4 /* Theme.swift */; }; - F864F78F29BB9B3100B13921 /* AvatarShape.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86167C7297FE781004D1F67 /* AvatarShape.swift */; }; - F864F79029BB9B3300B13921 /* TintColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8CC95CD2970761D00C9C2AC /* TintColor.swift */; }; - F864F79D29BB9D3400B13921 /* AppConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = F87AEB932986C51B00434FB6 /* AppConstants.swift */; }; - F864F79F29BB9E6A00B13921 /* TintColor+Color.swift in Sources */ = {isa = PBXBuildFile; fileRef = F864F79E29BB9E6A00B13921 /* TintColor+Color.swift */; }; - F864F7A129BB9E8F00B13921 /* AvatarShape+Shape.swift in Sources */ = {isa = PBXBuildFile; fileRef = F864F7A029BB9E8F00B13921 /* AvatarShape+Shape.swift */; }; - F864F7A329BB9EC700B13921 /* Theme+ColorScheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = F864F7A229BB9EC700B13921 /* Theme+ColorScheme.swift */; }; F864F7A529BBA01D00B13921 /* CoreDataError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F864F7A429BBA01D00B13921 /* CoreDataError.swift */; }; F864F7A629BBA01D00B13921 /* CoreDataError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F864F7A429BBA01D00B13921 /* CoreDataError.swift */; }; F866F6A0296040A8002E8F88 /* ApplicationSettings+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = F866F69E296040A8002E8F88 /* ApplicationSettings+CoreDataClass.swift */; }; @@ -96,24 +81,15 @@ F86A4307299AA5E900DF7645 /* ThanksView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86A4306299AA5E900DF7645 /* ThanksView.swift */; }; F86B7214296BFDCE00EE59EC /* UserProfileHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86B7213296BFDCE00EE59EC /* UserProfileHeaderView.swift */; }; F86B7216296BFFDA00EE59EC /* UserProfileStatusesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86B7215296BFFDA00EE59EC /* UserProfileStatusesView.swift */; }; - F86B7218296C27C100EE59EC /* ActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86B7217296C27C100EE59EC /* ActionButton.swift */; }; - F86B721E296C458700EE59EC /* BlurredImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86B721D296C458700EE59EC /* BlurredImage.swift */; }; F86B7221296C49A300EE59EC /* EmptyButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86B7220296C49A300EE59EC /* EmptyButtonStyle.swift */; }; - F86B7223296C4BF500EE59EC /* ContentWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86B7222296C4BF500EE59EC /* ContentWarning.swift */; }; - F86FB555298BF83F000131F0 /* FavouriteTouch.swift in Sources */ = {isa = PBXBuildFile; fileRef = F86FB554298BF83F000131F0 /* FavouriteTouch.swift */; }; F873F14C29BDB67300DE72D1 /* UIImage+Rounded.swift in Sources */ = {isa = PBXBuildFile; fileRef = F873F14B29BDB67300DE72D1 /* UIImage+Rounded.swift */; }; F8742FC429990AFB00E9642B /* ClientError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8742FC329990AFB00E9642B /* ClientError.swift */; }; F8764187298ABB520057D362 /* ViewState.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8764186298ABB520057D362 /* ViewState.swift */; }; - F8764189298ABEC80057D362 /* ErrorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8764188298ABEC80057D362 /* ErrorView.swift */; }; - F876418B298AC1B80057D362 /* NoDataView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F876418A298AC1B80057D362 /* NoDataView.swift */; }; F876418D298AE5020057D362 /* PaginableStatusesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F876418C298AE5020057D362 /* PaginableStatusesView.swift */; }; F878842229A4A4E3003CFAD2 /* AppMetadataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = F878842129A4A4E3003CFAD2 /* AppMetadataService.swift */; }; F87AEB922986C44E00434FB6 /* AuthorizationSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = F87AEB912986C44E00434FB6 /* AuthorizationSession.swift */; }; - F87AEB942986C51B00434FB6 /* AppConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = F87AEB932986C51B00434FB6 /* AppConstants.swift */; }; F87AEB972986D16D00434FB6 /* AuthorisationError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F87AEB962986D16D00434FB6 /* AuthorisationError.swift */; }; F883402029B62AE900C3E096 /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F883401F29B62AE900C3E096 /* SearchView.swift */; }; - F8864CE929ACAF820020C534 /* TextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8864CE829ACAF820020C534 /* TextView.swift */; }; - F8864CEB29ACBAA80020C534 /* TextModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8864CEA29ACBAA80020C534 /* TextModel.swift */; }; F8864CEF29ACE90B0020C534 /* UIFont+Font.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8864CEE29ACE90B0020C534 /* UIFont+Font.swift */; }; F8864CF129ACFFB80020C534 /* View+Keyboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8864CF029ACFFB80020C534 /* View+Keyboard.swift */; }; F88AB05329B3613900345EDE /* PhotoUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88AB05229B3613900345EDE /* PhotoUrl.swift */; }; @@ -128,12 +104,12 @@ F88BC51B29E0350300CE6141 /* ClientKit in Frameworks */ = {isa = PBXBuildFile; productRef = F88BC51A29E0350300CE6141 /* ClientKit */; }; F88BC51D29E0377B00CE6141 /* AccountData+AccountModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88BC51C29E0377B00CE6141 /* AccountData+AccountModel.swift */; }; F88BC51F29E03ED300CE6141 /* ClientKit in Frameworks */ = {isa = PBXBuildFile; productRef = F88BC51E29E03ED300CE6141 /* ClientKit */; }; - F88BC52029E03F2300CE6141 /* TextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8864CE829ACAF820020C534 /* TextView.swift */; }; - F88BC52129E03F2600CE6141 /* TextModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8864CEA29ACBAA80020C534 /* TextModel.swift */; }; F88BC52229E03F6D00CE6141 /* View+Keyboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8864CF029ACFFB80020C534 /* View+Keyboard.swift */; }; - F88BC52329E03F9D00CE6141 /* Color+SystemColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8210DE42966E160001D9973 /* Color+SystemColors.swift */; }; - F88BC52429E03FA600CE6141 /* Color+Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8210DE62966E1D1001D9973 /* Color+Assets.swift */; }; F88BC52729E0431D00CE6141 /* ServicesKit in Frameworks */ = {isa = PBXBuildFile; productRef = F88BC52629E0431D00CE6141 /* ServicesKit */; }; + F88BC52A29E046D700CE6141 /* WidgetsKit in Frameworks */ = {isa = PBXBuildFile; productRef = F88BC52929E046D700CE6141 /* WidgetsKit */; }; + F88BC52D29E04BB600CE6141 /* EnvironmentKit in Frameworks */ = {isa = PBXBuildFile; productRef = F88BC52C29E04BB600CE6141 /* EnvironmentKit */; }; + F88BC52F29E04C5F00CE6141 /* EnvironmentKit in Frameworks */ = {isa = PBXBuildFile; productRef = F88BC52E29E04C5F00CE6141 /* EnvironmentKit */; }; + F88BC53029E0672000CE6141 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = F835082629BEF9C400DE3247 /* Localizable.strings */; }; F88C246C295C37B80006098B /* VernissageApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88C246B295C37B80006098B /* VernissageApp.swift */; }; F88C246E295C37B80006098B /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88C246D295C37B80006098B /* MainView.swift */; }; F88C2470295C37BB0006098B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = F88C246F295C37BB0006098B /* Assets.xcassets */; }; @@ -145,23 +121,15 @@ F88E4D48297E90CD0057491A /* TrendStatusesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88E4D47297E90CD0057491A /* TrendStatusesView.swift */; }; F88E4D4A297EA0490057491A /* RouterPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88E4D49297EA0490057491A /* RouterPath.swift */; }; F88E4D4D297EA4290057491A /* EmojiText in Frameworks */ = {isa = PBXBuildFile; productRef = F88E4D4C297EA4290057491A /* EmojiText */; }; - F88E4D54297EA7EE0057491A /* MarkdownFormattedText.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88E4D53297EA7EE0057491A /* MarkdownFormattedText.swift */; }; F88E4D56297EAD6E0057491A /* AppRouteur.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88E4D55297EAD6E0057491A /* AppRouteur.swift */; }; F88FAD21295F3944009B20C9 /* HomeFeedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88FAD20295F3944009B20C9 /* HomeFeedView.swift */; }; F88FAD27295F400E009B20C9 /* NotificationsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88FAD26295F400E009B20C9 /* NotificationsView.swift */; }; F88FAD2A295F43B8009B20C9 /* AccountData+CoreDataClass.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88FAD28295F43B8009B20C9 /* AccountData+CoreDataClass.swift */; }; F88FAD2B295F43B8009B20C9 /* AccountData+CoreDataProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88FAD29295F43B8009B20C9 /* AccountData+CoreDataProperties.swift */; }; - F88FAD2D295F4AD7009B20C9 /* ApplicationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = F88FAD2C295F4AD7009B20C9 /* ApplicationState.swift */; }; F8911A1729DE914D00770F44 /* NavigationMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8911A1629DE914D00770F44 /* NavigationMenu.swift */; }; - F8911A1A29DEA0F500770F44 /* MenuPosition.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8911A1929DEA0F500770F44 /* MenuPosition.swift */; }; - F8911A1B29DEA0F500770F44 /* MenuPosition.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8911A1929DEA0F500770F44 /* MenuPosition.swift */; }; F891E7CE29C35BF50022C449 /* ImageRowItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F891E7CD29C35BF50022C449 /* ImageRowItem.swift */; }; F891E7D029C368750022C449 /* ImageRowItemAsync.swift in Sources */ = {isa = PBXBuildFile; fileRef = F891E7CF29C368750022C449 /* ImageRowItemAsync.swift */; }; - F897978829681B9C00B22335 /* UserAvatar.swift in Sources */ = {isa = PBXBuildFile; fileRef = F897978729681B9C00B22335 /* UserAvatar.swift */; }; - F897978A2968314A00B22335 /* LoadingIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F89797892968314A00B22335 /* LoadingIndicator.swift */; }; - F897978D2968369600B22335 /* HapticService.swift in Sources */ = {isa = PBXBuildFile; fileRef = F897978C2968369600B22335 /* HapticService.swift */; }; F897978F29684BCB00B22335 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F897978E29684BCB00B22335 /* LoadingView.swift */; }; - F8984E4D296B648000A2610F /* UIImage+Blurhash.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8984E4C296B648000A2610F /* UIImage+Blurhash.swift */; }; F898DE702972868A004B4A6A /* String+Empty.swift in Sources */ = {isa = PBXBuildFile; fileRef = F898DE6F2972868A004B4A6A /* String+Empty.swift */; }; F8996DEB2971D29D0043EEC6 /* View+Transition.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8996DEA2971D29D0043EEC6 /* View+Transition.swift */; }; F89992C9296D6DC7005994BF /* CommentBodyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F89992C8296D6DC7005994BF /* CommentBodyView.swift */; }; @@ -172,12 +140,10 @@ F89B5CC029D019B600549F2F /* HTMLString in Frameworks */ = {isa = PBXBuildFile; productRef = F89B5CBF29D019B600549F2F /* HTMLString */; }; F89B5CC229D01BF700549F2F /* InstanceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F89B5CC129D01BF700549F2F /* InstanceView.swift */; }; F89CEB802984198600A1376F /* AttachmentData+HighestImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = F89CEB7F2984198600A1376F /* AttachmentData+HighestImage.swift */; }; - F89D6C3F29716E41001DA3D4 /* Theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = F89D6C3E29716E41001DA3D4 /* Theme.swift */; }; F89D6C4229717FDC001DA3D4 /* AccountsSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F89D6C4129717FDC001DA3D4 /* AccountsSectionView.swift */; }; F89D6C4429718092001DA3D4 /* AccentsSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F89D6C4329718092001DA3D4 /* AccentsSectionView.swift */; }; F89D6C4629718193001DA3D4 /* GeneralSectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F89D6C4529718193001DA3D4 /* GeneralSectionView.swift */; }; F89D6C4A297196FF001DA3D4 /* ImageViewer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F89D6C49297196FF001DA3D4 /* ImageViewer.swift */; }; - F89F57AE29D1B82700001EE3 /* TagWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = F89F57AD29D1B82600001EE3 /* TagWidget.swift */; }; F89F57B029D1C11200001EE3 /* RelationshipModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F89F57AF29D1C11200001EE3 /* RelationshipModel.swift */; }; F8A93D7E2965FD89001D8331 /* UserProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8A93D7D2965FD89001D8331 /* UserProfileView.swift */; }; F8AD061329A565620042F111 /* String+Random.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8AD061229A565620042F111 /* String+Random.swift */; }; @@ -191,7 +157,6 @@ F8C5E56229892CC300ADF6A7 /* FirstAppear.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8C5E56129892CC300ADF6A7 /* FirstAppear.swift */; }; F8CAE63E29B8902D001E0372 /* ClearButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8CAE63D29B8902D001E0372 /* ClearButton.swift */; }; F8CAE64029B8E6E1001E0372 /* UIApplication+Window.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8CAE63F29B8E6E1001E0372 /* UIApplication+Window.swift */; }; - F8CC95CE2970761D00C9C2AC /* TintColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8CC95CD2970761D00C9C2AC /* TintColor.swift */; }; F8CEEDF829ABADDD00DBED66 /* UIImage+Size.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8CEEDF729ABADDD00DBED66 /* UIImage+Size.swift */; }; F8CEEDFA29ABAFD200DBED66 /* ImageFileTranseferable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8CEEDF929ABAFD200DBED66 /* ImageFileTranseferable.swift */; }; F8D5444329D4066C002225D6 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8D5444229D4066C002225D6 /* AppDelegate.swift */; }; @@ -209,7 +174,6 @@ F8FA9919299FA35A007AB130 /* PhotoAttachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8FA9918299FA35A007AB130 /* PhotoAttachment.swift */; }; F8FA991C299FA8C2007AB130 /* ImageUploadView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8FA991B299FA8C2007AB130 /* ImageUploadView.swift */; }; F8FA991E299FAB92007AB130 /* PhotoEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8FA991D299FAB92007AB130 /* PhotoEditorView.swift */; }; - F8FA9920299FDDC3007AB130 /* TextInputField.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8FA991F299FDDC3007AB130 /* TextInputField.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -258,22 +222,16 @@ F8210DCE2966B600001D9973 /* ImageRowAsync.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageRowAsync.swift; sourceTree = ""; }; F8210DDC2966CF17001D9973 /* StatusData+Status.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "StatusData+Status.swift"; sourceTree = ""; }; F8210DDE2966CFC7001D9973 /* AttachmentData+Attachment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AttachmentData+Attachment.swift"; sourceTree = ""; }; - F8210DE42966E160001D9973 /* Color+SystemColors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+SystemColors.swift"; sourceTree = ""; }; - F8210DE62966E1D1001D9973 /* Color+Assets.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+Assets.swift"; sourceTree = ""; }; F8210DE92966E4F9001D9973 /* AnimatePlaceholderModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnimatePlaceholderModifier.swift; sourceTree = ""; }; F835082529BEF9C400DE3247 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; F835082729BEFA1E00DE3247 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/Localizable.strings; sourceTree = ""; }; F837269429A221420098D3C4 /* PixelfedKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = PixelfedKit; sourceTree = ""; }; - F83901A5295D8EC000456AE2 /* LabelIcon.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelIcon.swift; sourceTree = ""; }; F83CBEFA298298A1002972C8 /* ImageCarouselPicture.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageCarouselPicture.swift; sourceTree = ""; }; F844F42429D2DC39000DD896 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - F857F9FC297D8ED3002C109C /* ActionMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionMenu.swift; sourceTree = ""; }; F85D4970296402DC00751DF7 /* AuthorizationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationService.swift; sourceTree = ""; }; - F85D4972296406E700751DF7 /* BottomRight.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomRight.swift; sourceTree = ""; }; F85D4974296407F100751DF7 /* HomeTimelineService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeTimelineService.swift; sourceTree = ""; }; F85D497629640A5200751DF7 /* ImageRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageRow.swift; sourceTree = ""; }; F85D497829640B9D00751DF7 /* ImagesCarousel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImagesCarousel.swift; sourceTree = ""; }; - F85D497A29640C8200751DF7 /* UsernameRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UsernameRow.swift; sourceTree = ""; }; F85D497C29640D5900751DF7 /* InteractionRow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InteractionRow.swift; sourceTree = ""; }; F85D497E296416C800751DF7 /* CommentsSectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommentsSectionView.swift; sourceTree = ""; }; F85D498229642FAC00751DF7 /* AttachmentData+Comperable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AttachmentData+Comperable.swift"; sourceTree = ""; }; @@ -282,7 +240,6 @@ F85D4DFD29B78C8400345267 /* HashtagModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HashtagModel.swift; sourceTree = ""; }; F85DBF8E296732E20069BF89 /* AccountsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsView.swift; sourceTree = ""; }; F86167C5297FE6CC004D1F67 /* AvatarShapesSectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarShapesSectionView.swift; sourceTree = ""; }; - F86167C7297FE781004D1F67 /* AvatarShape.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AvatarShape.swift; sourceTree = ""; }; F864F75D29BB91B400B13921 /* VernissageWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = VernissageWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; F864F75E29BB91B400B13921 /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; F864F76029BB91B400B13921 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; @@ -294,9 +251,6 @@ F864F77329BB929A00B13921 /* Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Provider.swift; sourceTree = ""; }; F864F77729BB930000B13921 /* WidgetEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetEntry.swift; sourceTree = ""; }; F864F77B29BB982100B13921 /* ImageFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageFetcher.swift; sourceTree = ""; }; - F864F79E29BB9E6A00B13921 /* TintColor+Color.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TintColor+Color.swift"; sourceTree = ""; }; - F864F7A029BB9E8F00B13921 /* AvatarShape+Shape.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AvatarShape+Shape.swift"; sourceTree = ""; }; - F864F7A229BB9EC700B13921 /* Theme+ColorScheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Theme+ColorScheme.swift"; sourceTree = ""; }; F864F7A429BBA01D00B13921 /* CoreDataError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreDataError.swift; sourceTree = ""; }; F866F69E296040A8002E8F88 /* ApplicationSettings+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ApplicationSettings+CoreDataClass.swift"; sourceTree = ""; }; F866F69F296040A8002E8F88 /* ApplicationSettings+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ApplicationSettings+CoreDataProperties.swift"; sourceTree = ""; }; @@ -314,24 +268,15 @@ F86A4306299AA5E900DF7645 /* ThanksView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThanksView.swift; sourceTree = ""; }; F86B7213296BFDCE00EE59EC /* UserProfileHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfileHeaderView.swift; sourceTree = ""; }; F86B7215296BFFDA00EE59EC /* UserProfileStatusesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfileStatusesView.swift; sourceTree = ""; }; - F86B7217296C27C100EE59EC /* ActionButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionButton.swift; sourceTree = ""; }; - F86B721D296C458700EE59EC /* BlurredImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlurredImage.swift; sourceTree = ""; }; F86B7220296C49A300EE59EC /* EmptyButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmptyButtonStyle.swift; sourceTree = ""; }; - F86B7222296C4BF500EE59EC /* ContentWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentWarning.swift; sourceTree = ""; }; - F86FB554298BF83F000131F0 /* FavouriteTouch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavouriteTouch.swift; sourceTree = ""; }; F873F14B29BDB67300DE72D1 /* UIImage+Rounded.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Rounded.swift"; sourceTree = ""; }; F8742FC329990AFB00E9642B /* ClientError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClientError.swift; sourceTree = ""; }; F8764186298ABB520057D362 /* ViewState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewState.swift; sourceTree = ""; }; - F8764188298ABEC80057D362 /* ErrorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorView.swift; sourceTree = ""; }; - F876418A298AC1B80057D362 /* NoDataView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoDataView.swift; sourceTree = ""; }; F876418C298AE5020057D362 /* PaginableStatusesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaginableStatusesView.swift; sourceTree = ""; }; F878842129A4A4E3003CFAD2 /* AppMetadataService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppMetadataService.swift; sourceTree = ""; }; F87AEB912986C44E00434FB6 /* AuthorizationSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorizationSession.swift; sourceTree = ""; }; - F87AEB932986C51B00434FB6 /* AppConstants.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppConstants.swift; sourceTree = ""; }; F87AEB962986D16D00434FB6 /* AuthorisationError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorisationError.swift; sourceTree = ""; }; F883401F29B62AE900C3E096 /* SearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchView.swift; sourceTree = ""; }; - F8864CE829ACAF820020C534 /* TextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextView.swift; sourceTree = ""; }; - F8864CEA29ACBAA80020C534 /* TextModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextModel.swift; sourceTree = ""; }; F8864CEE29ACE90B0020C534 /* UIFont+Font.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIFont+Font.swift"; sourceTree = ""; }; F8864CF029ACFFB80020C534 /* View+Keyboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+Keyboard.swift"; sourceTree = ""; }; F88AB05229B3613900345EDE /* PhotoUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoUrl.swift; sourceTree = ""; }; @@ -348,6 +293,8 @@ F88BC51929E0344000CE6141 /* ClientKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = ClientKit; sourceTree = ""; }; F88BC51C29E0377B00CE6141 /* AccountData+AccountModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AccountData+AccountModel.swift"; sourceTree = ""; }; F88BC52529E0421F00CE6141 /* ServicesKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = ServicesKit; sourceTree = ""; }; + F88BC52829E0467400CE6141 /* WidgetsKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = WidgetsKit; sourceTree = ""; }; + F88BC52B29E04AC200CE6141 /* EnvironmentKit */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = EnvironmentKit; sourceTree = ""; }; F88C2468295C37B80006098B /* Vernissage.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Vernissage.app; sourceTree = BUILT_PRODUCTS_DIR; }; F88C246B295C37B80006098B /* VernissageApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VernissageApp.swift; sourceTree = ""; }; F88C246D295C37B80006098B /* MainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainView.swift; sourceTree = ""; }; @@ -359,23 +306,16 @@ F88E4D41297E69FD0057491A /* StatusesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StatusesView.swift; sourceTree = ""; }; F88E4D47297E90CD0057491A /* TrendStatusesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrendStatusesView.swift; sourceTree = ""; }; F88E4D49297EA0490057491A /* RouterPath.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RouterPath.swift; sourceTree = ""; }; - F88E4D53297EA7EE0057491A /* MarkdownFormattedText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarkdownFormattedText.swift; sourceTree = ""; }; F88E4D55297EAD6E0057491A /* AppRouteur.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppRouteur.swift; sourceTree = ""; }; F88FAD20295F3944009B20C9 /* HomeFeedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeFeedView.swift; sourceTree = ""; }; F88FAD26295F400E009B20C9 /* NotificationsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationsView.swift; sourceTree = ""; }; F88FAD28295F43B8009B20C9 /* AccountData+CoreDataClass.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AccountData+CoreDataClass.swift"; sourceTree = ""; }; F88FAD29295F43B8009B20C9 /* AccountData+CoreDataProperties.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AccountData+CoreDataProperties.swift"; sourceTree = ""; }; - F88FAD2C295F4AD7009B20C9 /* ApplicationState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ApplicationState.swift; sourceTree = ""; }; F8911A1629DE914D00770F44 /* NavigationMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationMenu.swift; sourceTree = ""; }; F8911A1829DE9E5500770F44 /* Vernissage-007.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Vernissage-007.xcdatamodel"; sourceTree = ""; }; - F8911A1929DEA0F500770F44 /* MenuPosition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuPosition.swift; sourceTree = ""; }; F891E7CD29C35BF50022C449 /* ImageRowItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageRowItem.swift; sourceTree = ""; }; F891E7CF29C368750022C449 /* ImageRowItemAsync.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageRowItemAsync.swift; sourceTree = ""; }; - F897978729681B9C00B22335 /* UserAvatar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserAvatar.swift; sourceTree = ""; }; - F89797892968314A00B22335 /* LoadingIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingIndicator.swift; sourceTree = ""; }; - F897978C2968369600B22335 /* HapticService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HapticService.swift; sourceTree = ""; }; F897978E29684BCB00B22335 /* LoadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoadingView.swift; sourceTree = ""; }; - F8984E4C296B648000A2610F /* UIImage+Blurhash.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Blurhash.swift"; sourceTree = ""; }; F898DE6F2972868A004B4A6A /* String+Empty.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Empty.swift"; sourceTree = ""; }; F8996DEA2971D29D0043EEC6 /* View+Transition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+Transition.swift"; sourceTree = ""; }; F89992C8296D6DC7005994BF /* CommentBodyView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommentBodyView.swift; sourceTree = ""; }; @@ -385,13 +325,11 @@ F89AC00629A208CC00F4159F /* PlaceSelectorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceSelectorView.swift; sourceTree = ""; }; F89B5CC129D01BF700549F2F /* InstanceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InstanceView.swift; sourceTree = ""; }; F89CEB7F2984198600A1376F /* AttachmentData+HighestImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "AttachmentData+HighestImage.swift"; sourceTree = ""; }; - F89D6C3E29716E41001DA3D4 /* Theme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Theme.swift; sourceTree = ""; }; F89D6C4129717FDC001DA3D4 /* AccountsSectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountsSectionView.swift; sourceTree = ""; }; F89D6C4329718092001DA3D4 /* AccentsSectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccentsSectionView.swift; sourceTree = ""; }; F89D6C4529718193001DA3D4 /* GeneralSectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GeneralSectionView.swift; sourceTree = ""; }; F89D6C49297196FF001DA3D4 /* ImageViewer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageViewer.swift; sourceTree = ""; }; F89F0605299139F6003DC875 /* Vernissage-002.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Vernissage-002.xcdatamodel"; sourceTree = ""; }; - F89F57AD29D1B82600001EE3 /* TagWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TagWidget.swift; sourceTree = ""; }; F89F57AF29D1C11200001EE3 /* RelationshipModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelationshipModel.swift; sourceTree = ""; }; F8A93D7D2965FD89001D8331 /* UserProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserProfileView.swift; sourceTree = ""; }; F8AD061229A565620042F111 /* String+Random.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "String+Random.swift"; sourceTree = ""; }; @@ -411,7 +349,6 @@ F8CAE63D29B8902D001E0372 /* ClearButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClearButton.swift; sourceTree = ""; }; F8CAE63F29B8E6E1001E0372 /* UIApplication+Window.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIApplication+Window.swift"; sourceTree = ""; }; F8CAE64129B8F1AF001E0372 /* Vernissage-005.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Vernissage-005.xcdatamodel"; sourceTree = ""; }; - F8CC95CD2970761D00C9C2AC /* TintColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TintColor.swift; sourceTree = ""; }; F8CEEDF729ABADDD00DBED66 /* UIImage+Size.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+Size.swift"; sourceTree = ""; }; F8CEEDF929ABAFD200DBED66 /* ImageFileTranseferable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageFileTranseferable.swift; sourceTree = ""; }; F8D5444229D4066C002225D6 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -432,7 +369,6 @@ F8FA9918299FA35A007AB130 /* PhotoAttachment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoAttachment.swift; sourceTree = ""; }; F8FA991B299FA8C2007AB130 /* ImageUploadView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageUploadView.swift; sourceTree = ""; }; F8FA991D299FAB92007AB130 /* PhotoEditorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhotoEditorView.swift; sourceTree = ""; }; - F8FA991F299FDDC3007AB130 /* TextInputField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextInputField.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -443,6 +379,7 @@ F864F76129BB91B400B13921 /* SwiftUI.framework in Frameworks */, F864F77A29BB94A800B13921 /* PixelfedKit in Frameworks */, F864F75F29BB91B400B13921 /* WidgetKit.framework in Frameworks */, + F88BC52F29E04C5F00CE6141 /* EnvironmentKit in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -466,9 +403,10 @@ F88E4D4D297EA4290057491A /* EmojiText in Frameworks */, F8210DD72966BB7E001D9973 /* NukeExtensions in Frameworks */, F83E00ED29A2237C005D25A3 /* PixelfedKit in Frameworks */, + F88BC52D29E04BB600CE6141 /* EnvironmentKit in Frameworks */, F8210DD92966BB7E001D9973 /* NukeUI in Frameworks */, - F85E132529741F05006A051D /* ActivityIndicatorView in Frameworks */, F89B5CC029D019B600549F2F /* HTMLString in Frameworks */, + F88BC52A29E046D700CE6141 /* WidgetsKit in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -547,18 +485,12 @@ F85D49862964334100751DF7 /* String+Date.swift */, F898DE6F2972868A004B4A6A /* String+Empty.swift */, F8AD061229A565620042F111 /* String+Random.swift */, - F8210DE42966E160001D9973 /* Color+SystemColors.swift */, - F8210DE62966E1D1001D9973 /* Color+Assets.swift */, - F8984E4C296B648000A2610F /* UIImage+Blurhash.swift */, F8CEEDF729ABADDD00DBED66 /* UIImage+Size.swift */, F8E6D03429CE161B00416CCA /* UIImage+Jpeg.swift */, F8996DEA2971D29D0043EEC6 /* View+Transition.swift */, F8864CEE29ACE90B0020C534 /* UIFont+Font.swift */, F8864CF029ACFFB80020C534 /* View+Keyboard.swift */, F8CAE63F29B8E6E1001E0372 /* UIApplication+Window.swift */, - F864F79E29BB9E6A00B13921 /* TintColor+Color.swift */, - F864F7A029BB9E8F00B13921 /* AvatarShape+Shape.swift */, - F864F7A229BB9EC700B13921 /* Theme+ColorScheme.swift */, F873F14B29BDB67300DE72D1 /* UIImage+Rounded.swift */, F8E9392029C0DA7E002BB3B8 /* LazyImageState+ImageResponse.swift */, F88BC51C29E0377B00CE6141 /* AccountData+AccountModel.swift */, @@ -620,31 +552,16 @@ F83901A2295D863B00456AE2 /* Widgets */ = { isa = PBXGroup; children = ( - F83901A5295D8EC000456AE2 /* LabelIcon.swift */, - F85D4972296406E700751DF7 /* BottomRight.swift */, F85D497629640A5200751DF7 /* ImageRow.swift */, F891E7CD29C35BF50022C449 /* ImageRowItem.swift */, F8210DCE2966B600001D9973 /* ImageRowAsync.swift */, F891E7CF29C368750022C449 /* ImageRowItemAsync.swift */, F85D497829640B9D00751DF7 /* ImagesCarousel.swift */, F83CBEFA298298A1002972C8 /* ImageCarouselPicture.swift */, - F89F57AD29D1B82600001EE3 /* TagWidget.swift */, - F85D497A29640C8200751DF7 /* UsernameRow.swift */, F85D497C29640D5900751DF7 /* InteractionRow.swift */, - F897978729681B9C00B22335 /* UserAvatar.swift */, - F89797892968314A00B22335 /* LoadingIndicator.swift */, F88AB05429B3626300345EDE /* ImageGrid.swift */, F8AFF7C329B25EF40087D083 /* ImagesGrid.swift */, - F86B7217296C27C100EE59EC /* ActionButton.swift */, - F86B721D296C458700EE59EC /* BlurredImage.swift */, - F86B7222296C4BF500EE59EC /* ContentWarning.swift */, F89D6C49297196FF001DA3D4 /* ImageViewer.swift */, - F857F9FC297D8ED3002C109C /* ActionMenu.swift */, - F88E4D53297EA7EE0057491A /* MarkdownFormattedText.swift */, - F8764188298ABEC80057D362 /* ErrorView.swift */, - F876418A298AC1B80057D362 /* NoDataView.swift */, - F86FB554298BF83F000131F0 /* FavouriteTouch.swift */, - F8FA991F299FDDC3007AB130 /* TextInputField.swift */, ); path = Widgets; sourceTree = ""; @@ -667,18 +584,6 @@ path = VernissageWidget; sourceTree = ""; }; - F864F79C29BB9D2400B13921 /* Models */ = { - isa = PBXGroup; - children = ( - F8CC95CD2970761D00C9C2AC /* TintColor.swift */, - F86167C7297FE781004D1F67 /* AvatarShape.swift */, - F89D6C3E29716E41001DA3D4 /* Theme.swift */, - F87AEB932986C51B00434FB6 /* AppConstants.swift */, - F8911A1929DEA0F500770F44 /* MenuPosition.swift */, - ); - path = Models; - sourceTree = ""; - }; F86B721F296C498B00EE59EC /* Styles */ = { isa = PBXGroup; children = ( @@ -747,15 +652,6 @@ path = Subviews; sourceTree = ""; }; - F8864CF229AD05420020C534 /* TextView */ = { - isa = PBXGroup; - children = ( - F8864CEA29ACBAA80020C534 /* TextModel.swift */, - F8864CE829ACAF820020C534 /* TextView.swift */, - ); - path = TextView; - sourceTree = ""; - }; F88BC50329E02F3900CE6141 /* VernissageShareExtension */ = { isa = PBXGroup; children = ( @@ -771,6 +667,8 @@ F88C245F295C37B80006098B = { isa = PBXGroup; children = ( + F88BC52B29E04AC200CE6141 /* EnvironmentKit */, + F88BC52829E0467400CE6141 /* WidgetsKit */, F88BC52529E0421F00CE6141 /* ServicesKit */, F837269429A221420098D3C4 /* PixelfedKit */, F88BC51929E0344000CE6141 /* ClientKit */, @@ -778,10 +676,8 @@ F844F42429D2DC39000DD896 /* LICENSE */, F8B3699A29D86EB600BE3808 /* .swiftlint.yml */, F8B3699B29D86EBD00BE3808 /* .gitignore */, - F8864CF229AD05420020C534 /* TextView */, F8CB3DF029D80B1E00CDAE5A /* Resources */, F835081F29BEF88600DE3247 /* Localization */, - F864F79C29BB9D2400B13921 /* Models */, F8341F96295C6427009C8EE6 /* CoreData */, F88C246A295C37B80006098B /* Vernissage */, F864F76229BB91B400B13921 /* VernissageWidget */, @@ -808,7 +704,6 @@ F866F6A829604FFF002E8F88 /* Info.plist */, F802884D297AEEAA000BDD51 /* Errors */, F86B721F296C498B00EE59EC /* Styles */, - F897978B2968367E00B22335 /* Haptics */, F8210DE82966E4D8001D9973 /* Modifiers */, F88FAD30295F5010009B20C9 /* Services */, F8C5E56029892C8A00ADF6A7 /* ViewModifiers */, @@ -849,14 +744,6 @@ path = Services; sourceTree = ""; }; - F897978B2968367E00B22335 /* Haptics */ = { - isa = PBXGroup; - children = ( - F897978C2968369600B22335 /* HapticService.swift */, - ); - path = Haptics; - sourceTree = ""; - }; F89992C5296D3DF8005994BF /* Frameworks */ = { isa = PBXGroup; children = ( @@ -897,7 +784,6 @@ F8B9B354298D4B88009CC69C /* EnvironmentObjects */ = { isa = PBXGroup; children = ( - F88FAD2C295F4AD7009B20C9 /* ApplicationState.swift */, F86A4302299A9AF500DF7645 /* TipsStore.swift */, ); path = EnvironmentObjects; @@ -966,6 +852,7 @@ name = VernissageWidgetExtension; packageProductDependencies = ( F864F77929BB94A800B13921 /* PixelfedKit */, + F88BC52E29E04C5F00CE6141 /* EnvironmentKit */, ); productName = VernissageWidgetExtension; productReference = F864F75D29BB91B400B13921 /* VernissageWidgetExtension.appex */; @@ -1013,12 +900,13 @@ F8210DD42966BB7E001D9973 /* Nuke */, F8210DD62966BB7E001D9973 /* NukeExtensions */, F8210DD82966BB7E001D9973 /* NukeUI */, - F85E132429741F05006A051D /* ActivityIndicatorView */, F88E4D4C297EA4290057491A /* EmojiText */, F83E00EC29A2237C005D25A3 /* PixelfedKit */, F89B5CBF29D019B600549F2F /* HTMLString */, F88BC51A29E0350300CE6141 /* ClientKit */, F88BC52629E0431D00CE6141 /* ServicesKit */, + F88BC52929E046D700CE6141 /* WidgetsKit */, + F88BC52C29E04BB600CE6141 /* EnvironmentKit */, ); productName = Vernissage; productReference = F88C2468295C37B80006098B /* Vernissage.app */; @@ -1058,7 +946,6 @@ mainGroup = F88C245F295C37B80006098B; packageReferences = ( F8210DD32966BB7E001D9973 /* XCRemoteSwiftPackageReference "Nuke" */, - F85E132329741F05006A051D /* XCRemoteSwiftPackageReference "ActivityIndicatorView" */, F88E4D4B297EA4290057491A /* XCRemoteSwiftPackageReference "EmojiText" */, F89B5CBE29D019B600549F2F /* XCRemoteSwiftPackageReference "HTMLString" */, ); @@ -1087,6 +974,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + F88BC53029E0672000CE6141 /* Localizable.strings in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1132,21 +1020,16 @@ F864F77829BB930000B13921 /* WidgetEntry.swift in Sources */, F864F77529BB92CE00B13921 /* Provider.swift in Sources */, F864F77629BB92CE00B13921 /* VernissageWidgetEntryView.swift in Sources */, - F864F79D29BB9D3400B13921 /* AppConstants.swift in Sources */, F864F77C29BB982100B13921 /* ImageFetcher.swift in Sources */, F8F6E44229BC58F20004795E /* Vernissage.xcdatamodeld in Sources */, F8F6E44C29BCC1F70004795E /* SmallWidgetView.swift in Sources */, F864F76629BB91B400B13921 /* VernissageWidget.swift in Sources */, F8F6E44D29BCC1F90004795E /* MediumWidgetView.swift in Sources */, - F864F79029BB9B3300B13921 /* TintColor.swift in Sources */, F8F6E44E29BCC1FB0004795E /* LargeWidgetView.swift in Sources */, F864F76429BB91B400B13921 /* VernissageWidgetBundle.swift in Sources */, - F864F78F29BB9B3100B13921 /* AvatarShape.swift in Sources */, - F864F78E29BB9B2F00B13921 /* Theme.swift in Sources */, F864F77D29BB9A4600B13921 /* AttachmentData+CoreDataClass.swift in Sources */, F864F7A629BBA01D00B13921 /* CoreDataError.swift in Sources */, F864F77E29BB9A4900B13921 /* AttachmentData+CoreDataProperties.swift in Sources */, - F8911A1B29DEA0F500770F44 /* MenuPosition.swift in Sources */, F864F78229BB9A6500B13921 /* StatusData+CoreDataClass.swift in Sources */, F864F78329BB9A6800B13921 /* StatusData+CoreDataProperties.swift in Sources */, F864F78429BB9A6E00B13921 /* ApplicationSettings+CoreDataClass.swift in Sources */, @@ -1168,11 +1051,7 @@ files = ( F88BC50529E02F3900CE6141 /* ShareViewController.swift in Sources */, F88BC52229E03F6D00CE6141 /* View+Keyboard.swift in Sources */, - F88BC52429E03FA600CE6141 /* Color+Assets.swift in Sources */, - F88BC52129E03F2600CE6141 /* TextModel.swift in Sources */, - F88BC52029E03F2300CE6141 /* TextView.swift in Sources */, F88BC51629E0307F00CE6141 /* NotificationsName.swift in Sources */, - F88BC52329E03F9D00CE6141 /* Color+SystemColors.swift in Sources */, F88BC51329E02FD800CE6141 /* ComposeView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1189,14 +1068,9 @@ F89D6C4229717FDC001DA3D4 /* AccountsSectionView.swift in Sources */, F80048082961E6DE00E6868A /* StatusDataHandler.swift in Sources */, F866F6A0296040A8002E8F88 /* ApplicationSettings+CoreDataClass.swift in Sources */, - F8764189298ABEC80057D362 /* ErrorView.swift in Sources */, - F864F7A129BB9E8F00B13921 /* AvatarShape+Shape.swift in Sources */, F8210DEA2966E4F9001D9973 /* AnimatePlaceholderModifier.swift in Sources */, F8B08862299435C9002AB40A /* SupportView.swift in Sources */, - F8984E4D296B648000A2610F /* UIImage+Blurhash.swift in Sources */, F8CAE64029B8E6E1001E0372 /* UIApplication+Window.swift in Sources */, - F897978A2968314A00B22335 /* LoadingIndicator.swift in Sources */, - F8210DE52966E160001D9973 /* Color+SystemColors.swift in Sources */, F8CAE63E29B8902D001E0372 /* ClearButton.swift in Sources */, F8B05ACB29B489B100857221 /* HapticsSectionView.swift in Sources */, F88FAD2B295F43B8009B20C9 /* AccountData+CoreDataProperties.swift in Sources */, @@ -1213,47 +1087,36 @@ F88FAD2A295F43B8009B20C9 /* AccountData+CoreDataClass.swift in Sources */, F85DBF8F296732E20069BF89 /* AccountsView.swift in Sources */, F85D49872964334100751DF7 /* String+Date.swift in Sources */, - F897978829681B9C00B22335 /* UserAvatar.swift in Sources */, F805DCF129DBEF83006A1FD9 /* ReportView.swift in Sources */, F8B0886029943498002AB40A /* OtherSectionView.swift in Sources */, F808641429756666009F035C /* NotificationRowView.swift in Sources */, F8210DDD2966CF17001D9973 /* StatusData+Status.swift in Sources */, F8210DCF2966B600001D9973 /* ImageRowAsync.swift in Sources */, F85D498329642FAC00751DF7 /* AttachmentData+Comperable.swift in Sources */, - F85D497B29640C8200751DF7 /* UsernameRow.swift in Sources */, F86A4305299AA12800DF7645 /* PurchaseError.swift in Sources */, F8B05ACE29B48E2F00857221 /* MediaSettingsView.swift in Sources */, F89D6C4429718092001DA3D4 /* AccentsSectionView.swift in Sources */, F88E4D42297E69FD0057491A /* StatusesView.swift in Sources */, F8E9391F29C0BCFA002BB3B8 /* ImageContextMenu.swift in Sources */, - F86FB555298BF83F000131F0 /* FavouriteTouch.swift in Sources */, F878842229A4A4E3003CFAD2 /* AppMetadataService.swift in Sources */, F85D497929640B9D00751DF7 /* ImagesCarousel.swift in Sources */, - F89D6C3F29716E41001DA3D4 /* Theme.swift in Sources */, - F8864CE929ACAF820020C534 /* TextView.swift in Sources */, F89AC00529A1F9B500F4159F /* AppMetadata.swift in Sources */, - F8CC95CE2970761D00C9C2AC /* TintColor.swift in Sources */, F80048052961850500E6868A /* StatusData+CoreDataClass.swift in Sources */, F891E7CE29C35BF50022C449 /* ImageRowItem.swift in Sources */, F86B7221296C49A300EE59EC /* EmptyButtonStyle.swift in Sources */, F80048042961850500E6868A /* AttachmentData+CoreDataProperties.swift in Sources */, - F86B7223296C4BF500EE59EC /* ContentWarning.swift in Sources */, F88E4D4A297EA0490057491A /* RouterPath.swift in Sources */, - F83901A6295D8EC000456AE2 /* LabelIcon.swift in Sources */, F8FA991C299FA8C2007AB130 /* ImageUploadView.swift in Sources */, F8CEEDF829ABADDD00DBED66 /* UIImage+Size.swift in Sources */, F88E4D48297E90CD0057491A /* TrendStatusesView.swift in Sources */, F800480A2961EA1900E6868A /* AttachmentDataHandler.swift in Sources */, F80048032961850500E6868A /* AttachmentData+CoreDataClass.swift in Sources */, F891E7D029C368750022C449 /* ImageRowItemAsync.swift in Sources */, - F897978D2968369600B22335 /* HapticService.swift in Sources */, F89D6C4A297196FF001DA3D4 /* ImageViewer.swift in Sources */, F8A93D7E2965FD89001D8331 /* UserProfileView.swift in Sources */, F88C246E295C37B80006098B /* MainView.swift in Sources */, - F864F7A329BB9EC700B13921 /* Theme+ColorScheme.swift in Sources */, F89AC00729A208CC00F4159F /* PlaceSelectorView.swift in Sources */, F8AFF7C429B25EF40087D083 /* ImagesGrid.swift in Sources */, - F86B721E296C458700EE59EC /* BlurredImage.swift in Sources */, F8FA9919299FA35A007AB130 /* PhotoAttachment.swift in Sources */, F88C2478295C37BB0006098B /* Vernissage.xcdatamodeld in Sources */, F8AD061329A565620042F111 /* String+Random.swift in Sources */, @@ -1262,24 +1125,18 @@ F89A46DE296EABA20062125F /* StatusPlaceholderView.swift in Sources */, F88C2482295C3A4F0006098B /* StatusView.swift in Sources */, F866F6A329604161002E8F88 /* AccountDataHandler.swift in Sources */, - F8911A1A29DEA0F500770F44 /* MenuPosition.swift in Sources */, F8996DEB2971D29D0043EEC6 /* View+Transition.swift in Sources */, - F876418B298AC1B80057D362 /* NoDataView.swift in Sources */, F8E9392129C0DA7E002BB3B8 /* LazyImageState+ImageResponse.swift in Sources */, F89D6C4629718193001DA3D4 /* GeneralSectionView.swift in Sources */, F85D497F296416C800751DF7 /* CommentsSectionView.swift in Sources */, F866F6A529604194002E8F88 /* ApplicationSettingsHandler.swift in Sources */, - F857F9FD297D8ED3002C109C /* ActionMenu.swift in Sources */, F8B0885E29942E31002AB40A /* ThirdPartyView.swift in Sources */, F8E6D03329CDD52500416CCA /* EditProfileView.swift in Sources */, F876418D298AE5020057D362 /* PaginableStatusesView.swift in Sources */, F85D49852964301800751DF7 /* StatusData+Attachments.swift in Sources */, F8764187298ABB520057D362 /* ViewState.swift in Sources */, - F864F79F29BB9E6A00B13921 /* TintColor+Color.swift in Sources */, - F8210DE72966E1D1001D9973 /* Color+Assets.swift in Sources */, F88ABD9429687CA4004EF61E /* ComposeView.swift in Sources */, F89CEB802984198600A1376F /* AttachmentData+HighestImage.swift in Sources */, - F87AEB942986C51B00434FB6 /* AppConstants.swift in Sources */, F86B7214296BFDCE00EE59EC /* UserProfileHeaderView.swift in Sources */, F85D497D29640D5900751DF7 /* InteractionRow.swift in Sources */, F86167C6297FE6CC004D1F67 /* AvatarShapesSectionView.swift in Sources */, @@ -1297,32 +1154,24 @@ F89F57B029D1C11200001EE3 /* RelationshipModel.swift in Sources */, F88AB05829B36B8200345EDE /* AccountsPhotoView.swift in Sources */, F85D4971296402DC00751DF7 /* AuthorizationService.swift in Sources */, - F89F57AE29D1B82700001EE3 /* TagWidget.swift in Sources */, F88AB05329B3613900345EDE /* PhotoUrl.swift in Sources */, F88E4D56297EAD6E0057491A /* AppRouteur.swift in Sources */, F88FAD27295F400E009B20C9 /* NotificationsView.swift in Sources */, F86B7216296BFFDA00EE59EC /* UserProfileStatusesView.swift in Sources */, F897978F29684BCB00B22335 /* LoadingView.swift in Sources */, F89992C9296D6DC7005994BF /* CommentBodyView.swift in Sources */, - F88FAD2D295F4AD7009B20C9 /* ApplicationState.swift in Sources */, - F88E4D54297EA7EE0057491A /* MarkdownFormattedText.swift in Sources */, F866F6A1296040A8002E8F88 /* ApplicationSettings+CoreDataProperties.swift in Sources */, - F8FA9920299FDDC3007AB130 /* TextInputField.swift in Sources */, F86A4303299A9AF500DF7645 /* TipsStore.swift in Sources */, F8C5E56229892CC300ADF6A7 /* FirstAppear.swift in Sources */, F8DF38E629DDB98A0047F1AA /* SocialsSectionView.swift in Sources */, F864F7A529BBA01D00B13921 /* CoreDataError.swift in Sources */, - F8864CEB29ACBAA80020C534 /* TextModel.swift in Sources */, F83CBEFB298298A1002972C8 /* ImageCarouselPicture.swift in Sources */, F89A46DC296EAACE0062125F /* SettingsView.swift in Sources */, F866F6AE29606367002E8F88 /* ApplicationViewMode.swift in Sources */, F85D4DFE29B78C8400345267 /* HashtagModel.swift in Sources */, F866F6AA29605AFA002E8F88 /* SceneDelegate.swift in Sources */, - F86167C8297FE781004D1F67 /* AvatarShape.swift in Sources */, - F85D4973296406E700751DF7 /* BottomRight.swift in Sources */, F8E6D03529CE161B00416CCA /* UIImage+Jpeg.swift in Sources */, F898DE702972868A004B4A6A /* String+Empty.swift in Sources */, - F86B7218296C27C100EE59EC /* ActionButton.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1713,14 +1562,6 @@ minimumVersion = 12.0.0; }; }; - F85E132329741F05006A051D /* XCRemoteSwiftPackageReference "ActivityIndicatorView" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/exyte/ActivityIndicatorView.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 1.0.0; - }; - }; F88E4D4B297EA4290057491A /* XCRemoteSwiftPackageReference "EmojiText" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/divadretlaw/EmojiText"; @@ -1759,11 +1600,6 @@ isa = XCSwiftPackageProductDependency; productName = PixelfedKit; }; - F85E132429741F05006A051D /* ActivityIndicatorView */ = { - isa = XCSwiftPackageProductDependency; - package = F85E132329741F05006A051D /* XCRemoteSwiftPackageReference "ActivityIndicatorView" */; - productName = ActivityIndicatorView; - }; F864F77929BB94A800B13921 /* PixelfedKit */ = { isa = XCSwiftPackageProductDependency; productName = PixelfedKit; @@ -1784,6 +1620,18 @@ isa = XCSwiftPackageProductDependency; productName = ServicesKit; }; + F88BC52929E046D700CE6141 /* WidgetsKit */ = { + isa = XCSwiftPackageProductDependency; + productName = WidgetsKit; + }; + F88BC52C29E04BB600CE6141 /* EnvironmentKit */ = { + isa = XCSwiftPackageProductDependency; + productName = EnvironmentKit; + }; + F88BC52E29E04C5F00CE6141 /* EnvironmentKit */ = { + isa = XCSwiftPackageProductDependency; + productName = EnvironmentKit; + }; F88E4D4C297EA4290057491A /* EmojiText */ = { isa = XCSwiftPackageProductDependency; package = F88E4D4B297EA4290057491A /* XCRemoteSwiftPackageReference "EmojiText" */; diff --git a/Vernissage/Extensions/UIImage+Rounded.swift b/Vernissage/Extensions/UIImage+Rounded.swift index a0e2849..bb2ea8b 100644 --- a/Vernissage/Extensions/UIImage+Rounded.swift +++ b/Vernissage/Extensions/UIImage+Rounded.swift @@ -6,6 +6,7 @@ import Foundation import SwiftUI +import EnvironmentKit extension UIImage { func roundedAvatar(avatarShape: AvatarShape) -> UIImage { diff --git a/Vernissage/SceneDelegate.swift b/Vernissage/SceneDelegate.swift index c8684d8..9447554 100644 --- a/Vernissage/SceneDelegate.swift +++ b/Vernissage/SceneDelegate.swift @@ -7,6 +7,7 @@ import SwiftUI import PixelfedKit import OAuthSwift +import EnvironmentKit class SceneDelegate: NSObject, UISceneDelegate { func scene(_ scene: UIScene, openURLContexts URLContexts: Set) { diff --git a/Vernissage/Services/AuthorizationService.swift b/Vernissage/Services/AuthorizationService.swift index df40b86..2b2bb92 100644 --- a/Vernissage/Services/AuthorizationService.swift +++ b/Vernissage/Services/AuthorizationService.swift @@ -10,6 +10,7 @@ import ClientKit import CoreData import AuthenticationServices import ServicesKit +import EnvironmentKit /// Srvice responsible for login user into the Pixelfed account. public class AuthorizationService { diff --git a/Vernissage/VernissageApp.swift b/Vernissage/VernissageApp.swift index b1f4842..62f5bc4 100644 --- a/Vernissage/VernissageApp.swift +++ b/Vernissage/VernissageApp.swift @@ -8,6 +8,7 @@ import SwiftUI import Nuke import NukeUI import ClientKit +import EnvironmentKit @main struct VernissageApp: App { diff --git a/Vernissage/ViewModifiers/NavigationMenu.swift b/Vernissage/ViewModifiers/NavigationMenu.swift index 241345e..e7a20e0 100644 --- a/Vernissage/ViewModifiers/NavigationMenu.swift +++ b/Vernissage/ViewModifiers/NavigationMenu.swift @@ -6,6 +6,7 @@ import Foundation import SwiftUI +import EnvironmentKit public extension View { func navigationMenu(menuPosition: Binding, diff --git a/Vernissage/Views/AccountsPhotoView.swift b/Vernissage/Views/AccountsPhotoView.swift index 6380290..d22c05e 100644 --- a/Vernissage/Views/AccountsPhotoView.swift +++ b/Vernissage/Views/AccountsPhotoView.swift @@ -9,6 +9,8 @@ import PixelfedKit import ClientKit import Foundation import ServicesKit +import EnvironmentKit +import WidgetsKit struct AccountsPhotoView: View { public enum ListType: Hashable { diff --git a/Vernissage/Views/AccountsView.swift b/Vernissage/Views/AccountsView.swift index 8cd9c95..342d26f 100644 --- a/Vernissage/Views/AccountsView.swift +++ b/Vernissage/Views/AccountsView.swift @@ -9,6 +9,8 @@ import PixelfedKit import ClientKit import Foundation import ServicesKit +import EnvironmentKit +import WidgetsKit struct AccountsView: View { public enum ListType: Hashable { diff --git a/Vernissage/Views/ComposeView/ComposeView.swift b/Vernissage/Views/ComposeView/ComposeView.swift index b314489..7d50cb0 100644 --- a/Vernissage/Views/ComposeView/ComposeView.swift +++ b/Vernissage/Views/ComposeView/ComposeView.swift @@ -10,6 +10,8 @@ import PixelfedKit import ClientKit import UIKit import ServicesKit +import EnvironmentKit +import WidgetsKit struct ComposeView: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Views/ComposeView/Subviews/ImageUploadView.swift b/Vernissage/Views/ComposeView/Subviews/ImageUploadView.swift index dcfd20a..4819499 100644 --- a/Vernissage/Views/ComposeView/Subviews/ImageUploadView.swift +++ b/Vernissage/Views/ComposeView/Subviews/ImageUploadView.swift @@ -5,6 +5,8 @@ // import SwiftUI +import ServicesKit +import WidgetsKit struct ImageUploadView: View { @EnvironmentObject public var routerPath: RouterPath diff --git a/Vernissage/Views/EditProfileView.swift b/Vernissage/Views/EditProfileView.swift index d2c232c..120f3d4 100644 --- a/Vernissage/Views/EditProfileView.swift +++ b/Vernissage/Views/EditProfileView.swift @@ -10,6 +10,8 @@ import PixelfedKit import ClientKit import HTMLString import ServicesKit +import WidgetsKit +import EnvironmentKit struct EditProfileView: View { @EnvironmentObject private var applicationState: ApplicationState diff --git a/Vernissage/Views/HashtagsView.swift b/Vernissage/Views/HashtagsView.swift index 605dfe0..fdf71f5 100644 --- a/Vernissage/Views/HashtagsView.swift +++ b/Vernissage/Views/HashtagsView.swift @@ -9,6 +9,8 @@ import PixelfedKit import ClientKit import Foundation import ServicesKit +import EnvironmentKit +import WidgetsKit struct HashtagsView: View { public enum ListType: Hashable { diff --git a/Vernissage/Views/HomeFeedView.swift b/Vernissage/Views/HomeFeedView.swift index 00d55bd..e2346f6 100644 --- a/Vernissage/Views/HomeFeedView.swift +++ b/Vernissage/Views/HomeFeedView.swift @@ -6,6 +6,8 @@ import SwiftUI import ServicesKit +import EnvironmentKit +import WidgetsKit struct HomeFeedView: View { @Environment(\.managedObjectContext) private var viewContext diff --git a/Vernissage/Views/InstanceView.swift b/Vernissage/Views/InstanceView.swift index 641da29..5100e61 100644 --- a/Vernissage/Views/InstanceView.swift +++ b/Vernissage/Views/InstanceView.swift @@ -9,6 +9,8 @@ import Foundation import PixelfedKit import ClientKit import ServicesKit +import EnvironmentKit +import WidgetsKit struct InstanceView: View { @EnvironmentObject private var applicationState: ApplicationState diff --git a/Vernissage/Views/MainView.swift b/Vernissage/Views/MainView.swift index 013a036..090d03b 100644 --- a/Vernissage/Views/MainView.swift +++ b/Vernissage/Views/MainView.swift @@ -10,6 +10,7 @@ import CoreData import PixelfedKit import ClientKit import ServicesKit +import EnvironmentKit struct MainView: View { @Environment(\.managedObjectContext) private var viewContext diff --git a/Vernissage/Views/NotificationsView/NotificationsView.swift b/Vernissage/Views/NotificationsView/NotificationsView.swift index 47e192f..602dade 100644 --- a/Vernissage/Views/NotificationsView/NotificationsView.swift +++ b/Vernissage/Views/NotificationsView/NotificationsView.swift @@ -8,6 +8,8 @@ import SwiftUI import PixelfedKit import ClientKit import ServicesKit +import EnvironmentKit +import WidgetsKit struct NotificationsView: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Views/NotificationsView/Subviews/NotificationRowView.swift b/Vernissage/Views/NotificationsView/Subviews/NotificationRowView.swift index 41e3383..09e2932 100644 --- a/Vernissage/Views/NotificationsView/Subviews/NotificationRowView.swift +++ b/Vernissage/Views/NotificationsView/Subviews/NotificationRowView.swift @@ -9,6 +9,8 @@ import PixelfedKit import ClientKit import NukeUI import ServicesKit +import EnvironmentKit +import WidgetsKit struct NotificationRowView: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Views/PaginableStatusesView.swift b/Vernissage/Views/PaginableStatusesView.swift index 37c75fe..be112f9 100644 --- a/Vernissage/Views/PaginableStatusesView.swift +++ b/Vernissage/Views/PaginableStatusesView.swift @@ -8,6 +8,8 @@ import SwiftUI import PixelfedKit import ClientKit import ServicesKit +import EnvironmentKit +import WidgetsKit struct PaginableStatusesView: View { public enum ListType: Hashable { diff --git a/Vernissage/Views/PhotoEditorView.swift b/Vernissage/Views/PhotoEditorView.swift index fab83fb..bead0ad 100644 --- a/Vernissage/Views/PhotoEditorView.swift +++ b/Vernissage/Views/PhotoEditorView.swift @@ -7,6 +7,7 @@ import SwiftUI import ClientKit import ServicesKit +import WidgetsKit struct PhotoEditorView: View { @EnvironmentObject var client: Client diff --git a/Vernissage/Views/PlaceSelectorView.swift b/Vernissage/Views/PlaceSelectorView.swift index db5d39c..44428b8 100644 --- a/Vernissage/Views/PlaceSelectorView.swift +++ b/Vernissage/Views/PlaceSelectorView.swift @@ -8,6 +8,8 @@ import SwiftUI import PixelfedKit import ClientKit import ServicesKit +import EnvironmentKit +import WidgetsKit struct PlaceSelectorView: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Views/ReportView.swift b/Vernissage/Views/ReportView.swift index 239a985..24be6dc 100644 --- a/Vernissage/Views/ReportView.swift +++ b/Vernissage/Views/ReportView.swift @@ -8,6 +8,7 @@ import SwiftUI import PixelfedKit import ClientKit import ServicesKit +import WidgetsKit struct ReportView: View { @EnvironmentObject private var client: Client diff --git a/Vernissage/Views/SettingsView/SettingsView.swift b/Vernissage/Views/SettingsView/SettingsView.swift index bf251fb..99a1007 100644 --- a/Vernissage/Views/SettingsView/SettingsView.swift +++ b/Vernissage/Views/SettingsView/SettingsView.swift @@ -5,6 +5,7 @@ // import SwiftUI +import EnvironmentKit struct SettingsView: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Views/SettingsView/Subviews/AccentsSectionView.swift b/Vernissage/Views/SettingsView/Subviews/AccentsSectionView.swift index 2155ef5..21df0b9 100644 --- a/Vernissage/Views/SettingsView/Subviews/AccentsSectionView.swift +++ b/Vernissage/Views/SettingsView/Subviews/AccentsSectionView.swift @@ -5,6 +5,7 @@ // import SwiftUI +import EnvironmentKit struct AccentsSectionView: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Views/SettingsView/Subviews/AccountsSectionView.swift b/Vernissage/Views/SettingsView/Subviews/AccountsSectionView.swift index 8b1bc52..0ba9cf2 100644 --- a/Vernissage/Views/SettingsView/Subviews/AccountsSectionView.swift +++ b/Vernissage/Views/SettingsView/Subviews/AccountsSectionView.swift @@ -6,6 +6,8 @@ import SwiftUI import ClientKit +import EnvironmentKit +import WidgetsKit struct AccountsSectionView: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Views/SettingsView/Subviews/AvatarShapesSectionView.swift b/Vernissage/Views/SettingsView/Subviews/AvatarShapesSectionView.swift index ee9bf00..1257f85 100644 --- a/Vernissage/Views/SettingsView/Subviews/AvatarShapesSectionView.swift +++ b/Vernissage/Views/SettingsView/Subviews/AvatarShapesSectionView.swift @@ -5,6 +5,7 @@ // import SwiftUI +import EnvironmentKit struct AvatarShapesSectionView: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Views/SettingsView/Subviews/GeneralSectionView.swift b/Vernissage/Views/SettingsView/Subviews/GeneralSectionView.swift index e962294..1b0d61c 100644 --- a/Vernissage/Views/SettingsView/Subviews/GeneralSectionView.swift +++ b/Vernissage/Views/SettingsView/Subviews/GeneralSectionView.swift @@ -5,6 +5,7 @@ // import SwiftUI +import EnvironmentKit struct GeneralSectionView: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Views/SettingsView/Subviews/HapticsSectionView.swift b/Vernissage/Views/SettingsView/Subviews/HapticsSectionView.swift index d9610bb..82baeef 100644 --- a/Vernissage/Views/SettingsView/Subviews/HapticsSectionView.swift +++ b/Vernissage/Views/SettingsView/Subviews/HapticsSectionView.swift @@ -5,6 +5,7 @@ // import SwiftUI +import EnvironmentKit struct HapticsSectionView: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Views/SettingsView/Subviews/MediaSettingsView.swift b/Vernissage/Views/SettingsView/Subviews/MediaSettingsView.swift index 5a23b29..d45d894 100644 --- a/Vernissage/Views/SettingsView/Subviews/MediaSettingsView.swift +++ b/Vernissage/Views/SettingsView/Subviews/MediaSettingsView.swift @@ -5,6 +5,7 @@ // import SwiftUI +import EnvironmentKit struct MediaSettingsView: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Views/SettingsView/Subviews/SupportView.swift b/Vernissage/Views/SettingsView/Subviews/SupportView.swift index be5f301..969684d 100644 --- a/Vernissage/Views/SettingsView/Subviews/SupportView.swift +++ b/Vernissage/Views/SettingsView/Subviews/SupportView.swift @@ -6,6 +6,7 @@ import SwiftUI import StoreKit +import ServicesKit struct SupportView: View { @EnvironmentObject var tipsStore: TipsStore diff --git a/Vernissage/Views/SettingsView/Subviews/ThanksView.swift b/Vernissage/Views/SettingsView/Subviews/ThanksView.swift index 89d7613..523e9ab 100644 --- a/Vernissage/Views/SettingsView/Subviews/ThanksView.swift +++ b/Vernissage/Views/SettingsView/Subviews/ThanksView.swift @@ -5,6 +5,7 @@ // import SwiftUI +import ServicesKit struct ThanksView: View { @EnvironmentObject var routerPath: RouterPath diff --git a/Vernissage/Views/SignInView/SignInView.swift b/Vernissage/Views/SignInView/SignInView.swift index 31a9beb..e28fa63 100644 --- a/Vernissage/Views/SignInView/SignInView.swift +++ b/Vernissage/Views/SignInView/SignInView.swift @@ -9,6 +9,8 @@ import PixelfedKit import ClientKit import AuthenticationServices import ServicesKit +import EnvironmentKit +import WidgetsKit struct SignInView: View { @Environment(\.managedObjectContext) private var viewContext diff --git a/Vernissage/Views/SignInView/Subviews/InstanceRowView.swift b/Vernissage/Views/SignInView/Subviews/InstanceRowView.swift index 895644b..76f941b 100644 --- a/Vernissage/Views/SignInView/Subviews/InstanceRowView.swift +++ b/Vernissage/Views/SignInView/Subviews/InstanceRowView.swift @@ -7,6 +7,8 @@ import SwiftUI import PixelfedKit import NukeUI +import ServicesKit +import WidgetsKit struct InstanceRowView: View { @EnvironmentObject var routerPath: RouterPath diff --git a/Vernissage/Views/StatusView/StatusView.swift b/Vernissage/Views/StatusView/StatusView.swift index 36b8e65..f2b9b42 100644 --- a/Vernissage/Views/StatusView/StatusView.swift +++ b/Vernissage/Views/StatusView/StatusView.swift @@ -9,6 +9,8 @@ import PixelfedKit import ClientKit import AVFoundation import ServicesKit +import WidgetsKit +import EnvironmentKit struct StatusView: View { struct TappedAttachment: Identifiable { diff --git a/Vernissage/Views/StatusView/Subviews/CommentBodyView.swift b/Vernissage/Views/StatusView/Subviews/CommentBodyView.swift index 65ff1a2..3faeefc 100644 --- a/Vernissage/Views/StatusView/Subviews/CommentBodyView.swift +++ b/Vernissage/Views/StatusView/Subviews/CommentBodyView.swift @@ -7,6 +7,8 @@ import SwiftUI import PixelfedKit import ClientKit +import EnvironmentKit +import WidgetsKit struct CommentBodyView: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Views/StatusView/Subviews/CommentsSectionView.swift b/Vernissage/Views/StatusView/Subviews/CommentsSectionView.swift index fd8e27b..fa3f9b6 100644 --- a/Vernissage/Views/StatusView/Subviews/CommentsSectionView.swift +++ b/Vernissage/Views/StatusView/Subviews/CommentsSectionView.swift @@ -8,6 +8,8 @@ import SwiftUI import PixelfedKit import ClientKit import ServicesKit +import EnvironmentKit +import WidgetsKit struct CommentsSectionView: View { @Environment(\.colorScheme) var colorScheme diff --git a/Vernissage/Views/StatusView/Subviews/StatusPlaceholderView.swift b/Vernissage/Views/StatusView/Subviews/StatusPlaceholderView.swift index 882e996..545a76f 100644 --- a/Vernissage/Views/StatusView/Subviews/StatusPlaceholderView.swift +++ b/Vernissage/Views/StatusView/Subviews/StatusPlaceholderView.swift @@ -5,6 +5,7 @@ // import SwiftUI +import WidgetsKit struct StatusPlaceholderView: View { @State var imageHeight: Double diff --git a/Vernissage/Views/StatusesView.swift b/Vernissage/Views/StatusesView.swift index b978b80..80c509e 100644 --- a/Vernissage/Views/StatusesView.swift +++ b/Vernissage/Views/StatusesView.swift @@ -8,6 +8,8 @@ import SwiftUI import PixelfedKit import ClientKit import ServicesKit +import EnvironmentKit +import WidgetsKit struct StatusesView: View { public enum ListType: Hashable { diff --git a/Vernissage/Views/TrendStatusesView.swift b/Vernissage/Views/TrendStatusesView.swift index 648c4fd..d476e3c 100644 --- a/Vernissage/Views/TrendStatusesView.swift +++ b/Vernissage/Views/TrendStatusesView.swift @@ -8,6 +8,8 @@ import SwiftUI import PixelfedKit import ClientKit import ServicesKit +import EnvironmentKit +import WidgetsKit struct TrendStatusesView: View { @EnvironmentObject private var applicationState: ApplicationState diff --git a/Vernissage/Views/UserProfileView/Subviews/UserProfileHeaderView.swift b/Vernissage/Views/UserProfileView/Subviews/UserProfileHeaderView.swift index ea318b0..b869621 100644 --- a/Vernissage/Views/UserProfileView/Subviews/UserProfileHeaderView.swift +++ b/Vernissage/Views/UserProfileView/Subviews/UserProfileHeaderView.swift @@ -8,6 +8,8 @@ import SwiftUI import PixelfedKit import ClientKit import ServicesKit +import WidgetsKit +import EnvironmentKit struct UserProfileHeaderView: View { @EnvironmentObject private var applicationState: ApplicationState @@ -23,11 +25,11 @@ struct UserProfileHeaderView: View { Spacer() if self.relationship.muting == true { - TagWidget(value: "Muted", color: .accentColor, systemImage: "message.and.waveform.fill") + TagWidget(value: "userProfile.title.muted", color: .accentColor, systemImage: "message.and.waveform.fill") } if self.relationship.blocking == true { - TagWidget(value: "Blocked", color: .dangerColor, systemImage: "hand.raised.fill") + TagWidget(value: "userProfile.title.blocked", color: .dangerColor, systemImage: "hand.raised.fill") } } diff --git a/Vernissage/Views/UserProfileView/Subviews/UserProfileStatusesView.swift b/Vernissage/Views/UserProfileView/Subviews/UserProfileStatusesView.swift index 8451e17..0f64749 100644 --- a/Vernissage/Views/UserProfileView/Subviews/UserProfileStatusesView.swift +++ b/Vernissage/Views/UserProfileView/Subviews/UserProfileStatusesView.swift @@ -8,6 +8,8 @@ import SwiftUI import PixelfedKit import ClientKit import ServicesKit +import EnvironmentKit +import WidgetsKit struct UserProfileStatusesView: View { @EnvironmentObject private var applicationState: ApplicationState diff --git a/Vernissage/Views/UserProfileView/UserProfileView.swift b/Vernissage/Views/UserProfileView/UserProfileView.swift index 0739c9b..81b5bf9 100644 --- a/Vernissage/Views/UserProfileView/UserProfileView.swift +++ b/Vernissage/Views/UserProfileView/UserProfileView.swift @@ -8,6 +8,8 @@ import SwiftUI import PixelfedKit import ClientKit import ServicesKit +import EnvironmentKit +import WidgetsKit struct UserProfileView: View { @EnvironmentObject private var applicationState: ApplicationState diff --git a/Vernissage/Widgets/ImageCarouselPicture.swift b/Vernissage/Widgets/ImageCarouselPicture.swift index 1a6ee7c..38bfb18 100644 --- a/Vernissage/Widgets/ImageCarouselPicture.swift +++ b/Vernissage/Widgets/ImageCarouselPicture.swift @@ -7,6 +7,7 @@ import SwiftUI import ClientKit import ServicesKit +import WidgetsKit struct ImageCarouselPicture: View { @ObservedObject public var attachment: AttachmentModel diff --git a/Vernissage/Widgets/ImageGrid.swift b/Vernissage/Widgets/ImageGrid.swift index 738f460..63acfcc 100644 --- a/Vernissage/Widgets/ImageGrid.swift +++ b/Vernissage/Widgets/ImageGrid.swift @@ -6,6 +6,8 @@ import SwiftUI import NukeUI +import EnvironmentKit +import WidgetsKit struct ImageGrid: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Widgets/ImageRowItem.swift b/Vernissage/Widgets/ImageRowItem.swift index 2a3909b..803ea20 100644 --- a/Vernissage/Widgets/ImageRowItem.swift +++ b/Vernissage/Widgets/ImageRowItem.swift @@ -7,6 +7,8 @@ import SwiftUI import ClientKit import ServicesKit +import EnvironmentKit +import WidgetsKit struct ImageRowItem: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Widgets/ImageRowItemAsync.swift b/Vernissage/Widgets/ImageRowItemAsync.swift index b3cd9ae..6eeee11 100644 --- a/Vernissage/Widgets/ImageRowItemAsync.swift +++ b/Vernissage/Widgets/ImageRowItemAsync.swift @@ -9,6 +9,8 @@ import PixelfedKit import ClientKit import NukeUI import ServicesKit +import EnvironmentKit +import WidgetsKit struct ImageRowItemAsync: View { @EnvironmentObject var applicationState: ApplicationState diff --git a/Vernissage/Widgets/ImageViewer.swift b/Vernissage/Widgets/ImageViewer.swift index fc36709..14822cd 100644 --- a/Vernissage/Widgets/ImageViewer.swift +++ b/Vernissage/Widgets/ImageViewer.swift @@ -6,6 +6,7 @@ import SwiftUI import ClientKit +import ServicesKit struct ImageViewer: View { @Environment(\.dismiss) private var dismiss diff --git a/Vernissage/Widgets/InteractionRow.swift b/Vernissage/Widgets/InteractionRow.swift index 2575643..2639906 100644 --- a/Vernissage/Widgets/InteractionRow.swift +++ b/Vernissage/Widgets/InteractionRow.swift @@ -9,6 +9,8 @@ import PixelfedKit import Drops import ClientKit import ServicesKit +import EnvironmentKit +import WidgetsKit struct InteractionRow: View { typealias DeleteAction = () -> Void diff --git a/VernissageWidget/Views/LargeWidgetView.swift b/VernissageWidget/Views/LargeWidgetView.swift index db77a6d..058750d 100644 --- a/VernissageWidget/Views/LargeWidgetView.swift +++ b/VernissageWidget/Views/LargeWidgetView.swift @@ -6,6 +6,7 @@ import SwiftUI import WidgetKit +import EnvironmentKit struct LargeWidgetView: View { var entry: Provider.Entry diff --git a/VernissageWidget/Views/MediumWidgetView.swift b/VernissageWidget/Views/MediumWidgetView.swift index 6e6c840..276c24d 100644 --- a/VernissageWidget/Views/MediumWidgetView.swift +++ b/VernissageWidget/Views/MediumWidgetView.swift @@ -6,6 +6,7 @@ import SwiftUI import WidgetKit +import EnvironmentKit struct MediumWidgetView: View { var entry: Provider.Entry diff --git a/VernissageWidget/Views/SmallWidgetView.swift b/VernissageWidget/Views/SmallWidgetView.swift index e2c008e..b686186 100644 --- a/VernissageWidget/Views/SmallWidgetView.swift +++ b/VernissageWidget/Views/SmallWidgetView.swift @@ -6,6 +6,7 @@ import SwiftUI import WidgetKit +import EnvironmentKit struct SmallWidgetView: View { var entry: Provider.Entry diff --git a/WidgetsKit/.gitignore b/WidgetsKit/.gitignore new file mode 100644 index 0000000..3b29812 --- /dev/null +++ b/WidgetsKit/.gitignore @@ -0,0 +1,9 @@ +.DS_Store +/.build +/Packages +/*.xcodeproj +xcuserdata/ +DerivedData/ +.swiftpm/config/registries.json +.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata +.netrc diff --git a/WidgetsKit/Package.swift b/WidgetsKit/Package.swift new file mode 100644 index 0000000..81a1425 --- /dev/null +++ b/WidgetsKit/Package.swift @@ -0,0 +1,38 @@ +// swift-tools-version: 5.8 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "WidgetsKit", + platforms: [ + .iOS(.v16), + .macOS(.v12), + .watchOS(.v8) + ], + products: [ + // Products define the executables and libraries a package produces, and make them visible to other packages. + .library( + name: "WidgetsKit", + targets: ["WidgetsKit"]) + ], + dependencies: [ + // Dependencies declare other packages that this package depends on. + .package(url: "https://github.com/exyte/ActivityIndicatorView.git", .upToNextMajor(from: "1.0.0")), + .package(url: "https://github.com/divadretlaw/EmojiText", .upToNextMajor(from: "2.6.0")), + .package(name: "PixelfedKit", path: "../PixelfedKit"), + .package(name: "ClientKit", path: "../ClientKit"), + .package(name: "ServicesKit", path: "../ServicesKit"), + .package(name: "EnvironmentKit", path: "../EnvironmentKit") + ], + targets: [ + // Targets are the basic building blocks of a package. A target can define a module or a test suite. + // Targets can depend on other targets in this package, and on products in packages this package depends on. + .target( + name: "WidgetsKit", + dependencies: ["ActivityIndicatorView", "EmojiText", "PixelfedKit", "ClientKit", "ServicesKit", "EnvironmentKit"]), + .testTarget( + name: "WidgetsKitTests", + dependencies: ["WidgetsKit"]) + ] +) diff --git a/Vernissage/Widgets/ActionButton.swift b/WidgetsKit/Sources/WidgetsKit/ActionButton.swift similarity index 92% rename from Vernissage/Widgets/ActionButton.swift rename to WidgetsKit/Sources/WidgetsKit/ActionButton.swift index 945bdd9..79ed64f 100644 --- a/Vernissage/Widgets/ActionButton.swift +++ b/WidgetsKit/Sources/WidgetsKit/ActionButton.swift @@ -5,8 +5,9 @@ // import SwiftUI +import ServicesKit -struct ActionButton