From b4905c351ef80f004542d5f4dcf481a8f03e77ae Mon Sep 17 00:00:00 2001 From: Gio <34376330+Gio2018@users.noreply.github.com> Date: Mon, 2 Dec 2024 12:34:12 -0600 Subject: [PATCH] Move modelContainer generation out of static methods (#1124) * chore(version): bump to 8.22.1 * fix(swiftData): avoid static references in Services --- Pocket.xcodeproj/project.pbxproj | 48 +++++++++---------- PocketKit/Sources/PocketKit/Services.swift | 3 +- .../Sync/SwiftData/DataController.swift | 10 ++-- 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/Pocket.xcodeproj/project.pbxproj b/Pocket.xcodeproj/project.pbxproj index ad9d0a37a..215c92f54 100644 --- a/Pocket.xcodeproj/project.pbxproj +++ b/Pocket.xcodeproj/project.pbxproj @@ -1427,7 +1427,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -1489,7 +1489,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; POCKET_API_BASE_URL = "https://api.getpocket.com/graphql"; @@ -1520,7 +1520,7 @@ "@executable_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro; PRODUCT_NAME = Pocket; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1552,7 +1552,7 @@ "@executable_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro; PRODUCT_NAME = Pocket; PROVISIONING_PROFILE_SPECIFIER = "Bitrise com.ideashower.ReadItLaterPro"; @@ -1578,7 +1578,7 @@ "@loader_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = "com.ideashower.ReadItLaterProAlphaNeue.Tests-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1604,7 +1604,7 @@ "@loader_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = "com.ideashower.ReadItLaterProAlphaNeue.Tests-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1637,7 +1637,7 @@ "@executable_path/../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro.PushNotificationServiceExtension; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1670,7 +1670,7 @@ "@executable_path/../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro.PushNotificationServiceExtension; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = "Bitrise com.ideashower.ReadItLaterPro.PushNotifica"; @@ -1710,7 +1710,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro.iMessageExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -1750,7 +1750,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro.iMessageExtension; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -1791,7 +1791,7 @@ ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro.iMessageExtension; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1825,7 +1825,7 @@ "@executable_path/../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro.PushNotificationStoryExtension; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1857,7 +1857,7 @@ "@executable_path/../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro.PushNotificationStoryExtension; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = "Bitrise com.ideashower.ReadItLaterPro.PushStory"; @@ -1927,7 +1927,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -1959,7 +1959,7 @@ "@executable_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro; PRODUCT_NAME = Pocket; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1985,7 +1985,7 @@ "@loader_path/Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = "com.ideashower.ReadItLaterProAlphaNeue.Tests-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2017,7 +2017,7 @@ "@executable_path/../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro.AddToPocketExtension; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2051,7 +2051,7 @@ "@executable_path/../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro.PushNotificationServiceExtension; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2083,7 +2083,7 @@ "@executable_path/../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro.PushNotificationStoryExtension; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2117,7 +2117,7 @@ "@executable_path/../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = "com.ideashower.ReadItLaterPro.Widget-Extension"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -2150,7 +2150,7 @@ "@executable_path/../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = "com.ideashower.ReadItLaterPro.Widget-Extension"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -2183,7 +2183,7 @@ "@executable_path/../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = "com.ideashower.ReadItLaterPro.Widget-Extension"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = "Bitrise com.ideashower.ReadItLaterPro.Widget-Exten"; @@ -2217,7 +2217,7 @@ "@executable_path/../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro.AddToPocketExtension; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2251,7 +2251,7 @@ "@executable_path/../../Frameworks", ); MACOSX_DEPLOYMENT_TARGET = 14.0; - MARKETING_VERSION = 8.22.0; + MARKETING_VERSION = 8.22.1; PRODUCT_BUNDLE_IDENTIFIER = com.ideashower.ReadItLaterPro.AddToPocketExtension; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = "Bitrise com.ideashower.ReadItLaterPro.AddToPocketE"; diff --git a/PocketKit/Sources/PocketKit/Services.swift b/PocketKit/Sources/PocketKit/Services.swift index 7d1dda1b8..70305e9b0 100644 --- a/PocketKit/Sources/PocketKit/Services.swift +++ b/PocketKit/Sources/PocketKit/Services.swift @@ -65,7 +65,8 @@ struct Services { notificationCenter = .default Log.breadcrumb(category: "SWiftUIHome", level: .debug, message: "Initializing data controller.") // Init the Group ID for Swift Data - modelContainer = DataController.makeModelContainer(groupID: Keys.shared.groupID) + let dataController = DataController() + modelContainer = dataController.makeModelContainer(groupID: Keys.shared.groupID) Log.breadcrumb(category: "SWiftUIHome", level: .debug, message: "Data controller initialized.") persistentContainer = .init(storage: .shared, groupID: Keys.shared.groupID) Log.breadcrumb(category: "SWiftUIHome", level: .debug, message: "Persistent container initialized.") diff --git a/PocketKit/Sources/Sync/SwiftData/DataController.swift b/PocketKit/Sources/Sync/SwiftData/DataController.swift index 614783f51..c9c5f1109 100644 --- a/PocketKit/Sources/Sync/SwiftData/DataController.swift +++ b/PocketKit/Sources/Sync/SwiftData/DataController.swift @@ -4,11 +4,11 @@ // import Foundation -import SwiftData +@preconcurrency import SwiftData import SharedPocketKit public struct DataController: Sendable { - public static func makeModelContainer(groupID: String) -> ModelContainer { + public func makeModelContainer(groupID: String) -> ModelContainer { Log.breadcrumb(category: "SWiftUIHome", level: .debug, message: "Start initializing shared model container.") ArticleTransformer.register() Log.breadcrumb(category: "SWiftUIHome", level: .debug, message: "Article transformer registered.") @@ -21,14 +21,16 @@ public struct DataController: Sendable { } let url = appGroupContainer.appendingPathComponent("PocketModel.sqlite") do { - return try ModelContainer(for: Self.schema, configurations: ModelConfiguration(url: url)) + return try ModelContainer(for: self.schema, configurations: ModelConfiguration(url: url)) } catch { Log.capture(message: "Could not create ModelContainer: \(error)") fatalError("Could not create ModelContainer: \(error)") } } - private static let schema = Schema([ + public init() {} + + private let schema = Schema([ Author.self, Sync.Collection.self, CollectionAuthor.self,