From e1d54abb940756b92986b92a0df38577c1c5a331 Mon Sep 17 00:00:00 2001 From: opficdev Date: Thu, 14 May 2026 23:28:11 +0900 Subject: [PATCH 01/46] =?UTF-8?q?chore:=20SwiftLint=EB=A5=BC=20=EC=A0=9C?= =?UTF-8?q?=EC=99=B8=ED=95=9C=20=EC=95=B1=20=ED=83=80=EA=B9=83=EC=9D=98=20?= =?UTF-8?q?=EC=99=B8=EB=B6=80=20=ED=8C=A8=ED=82=A4=EC=A7=80=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DevLog.xcodeproj/project.pbxproj | 125 ----------- .../xcshareddata/swiftpm/Package.resolved | 200 +----------------- 2 files changed, 1 insertion(+), 324 deletions(-) diff --git a/DevLog.xcodeproj/project.pbxproj b/DevLog.xcodeproj/project.pbxproj index c707b8a9..adc45026 100644 --- a/DevLog.xcodeproj/project.pbxproj +++ b/DevLog.xcodeproj/project.pbxproj @@ -7,21 +7,11 @@ objects = { /* Begin PBXBuildFile section */ - DFABA3A42E2351A800FEFBDB /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = DFABA3A32E2351A800FEFBDB /* MarkdownUI */; }; - DFABA3A72E2351EE00FEFBDB /* GoogleSignIn in Frameworks */ = {isa = PBXBuildFile; productRef = DFABA3A62E2351EE00FEFBDB /* GoogleSignIn */; }; - DFABA3A92E2351EE00FEFBDB /* GoogleSignInSwift in Frameworks */ = {isa = PBXBuildFile; productRef = DFABA3A82E2351EE00FEFBDB /* GoogleSignInSwift */; }; - DFABA3AC2E23526500FEFBDB /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = DFABA3AB2E23526500FEFBDB /* FirebaseAuth */; }; - DFABA3AE2E23526500FEFBDB /* FirebaseCore in Frameworks */ = {isa = PBXBuildFile; productRef = DFABA3AD2E23526500FEFBDB /* FirebaseCore */; }; - DFABA3B02E23526500FEFBDB /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = DFABA3AF2E23526500FEFBDB /* FirebaseFirestore */; }; - DFABA3B22E23526500FEFBDB /* FirebaseFunctions in Frameworks */ = {isa = PBXBuildFile; productRef = DFABA3B12E23526500FEFBDB /* FirebaseFunctions */; }; - DFABA3B42E23526500FEFBDB /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = DFABA3B32E23526500FEFBDB /* FirebaseMessaging */; }; DFD3A9722F8E89DD001DA7CD /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9712F8E89DD001DA7CD /* WidgetKit.framework */; }; DFD3A9742F8E89DD001DA7CD /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9732F8E89DD001DA7CD /* SwiftUI.framework */; }; DFD3A97F2F8E89DF001DA7CD /* DevLogWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - DFD3B68D2F8F1FB8001DA7CD /* Nexa in Frameworks */ = {isa = PBXBuildFile; productRef = DFD3B68C2F8F1FB8001DA7CD /* Nexa */; }; DFD645402EC827A10073E133 /* .gitignore in Resources */ = {isa = PBXBuildFile; fileRef = DFD6453F2EC827A10073E133 /* .gitignore */; }; DFD74E2F2E423EA700613803 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = DFD74E2E2E423EA700613803 /* README.md */; }; - DFF2DACE2EDC02AD00778738 /* OrderedCollections in Frameworks */ = {isa = PBXBuildFile; productRef = DFF2DACD2EDC02AD00778738 /* OrderedCollections */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -133,16 +123,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - DFD3B68D2F8F1FB8001DA7CD /* Nexa in Frameworks */, - DFABA3B42E23526500FEFBDB /* FirebaseMessaging in Frameworks */, - DFABA3A92E2351EE00FEFBDB /* GoogleSignInSwift in Frameworks */, - DFABA3B22E23526500FEFBDB /* FirebaseFunctions in Frameworks */, - DFABA3AE2E23526500FEFBDB /* FirebaseCore in Frameworks */, - DFABA3A42E2351A800FEFBDB /* MarkdownUI in Frameworks */, - DFF2DACE2EDC02AD00778738 /* OrderedCollections in Frameworks */, - DFABA3A72E2351EE00FEFBDB /* GoogleSignIn in Frameworks */, - DFABA3AC2E23526500FEFBDB /* FirebaseAuth in Frameworks */, - DFABA3B02E23526500FEFBDB /* FirebaseFirestore in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -252,16 +232,6 @@ ); name = DevLog; packageProductDependencies = ( - DFABA3A32E2351A800FEFBDB /* MarkdownUI */, - DFABA3A62E2351EE00FEFBDB /* GoogleSignIn */, - DFABA3A82E2351EE00FEFBDB /* GoogleSignInSwift */, - DFABA3AB2E23526500FEFBDB /* FirebaseAuth */, - DFABA3AD2E23526500FEFBDB /* FirebaseCore */, - DFABA3AF2E23526500FEFBDB /* FirebaseFirestore */, - DFABA3B12E23526500FEFBDB /* FirebaseFunctions */, - DFABA3B32E23526500FEFBDB /* FirebaseMessaging */, - DFF2DACD2EDC02AD00778738 /* OrderedCollections */, - DFD3B68C2F8F1FB8001DA7CD /* Nexa */, ); productName = SwiftUI_DevLog; productReference = DFD48B002DC4D6E2005905C5 /* DevLog.app */; @@ -300,12 +270,7 @@ mainGroup = DFD48AF72DC4D6E2005905C5; minimizedProjectReferenceProxies = 1; packageReferences = ( - DFABA3A22E2351A800FEFBDB /* XCRemoteSwiftPackageReference "swift-markdown-ui" */, - DFABA3A52E2351EE00FEFBDB /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */, - DFABA3AA2E23526500FEFBDB /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */, - DFF2DACC2EDC02AD00778738 /* XCRemoteSwiftPackageReference "swift-collections" */, - DFD3B68B2F8F1FB8001DA7CD /* XCRemoteSwiftPackageReference "Nexa" */, ); preferredProjectObjectVersion = 77; productRefGroup = DFD48B012DC4D6E2005905C5 /* Products */; @@ -784,46 +749,6 @@ minimumVersion = 0.62.1; }; }; - DFABA3A22E2351A800FEFBDB /* XCRemoteSwiftPackageReference "swift-markdown-ui" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/gonzalezreal/swift-markdown-ui.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 2.4.1; - }; - }; - DFABA3A52E2351EE00FEFBDB /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/google/GoogleSignIn-iOS"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 9.0.0; - }; - }; - DFABA3AA2E23526500FEFBDB /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 11.15.0; - }; - }; - DFD3B68B2F8F1FB8001DA7CD /* XCRemoteSwiftPackageReference "Nexa" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/opficdev/Nexa"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 1.1.0; - }; - }; - DFF2DACC2EDC02AD00778738 /* XCRemoteSwiftPackageReference "swift-collections" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/apple/swift-collections.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 1.3.0; - }; - }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -832,56 +757,6 @@ package = DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */; productName = "plugin:SwiftLintBuildToolPlugin"; }; - DFABA3A32E2351A800FEFBDB /* MarkdownUI */ = { - isa = XCSwiftPackageProductDependency; - package = DFABA3A22E2351A800FEFBDB /* XCRemoteSwiftPackageReference "swift-markdown-ui" */; - productName = MarkdownUI; - }; - DFABA3A62E2351EE00FEFBDB /* GoogleSignIn */ = { - isa = XCSwiftPackageProductDependency; - package = DFABA3A52E2351EE00FEFBDB /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */; - productName = GoogleSignIn; - }; - DFABA3A82E2351EE00FEFBDB /* GoogleSignInSwift */ = { - isa = XCSwiftPackageProductDependency; - package = DFABA3A52E2351EE00FEFBDB /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */; - productName = GoogleSignInSwift; - }; - DFABA3AB2E23526500FEFBDB /* FirebaseAuth */ = { - isa = XCSwiftPackageProductDependency; - package = DFABA3AA2E23526500FEFBDB /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = FirebaseAuth; - }; - DFABA3AD2E23526500FEFBDB /* FirebaseCore */ = { - isa = XCSwiftPackageProductDependency; - package = DFABA3AA2E23526500FEFBDB /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = FirebaseCore; - }; - DFABA3AF2E23526500FEFBDB /* FirebaseFirestore */ = { - isa = XCSwiftPackageProductDependency; - package = DFABA3AA2E23526500FEFBDB /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = FirebaseFirestore; - }; - DFABA3B12E23526500FEFBDB /* FirebaseFunctions */ = { - isa = XCSwiftPackageProductDependency; - package = DFABA3AA2E23526500FEFBDB /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = FirebaseFunctions; - }; - DFABA3B32E23526500FEFBDB /* FirebaseMessaging */ = { - isa = XCSwiftPackageProductDependency; - package = DFABA3AA2E23526500FEFBDB /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = FirebaseMessaging; - }; - DFD3B68C2F8F1FB8001DA7CD /* Nexa */ = { - isa = XCSwiftPackageProductDependency; - package = DFD3B68B2F8F1FB8001DA7CD /* XCRemoteSwiftPackageReference "Nexa" */; - productName = Nexa; - }; - DFF2DACD2EDC02AD00778738 /* OrderedCollections */ = { - isa = XCSwiftPackageProductDependency; - package = DFF2DACC2EDC02AD00778738 /* XCRemoteSwiftPackageReference "swift-collections" */; - productName = OrderedCollections; - }; /* End XCSwiftPackageProductDependency section */ }; rootObject = DFD48AF82DC4D6E2005905C5 /* Project object */; diff --git a/DevLog.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DevLog.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index fe577f2a..ec654f48 100644 --- a/DevLog.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DevLog.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,33 +1,6 @@ { - "originHash" : "6e83e8a97f59e7d95bbfcd1dc82daad8306c7a0f7df1e8bb7966a26baf0e4a2b", + "originHash" : "c3373633343d643cf4275c42d63c44d7be89c54076117a694350d515b60c2b83", "pins" : [ - { - "identity" : "abseil-cpp-binary", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/abseil-cpp-binary.git", - "state" : { - "revision" : "bbe8b69694d7873315fd3a4ad41efe043e1c07c5", - "version" : "1.2024072200.0" - } - }, - { - "identity" : "app-check", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/app-check.git", - "state" : { - "revision" : "61b85103a1aeed8218f17c794687781505fbbef5", - "version" : "11.2.0" - } - }, - { - "identity" : "appauth-ios", - "kind" : "remoteSourceControl", - "location" : "https://github.com/openid/AppAuth-iOS.git", - "state" : { - "revision" : "145104f5ea9d58ae21b60add007c33c1cc0c948e", - "version" : "2.0.0" - } - }, { "identity" : "collectionconcurrencykit", "kind" : "remoteSourceControl", @@ -46,141 +19,6 @@ "version" : "1.9.0" } }, - { - "identity" : "firebase-ios-sdk", - "kind" : "remoteSourceControl", - "location" : "https://github.com/firebase/firebase-ios-sdk", - "state" : { - "revision" : "fdc352fabaf5916e7faa1f96ad02b1957e93e5a5", - "version" : "11.15.0" - } - }, - { - "identity" : "google-ads-on-device-conversion-ios-sdk", - "kind" : "remoteSourceControl", - "location" : "https://github.com/googleads/google-ads-on-device-conversion-ios-sdk", - "state" : { - "revision" : "428d8bb138e00f9a3f4f61cc6cd8863607524f65", - "version" : "2.1.0" - } - }, - { - "identity" : "googleappmeasurement", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GoogleAppMeasurement.git", - "state" : { - "revision" : "45ce435e9406d3c674dd249a042b932bee006f60", - "version" : "11.15.0" - } - }, - { - "identity" : "googledatatransport", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GoogleDataTransport.git", - "state" : { - "revision" : "617af071af9aa1d6a091d59a202910ac482128f9", - "version" : "10.1.0" - } - }, - { - "identity" : "googlesignin-ios", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GoogleSignIn-iOS", - "state" : { - "revision" : "3996d908c7b3ce8a87d39c808f9a6b2a08fbe043", - "version" : "9.0.0" - } - }, - { - "identity" : "googleutilities", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GoogleUtilities.git", - "state" : { - "revision" : "60da361632d0de02786f709bdc0c4df340f7613e", - "version" : "8.1.0" - } - }, - { - "identity" : "grpc-binary", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/grpc-binary.git", - "state" : { - "revision" : "cc0001a0cf963aa40501d9c2b181e7fc9fd8ec71", - "version" : "1.69.0" - } - }, - { - "identity" : "gtm-session-fetcher", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/gtm-session-fetcher.git", - "state" : { - "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b", - "version" : "3.5.0" - } - }, - { - "identity" : "gtmappauth", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/GTMAppAuth.git", - "state" : { - "revision" : "56e0ccf09a6dd29dc7e68bdf729598240ca8aa16", - "version" : "5.0.0" - } - }, - { - "identity" : "interop-ios-for-google-sdks", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/interop-ios-for-google-sdks.git", - "state" : { - "revision" : "040d087ac2267d2ddd4cca36c757d1c6a05fdbfe", - "version" : "101.0.0" - } - }, - { - "identity" : "leveldb", - "kind" : "remoteSourceControl", - "location" : "https://github.com/firebase/leveldb.git", - "state" : { - "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1", - "version" : "1.22.5" - } - }, - { - "identity" : "nanopb", - "kind" : "remoteSourceControl", - "location" : "https://github.com/firebase/nanopb.git", - "state" : { - "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", - "version" : "2.30910.0" - } - }, - { - "identity" : "networkimage", - "kind" : "remoteSourceControl", - "location" : "https://github.com/gonzalezreal/NetworkImage", - "state" : { - "revision" : "2849f5323265386e200484b0d0f896e73c3411b9", - "version" : "6.0.1" - } - }, - { - "identity" : "nexa", - "kind" : "remoteSourceControl", - "location" : "https://github.com/opficdev/Nexa", - "state" : { - "revision" : "a2f3ca9862eb24ffc28bdeb6d67293b4e8ddf3a5", - "version" : "1.1.0" - } - }, - { - "identity" : "promises", - "kind" : "remoteSourceControl", - "location" : "https://github.com/google/promises.git", - "state" : { - "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", - "version" : "2.4.0" - } - }, { "identity" : "sourcekitten", "kind" : "remoteSourceControl", @@ -199,42 +37,6 @@ "version" : "1.6.2" } }, - { - "identity" : "swift-cmark", - "kind" : "remoteSourceControl", - "location" : "https://github.com/swiftlang/swift-cmark", - "state" : { - "revision" : "b022b08312decdc46585e0b3440d97f6f22ef703", - "version" : "0.6.0" - } - }, - { - "identity" : "swift-collections", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-collections.git", - "state" : { - "revision" : "7b847a3b7008b2dc2f47ca3110d8c782fb2e5c7e", - "version" : "1.3.0" - } - }, - { - "identity" : "swift-markdown-ui", - "kind" : "remoteSourceControl", - "location" : "https://github.com/gonzalezreal/swift-markdown-ui.git", - "state" : { - "revision" : "5f613358148239d0292c0cef674a3c2314737f9e", - "version" : "2.4.1" - } - }, - { - "identity" : "swift-protobuf", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-protobuf.git", - "state" : { - "revision" : "102a647b573f60f73afdce5613a51d71349fe507", - "version" : "1.30.0" - } - }, { "identity" : "swift-syntax", "kind" : "remoteSourceControl", From 7fdff1b38cd34b1030f55c54fb20f4bb5ebecd99 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 00:05:51 +0900 Subject: [PATCH 02/46] =?UTF-8?q?refactor:=20=EB=A0=88=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=EB=B3=84=20=EB=AA=A8=EB=93=88=20=EA=B5=AC=EC=A1=B0=EC=99=80=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=86=A0=EC=BD=9C=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DevLog.xcodeproj/project.pbxproj | 74 ++++++++++- .../xcshareddata/swiftpm/Package.resolved | 2 +- .../xcschemes/xcschememanagement.plist | 2 +- DevLog/App/Assembler/InfraAssembler.swift | 22 ++-- .../App/Assembler/PersistenceAssembler.swift | 10 +- DevLog/{Infra => Data}/Common/Logger.swift | 0 DevLog/Data/Protocol/AuthService.swift | 25 ++++ .../Protocol/NWPathConnectivityProvider.swift | 13 ++ .../Protocol/PushNotificationService.swift | 27 ++++ DevLog/Data/Protocol/ThemeStore.swift | 14 ++ .../Data/Protocol/TodoCategoryService.swift | 13 ++ DevLog/Data/Protocol/TodoService.swift | 17 +++ DevLog/Data/Protocol/UserDefaultsStore.swift | 17 +++ DevLog/Data/Protocol/UserService.swift | 16 +++ DevLog/Data/Protocol/WebPageImageStore.swift | 16 +++ .../Protocol/WebPageMetadataService.swift | 14 ++ DevLog/Data/Protocol/WebPageService.swift | 15 +++ .../WidgetSnapshotPreferenceStore.swift | 17 +++ .../Data/Protocol/WidgetSnapshotUpdater.swift | 36 +++++ .../Repository/AuthDataRepositoryImpl.swift | 18 +-- .../Entity}/SystemTheme.swift | 0 ...uthService.swift => AuthServiceImpl.swift} | 23 +++- ...t => NWPathConnectivityProviderImpl.swift} | 4 +- ...wift => PushNotificationServiceImpl.swift} | 8 +- ...t => AppleAuthenticationServiceImpl.swift} | 2 +- ... => GithubAuthenticationServiceImpl.swift} | 6 +- ... => GoogleAuthenticationServiceImpl.swift} | 2 +- ...ce.swift => TodoCategoryServiceImpl.swift} | 8 +- ...odoService.swift => TodoServiceImpl.swift} | 10 +- ...serService.swift => UserServiceImpl.swift} | 6 +- ...swift => WebPageMetadataServiceImpl.swift} | 6 +- ...Service.swift => WebPageServiceImpl.swift} | 8 +- ...{ThemeStore.swift => ThemeStoreImpl.swift} | 4 +- ...tore.swift => UserDefaultsStoreImpl.swift} | 4 +- ...tore.swift => WebPageImageStoreImpl.swift} | 6 +- ...> WidgetSnapshotPreferenceStoreImpl.swift} | 4 +- ....swift => WidgetSnapshotUpdaterImpl.swift} | 13 +- .../Widget/Sync/WidgetSyncEventHandler.swift | 7 +- .../WidgetSnapshotPreferenceStoreTests.swift | 4 +- .../Widget/WidgetSnapshotUpdaterTests.swift | 32 +++-- .../Widget/WidgetSyncEventHandlerTests.swift | 4 +- Package.swift | 123 ++++++++++++++++++ 42 files changed, 548 insertions(+), 104 deletions(-) rename DevLog/{Infra => Data}/Common/Logger.swift (100%) create mode 100644 DevLog/Data/Protocol/AuthService.swift create mode 100644 DevLog/Data/Protocol/NWPathConnectivityProvider.swift create mode 100644 DevLog/Data/Protocol/PushNotificationService.swift create mode 100644 DevLog/Data/Protocol/ThemeStore.swift create mode 100644 DevLog/Data/Protocol/TodoCategoryService.swift create mode 100644 DevLog/Data/Protocol/TodoService.swift create mode 100644 DevLog/Data/Protocol/UserDefaultsStore.swift create mode 100644 DevLog/Data/Protocol/UserService.swift create mode 100644 DevLog/Data/Protocol/WebPageImageStore.swift create mode 100644 DevLog/Data/Protocol/WebPageMetadataService.swift create mode 100644 DevLog/Data/Protocol/WebPageService.swift create mode 100644 DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift create mode 100644 DevLog/Data/Protocol/WidgetSnapshotUpdater.swift rename DevLog/{Storage/Persistence => Domain/Entity}/SystemTheme.swift (100%) rename DevLog/Infra/Service/{AuthService.swift => AuthServiceImpl.swift} (84%) rename DevLog/Infra/Service/{NWPathConnectivityProvider.swift => NWPathConnectivityProviderImpl.swift} (88%) rename DevLog/Infra/Service/{PushNotificationService.swift => PushNotificationServiceImpl.swift} (98%) rename DevLog/Infra/Service/SocialLogin/{AppleAuthenticationService.swift => AppleAuthenticationServiceImpl.swift} (99%) rename DevLog/Infra/Service/SocialLogin/{GithubAuthenticationService.swift => GithubAuthenticationServiceImpl.swift} (98%) rename DevLog/Infra/Service/SocialLogin/{GoogleAuthenticationService.swift => GoogleAuthenticationServiceImpl.swift} (98%) rename DevLog/Infra/Service/{TodoCategoryService.swift => TodoCategoryServiceImpl.swift} (96%) rename DevLog/Infra/Service/{TodoService.swift => TodoServiceImpl.swift} (98%) rename DevLog/Infra/Service/{UserService.swift => UserServiceImpl.swift} (98%) rename DevLog/Infra/Service/{WebPageMetadataService.swift => WebPageMetadataServiceImpl.swift} (96%) rename DevLog/Infra/Service/{WebPageService.swift => WebPageServiceImpl.swift} (96%) rename DevLog/Storage/Persistence/{ThemeStore.swift => ThemeStoreImpl.swift} (83%) rename DevLog/Storage/Persistence/{UserDefaultsStore.swift => UserDefaultsStoreImpl.swift} (90%) rename DevLog/Storage/Persistence/{WebPageImageStore.swift => WebPageImageStoreImpl.swift} (97%) rename DevLog/Storage/Persistence/{WidgetSnapshotPreferenceStore.swift => WidgetSnapshotPreferenceStoreImpl.swift} (94%) rename DevLog/Storage/Persistence/{WidgetSnapshotUpdater.swift => WidgetSnapshotUpdaterImpl.swift} (92%) create mode 100644 Package.swift diff --git a/DevLog.xcodeproj/project.pbxproj b/DevLog.xcodeproj/project.pbxproj index adc45026..24f1fe2c 100644 --- a/DevLog.xcodeproj/project.pbxproj +++ b/DevLog.xcodeproj/project.pbxproj @@ -7,6 +7,14 @@ objects = { /* Begin PBXBuildFile section */ + FBF000012F91000000D3E001 /* DevLogDomain in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E101 /* DevLogDomain */; }; + FBF000012F91000000D3E002 /* DevLogData in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E102 /* DevLogData */; }; + FBF000012F91000000D3E003 /* DevLogInfra in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E103 /* DevLogInfra */; }; + FBF000012F91000000D3E004 /* DevLogStorage in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E104 /* DevLogStorage */; }; + FBF000012F91000000D3E005 /* DevLogPresentation in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E105 /* DevLogPresentation */; }; + FBF000012F91000000D3E006 /* DevLogUI in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E106 /* DevLogUI */; }; + FBF000012F91000000D3E007 /* DevLogWidgetCore in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E107 /* DevLogWidgetCore */; }; + FBF000012F91000000D3E008 /* DevLogWidgetShared in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E108 /* DevLogWidgetShared */; }; DFD3A9722F8E89DD001DA7CD /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9712F8E89DD001DA7CD /* WidgetKit.framework */; }; DFD3A9742F8E89DD001DA7CD /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9732F8E89DD001DA7CD /* SwiftUI.framework */; }; DFD3A97F2F8E89DF001DA7CD /* DevLogWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; @@ -53,14 +61,22 @@ DFD48B002DC4D6E2005905C5 /* DevLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DevLog.app; sourceTree = BUILT_PRODUCTS_DIR; }; DFD6453F2EC827A10073E133 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; DFD74E2E2E423EA700613803 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + FBF000012F91000000D3E301 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ DF8AB7A72E938CD700E50BBF /* Exceptions for "DevLog" folder in "DevLog" target */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( + Data, + Domain, + Infra, + Presentation, Resource/Config.xcconfig, Resource/Info.plist, + Storage, + UI, + Widget, ); target = DFD48AFF2DC4D6E2005905C5 /* DevLog */; }; @@ -107,6 +123,14 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + FBF000012F91000000D3E007 /* DevLogWidgetCore in Frameworks */, + FBF000012F91000000D3E008 /* DevLogWidgetShared in Frameworks */, + FBF000012F91000000D3E006 /* DevLogUI in Frameworks */, + FBF000012F91000000D3E005 /* DevLogPresentation in Frameworks */, + FBF000012F91000000D3E004 /* DevLogStorage in Frameworks */, + FBF000012F91000000D3E003 /* DevLogInfra in Frameworks */, + FBF000012F91000000D3E002 /* DevLogData in Frameworks */, + FBF000012F91000000D3E001 /* DevLogDomain in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -134,6 +158,7 @@ children = ( DFD74E2E2E423EA700613803 /* README.md */, DFD6453F2EC827A10073E133 /* .gitignore */, + FBF000012F91000000D3E301 /* Package.swift */, DF8AB7982E938B0B00E50BBF /* DevLog */, DF34164A2E45F67C00F9312B /* DevLog_Unit */, DFD3A9752F8E89DD001DA7CD /* DevLogWidget */, @@ -228,10 +253,17 @@ ); fileSystemSynchronizedGroups = ( DF8AB7982E938B0B00E50BBF /* DevLog */, - FB02A8C62F900000001DA7CD /* WidgetShared */, ); name = DevLog; packageProductDependencies = ( + FBF000012F91000000D3E101 /* DevLogDomain */, + FBF000012F91000000D3E102 /* DevLogData */, + FBF000012F91000000D3E103 /* DevLogInfra */, + FBF000012F91000000D3E104 /* DevLogStorage */, + FBF000012F91000000D3E105 /* DevLogPresentation */, + FBF000012F91000000D3E106 /* DevLogUI */, + FBF000012F91000000D3E107 /* DevLogWidgetCore */, + FBF000012F91000000D3E108 /* DevLogWidgetShared */, ); productName = SwiftUI_DevLog; productReference = DFD48B002DC4D6E2005905C5 /* DevLog.app */; @@ -271,6 +303,7 @@ minimizedProjectReferenceProxies = 1; packageReferences = ( DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */, + FBF000012F91000000D3E201 /* XCLocalSwiftPackageReference "." */, ); preferredProjectObjectVersion = 77; productRefGroup = DFD48B012DC4D6E2005905C5 /* Products */; @@ -740,6 +773,13 @@ }; /* End XCConfigurationList section */ +/* Begin XCLocalSwiftPackageReference section */ + FBF000012F91000000D3E201 /* XCLocalSwiftPackageReference "." */ = { + isa = XCLocalSwiftPackageReference; + relativePath = "."; + }; +/* End XCLocalSwiftPackageReference section */ + /* Begin XCRemoteSwiftPackageReference section */ DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */ = { isa = XCRemoteSwiftPackageReference; @@ -757,6 +797,38 @@ package = DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */; productName = "plugin:SwiftLintBuildToolPlugin"; }; + FBF000012F91000000D3E101 /* DevLogDomain */ = { + isa = XCSwiftPackageProductDependency; + productName = DevLogDomain; + }; + FBF000012F91000000D3E102 /* DevLogData */ = { + isa = XCSwiftPackageProductDependency; + productName = DevLogData; + }; + FBF000012F91000000D3E103 /* DevLogInfra */ = { + isa = XCSwiftPackageProductDependency; + productName = DevLogInfra; + }; + FBF000012F91000000D3E104 /* DevLogStorage */ = { + isa = XCSwiftPackageProductDependency; + productName = DevLogStorage; + }; + FBF000012F91000000D3E105 /* DevLogPresentation */ = { + isa = XCSwiftPackageProductDependency; + productName = DevLogPresentation; + }; + FBF000012F91000000D3E106 /* DevLogUI */ = { + isa = XCSwiftPackageProductDependency; + productName = DevLogUI; + }; + FBF000012F91000000D3E107 /* DevLogWidgetCore */ = { + isa = XCSwiftPackageProductDependency; + productName = DevLogWidgetCore; + }; + FBF000012F91000000D3E108 /* DevLogWidgetShared */ = { + isa = XCSwiftPackageProductDependency; + productName = DevLogWidgetShared; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = DFD48AF82DC4D6E2005905C5 /* Project object */; diff --git a/DevLog.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DevLog.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index ec654f48..79080861 100644 --- a/DevLog.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DevLog.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "c3373633343d643cf4275c42d63c44d7be89c54076117a694350d515b60c2b83", + "originHash" : "4489714843df66e69545dbcba4e839fab69c69cf9e4b9b54ce76bb1fbbf0c229", "pins" : [ { "identity" : "collectionconcurrencykit", diff --git a/DevLog.xcodeproj/xcuserdata/opfic.xcuserdatad/xcschemes/xcschememanagement.plist b/DevLog.xcodeproj/xcuserdata/opfic.xcuserdatad/xcschemes/xcschememanagement.plist index d9ba791d..f77f0ad8 100644 --- a/DevLog.xcodeproj/xcuserdata/opfic.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/DevLog.xcodeproj/xcuserdata/opfic.xcuserdatad/xcschemes/xcschememanagement.plist @@ -12,7 +12,7 @@ DevLogWidgetExtension.xcscheme_^#shared#^_ orderHint - 3 + 2 DevLog_Unit.xcscheme_^#shared#^_ diff --git a/DevLog/App/Assembler/InfraAssembler.swift b/DevLog/App/Assembler/InfraAssembler.swift index bd4827bb..e7086b9f 100644 --- a/DevLog/App/Assembler/InfraAssembler.swift +++ b/DevLog/App/Assembler/InfraAssembler.swift @@ -11,55 +11,55 @@ final class InfraAssembler: Assembler { AuthenticationService.self, name: "AppleAuthenticationService" ) { - AppleAuthenticationService() + AppleAuthenticationServiceImpl() } container.register( AuthenticationService.self, name: "GithubAuthenticationService" ) { - GithubAuthenticationService() + GithubAuthenticationServiceImpl() } container.register( AuthenticationService.self, name: "GoogleAuthenticationService" ) { - GoogleAuthenticationService() + GoogleAuthenticationServiceImpl() } container.register(AuthService.self) { - AuthService() + AuthServiceImpl() } container.register(TodoService.self) { - TodoService() + TodoServiceImpl() } container.register(TodoCategoryService.self) { - TodoCategoryService() + TodoCategoryServiceImpl() } container.register(UserService.self) { - UserService() + UserServiceImpl() } container.register(PushNotificationService.self) { - PushNotificationService() + PushNotificationServiceImpl() } container.register(WebPageService.self) { - WebPageService() + WebPageServiceImpl() } container.register(WebPageMetadataService.self) { - WebPageMetadataService( + WebPageMetadataServiceImpl( store: container.resolve(WebPageImageStore.self) ) } container.register(NWPathConnectivityProvider.self) { - NWPathConnectivityProvider() + NWPathConnectivityProviderImpl() } } } diff --git a/DevLog/App/Assembler/PersistenceAssembler.swift b/DevLog/App/Assembler/PersistenceAssembler.swift index 2eea5242..a179110e 100644 --- a/DevLog/App/Assembler/PersistenceAssembler.swift +++ b/DevLog/App/Assembler/PersistenceAssembler.swift @@ -8,15 +8,15 @@ final class PersistenceAssembler: Assembler { func assemble(_ container: any DIContainer) { container.register(UserDefaultsStore.self) { - UserDefaultsStore() + UserDefaultsStoreImpl() } container.register(ThemeStore.self) { - ThemeStore() + ThemeStoreImpl() } container.register(WebPageImageStore.self) { - WebPageImageStore() + WebPageImageStoreImpl() } container.register(WidgetSharedDefaultsStore.self) { @@ -30,11 +30,11 @@ final class PersistenceAssembler: Assembler { } container.register(WidgetSnapshotPreferenceStore.self) { - WidgetSnapshotPreferenceStore() + WidgetSnapshotPreferenceStoreImpl() } container.register(WidgetSnapshotUpdater.self) { - WidgetSnapshotUpdater( + WidgetSnapshotUpdaterImpl( snapshotStore: container.resolve(WidgetSnapshotStore.self), preferenceStore: container.resolve(WidgetSnapshotPreferenceStore.self) ) diff --git a/DevLog/Infra/Common/Logger.swift b/DevLog/Data/Common/Logger.swift similarity index 100% rename from DevLog/Infra/Common/Logger.swift rename to DevLog/Data/Common/Logger.swift diff --git a/DevLog/Data/Protocol/AuthService.swift b/DevLog/Data/Protocol/AuthService.swift new file mode 100644 index 00000000..61da907e --- /dev/null +++ b/DevLog/Data/Protocol/AuthService.swift @@ -0,0 +1,25 @@ +// +// AuthService.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Combine +import Foundation + +protocol AuthService { + var uid: String? { get } + var providerIDs: [String] { get } + var currentUserEmail: String? { get } + var providerCount: Int { get } + + func observeSignedIn() -> AnyPublisher + func beginSignIn() + func completeSignIn() + func cancelSignIn() + func getProviderID() async throws -> String? + func deleteCurrentUser() async throws + func clearCurrentSession() async throws + func isCredentialAlreadyInUseError(_ error: Error) -> Bool +} diff --git a/DevLog/Data/Protocol/NWPathConnectivityProvider.swift b/DevLog/Data/Protocol/NWPathConnectivityProvider.swift new file mode 100644 index 00000000..9dac168a --- /dev/null +++ b/DevLog/Data/Protocol/NWPathConnectivityProvider.swift @@ -0,0 +1,13 @@ +// +// NWPathConnectivityProvider.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Combine +import Foundation + +protocol NWPathConnectivityProvider { + func observeNetworkConnectivity() -> AnyPublisher +} diff --git a/DevLog/Data/Protocol/PushNotificationService.swift b/DevLog/Data/Protocol/PushNotificationService.swift new file mode 100644 index 00000000..ff963b70 --- /dev/null +++ b/DevLog/Data/Protocol/PushNotificationService.swift @@ -0,0 +1,27 @@ +// +// PushNotificationService.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Combine +import Foundation + +protocol PushNotificationService { + func fetchPushNotificationEnabled() async throws -> Bool + func fetchPushNotificationTime() async throws -> DateComponents + func updatePushNotificationSettings(isEnabled: Bool, components: DateComponents) async throws + func requestNotifications( + _ notificationQuery: PushNotificationQuery, + cursor: PushNotificationCursorDTO? + ) async throws -> PushNotificationPageResponse + func observeNotifications( + _ query: PushNotificationQuery, + limit: Int + ) throws -> AnyPublisher + func observeUnreadPushCount() throws -> AnyPublisher + func deleteNotification(_ notificationID: String) async throws + func undoDeleteNotification(_ notificationID: String) async throws + func toggleNotificationRead(_ todoId: String) async throws +} diff --git a/DevLog/Data/Protocol/ThemeStore.swift b/DevLog/Data/Protocol/ThemeStore.swift new file mode 100644 index 00000000..ed6256b4 --- /dev/null +++ b/DevLog/Data/Protocol/ThemeStore.swift @@ -0,0 +1,14 @@ +// +// ThemeStore.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Combine +import Foundation + +protocol ThemeStore { + func observeTheme() -> AnyPublisher + func send(_ theme: SystemTheme) +} diff --git a/DevLog/Data/Protocol/TodoCategoryService.swift b/DevLog/Data/Protocol/TodoCategoryService.swift new file mode 100644 index 00000000..113de171 --- /dev/null +++ b/DevLog/Data/Protocol/TodoCategoryService.swift @@ -0,0 +1,13 @@ +// +// TodoCategoryService.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Foundation + +protocol TodoCategoryService { + func fetchPreferences() async throws -> [TodoCategoryPreference] + func updatePreferences(_ preferences: [TodoCategoryPreference]) async throws +} diff --git a/DevLog/Data/Protocol/TodoService.swift b/DevLog/Data/Protocol/TodoService.swift new file mode 100644 index 00000000..25196c54 --- /dev/null +++ b/DevLog/Data/Protocol/TodoService.swift @@ -0,0 +1,17 @@ +// +// TodoService.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Foundation + +protocol TodoService { + func fetchTodos(_ query: TodoQuery, cursor: TodoCursorDTO?) async throws -> TodoPageResponse + func upsertTodo(request: TodoRequest) async throws + func deleteTodo(todoId: String) async throws + func undoDeleteTodo(todoId: String) async throws + func fetchTodo(todoId: String) async throws -> TodoResponse + func fetchReferences(_ numbers: [Int]) async throws -> [Int: TodoReferenceResponse] +} diff --git a/DevLog/Data/Protocol/UserDefaultsStore.swift b/DevLog/Data/Protocol/UserDefaultsStore.swift new file mode 100644 index 00000000..5e0c8ce0 --- /dev/null +++ b/DevLog/Data/Protocol/UserDefaultsStore.swift @@ -0,0 +1,17 @@ +// +// UserDefaultsStore.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Foundation + +protocol UserDefaultsStore { + func string(forKey key: String) -> String? + func setString(_ value: String?, forKey key: String) + func stringArray(forKey key: String) -> [String] + func setStringArray(_ value: [String], forKey key: String) + func bool(forKey key: String) -> Bool + func setBool(_ value: Bool, forKey key: String) +} diff --git a/DevLog/Data/Protocol/UserService.swift b/DevLog/Data/Protocol/UserService.swift new file mode 100644 index 00000000..b9c17319 --- /dev/null +++ b/DevLog/Data/Protocol/UserService.swift @@ -0,0 +1,16 @@ +// +// UserService.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Foundation + +protocol UserService { + func upsertUser(_ response: AuthDataResponse) async throws + func fetchUserProfile() async throws -> UserProfileResponse + func upsertStatusMessage(_ message: String) async throws + func updateFCMToken(_ fcmToken: String) async throws + func updateUserTimeZone() async throws +} diff --git a/DevLog/Data/Protocol/WebPageImageStore.swift b/DevLog/Data/Protocol/WebPageImageStore.swift new file mode 100644 index 00000000..b64a3e49 --- /dev/null +++ b/DevLog/Data/Protocol/WebPageImageStore.swift @@ -0,0 +1,16 @@ +// +// WebPageImageStore.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Foundation + +protocol WebPageImageStore { + func cachedImageURL(for url: URL) async throws -> URL + func saveImage(_ data: Data, for url: URL) async throws -> URL + func dirSizeInBytes() async -> Int64 + func clearDirectory() async throws + func removeImage(for url: URL) async throws -> Bool +} diff --git a/DevLog/Data/Protocol/WebPageMetadataService.swift b/DevLog/Data/Protocol/WebPageMetadataService.swift new file mode 100644 index 00000000..54de65da --- /dev/null +++ b/DevLog/Data/Protocol/WebPageMetadataService.swift @@ -0,0 +1,14 @@ +// +// WebPageMetadataService.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Foundation + +protocol WebPageMetadataService { + func fetchMetadata(from urlString: String) async throws -> WebPageMetadataResponse + func removeCachedImage(for urlString: String) async + func cachedImageURL(for urlString: String) async throws -> URL +} diff --git a/DevLog/Data/Protocol/WebPageService.swift b/DevLog/Data/Protocol/WebPageService.swift new file mode 100644 index 00000000..d4c5372e --- /dev/null +++ b/DevLog/Data/Protocol/WebPageService.swift @@ -0,0 +1,15 @@ +// +// WebPageService.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Foundation + +protocol WebPageService { + func fetchWebPages(_ query: String) async throws -> [WebPageResponse] + func upsertWebPage(_ request: WebPageRequest) async throws + func deleteWebPage(_ urlString: String) async throws + func undoDeleteWebPage(_ urlString: String) async throws +} diff --git a/DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift b/DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift new file mode 100644 index 00000000..ba8f7bdf --- /dev/null +++ b/DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift @@ -0,0 +1,17 @@ +// +// WidgetSnapshotPreferenceStore.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Foundation + +protocol WidgetSnapshotPreferenceStore { + func heatmapActivityTypes() -> [String] + func setHeatmapActivityTypes(_ activityTypes: [String]) + func selectedActivityKinds() -> Set + func todayDisplayOptions() -> TodayDisplayOptions + func setTodayDisplayOptions(_ options: TodayDisplayOptions) + func clear() +} diff --git a/DevLog/Data/Protocol/WidgetSnapshotUpdater.swift b/DevLog/Data/Protocol/WidgetSnapshotUpdater.swift new file mode 100644 index 00000000..4d5f519b --- /dev/null +++ b/DevLog/Data/Protocol/WidgetSnapshotUpdater.swift @@ -0,0 +1,36 @@ +// +// WidgetSnapshotUpdater.swift +// DevLog +// +// Created by opfic on 5/14/26. +// + +import Foundation + +protocol WidgetSnapshotUpdater { + func updateTodaySnapshot( + todos: [Todo], + now: Date + ) + func updateTodaySnapshot( + todos: [Todo], + displayOptions: TodayDisplayOptions, + now: Date + ) + func updateHeatmapSnapshot( + createdTodos: [Todo], + completedTodos: [Todo], + deletedTodos: [Todo], + quarterStart: Date, + now: Date + ) + func updateHeatmapSnapshot( + createdTodos: [Todo], + completedTodos: [Todo], + deletedTodos: [Todo], + selectedActivityKinds: Set, + quarterStart: Date, + now: Date + ) + func clear() +} diff --git a/DevLog/Data/Repository/AuthDataRepositoryImpl.swift b/DevLog/Data/Repository/AuthDataRepositoryImpl.swift index 53921aac..c1ac030c 100644 --- a/DevLog/Data/Repository/AuthDataRepositoryImpl.swift +++ b/DevLog/Data/Repository/AuthDataRepositoryImpl.swift @@ -5,8 +5,6 @@ // Created by 최윤진 on 2/12/26. // -import FirebaseAuth - final class AuthDataRepositoryImpl: AuthDataRepository { private let authService: AuthService private let appleAuthService: AuthenticationService @@ -39,8 +37,7 @@ final class AuthDataRepositoryImpl: AuthDataRepository { func linkProvider(_ provider: AuthProvider) async throws { guard let uid = authService.uid, - let user = Auth.auth().currentUser, - let email = user.email else { + let email = authService.currentUserEmail else { throw AuthError.notAuthenticated } @@ -62,12 +59,11 @@ final class AuthDataRepositoryImpl: AuthDataRepository { } func unlinkProvider(_ provider: AuthProvider) async throws { - guard let uid = authService.uid, - let user = Auth.auth().currentUser else { + guard let uid = authService.uid else { throw AuthError.notAuthenticated } - if user.providerData.count <= 1 { + if authService.providerCount <= 1 { throw AuthError.failedToUnlinkLastProvider } @@ -96,12 +92,8 @@ private extension AuthDataRepositoryImpl { } } - let nsError = error as NSError - if nsError.domain == AuthErrorDomain, - let authErrorCode = AuthErrorCode(rawValue: nsError.code) { - if authErrorCode == .credentialAlreadyInUse { - return AuthError.linkCredentialAlreadyInUse - } + if authService.isCredentialAlreadyInUseError(error) { + return AuthError.linkCredentialAlreadyInUse } return error diff --git a/DevLog/Storage/Persistence/SystemTheme.swift b/DevLog/Domain/Entity/SystemTheme.swift similarity index 100% rename from DevLog/Storage/Persistence/SystemTheme.swift rename to DevLog/Domain/Entity/SystemTheme.swift diff --git a/DevLog/Infra/Service/AuthService.swift b/DevLog/Infra/Service/AuthServiceImpl.swift similarity index 84% rename from DevLog/Infra/Service/AuthService.swift rename to DevLog/Infra/Service/AuthServiceImpl.swift index 6b5cd59a..ba8b94d4 100644 --- a/DevLog/Infra/Service/AuthService.swift +++ b/DevLog/Infra/Service/AuthServiceImpl.swift @@ -1,5 +1,5 @@ // -// AuthService.swift +// AuthServiceImpl.swift // DevLog // // Created by 최윤진 on 11/29/25. @@ -10,10 +10,10 @@ import FirebaseAuth import FirebaseFirestore import FirebaseMessaging -final class AuthService { +final class AuthServiceImpl: AuthService { private let store = Firestore.firestore() private let messaging = Messaging.messaging() - private let logger = Logger(category: "AuthService") + private let logger = Logger(category: "AuthServiceImpl") private let subject = CurrentValueSubject(Auth.auth().currentUser != nil) private var handler: AuthStateDidChangeListenerHandle? private var isCompletingSignIn = false @@ -26,6 +26,14 @@ final class AuthService { Auth.auth().currentUser?.providerData.map { $0.providerID } ?? [] } + var currentUserEmail: String? { + Auth.auth().currentUser?.email + } + + var providerCount: Int { + Auth.auth().currentUser?.providerData.count ?? 0 + } + init() { handler = Auth.auth().addStateDidChangeListener { [weak self] _, user in guard let self else { return } @@ -122,4 +130,13 @@ final class AuthService { throw error } } + + func isCredentialAlreadyInUseError(_ error: Error) -> Bool { + let nsError = error as NSError + guard nsError.domain == AuthErrorDomain, + let authErrorCode = AuthErrorCode(rawValue: nsError.code) else { + return false + } + return authErrorCode == .credentialAlreadyInUse + } } diff --git a/DevLog/Infra/Service/NWPathConnectivityProvider.swift b/DevLog/Infra/Service/NWPathConnectivityProviderImpl.swift similarity index 88% rename from DevLog/Infra/Service/NWPathConnectivityProvider.swift rename to DevLog/Infra/Service/NWPathConnectivityProviderImpl.swift index 07cd8541..3167162c 100644 --- a/DevLog/Infra/Service/NWPathConnectivityProvider.swift +++ b/DevLog/Infra/Service/NWPathConnectivityProviderImpl.swift @@ -1,5 +1,5 @@ // -// NWPathConnectivityProvider.swift +// NWPathConnectivityProviderImpl.swift // DevLog // // Created by 최윤진 on 11/2/25. @@ -8,7 +8,7 @@ import Network import Combine -final class NWPathConnectivityProvider { +final class NWPathConnectivityProviderImpl: NWPathConnectivityProvider { private let networkPathMonitor = NWPathMonitor() private let monitoringQueue = DispatchQueue(label: "NWPathConnectivityProviderQueue") private let isConnectedSubject = CurrentValueSubject(nil) diff --git a/DevLog/Infra/Service/PushNotificationService.swift b/DevLog/Infra/Service/PushNotificationServiceImpl.swift similarity index 98% rename from DevLog/Infra/Service/PushNotificationService.swift rename to DevLog/Infra/Service/PushNotificationServiceImpl.swift index d05e4386..0760ed90 100644 --- a/DevLog/Infra/Service/PushNotificationService.swift +++ b/DevLog/Infra/Service/PushNotificationServiceImpl.swift @@ -1,5 +1,5 @@ // -// PushNotificationService.swift +// PushNotificationServiceImpl.swift // DevLog // // Created by opfic on 7/10/25. @@ -10,7 +10,7 @@ import Combine import FirebaseFirestore import FirebaseFunctions -final class PushNotificationService { +final class PushNotificationServiceImpl: PushNotificationService { private enum FunctionName: String { case requestPushNotificationDeletion case undoPushNotificationDeletion @@ -18,7 +18,7 @@ final class PushNotificationService { private let store = Firestore.firestore() private let functions = Functions.functions(region: "asia-northeast3") - private let logger = Logger(category: "PushNotificationService") + private let logger = Logger(category: "PushNotificationServiceImpl") /// 푸시 알림 On/Off 설정 func fetchPushNotificationEnabled() async throws -> Bool { @@ -262,7 +262,7 @@ final class PushNotificationService { } } -private extension PushNotificationService { +private extension PushNotificationServiceImpl { func makeQuery( uid: String, query: PushNotificationQuery diff --git a/DevLog/Infra/Service/SocialLogin/AppleAuthenticationService.swift b/DevLog/Infra/Service/SocialLogin/AppleAuthenticationServiceImpl.swift similarity index 99% rename from DevLog/Infra/Service/SocialLogin/AppleAuthenticationService.swift rename to DevLog/Infra/Service/SocialLogin/AppleAuthenticationServiceImpl.swift index 2292baf6..e20bd4b7 100644 --- a/DevLog/Infra/Service/SocialLogin/AppleAuthenticationService.swift +++ b/DevLog/Infra/Service/SocialLogin/AppleAuthenticationServiceImpl.swift @@ -13,7 +13,7 @@ import FirebaseFunctions import FirebaseMessaging import Foundation -final class AppleAuthenticationService: AuthenticationService { +final class AppleAuthenticationServiceImpl: AuthenticationService { private enum FunctionName: String { case requestAppleCustomToken case refreshAppleAccessToken diff --git a/DevLog/Infra/Service/SocialLogin/GithubAuthenticationService.swift b/DevLog/Infra/Service/SocialLogin/GithubAuthenticationServiceImpl.swift similarity index 98% rename from DevLog/Infra/Service/SocialLogin/GithubAuthenticationService.swift rename to DevLog/Infra/Service/SocialLogin/GithubAuthenticationServiceImpl.swift index 5989ff4d..2a67dde9 100644 --- a/DevLog/Infra/Service/SocialLogin/GithubAuthenticationService.swift +++ b/DevLog/Infra/Service/SocialLogin/GithubAuthenticationServiceImpl.swift @@ -13,7 +13,7 @@ import FirebaseFunctions import FirebaseMessaging import Nexa -final class GithubAuthenticationService: NSObject, AuthenticationService { +final class GithubAuthenticationServiceImpl: NSObject, AuthenticationService { private enum FunctionName: String { case requestGithubTokens case revokeGithubAccessToken @@ -301,7 +301,7 @@ final class GithubAuthenticationService: NSObject, AuthenticationService { } } -private extension GithubAuthenticationService { +private extension GithubAuthenticationServiceImpl { struct GitHubUser: Codable { let login: String let name: String? @@ -323,7 +323,7 @@ private extension GithubAuthenticationService { } } -extension GithubAuthenticationService: ASWebAuthenticationPresentationContextProviding { +extension GithubAuthenticationServiceImpl: ASWebAuthenticationPresentationContextProviding { func presentationAnchor(for session: ASWebAuthenticationSession) -> ASPresentationAnchor { return provider.keyWindow() ?? ASPresentationAnchor() } diff --git a/DevLog/Infra/Service/SocialLogin/GoogleAuthenticationService.swift b/DevLog/Infra/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift similarity index 98% rename from DevLog/Infra/Service/SocialLogin/GoogleAuthenticationService.swift rename to DevLog/Infra/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift index 36fc92ee..b603bcd3 100644 --- a/DevLog/Infra/Service/SocialLogin/GoogleAuthenticationService.swift +++ b/DevLog/Infra/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift @@ -11,7 +11,7 @@ import FirebaseMessaging import Foundation import GoogleSignIn -final class GoogleAuthenticationService: AuthenticationService { +final class GoogleAuthenticationServiceImpl: AuthenticationService { private let store = Firestore.firestore() private let messaging = Messaging.messaging() private var user: User? { Auth.auth().currentUser } diff --git a/DevLog/Infra/Service/TodoCategoryService.swift b/DevLog/Infra/Service/TodoCategoryServiceImpl.swift similarity index 96% rename from DevLog/Infra/Service/TodoCategoryService.swift rename to DevLog/Infra/Service/TodoCategoryServiceImpl.swift index ba8930cc..1c846741 100644 --- a/DevLog/Infra/Service/TodoCategoryService.swift +++ b/DevLog/Infra/Service/TodoCategoryServiceImpl.swift @@ -1,5 +1,5 @@ // -// TodoCategoryService.swift +// TodoCategoryServiceImpl.swift // DevLog // // Created by opfic on 3/30/26. @@ -8,7 +8,7 @@ import FirebaseAuth import FirebaseFirestore -final class TodoCategoryService { +final class TodoCategoryServiceImpl: TodoCategoryService { private enum Field: String { case items case kind @@ -25,7 +25,7 @@ final class TodoCategoryService { } private let store = Firestore.firestore() - private let logger = Logger(category: "TodoCategoryService") + private let logger = Logger(category: "TodoCategoryServiceImpl") func fetchPreferences() async throws -> [TodoCategoryPreference] { guard let uid = Auth.auth().currentUser?.uid else { @@ -87,7 +87,7 @@ final class TodoCategoryService { } } -private extension TodoCategoryService { +private extension TodoCategoryServiceImpl { func mergedPreferences( _ preferences: [TodoCategoryPreference] ) -> [TodoCategoryPreference] { diff --git a/DevLog/Infra/Service/TodoService.swift b/DevLog/Infra/Service/TodoServiceImpl.swift similarity index 98% rename from DevLog/Infra/Service/TodoService.swift rename to DevLog/Infra/Service/TodoServiceImpl.swift index acb4536a..2dff5998 100644 --- a/DevLog/Infra/Service/TodoService.swift +++ b/DevLog/Infra/Service/TodoServiceImpl.swift @@ -1,5 +1,5 @@ // -// TodoService.swift +// TodoServiceImpl.swift // DevLog // // Created by opfic on 6/2/25. @@ -9,7 +9,7 @@ import FirebaseAuth import FirebaseFirestore import FirebaseFunctions -final class TodoService { +final class TodoServiceImpl: TodoService { private enum FunctionName: String { case requestTodoDeletion case undoTodoDeletion @@ -18,7 +18,7 @@ final class TodoService { private let store = Firestore.firestore() private let functions = Functions.functions(region: "asia-northeast3") private let encoder = Firestore.Encoder() - private let logger = Logger(category: "TodoService") + private let logger = Logger(category: "TodoServiceImpl") // swiftlint:disable function_body_length func fetchTodos( @@ -294,7 +294,7 @@ final class TodoService { } } -private extension TodoService { +private extension TodoServiceImpl { func upsertTodoWithNumberOnCreate( _ data: [String: Any], for todoRef: DocumentReference, @@ -330,7 +330,7 @@ private extension TodoService { nextNumber = storedNextNumber } else if counterSnapshot.exists { errorPointer?.pointee = NSError( - domain: "TodoService", + domain: "TodoServiceImpl", code: 1, userInfo: [NSLocalizedDescriptionKey: "Todo counter is invalid."] ) diff --git a/DevLog/Infra/Service/UserService.swift b/DevLog/Infra/Service/UserServiceImpl.swift similarity index 98% rename from DevLog/Infra/Service/UserService.swift rename to DevLog/Infra/Service/UserServiceImpl.swift index 829ef554..7218f979 100644 --- a/DevLog/Infra/Service/UserService.swift +++ b/DevLog/Infra/Service/UserServiceImpl.swift @@ -1,5 +1,5 @@ // -// UserService.swift +// UserServiceImpl.swift // DevLog // // Created by opfic on 6/4/25. @@ -8,9 +8,9 @@ import FirebaseAuth import FirebaseFirestore -final class UserService { +final class UserServiceImpl: UserService { private let store = Firestore.firestore() - private let logger = Logger(category: "UserService") + private let logger = Logger(category: "UserServiceImpl") // 유저를 Firestore에 저장 및 업데이트 func upsertUser(_ response: AuthDataResponse) async throws { diff --git a/DevLog/Infra/Service/WebPageMetadataService.swift b/DevLog/Infra/Service/WebPageMetadataServiceImpl.swift similarity index 96% rename from DevLog/Infra/Service/WebPageMetadataService.swift rename to DevLog/Infra/Service/WebPageMetadataServiceImpl.swift index 8a88e827..d24a275a 100644 --- a/DevLog/Infra/Service/WebPageMetadataService.swift +++ b/DevLog/Infra/Service/WebPageMetadataServiceImpl.swift @@ -1,5 +1,5 @@ // -// WebPageMetadataService.swift +// WebPageMetadataServiceImpl.swift // DevLog // // Created by 최윤진 on 2/9/26. @@ -9,9 +9,9 @@ import Foundation import LinkPresentation import UIKit -final class WebPageMetadataService { +final class WebPageMetadataServiceImpl: WebPageMetadataService { private let imageStore: WebPageImageStore - private let logger = Logger(category: "WebPageMetadataService") + private let logger = Logger(category: "WebPageMetadataServiceImpl") init(store: WebPageImageStore) { self.imageStore = store diff --git a/DevLog/Infra/Service/WebPageService.swift b/DevLog/Infra/Service/WebPageServiceImpl.swift similarity index 96% rename from DevLog/Infra/Service/WebPageService.swift rename to DevLog/Infra/Service/WebPageServiceImpl.swift index d1f40e74..65bda729 100644 --- a/DevLog/Infra/Service/WebPageService.swift +++ b/DevLog/Infra/Service/WebPageServiceImpl.swift @@ -1,5 +1,5 @@ // -// WebPageService.swift +// WebPageServiceImpl.swift // DevLog // // Created by opfic on 6/3/25. @@ -9,7 +9,7 @@ import FirebaseAuth import FirebaseFirestore import FirebaseFunctions -final class WebPageService { +final class WebPageServiceImpl: WebPageService { private enum FunctionName: String { case requestWebPageDeletion case undoWebPageDeletion @@ -18,7 +18,7 @@ final class WebPageService { private let store = Firestore.firestore() private let functions = Functions.functions(region: "asia-northeast3") private let encoder = Firestore.Encoder() - private let logger = Logger(category: "WebPageService") + private let logger = Logger(category: "WebPageServiceImpl") /// 저장한 웹페이지를 모두 불러옴 func fetchWebPages(_ query: String) async throws -> [WebPageResponse] { @@ -122,7 +122,7 @@ final class WebPageService { } } -private extension WebPageService { +private extension WebPageServiceImpl { func makeResponse(from snapshot: QueryDocumentSnapshot) -> WebPageResponse? { let data = snapshot.data() guard diff --git a/DevLog/Storage/Persistence/ThemeStore.swift b/DevLog/Storage/Persistence/ThemeStoreImpl.swift similarity index 83% rename from DevLog/Storage/Persistence/ThemeStore.swift rename to DevLog/Storage/Persistence/ThemeStoreImpl.swift index 04c9fc1e..7cf0d0ff 100644 --- a/DevLog/Storage/Persistence/ThemeStore.swift +++ b/DevLog/Storage/Persistence/ThemeStoreImpl.swift @@ -1,5 +1,5 @@ // -// ThemeStore.swift +// ThemeStoreImpl.swift // DevLog // // Created by 최윤진 on 2/25/26. @@ -7,7 +7,7 @@ import Combine -final class ThemeStore { +final class ThemeStoreImpl: ThemeStore { private let subject = CurrentValueSubject(.automatic) func observeTheme() -> AnyPublisher { diff --git a/DevLog/Storage/Persistence/UserDefaultsStore.swift b/DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift similarity index 90% rename from DevLog/Storage/Persistence/UserDefaultsStore.swift rename to DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift index 4c964719..c26fa8d2 100644 --- a/DevLog/Storage/Persistence/UserDefaultsStore.swift +++ b/DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift @@ -1,5 +1,5 @@ // -// UserDefaultsStore.swift +// UserDefaultsStoreImpl.swift // DevLog // // Created by 최윤진 on 2/25/26. @@ -7,7 +7,7 @@ import Foundation -final class UserDefaultsStore { +final class UserDefaultsStoreImpl: UserDefaultsStore { private let userDefaults: UserDefaults init(userDefaults: UserDefaults = .standard) { diff --git a/DevLog/Storage/Persistence/WebPageImageStore.swift b/DevLog/Storage/Persistence/WebPageImageStoreImpl.swift similarity index 97% rename from DevLog/Storage/Persistence/WebPageImageStore.swift rename to DevLog/Storage/Persistence/WebPageImageStoreImpl.swift index b6367fcc..fac6dc06 100644 --- a/DevLog/Storage/Persistence/WebPageImageStore.swift +++ b/DevLog/Storage/Persistence/WebPageImageStoreImpl.swift @@ -1,5 +1,5 @@ // -// WebPageImageStore.swift +// WebPageImageStoreImpl.swift // DevLog // // Created by opfic on 4/14/26. @@ -8,7 +8,7 @@ import CryptoKit import Foundation -actor WebPageImageStore { +actor WebPageImageStoreImpl: WebPageImageStore { func cachedImageURL(for url: URL) async throws -> URL { return try await Task.detached(priority: .utility) { return try Self.cachedImageURL(for: url) @@ -44,7 +44,7 @@ actor WebPageImageStore { } } -private extension WebPageImageStore { +private extension WebPageImageStoreImpl { static func hashedFileName(for url: URL) -> String { let hashValue = SHA256.hash(data: Data(url.absoluteString.utf8)) return hashValue.map { String(format: "%02x", $0) }.joined() diff --git a/DevLog/Storage/Persistence/WidgetSnapshotPreferenceStore.swift b/DevLog/Storage/Persistence/WidgetSnapshotPreferenceStoreImpl.swift similarity index 94% rename from DevLog/Storage/Persistence/WidgetSnapshotPreferenceStore.swift rename to DevLog/Storage/Persistence/WidgetSnapshotPreferenceStoreImpl.swift index 1eebbe82..db58c7b5 100644 --- a/DevLog/Storage/Persistence/WidgetSnapshotPreferenceStore.swift +++ b/DevLog/Storage/Persistence/WidgetSnapshotPreferenceStoreImpl.swift @@ -1,5 +1,5 @@ // -// WidgetSnapshotPreferenceStore.swift +// WidgetSnapshotPreferenceStoreImpl.swift // DevLog // // Created by opfic on 4/30/26. @@ -7,7 +7,7 @@ import Foundation -final class WidgetSnapshotPreferenceStore { +final class WidgetSnapshotPreferenceStoreImpl: WidgetSnapshotPreferenceStore { private enum Key: String, CaseIterable { case heatmapActivityTypes = "Profile.heatmap.activityTypes" case todayDueDateVisibility = "Today.dueDateVisibility" diff --git a/DevLog/Storage/Persistence/WidgetSnapshotUpdater.swift b/DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift similarity index 92% rename from DevLog/Storage/Persistence/WidgetSnapshotUpdater.swift rename to DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift index bfcdac41..36a0926b 100644 --- a/DevLog/Storage/Persistence/WidgetSnapshotUpdater.swift +++ b/DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift @@ -1,5 +1,5 @@ // -// WidgetSnapshotUpdater.swift +// WidgetSnapshotUpdaterImpl.swift // DevLog // // Created by opfic on 4/30/26. @@ -8,12 +8,12 @@ import Foundation import WidgetKit -final class WidgetSnapshotUpdater { +final class WidgetSnapshotUpdaterImpl: WidgetSnapshotUpdater { private let snapshotStore: WidgetSnapshotStore private let preferenceStore: WidgetSnapshotPreferenceStore private let todayFactory: TodayWidgetSnapshotFactory private let heatmapFactory: HeatmapWidgetSnapshotFactory - private let logger = Logger(category: "WidgetSnapshotUpdater") + private let logger = Logger(category: "WidgetSnapshotUpdaterImpl") init( snapshotStore: WidgetSnapshotStore, @@ -28,7 +28,7 @@ final class WidgetSnapshotUpdater { } func updateTodaySnapshot( - todos: [TodayTodoItem], + todos: [Todo], now: Date = Date() ) { updateTodaySnapshot( @@ -39,12 +39,13 @@ final class WidgetSnapshotUpdater { } func updateTodaySnapshot( - todos: [TodayTodoItem], + todos: [Todo], displayOptions: TodayDisplayOptions, now: Date = Date() ) { + let todayTodoItems = todos.compactMap { TodayTodoItem(from: $0) } let todayWidgetSnapshot = todayFactory.makeSnapshot( - todos: todos, + todos: todayTodoItems, displayOptions: displayOptions, now: now ) diff --git a/DevLog/Widget/Sync/WidgetSyncEventHandler.swift b/DevLog/Widget/Sync/WidgetSyncEventHandler.swift index 69d6616c..b6e0e99c 100644 --- a/DevLog/Widget/Sync/WidgetSyncEventHandler.swift +++ b/DevLog/Widget/Sync/WidgetSyncEventHandler.swift @@ -61,7 +61,8 @@ private extension WidgetSyncEventHandler { todosWithoutDueDate ) snapshotUpdater.updateTodaySnapshot( - todos: todayTodosWithDueDate + todayTodosWithoutDueDate + todos: todayTodosWithDueDate + todayTodosWithoutDueDate, + now: Date() ) } catch { logger.error( @@ -118,7 +119,7 @@ private extension WidgetSyncEventHandler { dueDateFilter: TodoQuery.DueDateFilter, sortTarget: TodoQuery.SortTarget, sortOrder: TodoQuery.SortOrder - ) async throws -> [TodayTodoItem] { + ) async throws -> [Todo] { let todoPage = try await repository.fetchTodos( TodoQuery( completionFilter: .incomplete, @@ -131,7 +132,7 @@ private extension WidgetSyncEventHandler { cursor: nil ) - return todoPage.items.compactMap { TodayTodoItem(from: $0) } + return todoPage.items } func fetchHeatmapTodos( diff --git a/DevLog_Unit/Widget/WidgetSnapshotPreferenceStoreTests.swift b/DevLog_Unit/Widget/WidgetSnapshotPreferenceStoreTests.swift index cc6a8612..30a7c347 100644 --- a/DevLog_Unit/Widget/WidgetSnapshotPreferenceStoreTests.swift +++ b/DevLog_Unit/Widget/WidgetSnapshotPreferenceStoreTests.swift @@ -46,13 +46,13 @@ struct WidgetSnapshotPreferenceStoreTests { } private func makeFixture() -> ( - widgetSnapshotPreferenceStore: WidgetSnapshotPreferenceStore, + widgetSnapshotPreferenceStore: WidgetSnapshotPreferenceStoreImpl, userDefaults: UserDefaults ) { let suiteName = "WidgetSnapshotPreferenceStoreTests.\(UUID().uuidString)" let userDefaults = UserDefaults(suiteName: suiteName) ?? .standard userDefaults.removePersistentDomain(forName: suiteName) - let widgetSnapshotPreferenceStore = WidgetSnapshotPreferenceStore(userDefaults: userDefaults) + let widgetSnapshotPreferenceStore = WidgetSnapshotPreferenceStoreImpl(userDefaults: userDefaults) return (widgetSnapshotPreferenceStore, userDefaults) } } diff --git a/DevLog_Unit/Widget/WidgetSnapshotUpdaterTests.swift b/DevLog_Unit/Widget/WidgetSnapshotUpdaterTests.swift index 4e5dd86d..c02cc4eb 100644 --- a/DevLog_Unit/Widget/WidgetSnapshotUpdaterTests.swift +++ b/DevLog_Unit/Widget/WidgetSnapshotUpdaterTests.swift @@ -14,7 +14,11 @@ struct WidgetSnapshotUpdaterTests { func today_스냅샷_갱신은_Today_스냅샷을_저장한다() throws { let fixture = makeFixture() let now = try #require(Calendar.current.date(from: DateComponents(year: 2026, month: 4, day: 30))) - let todo = try makeTodayTodoItem(now: now) + let todo = makeTodo( + id: "today", + createdAt: now, + dueDate: now + ) fixture.updater.updateTodaySnapshot( todos: [todo], @@ -66,13 +70,17 @@ struct WidgetSnapshotUpdaterTests { #expect(snapshot.maxCount == 1) } - @Test("WidgetSnapshotUpdater는 모든 위젯 스냅샷을 삭제한다") + @Test("WidgetSnapshotUpdaterImpl는 모든 위젯 스냅샷을 삭제한다") func widgetSnapshotUpdater는_모든_위젯_스냅샷을_삭제한다() throws { let calendar = Calendar(identifier: .gregorian) let quarterStart = try #require(calendar.date(from: DateComponents(year: 2026, month: 4, day: 1))) let now = try #require(calendar.date(from: DateComponents(year: 2026, month: 4, day: 30))) let fixture = makeFixture(calendar: calendar) - let todo = try makeTodayTodoItem(now: now) + let todo = makeTodo( + id: "today", + createdAt: now, + dueDate: now + ) fixture.preferenceStore.setHeatmapActivityTypes(["created"]) fixture.preferenceStore.setTodayDisplayOptions( TodayDisplayOptions( @@ -111,9 +119,9 @@ struct WidgetSnapshotUpdaterTests { private func makeFixture( calendar: Calendar = .current ) -> ( - updater: WidgetSnapshotUpdater, + updater: WidgetSnapshotUpdaterImpl, snapshotStore: WidgetSnapshotStore, - preferenceStore: WidgetSnapshotPreferenceStore + preferenceStore: WidgetSnapshotPreferenceStoreImpl ) { let suiteName = "WidgetSnapshotUpdaterTests.\(UUID().uuidString)" let userDefaults = UserDefaults(suiteName: suiteName) ?? .standard @@ -121,10 +129,10 @@ struct WidgetSnapshotUpdaterTests { let snapshotStore = WidgetSnapshotStore( store: WidgetSharedDefaultsStore(userDefaults: userDefaults) ) - let preferenceStore = WidgetSnapshotPreferenceStore( + let preferenceStore = WidgetSnapshotPreferenceStoreImpl( userDefaults: userDefaults ) - let updater = WidgetSnapshotUpdater( + let updater = WidgetSnapshotUpdaterImpl( snapshotStore: snapshotStore, preferenceStore: preferenceStore, heatmapFactory: HeatmapWidgetSnapshotFactory(calendar: calendar) @@ -132,16 +140,6 @@ struct WidgetSnapshotUpdaterTests { return (updater, snapshotStore, preferenceStore) } - private func makeTodayTodoItem(now: Date) throws -> TodayTodoItem { - let todo = makeTodo( - id: "today", - createdAt: now, - dueDate: now - ) - - return try #require(TodayTodoItem(from: todo)) - } - private func makeTodo( id: String, createdAt: Date, diff --git a/DevLog_Unit/Widget/WidgetSyncEventHandlerTests.swift b/DevLog_Unit/Widget/WidgetSyncEventHandlerTests.swift index 1723a527..e751d5dc 100644 --- a/DevLog_Unit/Widget/WidgetSyncEventHandlerTests.swift +++ b/DevLog_Unit/Widget/WidgetSyncEventHandlerTests.swift @@ -118,10 +118,10 @@ struct WidgetSyncEventHandlerTests { let snapshotStore = WidgetSnapshotStore( store: WidgetSharedDefaultsStore(userDefaults: userDefaults) ) - let preferenceStore = WidgetSnapshotPreferenceStore( + let preferenceStore = WidgetSnapshotPreferenceStoreImpl( userDefaults: userDefaults ) - let updater = WidgetSnapshotUpdater( + let updater = WidgetSnapshotUpdaterImpl( snapshotStore: snapshotStore, preferenceStore: preferenceStore, heatmapFactory: HeatmapWidgetSnapshotFactory(calendar: calendar) diff --git a/Package.swift b/Package.swift new file mode 100644 index 00000000..979320bf --- /dev/null +++ b/Package.swift @@ -0,0 +1,123 @@ +// swift-tools-version: 5.9 + +import PackageDescription + +let package = Package( + name: "DevLogModules", + platforms: [ + .iOS(.v17) + ], + products: [ + .library(name: "DevLogDomain", targets: ["DevLogDomain"]), + .library(name: "DevLogData", targets: [ + "DevLogDataCommon", + "DevLogDataDTO", + "DevLogDataProtocol", + "DevLogDataMapper", + "DevLogDataRepository" + ]), + .library(name: "DevLogInfra", targets: ["DevLogInfra"]), + .library(name: "DevLogStorage", targets: ["DevLogStorage"]), + .library(name: "DevLogPresentation", targets: ["DevLogPresentation"]), + .library(name: "DevLogUI", targets: ["DevLogUI"]), + .library(name: "DevLogWidgetCore", targets: [ + "DevLogWidgetCore", + "DevLogWidgetShared" + ]), + .library(name: "DevLogWidgetShared", targets: ["DevLogWidgetShared"]) + ], + targets: [ + .target( + name: "DevLogDomain", + path: "DevLog/Domain" + ), + .target( + name: "DevLogDataCommon", + path: "DevLog/Data/Common" + ), + .target( + name: "DevLogDataDTO", + dependencies: ["DevLogDomain"], + path: "DevLog/Data/DTO" + ), + .target( + name: "DevLogDataProtocol", + dependencies: [ + "DevLogDomain", + "DevLogDataDTO" + ], + path: "DevLog/Data/Protocol" + ), + .target( + name: "DevLogDataMapper", + dependencies: [ + "DevLogDomain", + "DevLogDataCommon", + "DevLogDataDTO" + ], + path: "DevLog/Data/Mapper" + ), + .target( + name: "DevLogInfra", + dependencies: [ + "DevLogDataCommon", + "DevLogDataDTO", + "DevLogDataProtocol" + ], + path: "DevLog/Infra" + ), + .target( + name: "DevLogStorage", + dependencies: [ + "DevLogDomain", + "DevLogDataProtocol", + "DevLogPresentation", + "DevLogWidgetCore", + "DevLogWidgetShared" + ], + path: "DevLog/Storage" + ), + .target( + name: "DevLogDataRepository", + dependencies: [ + "DevLogDomain", + "DevLogDataCommon", + "DevLogDataDTO", + "DevLogDataProtocol", + "DevLogDataMapper" + ], + path: "DevLog/Data/Repository" + ), + .target( + name: "DevLogPresentation", + dependencies: [ + "DevLogDomain", + "DevLogDataCommon" + ], + path: "DevLog/Presentation" + ), + .target( + name: "DevLogUI", + dependencies: [ + "DevLogDomain", + "DevLogPresentation" + ], + path: "DevLog/UI" + ), + .target( + name: "DevLogWidgetCore", + dependencies: [ + "DevLogDomain", + "DevLogDataCommon", + "DevLogDataProtocol", + "DevLogPresentation", + "DevLogWidgetShared" + ], + path: "DevLog/Widget" + ), + .target( + name: "DevLogWidgetShared", + path: "WidgetShared" + ) + ] +) From b5a526e62b356ac2e194762f54e6d5e10e578140 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 00:27:58 +0900 Subject: [PATCH 03/46] =?UTF-8?q?refactor:=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EA=B0=84=20=EC=82=AC=EC=9A=A9=EC=9D=84=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?public=20=EC=A0=91=EA=B7=BC=20=EC=A0=9C=EC=96=B4=20=EC=A0=95?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 모듈 분리에 따라 외부 타깃에서 참조되는 타입, 프로퍼티, initializer 공개 DataCommon에서 공유해야 하는 에러 타입 접근성 정리 --- DevLog/Data/Common/DataLayerError.swift | 35 ++++- DevLog/Data/Common/Logger.swift | 14 +- DevLog/Data/DTO/AppleAuthResponse.swift | 10 +- DevLog/Data/DTO/AuthDataResponse.swift | 16 +-- DevLog/Data/DTO/NotificationKind.swift | 2 +- .../Data/DTO/PushNotificationCursorDTO.swift | 14 +- .../DTO/PushNotificationPageResponse.swift | 14 +- .../Data/DTO/PushNotificationResponse.swift | 34 +++-- DevLog/Data/DTO/TodoCategoryResponse.swift | 2 +- DevLog/Data/DTO/TodoCursorDTO.swift | 18 ++- DevLog/Data/DTO/TodoDTO.swift | 120 +++++++++++++----- DevLog/Data/DTO/TodoPageResponse.swift | 14 +- DevLog/Data/DTO/TodoReferenceResponse.swift | 22 +++- DevLog/Data/DTO/UserProfileResponse.swift | 12 +- DevLog/Data/DTO/WebPageDTO.swift | 52 ++++++-- DevLog/Data/DTO/WebPageMetadataResponse.swift | 8 +- .../Data/Mapper/PushNotificationMapping.swift | 16 ++- DevLog/Data/Mapper/TodoMapping.swift | 20 +-- DevLog/Data/Mapper/UserProfileMapping.swift | 6 +- DevLog/Data/Mapper/WebPageMapping.swift | 4 +- DevLog/Data/Protocol/AuthService.swift | 2 +- .../Data/Protocol/AuthenticationService.swift | 2 +- .../Protocol/NWPathConnectivityProvider.swift | 2 +- .../Protocol/PushNotificationService.swift | 2 +- DevLog/Data/Protocol/ThemeStore.swift | 2 +- .../Data/Protocol/TodoCategoryService.swift | 2 +- DevLog/Data/Protocol/TodoService.swift | 2 +- DevLog/Data/Protocol/UserDefaultsStore.swift | 2 +- DevLog/Data/Protocol/UserService.swift | 2 +- DevLog/Data/Protocol/WebPageImageStore.swift | 2 +- .../Protocol/WebPageMetadataService.swift | 2 +- DevLog/Data/Protocol/WebPageService.swift | 2 +- .../WidgetSnapshotPreferenceStore.swift | 2 +- .../Data/Protocol/WidgetSnapshotUpdater.swift | 2 +- DevLog/Domain/Entity/ActivityKind.swift | 2 +- DevLog/Domain/Entity/AuthProvider.swift | 2 +- DevLog/Domain/Entity/PushNotification.swift | 34 +++-- .../Entity/PushNotificationCursor.swift | 14 +- .../Domain/Entity/PushNotificationPage.swift | 16 ++- .../Domain/Entity/PushNotificationQuery.swift | 54 ++++++-- .../Entity/PushNotificationSettings.swift | 14 +- DevLog/Domain/Entity/SystemTheme.swift | 8 +- DevLog/Domain/Entity/SystemTodoCategory.swift | 2 +- .../Domain/Entity/TodayDisplayOptions.swift | 20 ++- DevLog/Domain/Entity/Todo.swift | 62 ++++++--- DevLog/Domain/Entity/TodoCategory.swift | 4 +- .../Entity/TodoCategoryPreference.swift | 14 +- DevLog/Domain/Entity/TodoCursor.swift | 18 ++- DevLog/Domain/Entity/TodoPage.swift | 14 +- DevLog/Domain/Entity/TodoQuery.swift | 42 +++--- DevLog/Domain/Entity/TodoReference.swift | 18 ++- DevLog/Domain/Entity/UserProfile.swift | 26 +++- DevLog/Domain/Entity/UserTodoCategory.swift | 18 ++- DevLog/Domain/Entity/WebPage.swift | 22 +++- DevLog/Domain/Extension/Array.swift | 4 +- DevLog/Domain/Extension/String.swift | 4 +- DevLog/Domain/Extension/UIFont.swift | 2 +- .../Domain/Protocol/AuthDataRepository.swift | 2 +- .../Protocol/AuthSessionRepository.swift | 2 +- .../Protocol/AuthenticationRepository.swift | 2 +- .../NetworkConnectivityRepository.swift | 2 +- .../Protocol/PushNotificationRepository.swift | 2 +- .../Protocol/TodoCategoryRepository.swift | 2 +- DevLog/Domain/Protocol/TodoRepository.swift | 2 +- .../Domain/Protocol/UserDataRepository.swift | 2 +- .../Protocol/UserPreferencesRepository.swift | 2 +- .../Protocol/WebPageImageRepository.swift | 2 +- .../Domain/Protocol/WebPageRepository.swift | 2 +- .../Auth/Delete/DeleteAuthUseCase.swift | 2 +- .../Auth/Delete/DeleteAuthUseCaseImpl.swift | 4 +- .../Provider/FetchAuthProvidersUseCase.swift | 2 +- .../FetchAuthProvidersUseCaseImpl.swift | 4 +- .../Provider/LinkAuthProviderUseCase.swift | 2 +- .../LinkAuthProviderUseCaseImpl.swift | 4 +- .../Provider/UnlinkAuthProviderUseCase.swift | 2 +- .../UnlinkAuthProviderUseCaseImpl.swift | 4 +- .../Session/ObserveAuthSessionUseCase.swift | 2 +- .../ObserveAuthSessionUseCaseImpl.swift | 4 +- .../UseCase/Auth/SignIn/SignInUseCase.swift | 2 +- .../Auth/SignIn/SignInUseCaseImpl.swift | 4 +- .../UseCase/Auth/SignOut/SignOutUseCase.swift | 2 +- .../Auth/SignOut/SignOutUseCaseImpl.swift | 4 +- .../ObserveNetworkConnectivityUseCase.swift | 2 +- ...bserveNetworkConnectivityUseCaseImpl.swift | 4 +- .../DeletePushNotificationUseCase.swift | 2 +- .../DeletePushNotificationUseCaseImpl.swift | 4 +- .../UndoDeletePushNotificationUseCase.swift | 2 +- ...ndoDeletePushNotificationUseCaseImpl.swift | 4 +- .../Fetch/FetchPushNotificationsUseCase.swift | 2 +- .../FetchPushNotificationsUseCaseImpl.swift | 6 +- .../Fetch/ObserveUnreadPushCountUseCase.swift | 2 +- .../ObserveUnreadPushCountUseCaseImpl.swift | 4 +- .../TogglePushNotificationReadUseCase.swift | 2 +- ...ogglePushNotificationReadUseCaseImpl.swift | 4 +- .../Todo/Delete/DeleteTodoUseCase.swift | 2 +- .../Todo/Delete/DeleteTodoUseCaseImpl.swift | 4 +- .../Todo/Delete/UndoDeleteTodoUseCase.swift | 2 +- .../Delete/UndoDeleteTodoUseCaseImpl.swift | 4 +- .../Fetch/FetchReferenceItemsUseCase.swift | 2 +- .../FetchReferenceItemsUseCaseImpl.swift | 4 +- .../Todo/Fetch/FetchTodoByIDUseCase.swift | 2 +- .../Todo/Fetch/FetchTodoByIDUseCaseImpl.swift | 4 +- .../Todo/Fetch/FetchTodosUseCase.swift | 2 +- .../Todo/Fetch/FetchTodosUseCaseImpl.swift | 4 +- .../Todo/Upsert/UpsertTodoUseCase.swift | 2 +- .../Todo/Upsert/UpsertTodoUseCaseImpl.swift | 4 +- .../FetchTodoCategoryPreferencesUseCase.swift | 2 +- ...chTodoCategoryPreferencesUseCaseImpl.swift | 4 +- ...UpdateTodoCategoryPreferencesUseCase.swift | 2 +- ...teTodoCategoryPreferencesUseCaseImpl.swift | 4 +- ...FetchPushNotificationSettingsUseCase.swift | 2 +- ...hPushNotificationSettingsUseCaseImpl.swift | 4 +- .../UserProfile/FetchUserDataUseCase.swift | 2 +- .../FetchUserDataUseCaseImpl.swift | 4 +- .../UpdatePushSettingsUseCase.swift | 2 +- .../UpdatePushSettingsUseCaseImpl.swift | 4 +- .../UpsertStatusMessageUseCase.swift | 2 +- .../UpsertStatusMessageUseCaseImpl.swift | 4 +- .../FetchHeatmapActivityTypesUseCase.swift | 2 +- ...FetchHeatmapActivityTypesUseCaseImpl.swift | 4 +- .../UpdateHeatmapActivityTypesUseCase.swift | 2 +- ...pdateHeatmapActivityTypesUseCaseImpl.swift | 4 +- .../FetchPushNotificationQueryUseCase.swift | 2 +- ...etchPushNotificationQueryUseCaseImpl.swift | 4 +- .../UpdatePushNotificationQueryUseCase.swift | 2 +- ...datePushNotificationQueryUseCaseImpl.swift | 4 +- .../FetchRecentSearchQueriesUseCase.swift | 2 +- .../FetchRecentSearchQueriesUseCaseImpl.swift | 4 +- .../UpdateRecentSearchQueriesUseCase.swift | 2 +- ...UpdateRecentSearchQueriesUseCaseImpl.swift | 4 +- .../Theme/ObserveSystemThemeUseCase.swift | 2 +- .../Theme/ObserveSystemThemeUseCaseImpl.swift | 4 +- .../Theme/UpdateSystemThemeUseCase.swift | 2 +- .../Theme/UpdateSystemThemeUseCaseImpl.swift | 4 +- .../FetchTodayDisplayOptionsUseCase.swift | 2 +- .../FetchTodayDisplayOptionsUseCaseImpl.swift | 4 +- .../UpdateTodayDisplayOptionsUseCase.swift | 2 +- ...UpdateTodayDisplayOptionsUseCaseImpl.swift | 4 +- .../FetchWebPageImageDirSizeUseCase.swift | 2 +- .../FetchWebPageImageDirSizeUseCaseImpl.swift | 4 +- .../WebPage/Fetch/FetchWebPagesUseCase.swift | 2 +- .../Fetch/FetchWebPagesUseCaseImpl.swift | 4 +- .../WebPage/Upsert/AddWebPageUseCase.swift | 2 +- .../Upsert/AddWebPageUseCaseImpl.swift | 4 +- .../ClearWebPageImageDirectoryUseCase.swift | 2 +- ...learWebPageImageDirectoryUseCaseImpl.swift | 4 +- .../WebPage/Upsert/DeleteWebPageUseCase.swift | 2 +- .../Upsert/DeleteWebPageUseCaseImpl.swift | 4 +- .../Upsert/UndoDeleteWebPageUseCase.swift | 2 +- .../Upsert/UndoDeleteWebPageUseCaseImpl.swift | 4 +- DevLog/Infra/Common/InfraLayerError.swift | 32 ----- DevLog/Presentation/Common/LoadingState.swift | 12 +- DevLog/Presentation/Protocol/Store.swift | 2 +- .../Structure/Profile/ActivityKindItem.swift | 12 +- .../Profile/HeatmapActivityItem.swift | 20 +-- .../Structure/Profile/HeatmapDay.swift | 12 +- .../Structure/Profile/HeatmapMonth.swift | 8 +- .../Structure/Profile/HeatmapQuarter.swift | 8 +- .../Structure/PushNotificationItem.swift | 18 +-- .../Structure/Todo/RecentTodoItem.swift | 16 +-- .../Todo/SystemTodoCategoryItem.swift | 12 +- .../Structure/Todo/TodayTodoItem.swift | 18 +-- .../Structure/Todo/TodoCategoryItem.swift | 24 ++-- .../Structure/Todo/TodoIDItem.swift | 4 +- .../Structure/Todo/TodoListItem.swift | 20 +-- .../Structure/Todo/TodoReferenceItem.swift | 8 +- .../Structure/Todo/UserTodoCategoryItem.swift | 12 +- .../Presentation/Structure/WebPageItem.swift | 14 +- .../PushNotificationListViewModel.swift | 22 ---- WidgetShared/Calendar.swift | 4 +- WidgetShared/WidgetAppGroup.swift | 4 +- WidgetShared/WidgetDeepLink.swift | 12 +- .../WidgetHeatmapPlaceholderShape.swift | 32 ++--- WidgetShared/WidgetKind.swift | 6 +- WidgetShared/WidgetSnapshotKey.swift | 8 +- 175 files changed, 904 insertions(+), 581 deletions(-) diff --git a/DevLog/Data/Common/DataLayerError.swift b/DevLog/Data/Common/DataLayerError.swift index 38467ee2..bda83e73 100644 --- a/DevLog/Data/Common/DataLayerError.swift +++ b/DevLog/Data/Common/DataLayerError.swift @@ -5,9 +5,10 @@ // Created by opfic on 3/11/26. // +import AuthenticationServices import Foundation -enum AuthError: Error { +public enum AuthError: Error { case notAuthenticated case failedToUnlinkLastProvider case linkEmailNotFound @@ -16,12 +17,26 @@ enum AuthError: Error { case unsupportedProvider } -enum DataError: Error { +public enum EmailFetchError: Error, Equatable { + case emailNotFound + case emailMismatch + + public var code: String { + switch self { + case .emailMismatch: + "email_mismatch" + case .emailNotFound: + "email_not_found" + } + } +} + +public enum DataError: Error { case invalidData(context: String) private static let logger = Logger(category: "DataError") - static func invalidData( + public static func invalidData( _ context: String, file: String = #file, function: String = #function, @@ -36,3 +51,17 @@ enum DataError: Error { return .invalidData(context: context) } } + +public extension Error { + var isSocialLoginCancelled: Bool { + switch self { + case let authError as ASAuthorizationError: + return authError.code == .canceled + case let webAuthError as ASWebAuthenticationSessionError: + return webAuthError.code == .canceledLogin + default: + let nsError = self as NSError + return nsError.domain == "com.google.GIDSignIn" && nsError.code == -5 + } + } +} diff --git a/DevLog/Data/Common/Logger.swift b/DevLog/Data/Common/Logger.swift index e4eb1717..c6072a2b 100644 --- a/DevLog/Data/Common/Logger.swift +++ b/DevLog/Data/Common/Logger.swift @@ -8,18 +8,18 @@ import Foundation import os.log -final class Logger { +public final class Logger { private let subsystem: String private let category: String private let osLog: OSLog - init(subsystem: String = Bundle.main.bundleIdentifier ?? "DevLog", category: String) { + public init(subsystem: String = Bundle.main.bundleIdentifier ?? "DevLog", category: String) { self.subsystem = subsystem self.category = category self.osLog = OSLog(subsystem: subsystem, category: category) } - func debug( + public func debug( _ message: String, file: String = #file, function: String = #function, @@ -28,7 +28,7 @@ final class Logger { log(message, type: .debug, file: file, function: function, line: line) } - func info( + public func info( _ message: String, file: String = #file, function: String = #function, @@ -37,7 +37,7 @@ final class Logger { log(message, type: .info, file: file, function: function, line: line) } - func warning( + public func warning( _ message: String, file: String = #file, function: String = #function, @@ -46,7 +46,7 @@ final class Logger { log(message, type: .default, file: file, function: function, line: line) } - func error( + public func error( _ message: String, error: Error? = nil, file: String = #file, @@ -60,7 +60,7 @@ final class Logger { log(fullMessage, type: .error, file: file, function: function, line: line) } - func fault( + public func fault( _ message: String, error: Error? = nil, file: String = #file, diff --git a/DevLog/Data/DTO/AppleAuthResponse.swift b/DevLog/Data/DTO/AppleAuthResponse.swift index 777c366c..e33fdf9b 100644 --- a/DevLog/Data/DTO/AppleAuthResponse.swift +++ b/DevLog/Data/DTO/AppleAuthResponse.swift @@ -8,9 +8,9 @@ import Foundation import AuthenticationServices -struct AppleAuthResponse { - let nonce: String - let credential: ASAuthorizationAppleIDCredential - let authorizationCode: Data - let idTokenString: String +public struct AppleAuthResponse { + public let nonce: String + public let credential: ASAuthorizationAppleIDCredential + public let authorizationCode: Data + public let idTokenString: String } diff --git a/DevLog/Data/DTO/AuthDataResponse.swift b/DevLog/Data/DTO/AuthDataResponse.swift index 043b635d..ce520b52 100644 --- a/DevLog/Data/DTO/AuthDataResponse.swift +++ b/DevLog/Data/DTO/AuthDataResponse.swift @@ -7,14 +7,14 @@ import Foundation -struct AuthDataResponse { - let uid: String - let displayName: String? - let email: String? - let providers: [String] - let providerID: String - let fcmToken: String - let accessToken: String? +public struct AuthDataResponse { + public let uid: String + public let displayName: String? + public let email: String? + public let providers: [String] + public let providerID: String + public let fcmToken: String + public let accessToken: String? init( uid: String, diff --git a/DevLog/Data/DTO/NotificationKind.swift b/DevLog/Data/DTO/NotificationKind.swift index 711034ce..b9564e1b 100644 --- a/DevLog/Data/DTO/NotificationKind.swift +++ b/DevLog/Data/DTO/NotificationKind.swift @@ -7,7 +7,7 @@ import Foundation -enum NotificationKind: String, Codable { +public enum NotificationKind: String, Codable { case info case warning case success diff --git a/DevLog/Data/DTO/PushNotificationCursorDTO.swift b/DevLog/Data/DTO/PushNotificationCursorDTO.swift index ea67ce07..5ae55ef1 100644 --- a/DevLog/Data/DTO/PushNotificationCursorDTO.swift +++ b/DevLog/Data/DTO/PushNotificationCursorDTO.swift @@ -7,7 +7,15 @@ import Foundation -struct PushNotificationCursorDTO { - let receivedAt: Date - let documentID: String +public struct PushNotificationCursorDTO { + public let receivedAt: Date + public let documentID: String + + public init( + receivedAt: Date, + documentID: String + ) { + self.receivedAt = receivedAt + self.documentID = documentID + } } diff --git a/DevLog/Data/DTO/PushNotificationPageResponse.swift b/DevLog/Data/DTO/PushNotificationPageResponse.swift index 572d740c..5f0d149f 100644 --- a/DevLog/Data/DTO/PushNotificationPageResponse.swift +++ b/DevLog/Data/DTO/PushNotificationPageResponse.swift @@ -5,7 +5,15 @@ // Created by opfic on 2/18/26. // -struct PushNotificationPageResponse { - let items: [PushNotificationResponse] - let nextCursor: PushNotificationCursorDTO? +public struct PushNotificationPageResponse { + public let items: [PushNotificationResponse] + public let nextCursor: PushNotificationCursorDTO? + + public init( + items: [PushNotificationResponse], + nextCursor: PushNotificationCursorDTO? + ) { + self.items = items + self.nextCursor = nextCursor + } } diff --git a/DevLog/Data/DTO/PushNotificationResponse.swift b/DevLog/Data/DTO/PushNotificationResponse.swift index f72e9d51..c3df5dcc 100644 --- a/DevLog/Data/DTO/PushNotificationResponse.swift +++ b/DevLog/Data/DTO/PushNotificationResponse.swift @@ -7,12 +7,30 @@ import Foundation -struct PushNotificationResponse { - let id: String - let title: String - let body: String - let receivedAt: Date - let isRead: Bool - let todoId: String - let todoCategory: TodoCategoryResponse +public struct PushNotificationResponse { + public let id: String + public let title: String + public let body: String + public let receivedAt: Date + public let isRead: Bool + public let todoId: String + public let todoCategory: TodoCategoryResponse + + public init( + id: String, + title: String, + body: String, + receivedAt: Date, + isRead: Bool, + todoId: String, + todoCategory: TodoCategoryResponse + ) { + self.id = id + self.title = title + self.body = body + self.receivedAt = receivedAt + self.isRead = isRead + self.todoId = todoId + self.todoCategory = todoCategory + } } diff --git a/DevLog/Data/DTO/TodoCategoryResponse.swift b/DevLog/Data/DTO/TodoCategoryResponse.swift index 75b841f1..fa33a781 100644 --- a/DevLog/Data/DTO/TodoCategoryResponse.swift +++ b/DevLog/Data/DTO/TodoCategoryResponse.swift @@ -7,7 +7,7 @@ import Foundation -enum TodoCategoryResponse { +public enum TodoCategoryResponse { case raw(String) case decoded(TodoCategory) } diff --git a/DevLog/Data/DTO/TodoCursorDTO.swift b/DevLog/Data/DTO/TodoCursorDTO.swift index d7fb22d5..23ceb852 100644 --- a/DevLog/Data/DTO/TodoCursorDTO.swift +++ b/DevLog/Data/DTO/TodoCursorDTO.swift @@ -7,8 +7,18 @@ import Foundation -struct TodoCursorDTO { - let primarySortDate: Date? - let secondarySortDate: Date? - let documentID: String +public struct TodoCursorDTO { + public let primarySortDate: Date? + public let secondarySortDate: Date? + public let documentID: String + + public init( + primarySortDate: Date?, + secondarySortDate: Date?, + documentID: String + ) { + self.primarySortDate = primarySortDate + self.secondarySortDate = secondarySortDate + self.documentID = documentID + } } diff --git a/DevLog/Data/DTO/TodoDTO.swift b/DevLog/Data/DTO/TodoDTO.swift index f4e8c0d1..f5967f12 100644 --- a/DevLog/Data/DTO/TodoDTO.swift +++ b/DevLog/Data/DTO/TodoDTO.swift @@ -7,35 +7,97 @@ import Foundation -struct TodoRequest: Encodable { - let id: String - let isPinned: Bool - let isCompleted: Bool - let isChecked: Bool - let title: String - let content: String - let createdAt: Date - let updatedAt: Date - let completedAt: Date? - let deletedAt: Date? - let dueDate: Date? - let tags: [String] - let category: String +public struct TodoRequest: Encodable { + public let id: String + public let isPinned: Bool + public let isCompleted: Bool + public let isChecked: Bool + public let title: String + public let content: String + public let createdAt: Date + public let updatedAt: Date + public let completedAt: Date? + public let deletedAt: Date? + public let dueDate: Date? + public let tags: [String] + public let category: String + + public init( + id: String, + isPinned: Bool, + isCompleted: Bool, + isChecked: Bool, + title: String, + content: String, + createdAt: Date, + updatedAt: Date, + completedAt: Date?, + deletedAt: Date?, + dueDate: Date?, + tags: [String], + category: String + ) { + self.id = id + self.isPinned = isPinned + self.isCompleted = isCompleted + self.isChecked = isChecked + self.title = title + self.content = content + self.createdAt = createdAt + self.updatedAt = updatedAt + self.completedAt = completedAt + self.deletedAt = deletedAt + self.dueDate = dueDate + self.tags = tags + self.category = category + } } -struct TodoResponse { - let id: String - let isPinned: Bool - let isCompleted: Bool - let isChecked: Bool - let number: Int - let title: String - let content: String - let createdAt: Date - let updatedAt: Date - let completedAt: Date? - let deletedAt: Date? - let dueDate: Date? - let tags: [String] - let category: TodoCategoryResponse +public struct TodoResponse { + public let id: String + public let isPinned: Bool + public let isCompleted: Bool + public let isChecked: Bool + public let number: Int + public let title: String + public let content: String + public let createdAt: Date + public let updatedAt: Date + public let completedAt: Date? + public let deletedAt: Date? + public let dueDate: Date? + public let tags: [String] + public let category: TodoCategoryResponse + + public init( + id: String, + isPinned: Bool, + isCompleted: Bool, + isChecked: Bool, + number: Int, + title: String, + content: String, + createdAt: Date, + updatedAt: Date, + completedAt: Date?, + deletedAt: Date?, + dueDate: Date?, + tags: [String], + category: TodoCategoryResponse + ) { + self.id = id + self.isPinned = isPinned + self.isCompleted = isCompleted + self.isChecked = isChecked + self.number = number + self.title = title + self.content = content + self.createdAt = createdAt + self.updatedAt = updatedAt + self.completedAt = completedAt + self.deletedAt = deletedAt + self.dueDate = dueDate + self.tags = tags + self.category = category + } } diff --git a/DevLog/Data/DTO/TodoPageResponse.swift b/DevLog/Data/DTO/TodoPageResponse.swift index 56faf1ec..83b2fa79 100644 --- a/DevLog/Data/DTO/TodoPageResponse.swift +++ b/DevLog/Data/DTO/TodoPageResponse.swift @@ -5,7 +5,15 @@ // Created by opfic on 2/21/26. // -struct TodoPageResponse { - let items: [TodoResponse] - let nextCursor: TodoCursorDTO? +public struct TodoPageResponse { + public let items: [TodoResponse] + public let nextCursor: TodoCursorDTO? + + public init( + items: [TodoResponse], + nextCursor: TodoCursorDTO? + ) { + self.items = items + self.nextCursor = nextCursor + } } diff --git a/DevLog/Data/DTO/TodoReferenceResponse.swift b/DevLog/Data/DTO/TodoReferenceResponse.swift index 3f60dd2e..2bdf7097 100644 --- a/DevLog/Data/DTO/TodoReferenceResponse.swift +++ b/DevLog/Data/DTO/TodoReferenceResponse.swift @@ -7,9 +7,21 @@ import Foundation -struct TodoReferenceResponse { - let id: String - let number: Int - let title: String - let category: TodoCategoryResponse +public struct TodoReferenceResponse { + public let id: String + public let number: Int + public let title: String + public let category: TodoCategoryResponse + + public init( + id: String, + number: Int, + title: String, + category: TodoCategoryResponse + ) { + self.id = id + self.number = number + self.title = title + self.category = category + } } diff --git a/DevLog/Data/DTO/UserProfileResponse.swift b/DevLog/Data/DTO/UserProfileResponse.swift index 70dc587e..ba8adc89 100644 --- a/DevLog/Data/DTO/UserProfileResponse.swift +++ b/DevLog/Data/DTO/UserProfileResponse.swift @@ -7,10 +7,10 @@ import Foundation -struct UserProfileResponse: Decodable { - let name: String - let email: String - let statusMessage: String - let avatarURL: URL? - let createdAt: Date +public struct UserProfileResponse: Decodable { + public let name: String + public let email: String + public let statusMessage: String + public let avatarURL: URL? + public let createdAt: Date } diff --git a/DevLog/Data/DTO/WebPageDTO.swift b/DevLog/Data/DTO/WebPageDTO.swift index 6e5cadce..fcb8818a 100644 --- a/DevLog/Data/DTO/WebPageDTO.swift +++ b/DevLog/Data/DTO/WebPageDTO.swift @@ -7,18 +7,46 @@ import Foundation -struct WebPageRequest: Encodable { - let title: String - let url: String - let displayURL: String - let imageURL: String - let isDeleted: Bool +public struct WebPageRequest: Encodable { + public let title: String + public let url: String + public let displayURL: String + public let imageURL: String + public let isDeleted: Bool + + public init( + title: String, + url: String, + displayURL: String, + imageURL: String, + isDeleted: Bool + ) { + self.title = title + self.url = url + self.displayURL = displayURL + self.imageURL = imageURL + self.isDeleted = isDeleted + } } -struct WebPageResponse { - let id: String - let title: String - let url: String - let displayURL: String - let imageURL: String +public struct WebPageResponse { + public let id: String + public let title: String + public let url: String + public let displayURL: String + public let imageURL: String + + public init( + id: String, + title: String, + url: String, + displayURL: String, + imageURL: String + ) { + self.id = id + self.title = title + self.url = url + self.displayURL = displayURL + self.imageURL = imageURL + } } diff --git a/DevLog/Data/DTO/WebPageMetadataResponse.swift b/DevLog/Data/DTO/WebPageMetadataResponse.swift index 89842449..38d64f20 100644 --- a/DevLog/Data/DTO/WebPageMetadataResponse.swift +++ b/DevLog/Data/DTO/WebPageMetadataResponse.swift @@ -5,8 +5,8 @@ // Created by 최윤진 on 2/20/26. // -struct WebPageMetadataResponse { - let title: String - let displayURL: String - let imageURL: String +public struct WebPageMetadataResponse { + public let title: String + public let displayURL: String + public let imageURL: String } diff --git a/DevLog/Data/Mapper/PushNotificationMapping.swift b/DevLog/Data/Mapper/PushNotificationMapping.swift index c717d170..4371a96b 100644 --- a/DevLog/Data/Mapper/PushNotificationMapping.swift +++ b/DevLog/Data/Mapper/PushNotificationMapping.swift @@ -2,11 +2,13 @@ // PushNotificationMapping.swift // DevLog // + + // Created by 최윤진 on 2/27/26. // -extension PushNotificationResponse { - func toDomain() throws -> PushNotification { +public extension PushNotificationResponse { + public func toDomain() throws -> PushNotification { let todoCategory: TodoCategory switch self.todoCategory { @@ -30,15 +32,15 @@ extension PushNotificationResponse { } } -extension PushNotificationCursorDTO { - func toDomain() -> PushNotificationCursor { +public extension PushNotificationCursorDTO { + public func toDomain() -> PushNotificationCursor { PushNotificationCursor( receivedAt: self.receivedAt, documentID: self.documentID ) } - static func fromDomain(_ cursor: PushNotificationCursor) -> Self { + public static func fromDomain(_ cursor: PushNotificationCursor) -> Self { PushNotificationCursorDTO( receivedAt: cursor.receivedAt, documentID: cursor.documentID @@ -46,8 +48,8 @@ extension PushNotificationCursorDTO { } } -extension PushNotificationPageResponse { - func toDomain() throws -> PushNotificationPage { +public extension PushNotificationPageResponse { + public func toDomain() throws -> PushNotificationPage { let items = try self.items.map { try $0.toDomain() } let nextCursor = self.nextCursor?.toDomain() return PushNotificationPage(items: items, nextCursor: nextCursor) diff --git a/DevLog/Data/Mapper/TodoMapping.swift b/DevLog/Data/Mapper/TodoMapping.swift index 73a43448..752797e6 100644 --- a/DevLog/Data/Mapper/TodoMapping.swift +++ b/DevLog/Data/Mapper/TodoMapping.swift @@ -2,11 +2,13 @@ // TodoMapping.swift // DevLog // + + // Created by 최윤진 on 2/19/26. // -extension TodoRequest { - static func fromDomain(_ entity: Todo) -> Self { +public extension TodoRequest { + public static func fromDomain(_ entity: Todo) -> Self { TodoRequest( id: entity.id, isPinned: entity.isPinned, @@ -25,8 +27,8 @@ extension TodoRequest { } } -extension TodoResponse { - func toDomain() throws -> Todo { +public extension TodoResponse { + public func toDomain() throws -> Todo { let todoCategory: TodoCategory switch category { @@ -55,8 +57,8 @@ extension TodoResponse { } } -extension TodoCursorDTO { - func toDomain() -> TodoCursor { +public extension TodoCursorDTO { + public func toDomain() -> TodoCursor { TodoCursor( primarySortDate: primarySortDate, secondarySortDate: secondarySortDate, @@ -64,7 +66,7 @@ extension TodoCursorDTO { ) } - static func fromDomain(_ cursor: TodoCursor) -> Self { + public static func fromDomain(_ cursor: TodoCursor) -> Self { TodoCursorDTO( primarySortDate: cursor.primarySortDate, secondarySortDate: cursor.secondarySortDate, @@ -73,8 +75,8 @@ extension TodoCursorDTO { } } -extension TodoPageResponse { - func toDomain() throws -> TodoPage { +public extension TodoPageResponse { + public func toDomain() throws -> TodoPage { let items = try items.map { try $0.toDomain() } let cursor = nextCursor?.toDomain() return TodoPage(items: items, nextCursor: cursor) diff --git a/DevLog/Data/Mapper/UserProfileMapping.swift b/DevLog/Data/Mapper/UserProfileMapping.swift index fbaed419..dca6cd83 100644 --- a/DevLog/Data/Mapper/UserProfileMapping.swift +++ b/DevLog/Data/Mapper/UserProfileMapping.swift @@ -2,11 +2,13 @@ // UserProfileMapping.swift // DevLog // + + // Created by 최윤진 on 2/19/26. // -extension UserProfileResponse { - func toDomain() -> UserProfile { +public extension UserProfileResponse { + public func toDomain() -> UserProfile { UserProfile( name: self.name, email: self.email, diff --git a/DevLog/Data/Mapper/WebPageMapping.swift b/DevLog/Data/Mapper/WebPageMapping.swift index c89a8d93..31b22c54 100644 --- a/DevLog/Data/Mapper/WebPageMapping.swift +++ b/DevLog/Data/Mapper/WebPageMapping.swift @@ -7,8 +7,8 @@ import Foundation -extension WebPageResponse { - func toDomain() throws -> WebPage { +public extension WebPageResponse { + public func toDomain() throws -> WebPage { guard let url = URL(string: url) else { throw DataError.invalidData("WebPageResponse.url is invalid: \(url)") } diff --git a/DevLog/Data/Protocol/AuthService.swift b/DevLog/Data/Protocol/AuthService.swift index 61da907e..f8e535b5 100644 --- a/DevLog/Data/Protocol/AuthService.swift +++ b/DevLog/Data/Protocol/AuthService.swift @@ -8,7 +8,7 @@ import Combine import Foundation -protocol AuthService { +public protocol AuthService { var uid: String? { get } var providerIDs: [String] { get } var currentUserEmail: String? { get } diff --git a/DevLog/Data/Protocol/AuthenticationService.swift b/DevLog/Data/Protocol/AuthenticationService.swift index 51359a50..609658dc 100644 --- a/DevLog/Data/Protocol/AuthenticationService.swift +++ b/DevLog/Data/Protocol/AuthenticationService.swift @@ -7,7 +7,7 @@ import Foundation -protocol AuthenticationService { +public protocol AuthenticationService { func signIn() async throws -> AuthDataResponse func signOut(_ uid: String) async throws func deleteAuth(_ uid: String) async throws diff --git a/DevLog/Data/Protocol/NWPathConnectivityProvider.swift b/DevLog/Data/Protocol/NWPathConnectivityProvider.swift index 9dac168a..1c87c230 100644 --- a/DevLog/Data/Protocol/NWPathConnectivityProvider.swift +++ b/DevLog/Data/Protocol/NWPathConnectivityProvider.swift @@ -8,6 +8,6 @@ import Combine import Foundation -protocol NWPathConnectivityProvider { +public protocol NWPathConnectivityProvider { func observeNetworkConnectivity() -> AnyPublisher } diff --git a/DevLog/Data/Protocol/PushNotificationService.swift b/DevLog/Data/Protocol/PushNotificationService.swift index ff963b70..77f6efd1 100644 --- a/DevLog/Data/Protocol/PushNotificationService.swift +++ b/DevLog/Data/Protocol/PushNotificationService.swift @@ -8,7 +8,7 @@ import Combine import Foundation -protocol PushNotificationService { +public protocol PushNotificationService { func fetchPushNotificationEnabled() async throws -> Bool func fetchPushNotificationTime() async throws -> DateComponents func updatePushNotificationSettings(isEnabled: Bool, components: DateComponents) async throws diff --git a/DevLog/Data/Protocol/ThemeStore.swift b/DevLog/Data/Protocol/ThemeStore.swift index ed6256b4..54efbff4 100644 --- a/DevLog/Data/Protocol/ThemeStore.swift +++ b/DevLog/Data/Protocol/ThemeStore.swift @@ -8,7 +8,7 @@ import Combine import Foundation -protocol ThemeStore { +public protocol ThemeStore { func observeTheme() -> AnyPublisher func send(_ theme: SystemTheme) } diff --git a/DevLog/Data/Protocol/TodoCategoryService.swift b/DevLog/Data/Protocol/TodoCategoryService.swift index 113de171..bb27d538 100644 --- a/DevLog/Data/Protocol/TodoCategoryService.swift +++ b/DevLog/Data/Protocol/TodoCategoryService.swift @@ -7,7 +7,7 @@ import Foundation -protocol TodoCategoryService { +public protocol TodoCategoryService { func fetchPreferences() async throws -> [TodoCategoryPreference] func updatePreferences(_ preferences: [TodoCategoryPreference]) async throws } diff --git a/DevLog/Data/Protocol/TodoService.swift b/DevLog/Data/Protocol/TodoService.swift index 25196c54..e78209e3 100644 --- a/DevLog/Data/Protocol/TodoService.swift +++ b/DevLog/Data/Protocol/TodoService.swift @@ -7,7 +7,7 @@ import Foundation -protocol TodoService { +public protocol TodoService { func fetchTodos(_ query: TodoQuery, cursor: TodoCursorDTO?) async throws -> TodoPageResponse func upsertTodo(request: TodoRequest) async throws func deleteTodo(todoId: String) async throws diff --git a/DevLog/Data/Protocol/UserDefaultsStore.swift b/DevLog/Data/Protocol/UserDefaultsStore.swift index 5e0c8ce0..0e1e805f 100644 --- a/DevLog/Data/Protocol/UserDefaultsStore.swift +++ b/DevLog/Data/Protocol/UserDefaultsStore.swift @@ -7,7 +7,7 @@ import Foundation -protocol UserDefaultsStore { +public protocol UserDefaultsStore { func string(forKey key: String) -> String? func setString(_ value: String?, forKey key: String) func stringArray(forKey key: String) -> [String] diff --git a/DevLog/Data/Protocol/UserService.swift b/DevLog/Data/Protocol/UserService.swift index b9c17319..df35bde4 100644 --- a/DevLog/Data/Protocol/UserService.swift +++ b/DevLog/Data/Protocol/UserService.swift @@ -7,7 +7,7 @@ import Foundation -protocol UserService { +public protocol UserService { func upsertUser(_ response: AuthDataResponse) async throws func fetchUserProfile() async throws -> UserProfileResponse func upsertStatusMessage(_ message: String) async throws diff --git a/DevLog/Data/Protocol/WebPageImageStore.swift b/DevLog/Data/Protocol/WebPageImageStore.swift index b64a3e49..b3277956 100644 --- a/DevLog/Data/Protocol/WebPageImageStore.swift +++ b/DevLog/Data/Protocol/WebPageImageStore.swift @@ -7,7 +7,7 @@ import Foundation -protocol WebPageImageStore { +public protocol WebPageImageStore { func cachedImageURL(for url: URL) async throws -> URL func saveImage(_ data: Data, for url: URL) async throws -> URL func dirSizeInBytes() async -> Int64 diff --git a/DevLog/Data/Protocol/WebPageMetadataService.swift b/DevLog/Data/Protocol/WebPageMetadataService.swift index 54de65da..fe16ad5c 100644 --- a/DevLog/Data/Protocol/WebPageMetadataService.swift +++ b/DevLog/Data/Protocol/WebPageMetadataService.swift @@ -7,7 +7,7 @@ import Foundation -protocol WebPageMetadataService { +public protocol WebPageMetadataService { func fetchMetadata(from urlString: String) async throws -> WebPageMetadataResponse func removeCachedImage(for urlString: String) async func cachedImageURL(for urlString: String) async throws -> URL diff --git a/DevLog/Data/Protocol/WebPageService.swift b/DevLog/Data/Protocol/WebPageService.swift index d4c5372e..8566c836 100644 --- a/DevLog/Data/Protocol/WebPageService.swift +++ b/DevLog/Data/Protocol/WebPageService.swift @@ -7,7 +7,7 @@ import Foundation -protocol WebPageService { +public protocol WebPageService { func fetchWebPages(_ query: String) async throws -> [WebPageResponse] func upsertWebPage(_ request: WebPageRequest) async throws func deleteWebPage(_ urlString: String) async throws diff --git a/DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift b/DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift index ba8f7bdf..395f98c9 100644 --- a/DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift +++ b/DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift @@ -7,7 +7,7 @@ import Foundation -protocol WidgetSnapshotPreferenceStore { +public protocol WidgetSnapshotPreferenceStore { func heatmapActivityTypes() -> [String] func setHeatmapActivityTypes(_ activityTypes: [String]) func selectedActivityKinds() -> Set diff --git a/DevLog/Data/Protocol/WidgetSnapshotUpdater.swift b/DevLog/Data/Protocol/WidgetSnapshotUpdater.swift index 4d5f519b..ab6d0a26 100644 --- a/DevLog/Data/Protocol/WidgetSnapshotUpdater.swift +++ b/DevLog/Data/Protocol/WidgetSnapshotUpdater.swift @@ -7,7 +7,7 @@ import Foundation -protocol WidgetSnapshotUpdater { +public protocol WidgetSnapshotUpdater { func updateTodaySnapshot( todos: [Todo], now: Date diff --git a/DevLog/Domain/Entity/ActivityKind.swift b/DevLog/Domain/Entity/ActivityKind.swift index 2f15258f..363e6d30 100644 --- a/DevLog/Domain/Entity/ActivityKind.swift +++ b/DevLog/Domain/Entity/ActivityKind.swift @@ -7,7 +7,7 @@ import Foundation -enum ActivityKind: String, Hashable { +public enum ActivityKind: String, Hashable { case created case completed case deleted diff --git a/DevLog/Domain/Entity/AuthProvider.swift b/DevLog/Domain/Entity/AuthProvider.swift index 15312972..c214f224 100644 --- a/DevLog/Domain/Entity/AuthProvider.swift +++ b/DevLog/Domain/Entity/AuthProvider.swift @@ -7,7 +7,7 @@ import Foundation -enum AuthProvider: String, CaseIterable { +public enum AuthProvider: String, CaseIterable { case apple = "apple.com" case google = "google.com" case github = "github.com" diff --git a/DevLog/Domain/Entity/PushNotification.swift b/DevLog/Domain/Entity/PushNotification.swift index 6d2a00bc..76be63c6 100644 --- a/DevLog/Domain/Entity/PushNotification.swift +++ b/DevLog/Domain/Entity/PushNotification.swift @@ -7,12 +7,30 @@ import Foundation -struct PushNotification: Hashable { - let id: String - let title: String - let body: String - let receivedAt: Date - var isRead: Bool - let todoId: String - let todoCategory: TodoCategory +public struct PushNotification: Hashable { + public let id: String + public let title: String + public let body: String + public let receivedAt: Date + public var isRead: Bool + public let todoId: String + public let todoCategory: TodoCategory + + public init( + id: String, + title: String, + body: String, + receivedAt: Date, + isRead: Bool, + todoId: String, + todoCategory: TodoCategory + ) { + self.id = id + self.title = title + self.body = body + self.receivedAt = receivedAt + self.isRead = isRead + self.todoId = todoId + self.todoCategory = todoCategory + } } diff --git a/DevLog/Domain/Entity/PushNotificationCursor.swift b/DevLog/Domain/Entity/PushNotificationCursor.swift index e8d2da55..f0274f7c 100644 --- a/DevLog/Domain/Entity/PushNotificationCursor.swift +++ b/DevLog/Domain/Entity/PushNotificationCursor.swift @@ -7,7 +7,15 @@ import Foundation -struct PushNotificationCursor: Equatable { - let receivedAt: Date - let documentID: String +public struct PushNotificationCursor: Equatable { + public let receivedAt: Date + public let documentID: String + + public init( + receivedAt: Date, + documentID: String + ) { + self.receivedAt = receivedAt + self.documentID = documentID + } } diff --git a/DevLog/Domain/Entity/PushNotificationPage.swift b/DevLog/Domain/Entity/PushNotificationPage.swift index cb9efc43..443a3866 100644 --- a/DevLog/Domain/Entity/PushNotificationPage.swift +++ b/DevLog/Domain/Entity/PushNotificationPage.swift @@ -7,11 +7,19 @@ import Foundation -struct PushNotificationPage: Equatable { - let items: [PushNotification] - let nextCursor: PushNotificationCursor? +public struct PushNotificationPage: Equatable { + public let items: [PushNotification] + public let nextCursor: PushNotificationCursor? - static func == (lhs: PushNotificationPage, rhs: PushNotificationPage) -> Bool { + public init( + items: [PushNotification], + nextCursor: PushNotificationCursor? + ) { + self.items = items + self.nextCursor = nextCursor + } + + public static func == (lhs: PushNotificationPage, rhs: PushNotificationPage) -> Bool { lhs.items.map { $0.id } == rhs.items.map { $0.id } && lhs.nextCursor == rhs.nextCursor } } diff --git a/DevLog/Domain/Entity/PushNotificationQuery.swift b/DevLog/Domain/Entity/PushNotificationQuery.swift index 6cf88403..d8c611ba 100644 --- a/DevLog/Domain/Entity/PushNotificationQuery.swift +++ b/DevLog/Domain/Entity/PushNotificationQuery.swift @@ -7,24 +7,36 @@ import Foundation -struct PushNotificationQuery: Equatable { - enum SortOrder: Equatable { +public struct PushNotificationQuery: Equatable { + public enum SortOrder: Equatable { case latest case oldest } - enum TimeFilter: Equatable, Hashable { + public enum TimeFilter: Equatable, Hashable { case none case hours(Int) case days(Int) } - var sortOrder: SortOrder - var timeFilter: TimeFilter - var unreadOnly: Bool - var pageSize: Int + public var sortOrder: SortOrder + public var timeFilter: TimeFilter + public var unreadOnly: Bool + public var pageSize: Int - static let `default` = PushNotificationQuery( + public init( + sortOrder: SortOrder, + timeFilter: TimeFilter, + unreadOnly: Bool, + pageSize: Int + ) { + self.sortOrder = sortOrder + self.timeFilter = timeFilter + self.unreadOnly = unreadOnly + self.pageSize = pageSize + } + + public static let `default` = PushNotificationQuery( sortOrder: .latest, timeFilter: .none, unreadOnly: false, @@ -32,8 +44,30 @@ struct PushNotificationQuery: Equatable { ) } -extension PushNotificationQuery.TimeFilter { - var thresholdDate: Date? { +public extension PushNotificationQuery.TimeFilter { + var id: String { + switch self { + case .none: return "none" + case .hours(let value): return "hours-\(value)" + case .days(let value): return "days-\(value)" + } + } + + init(id: String) { + if id == "none" { + self = .none + } else if id.hasPrefix("hours-") { + let value = Int(id.replacingOccurrences(of: "hours-", with: "")) ?? 0 + self = 0 < value ? .hours(value) : .none + } else if id.hasPrefix("days-") { + let value = Int(id.replacingOccurrences(of: "days-", with: "")) ?? 0 + self = 0 < value ? .days(value) : .none + } else { + self = .none + } + } + + public var thresholdDate: Date? { switch self { case .none: return nil diff --git a/DevLog/Domain/Entity/PushNotificationSettings.swift b/DevLog/Domain/Entity/PushNotificationSettings.swift index 5ae3f4d6..6f74e5a7 100644 --- a/DevLog/Domain/Entity/PushNotificationSettings.swift +++ b/DevLog/Domain/Entity/PushNotificationSettings.swift @@ -7,7 +7,15 @@ import Foundation -struct PushNotificationSettings: Equatable { - let isEnabled: Bool - let scheduledTime: DateComponents +public struct PushNotificationSettings: Equatable { + public let isEnabled: Bool + public let scheduledTime: DateComponents + + public init( + isEnabled: Bool, + scheduledTime: DateComponents + ) { + self.isEnabled = isEnabled + self.scheduledTime = scheduledTime + } } diff --git a/DevLog/Domain/Entity/SystemTheme.swift b/DevLog/Domain/Entity/SystemTheme.swift index 8f51a938..72b837a4 100644 --- a/DevLog/Domain/Entity/SystemTheme.swift +++ b/DevLog/Domain/Entity/SystemTheme.swift @@ -7,16 +7,16 @@ import SwiftUI -enum SystemTheme: String, Identifiable { +public enum SystemTheme: String, Identifiable { case automatic case light case dark - var id: String { + public var id: String { rawValue } - var localizedName: String { + public var localizedName: String { switch self { case .automatic: return NSLocalizedString("system_theme_automatic", comment: "System theme: automatic") @@ -27,7 +27,7 @@ enum SystemTheme: String, Identifiable { } } - var colorScheme: ColorScheme? { + public var colorScheme: ColorScheme? { switch self { case .automatic: return nil diff --git a/DevLog/Domain/Entity/SystemTodoCategory.swift b/DevLog/Domain/Entity/SystemTodoCategory.swift index 32020626..1556aa36 100644 --- a/DevLog/Domain/Entity/SystemTodoCategory.swift +++ b/DevLog/Domain/Entity/SystemTodoCategory.swift @@ -7,7 +7,7 @@ import Foundation -enum SystemTodoCategory: String, CaseIterable, Hashable { +public enum SystemTodoCategory: String, CaseIterable, Hashable { case issue // 이슈 case feature // 신규 기능 case improvement // 개선/리팩터링 diff --git a/DevLog/Domain/Entity/TodayDisplayOptions.swift b/DevLog/Domain/Entity/TodayDisplayOptions.swift index af6d9318..bb83d86a 100644 --- a/DevLog/Domain/Entity/TodayDisplayOptions.swift +++ b/DevLog/Domain/Entity/TodayDisplayOptions.swift @@ -7,22 +7,30 @@ import Foundation -struct TodayDisplayOptions: Equatable { - enum DueDateVisibility: String, CaseIterable, Equatable { +public struct TodayDisplayOptions: Equatable { + public enum DueDateVisibility: String, CaseIterable, Equatable { case all case withDueDateOnly case withoutDueDateOnly } - enum FocusVisibility: String, CaseIterable, Equatable { + public enum FocusVisibility: String, CaseIterable, Equatable { case all case focusedOnly } - var dueDateVisibility: DueDateVisibility - var focusVisibility: FocusVisibility + public var dueDateVisibility: DueDateVisibility + public var focusVisibility: FocusVisibility - static let `default` = TodayDisplayOptions( + public init( + dueDateVisibility: DueDateVisibility, + focusVisibility: FocusVisibility + ) { + self.dueDateVisibility = dueDateVisibility + self.focusVisibility = focusVisibility + } + + public static let `default` = TodayDisplayOptions( dueDateVisibility: .all, focusVisibility: .all ) diff --git a/DevLog/Domain/Entity/Todo.swift b/DevLog/Domain/Entity/Todo.swift index 5de27141..64b3013a 100644 --- a/DevLog/Domain/Entity/Todo.swift +++ b/DevLog/Domain/Entity/Todo.swift @@ -7,19 +7,51 @@ import Foundation -struct Todo: Hashable { - let id: String - var isPinned: Bool // 해당 할 일이 상단에 고정되어 있는지 여부 - var isCompleted: Bool // 해당 할 일의 완료 여부 - var isChecked: Bool // 해당 할 일의 체크 여부 - var number: Int? // 사용자에게 노출되는 Todo 번호 - var title: String // 할 일의 제목 - var content: String // 할 일의 설명 - var createdAt: Date // 할 일 생성 날짜 - var updatedAt: Date // 할 일 수정 날짜 - var completedAt: Date? // 할 일 완료 날짜 - var deletedAt: Date? // 할 일 삭제 날짜 - var dueDate: Date? // 할 일의 마감 날짜 (선택 사항) - var tags: [String] // 할 일에 연결된 태그들 - var category: TodoCategory // 할 일의 종류 +public struct Todo: Hashable { + public let id: String + public var isPinned: Bool // 해당 할 일이 상단에 고정되어 있는지 여부 + public var isCompleted: Bool // 해당 할 일의 완료 여부 + public var isChecked: Bool // 해당 할 일의 체크 여부 + public var number: Int? // 사용자에게 노출되는 Todo 번호 + public var title: String // 할 일의 제목 + public var content: String // 할 일의 설명 + public var createdAt: Date // 할 일 생성 날짜 + public var updatedAt: Date // 할 일 수정 날짜 + public var completedAt: Date? // 할 일 완료 날짜 + public var deletedAt: Date? // 할 일 삭제 날짜 + public var dueDate: Date? // 할 일의 마감 날짜 (선택 사항) + public var tags: [String] // 할 일에 연결된 태그들 + public var category: TodoCategory // 할 일의 종류 + + public init( + id: String, + isPinned: Bool, + isCompleted: Bool, + isChecked: Bool, + number: Int?, + title: String, + content: String, + createdAt: Date, + updatedAt: Date, + completedAt: Date?, + deletedAt: Date?, + dueDate: Date?, + tags: [String], + category: TodoCategory + ) { + self.id = id + self.isPinned = isPinned + self.isCompleted = isCompleted + self.isChecked = isChecked + self.number = number + self.title = title + self.content = content + self.createdAt = createdAt + self.updatedAt = updatedAt + self.completedAt = completedAt + self.deletedAt = deletedAt + self.dueDate = dueDate + self.tags = tags + self.category = category + } } diff --git a/DevLog/Domain/Entity/TodoCategory.swift b/DevLog/Domain/Entity/TodoCategory.swift index 85e177db..b5cc2d93 100644 --- a/DevLog/Domain/Entity/TodoCategory.swift +++ b/DevLog/Domain/Entity/TodoCategory.swift @@ -7,11 +7,11 @@ import Foundation -enum TodoCategory: Hashable { +public enum TodoCategory: Hashable { case system(SystemTodoCategory) case user(UserTodoCategory) - var storageValue: String { + public var storageValue: String { switch self { case .system(let category): return category.rawValue diff --git a/DevLog/Domain/Entity/TodoCategoryPreference.swift b/DevLog/Domain/Entity/TodoCategoryPreference.swift index 1b3f337d..ff411cd7 100644 --- a/DevLog/Domain/Entity/TodoCategoryPreference.swift +++ b/DevLog/Domain/Entity/TodoCategoryPreference.swift @@ -7,7 +7,15 @@ import Foundation -struct TodoCategoryPreference: Equatable { - let category: TodoCategory - var isVisible: Bool +public struct TodoCategoryPreference: Equatable { + public let category: TodoCategory + public var isVisible: Bool + + public init( + category: TodoCategory, + isVisible: Bool + ) { + self.category = category + self.isVisible = isVisible + } } diff --git a/DevLog/Domain/Entity/TodoCursor.swift b/DevLog/Domain/Entity/TodoCursor.swift index 3dd172ca..bcd10050 100644 --- a/DevLog/Domain/Entity/TodoCursor.swift +++ b/DevLog/Domain/Entity/TodoCursor.swift @@ -7,8 +7,18 @@ import Foundation -struct TodoCursor { - let primarySortDate: Date? - let secondarySortDate: Date? - let documentID: String +public struct TodoCursor { + public let primarySortDate: Date? + public let secondarySortDate: Date? + public let documentID: String + + public init( + primarySortDate: Date?, + secondarySortDate: Date?, + documentID: String + ) { + self.primarySortDate = primarySortDate + self.secondarySortDate = secondarySortDate + self.documentID = documentID + } } diff --git a/DevLog/Domain/Entity/TodoPage.swift b/DevLog/Domain/Entity/TodoPage.swift index ac2a9dc6..1ce8f5de 100644 --- a/DevLog/Domain/Entity/TodoPage.swift +++ b/DevLog/Domain/Entity/TodoPage.swift @@ -5,7 +5,15 @@ // Created by opfic on 2/21/26. // -struct TodoPage { - let items: [Todo] - let nextCursor: TodoCursor? +public struct TodoPage { + public let items: [Todo] + public let nextCursor: TodoCursor? + + public init( + items: [Todo], + nextCursor: TodoCursor? + ) { + self.items = items + self.nextCursor = nextCursor + } } diff --git a/DevLog/Domain/Entity/TodoQuery.swift b/DevLog/Domain/Entity/TodoQuery.swift index 53893c3c..5ebf60c6 100644 --- a/DevLog/Domain/Entity/TodoQuery.swift +++ b/DevLog/Domain/Entity/TodoQuery.swift @@ -7,15 +7,15 @@ import Foundation -struct TodoQuery: Equatable { - enum SortTarget: Equatable, Hashable { +public struct TodoQuery: Equatable { + public enum SortTarget: Equatable, Hashable { case createdAt case completedAt case deletedAt case updatedAt case dueDate - var fieldName: String { + public var fieldName: String { switch self { case .createdAt: return "createdAt" @@ -31,21 +31,21 @@ struct TodoQuery: Equatable { } } - enum SortOrder: Equatable, Hashable { + public enum SortOrder: Equatable, Hashable { case latest case oldest - var isDescending: Bool { + public var isDescending: Bool { self == .latest } } - enum CompletionFilter: Equatable, Hashable { + public enum CompletionFilter: Equatable, Hashable { case all case incomplete case completed - var isCompletedValue: Bool? { + public var isCompletedValue: Bool? { switch self { case .all: return nil @@ -57,26 +57,26 @@ struct TodoQuery: Equatable { } } - enum DueDateFilter: Equatable, Hashable { + public enum DueDateFilter: Equatable, Hashable { case all case withDueDate case withoutDueDate } - var category: TodoCategory? - var keyword: String? - var isPinned: Bool? - var completionFilter: CompletionFilter - var dueDateFilter: DueDateFilter - var sortDateFrom: Date? - var sortDateTo: Date? - var includesDeleted: Bool - var sortTarget: SortTarget - var sortOrder: SortOrder - var pageSize: Int - var fetchAllPages: Bool + public var category: TodoCategory? + public var keyword: String? + public var isPinned: Bool? + public var completionFilter: CompletionFilter + public var dueDateFilter: DueDateFilter + public var sortDateFrom: Date? + public var sortDateTo: Date? + public var includesDeleted: Bool + public var sortTarget: SortTarget + public var sortOrder: SortOrder + public var pageSize: Int + public var fetchAllPages: Bool - init( + public init( category: TodoCategory? = nil, keyword: String? = nil, isPinned: Bool? = nil, diff --git a/DevLog/Domain/Entity/TodoReference.swift b/DevLog/Domain/Entity/TodoReference.swift index 5a7ccf23..a0fc6f6d 100644 --- a/DevLog/Domain/Entity/TodoReference.swift +++ b/DevLog/Domain/Entity/TodoReference.swift @@ -7,8 +7,18 @@ import Foundation -struct TodoReference: Hashable { - let id: String - let title: String - let category: TodoCategory +public struct TodoReference: Hashable { + public let id: String + public let title: String + public let category: TodoCategory + + public init( + id: String, + title: String, + category: TodoCategory + ) { + self.id = id + self.title = title + self.category = category + } } diff --git a/DevLog/Domain/Entity/UserProfile.swift b/DevLog/Domain/Entity/UserProfile.swift index c4b13635..b47dfdea 100644 --- a/DevLog/Domain/Entity/UserProfile.swift +++ b/DevLog/Domain/Entity/UserProfile.swift @@ -7,10 +7,24 @@ import Foundation -struct UserProfile { - let name: String - let email: String - let statusMessage: String - let avatarURL: URL? - let createdAt: Date +public struct UserProfile { + public let name: String + public let email: String + public let statusMessage: String + public let avatarURL: URL? + public let createdAt: Date + + public init( + name: String, + email: String, + statusMessage: String, + avatarURL: URL?, + createdAt: Date + ) { + self.name = name + self.email = email + self.statusMessage = statusMessage + self.avatarURL = avatarURL + self.createdAt = createdAt + } } diff --git a/DevLog/Domain/Entity/UserTodoCategory.swift b/DevLog/Domain/Entity/UserTodoCategory.swift index 9b05b766..38920c72 100644 --- a/DevLog/Domain/Entity/UserTodoCategory.swift +++ b/DevLog/Domain/Entity/UserTodoCategory.swift @@ -7,8 +7,18 @@ import Foundation -struct UserTodoCategory: Hashable { - var id: String - var name: String - var colorHex: String +public struct UserTodoCategory: Hashable { + public var id: String + public var name: String + public var colorHex: String + + public init( + id: String, + name: String, + colorHex: String + ) { + self.id = id + self.name = name + self.colorHex = colorHex + } } diff --git a/DevLog/Domain/Entity/WebPage.swift b/DevLog/Domain/Entity/WebPage.swift index 5a16ad80..06644dd9 100644 --- a/DevLog/Domain/Entity/WebPage.swift +++ b/DevLog/Domain/Entity/WebPage.swift @@ -7,9 +7,21 @@ import Foundation -struct WebPage: Hashable { - let title: String? - let url: URL - let displayURL: URL - let imageURL: URL? +public struct WebPage: Hashable { + public let title: String? + public let url: URL + public let displayURL: URL + public let imageURL: URL? + + public init( + title: String?, + url: URL, + displayURL: URL, + imageURL: URL? + ) { + self.title = title + self.url = url + self.displayURL = displayURL + self.imageURL = imageURL + } } diff --git a/DevLog/Domain/Extension/Array.swift b/DevLog/Domain/Extension/Array.swift index bedbe7be..8894d845 100644 --- a/DevLog/Domain/Extension/Array.swift +++ b/DevLog/Domain/Extension/Array.swift @@ -29,8 +29,8 @@ extension Array: @retroactive RawRepresentable where Element: Codable { } } -extension Array { - func chunked(maxCount: Int) -> [[Element]] { +public extension Array { + public func chunked(maxCount: Int) -> [[Element]] { guard 0 < maxCount else { return [] } var chunks = [[Element]]() diff --git a/DevLog/Domain/Extension/String.swift b/DevLog/Domain/Extension/String.swift index d5266daf..e7319029 100644 --- a/DevLog/Domain/Extension/String.swift +++ b/DevLog/Domain/Extension/String.swift @@ -7,10 +7,10 @@ import Foundation -extension String { +public extension String { private static let todoReferencePattern = #"^([ \t]*)-[ \t]+refs[ \t]+#(\d+)[ \t]*$"# - var todoReferenceNumbers: [Int] { + public var todoReferenceNumbers: [Int] { guard let expression = try? NSRegularExpression( pattern: Self.todoReferencePattern, diff --git a/DevLog/Domain/Extension/UIFont.swift b/DevLog/Domain/Extension/UIFont.swift index cb00eec5..285b2b0d 100644 --- a/DevLog/Domain/Extension/UIFont.swift +++ b/DevLog/Domain/Extension/UIFont.swift @@ -7,7 +7,7 @@ import SwiftUI -extension UIFont { +public extension UIFont { static func from(font: Font) -> UIFont { let fontMapping: [Font: UIFont.TextStyle] = [ .largeTitle: .largeTitle, diff --git a/DevLog/Domain/Protocol/AuthDataRepository.swift b/DevLog/Domain/Protocol/AuthDataRepository.swift index ec869e37..413d100c 100644 --- a/DevLog/Domain/Protocol/AuthDataRepository.swift +++ b/DevLog/Domain/Protocol/AuthDataRepository.swift @@ -5,7 +5,7 @@ // Created by 최윤진 on 1/5/26. // -protocol AuthDataRepository { +public protocol AuthDataRepository { /// 현재 로그인한 프로바이더를 가져옵니다 func fetchCurrentProvider() async throws -> AuthProvider? diff --git a/DevLog/Domain/Protocol/AuthSessionRepository.swift b/DevLog/Domain/Protocol/AuthSessionRepository.swift index 2bdc1f1b..338a5f99 100644 --- a/DevLog/Domain/Protocol/AuthSessionRepository.swift +++ b/DevLog/Domain/Protocol/AuthSessionRepository.swift @@ -7,6 +7,6 @@ import Combine -protocol AuthSessionRepository { +public protocol AuthSessionRepository { func observeSignedIn() -> AnyPublisher } diff --git a/DevLog/Domain/Protocol/AuthenticationRepository.swift b/DevLog/Domain/Protocol/AuthenticationRepository.swift index 5e309d1a..8fdcfd86 100644 --- a/DevLog/Domain/Protocol/AuthenticationRepository.swift +++ b/DevLog/Domain/Protocol/AuthenticationRepository.swift @@ -7,7 +7,7 @@ import Foundation -protocol AuthenticationRepository { +public protocol AuthenticationRepository { func signIn(_ provider: AuthProvider) async throws func signOut() async throws func restore() -> Bool diff --git a/DevLog/Domain/Protocol/NetworkConnectivityRepository.swift b/DevLog/Domain/Protocol/NetworkConnectivityRepository.swift index 52c045bc..5739d273 100644 --- a/DevLog/Domain/Protocol/NetworkConnectivityRepository.swift +++ b/DevLog/Domain/Protocol/NetworkConnectivityRepository.swift @@ -7,6 +7,6 @@ import Combine -protocol NetworkConnectivityRepository { +public protocol NetworkConnectivityRepository { func observeNetworkConnectivity() -> AnyPublisher } diff --git a/DevLog/Domain/Protocol/PushNotificationRepository.swift b/DevLog/Domain/Protocol/PushNotificationRepository.swift index c58522fd..38e57e0e 100644 --- a/DevLog/Domain/Protocol/PushNotificationRepository.swift +++ b/DevLog/Domain/Protocol/PushNotificationRepository.swift @@ -8,7 +8,7 @@ import Foundation import Combine -protocol PushNotificationRepository { +public protocol PushNotificationRepository { func fetchPushNotificationEnabled() async throws -> Bool func fetchPushNotificationTime() async throws -> DateComponents func updatePushNotificationSettings(_ settings: PushNotificationSettings) async throws diff --git a/DevLog/Domain/Protocol/TodoCategoryRepository.swift b/DevLog/Domain/Protocol/TodoCategoryRepository.swift index 485bc0c5..d38afe13 100644 --- a/DevLog/Domain/Protocol/TodoCategoryRepository.swift +++ b/DevLog/Domain/Protocol/TodoCategoryRepository.swift @@ -5,7 +5,7 @@ // Created by opfic on 3/30/26. // -protocol TodoCategoryRepository { +public protocol TodoCategoryRepository { func fetchPreferences() async throws -> [TodoCategoryPreference] func updatePreferences(_ preferences: [TodoCategoryPreference]) async throws } diff --git a/DevLog/Domain/Protocol/TodoRepository.swift b/DevLog/Domain/Protocol/TodoRepository.swift index 0961ec9b..9866dfa5 100644 --- a/DevLog/Domain/Protocol/TodoRepository.swift +++ b/DevLog/Domain/Protocol/TodoRepository.swift @@ -7,7 +7,7 @@ import Foundation -protocol TodoRepository { +public protocol TodoRepository { func fetchTodos(_ query: TodoQuery, cursor: TodoCursor?) async throws -> TodoPage func fetchTodo(_ todoId: String) async throws -> Todo func fetchReferences(_ numbers: [Int]) async throws -> [Int: TodoReference] diff --git a/DevLog/Domain/Protocol/UserDataRepository.swift b/DevLog/Domain/Protocol/UserDataRepository.swift index 020520df..dedb2b1a 100644 --- a/DevLog/Domain/Protocol/UserDataRepository.swift +++ b/DevLog/Domain/Protocol/UserDataRepository.swift @@ -5,7 +5,7 @@ // Created by 최윤진 on 1/10/26. // -protocol UserDataRepository { +public protocol UserDataRepository { func fetch() async throws -> UserProfile func upsertStatusMessage(_ message: String) async throws } diff --git a/DevLog/Domain/Protocol/UserPreferencesRepository.swift b/DevLog/Domain/Protocol/UserPreferencesRepository.swift index 75c26600..c492589f 100644 --- a/DevLog/Domain/Protocol/UserPreferencesRepository.swift +++ b/DevLog/Domain/Protocol/UserPreferencesRepository.swift @@ -8,7 +8,7 @@ import Foundation import Combine -protocol UserPreferencesRepository { +public protocol UserPreferencesRepository { func observeSystemTheme() -> AnyPublisher func systemTheme() -> SystemTheme func setSystemTheme(_ theme: SystemTheme) diff --git a/DevLog/Domain/Protocol/WebPageImageRepository.swift b/DevLog/Domain/Protocol/WebPageImageRepository.swift index d44e0b66..243a9d2a 100644 --- a/DevLog/Domain/Protocol/WebPageImageRepository.swift +++ b/DevLog/Domain/Protocol/WebPageImageRepository.swift @@ -5,7 +5,7 @@ // Created by opfic on 4/14/26. // -protocol WebPageImageRepository { +public protocol WebPageImageRepository { func fetchDirSizeInBytes() async -> Int64 func clearDirectory() async throws } diff --git a/DevLog/Domain/Protocol/WebPageRepository.swift b/DevLog/Domain/Protocol/WebPageRepository.swift index 8e399974..0babc575 100644 --- a/DevLog/Domain/Protocol/WebPageRepository.swift +++ b/DevLog/Domain/Protocol/WebPageRepository.swift @@ -5,7 +5,7 @@ // Created by 최윤진 on 2/8/26. // -protocol WebPageRepository { +public protocol WebPageRepository { func fetch(_ query: String) async throws -> [WebPage] func upsert(_ urlString: String) async throws func delete(_ urlString: String) async throws diff --git a/DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCase.swift b/DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCase.swift index f2c68da9..d81301c0 100644 --- a/DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCase.swift +++ b/DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 12/30/25. // -protocol DeleteAuthUseCase { +public protocol DeleteAuthUseCase { func execute() async throws } diff --git a/DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCaseImpl.swift b/DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCaseImpl.swift index 7d88e0c1..71fbce1e 100644 --- a/DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 12/30/25. // -final class DeleteAuthUseCaseImpl: DeleteAuthUseCase { +public final class DeleteAuthUseCaseImpl: DeleteAuthUseCase { private let repository: AuthenticationRepository init(_ repository: AuthenticationRepository) { self.repository = repository } - func execute() async throws { + public func execute() async throws { try await repository.delete() } } diff --git a/DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift b/DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift index 11649d99..7b1a1af8 100644 --- a/DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift +++ b/DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/12/26. // -protocol FetchAuthProvidersUseCase { +public protocol FetchAuthProvidersUseCase { func execute() async throws -> (currentProvider: AuthProvider?, allProviders: [AuthProvider]) } diff --git a/DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCaseImpl.swift b/DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCaseImpl.swift index 3e83239d..913a82c0 100644 --- a/DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/12/26. // -final class FetchAuthProvidersUseCaseImpl: FetchAuthProvidersUseCase { +public final class FetchAuthProvidersUseCaseImpl: FetchAuthProvidersUseCase { private let repository: AuthDataRepository init(_ repository: AuthDataRepository) { self.repository = repository } - func execute() async throws -> (currentProvider: AuthProvider?, allProviders: [AuthProvider]) { + public func execute() async throws -> (currentProvider: AuthProvider?, allProviders: [AuthProvider]) { async let currentProvider = try await repository.fetchCurrentProvider() async let allProviders = try await repository.fetchAllProviders() diff --git a/DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCase.swift b/DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCase.swift index 9ea4c0a3..a8a5087b 100644 --- a/DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCase.swift +++ b/DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/12/26. // -protocol LinkAuthProviderUseCase { +public protocol LinkAuthProviderUseCase { func execute(_ provider: AuthProvider) async throws } diff --git a/DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCaseImpl.swift b/DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCaseImpl.swift index fbdb25dc..03aea808 100644 --- a/DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/12/26. // -final class LinkAuthProviderUseCaseImpl: LinkAuthProviderUseCase { +public final class LinkAuthProviderUseCaseImpl: LinkAuthProviderUseCase { private let repository: AuthDataRepository init(_ repository: AuthDataRepository) { self.repository = repository } - func execute(_ provider: AuthProvider) async throws { + public func execute(_ provider: AuthProvider) async throws { try await repository.linkProvider(provider) } } diff --git a/DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCase.swift b/DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCase.swift index 01dd39d4..782f6ed6 100644 --- a/DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCase.swift +++ b/DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/12/26. // -protocol UnlinkAuthProviderUseCase { +public protocol UnlinkAuthProviderUseCase { func execute(_ provider: AuthProvider) async throws } diff --git a/DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCaseImpl.swift b/DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCaseImpl.swift index 2ddb12ee..ce2bc57b 100644 --- a/DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/12/26. // -final class UnlinkAuthProviderUseCaseImpl: UnlinkAuthProviderUseCase { +public final class UnlinkAuthProviderUseCaseImpl: UnlinkAuthProviderUseCase { private let repository: AuthDataRepository init(_ repository: AuthDataRepository) { self.repository = repository } - func execute(_ provider: AuthProvider) async throws { + public func execute(_ provider: AuthProvider) async throws { try await repository.unlinkProvider(provider) } } diff --git a/DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift b/DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift index 97d9eb6c..b28f34c6 100644 --- a/DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift +++ b/DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift @@ -7,6 +7,6 @@ import Combine -protocol ObserveAuthSessionUseCase { +public protocol ObserveAuthSessionUseCase { func observe() -> AnyPublisher } diff --git a/DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCaseImpl.swift b/DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCaseImpl.swift index ce35e436..b186ab8d 100644 --- a/DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCaseImpl.swift @@ -7,10 +7,10 @@ import Combine -final class ObserveAuthSessionUseCaseImpl: ObserveAuthSessionUseCase { +public final class ObserveAuthSessionUseCaseImpl: ObserveAuthSessionUseCase { private let repository: AuthSessionRepository - func observe() -> AnyPublisher { + public func observe() -> AnyPublisher { repository.observeSignedIn() } diff --git a/DevLog/Domain/UseCase/Auth/SignIn/SignInUseCase.swift b/DevLog/Domain/UseCase/Auth/SignIn/SignInUseCase.swift index d12537ae..3adad38b 100644 --- a/DevLog/Domain/UseCase/Auth/SignIn/SignInUseCase.swift +++ b/DevLog/Domain/UseCase/Auth/SignIn/SignInUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 11/2/25. // -protocol SignInUseCase { +public protocol SignInUseCase { func execute(_ provider: AuthProvider) async throws } diff --git a/DevLog/Domain/UseCase/Auth/SignIn/SignInUseCaseImpl.swift b/DevLog/Domain/UseCase/Auth/SignIn/SignInUseCaseImpl.swift index a877fb78..c5d762b7 100644 --- a/DevLog/Domain/UseCase/Auth/SignIn/SignInUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Auth/SignIn/SignInUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 12/30/25. // -final class SignInUseCaseImpl: SignInUseCase { +public final class SignInUseCaseImpl: SignInUseCase { private let repository: AuthenticationRepository init(_ repository: AuthenticationRepository) { self.repository = repository } - func execute(_ provider: AuthProvider) async throws { + public func execute(_ provider: AuthProvider) async throws { try await repository.signIn(provider) } } diff --git a/DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCase.swift b/DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCase.swift index 0b9a9591..afb99181 100644 --- a/DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCase.swift +++ b/DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 12/14/25. // -protocol SignOutUseCase { +public protocol SignOutUseCase { func execute() async throws } diff --git a/DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCaseImpl.swift b/DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCaseImpl.swift index 3c7b75bf..1bcaab01 100644 --- a/DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 12/30/25. // -final class SignOutUseCaseImpl: SignOutUseCase { +public final class SignOutUseCaseImpl: SignOutUseCase { private let repository: AuthenticationRepository init(_ repository: AuthenticationRepository) { self.repository = repository } - func execute() async throws { + public func execute() async throws { try await repository.signOut() } } diff --git a/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCase.swift b/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCase.swift index 195d7a49..73ff4db6 100644 --- a/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCase.swift +++ b/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCase.swift @@ -7,6 +7,6 @@ import Combine -protocol ObserveNetworkConnectivityUseCase { +public protocol ObserveNetworkConnectivityUseCase { func observe() -> AnyPublisher } diff --git a/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift b/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift index 81bdff36..af240893 100644 --- a/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift @@ -7,14 +7,14 @@ import Combine -final class ObserveNetworkConnectivityUseCaseImpl: ObserveNetworkConnectivityUseCase { +public final class ObserveNetworkConnectivityUseCaseImpl: ObserveNetworkConnectivityUseCase { private let repository: NetworkConnectivityRepository init(_ repository: NetworkConnectivityRepository) { self.repository = repository } - func observe() -> AnyPublisher { + public func observe() -> AnyPublisher { repository.observeNetworkConnectivity() .removeDuplicates() .eraseToAnyPublisher() diff --git a/DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift b/DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift index 237ca745..bd1096f7 100644 --- a/DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift +++ b/DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/10/26. // -protocol DeletePushNotificationUseCase { +public protocol DeletePushNotificationUseCase { func execute(_ notificationID: String) async throws } diff --git a/DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCaseImpl.swift b/DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCaseImpl.swift index af4fcfdf..902199ba 100644 --- a/DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/10/26. // -final class DeletePushNotificationUseCaseImpl: DeletePushNotificationUseCase { +public final class DeletePushNotificationUseCaseImpl: DeletePushNotificationUseCase { private let repository: PushNotificationRepository init(_ repository: PushNotificationRepository) { self.repository = repository } - func execute(_ notificationID: String) async throws { + public func execute(_ notificationID: String) async throws { try await repository.deleteNotification(notificationID) } } diff --git a/DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCase.swift b/DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCase.swift index 971f7397..f4526c68 100644 --- a/DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCase.swift +++ b/DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 3/16/26. // -protocol UndoDeletePushNotificationUseCase { +public protocol UndoDeletePushNotificationUseCase { func execute(_ notificationID: String) async throws } diff --git a/DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift b/DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift index 767b507b..a80f992b 100644 --- a/DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 3/16/26. // -final class UndoDeletePushNotificationUseCaseImpl: UndoDeletePushNotificationUseCase { +public final class UndoDeletePushNotificationUseCaseImpl: UndoDeletePushNotificationUseCase { private let repository: PushNotificationRepository init(_ repository: PushNotificationRepository) { self.repository = repository } - func execute(_ notificationID: String) async throws { + public func execute(_ notificationID: String) async throws { try await repository.undoDeleteNotification(notificationID) } } diff --git a/DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCase.swift b/DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCase.swift index 154124c1..64e422a0 100644 --- a/DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCase.swift +++ b/DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCase.swift @@ -7,7 +7,7 @@ import Combine -protocol FetchPushNotificationsUseCase { +public protocol FetchPushNotificationsUseCase { func execute( _ query: PushNotificationQuery, cursor: PushNotificationCursor? diff --git a/DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCaseImpl.swift b/DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCaseImpl.swift index 4a3725be..f85bb82b 100644 --- a/DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCaseImpl.swift @@ -7,21 +7,21 @@ import Combine -final class FetchPushNotificationsUseCaseImpl: FetchPushNotificationsUseCase { +public final class FetchPushNotificationsUseCaseImpl: FetchPushNotificationsUseCase { private let repository: PushNotificationRepository init(_ repository: PushNotificationRepository) { self.repository = repository } - func execute( + public func execute( _ query: PushNotificationQuery, cursor: PushNotificationCursor? ) async throws -> PushNotificationPage { try await repository.requestNotifications(query, cursor: cursor) } - func observe( + public func observe( _ query: PushNotificationQuery, limit: Int ) throws -> AnyPublisher { diff --git a/DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCase.swift b/DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCase.swift index 0e40de2b..80d27ed1 100644 --- a/DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCase.swift +++ b/DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCase.swift @@ -7,6 +7,6 @@ import Combine -protocol ObserveUnreadPushCountUseCase { +public protocol ObserveUnreadPushCountUseCase { func observe() throws -> AnyPublisher } diff --git a/DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCaseImpl.swift b/DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCaseImpl.swift index 6be167ef..0b13509b 100644 --- a/DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCaseImpl.swift @@ -7,14 +7,14 @@ import Combine -final class ObserveUnreadPushCountUseCaseImpl: ObserveUnreadPushCountUseCase { +public final class ObserveUnreadPushCountUseCaseImpl: ObserveUnreadPushCountUseCase { private let repository: PushNotificationRepository init(_ repository: PushNotificationRepository) { self.repository = repository } - func observe() throws -> AnyPublisher { + public func observe() throws -> AnyPublisher { try repository.observeUnreadPushCount() .removeDuplicates() .eraseToAnyPublisher() diff --git a/DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCase.swift b/DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCase.swift index 5a256aab..3e37887e 100644 --- a/DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCase.swift +++ b/DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 2/13/26. // -protocol TogglePushNotificationReadUseCase { +public protocol TogglePushNotificationReadUseCase { func execute(_ todoId: String) async throws } diff --git a/DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift b/DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift index c7aef447..fa4a1da9 100644 --- a/DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 2/13/26. // -final class TogglePushNotificationReadUseCaseImpl: TogglePushNotificationReadUseCase { +public final class TogglePushNotificationReadUseCaseImpl: TogglePushNotificationReadUseCase { private let repository: PushNotificationRepository init(_ repository: PushNotificationRepository) { self.repository = repository } - func execute(_ todoId: String) async throws { + public func execute(_ todoId: String) async throws { try await repository.toggleNotificationRead(todoId) } } diff --git a/DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCase.swift b/DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCase.swift index 6483b55e..4a1c7e59 100644 --- a/DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCase.swift +++ b/DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/12/26. // -protocol DeleteTodoUseCase { +public protocol DeleteTodoUseCase { func execute(_ todoId: String) async throws } diff --git a/DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCaseImpl.swift b/DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCaseImpl.swift index 7f73a44c..2d4f5a38 100644 --- a/DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/12/26. // -final class DeleteTodoUseCaseImpl: DeleteTodoUseCase { +public final class DeleteTodoUseCaseImpl: DeleteTodoUseCase { private let repository: TodoRepository init(_ repository: TodoRepository) { self.repository = repository } - func execute(_ todoId: String) async throws { + public func execute(_ todoId: String) async throws { try await repository.deleteTodo(todoId) } } diff --git a/DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCase.swift b/DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCase.swift index 0764e93a..bb4a6bee 100644 --- a/DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCase.swift +++ b/DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 3/15/26. // -protocol UndoDeleteTodoUseCase { +public protocol UndoDeleteTodoUseCase { func execute(_ todoId: String) async throws } diff --git a/DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCaseImpl.swift b/DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCaseImpl.swift index 499fcaad..9f5ea6bb 100644 --- a/DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 3/15/26. // -final class UndoDeleteTodoUseCaseImpl: UndoDeleteTodoUseCase { +public final class UndoDeleteTodoUseCaseImpl: UndoDeleteTodoUseCase { private let repository: TodoRepository init(_ repository: TodoRepository) { self.repository = repository } - func execute(_ todoId: String) async throws { + public func execute(_ todoId: String) async throws { try await repository.undoDeleteTodo(todoId) } } diff --git a/DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCase.swift b/DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCase.swift index 62c43ffd..60ee062e 100644 --- a/DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCase.swift +++ b/DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 3/25/26. // -protocol FetchReferenceItemsUseCase { +public protocol FetchReferenceItemsUseCase { func execute(_ numbers: [Int]) async throws -> [Int: TodoReference] } diff --git a/DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCaseImpl.swift b/DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCaseImpl.swift index 866c1c29..f4fb7b45 100644 --- a/DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 3/25/26. // -final class FetchReferenceItemsUseCaseImpl: FetchReferenceItemsUseCase { +public final class FetchReferenceItemsUseCaseImpl: FetchReferenceItemsUseCase { private let repository: TodoRepository init(_ repository: TodoRepository) { self.repository = repository } - func execute(_ numbers: [Int]) async throws -> [Int: TodoReference] { + public func execute(_ numbers: [Int]) async throws -> [Int: TodoReference] { try await repository.fetchReferences(numbers) } } diff --git a/DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCase.swift b/DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCase.swift index b3de1a43..c5b70132 100644 --- a/DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCase.swift +++ b/DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 2/15/26. // -protocol FetchTodoByIdUseCase { +public protocol FetchTodoByIdUseCase { func execute(_ todoId: String) async throws -> Todo } diff --git a/DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCaseImpl.swift b/DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCaseImpl.swift index 2f5af6f4..f26e6fdb 100644 --- a/DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 2/15/26. // -final class FetchTodoByIdUseCaseImpl: FetchTodoByIdUseCase { +public final class FetchTodoByIdUseCaseImpl: FetchTodoByIdUseCase { private let repository: TodoRepository init(_ repository: TodoRepository) { self.repository = repository } - func execute(_ todoId: String) async throws -> Todo { + public func execute(_ todoId: String) async throws -> Todo { try await repository.fetchTodo(todoId) } } diff --git a/DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCase.swift b/DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCase.swift index 8216a61a..f59b9fd1 100644 --- a/DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCase.swift +++ b/DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 3/3/26. // -protocol FetchTodosUseCase { +public protocol FetchTodosUseCase { func execute(_ query: TodoQuery, cursor: TodoCursor?) async throws -> TodoPage } diff --git a/DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCaseImpl.swift b/DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCaseImpl.swift index b20382c5..8c7d7e93 100644 --- a/DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 3/3/26. // -final class FetchTodosUseCaseImpl: FetchTodosUseCase { +public final class FetchTodosUseCaseImpl: FetchTodosUseCase { private let repository: TodoRepository init(_ repository: TodoRepository) { self.repository = repository } - func execute(_ query: TodoQuery, cursor: TodoCursor?) async throws -> TodoPage { + public func execute(_ query: TodoQuery, cursor: TodoCursor?) async throws -> TodoPage { try await repository.fetchTodos(query, cursor: cursor) } } diff --git a/DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCase.swift b/DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCase.swift index fec3c087..cbce4e84 100644 --- a/DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCase.swift +++ b/DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 12/8/25. // -protocol UpsertTodoUseCase { +public protocol UpsertTodoUseCase { func execute(_ todo: Todo) async throws } diff --git a/DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCaseImpl.swift b/DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCaseImpl.swift index 81111145..a494f624 100644 --- a/DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 12/8/25. // -final class UpsertTodoUseCaseImpl: UpsertTodoUseCase { +public final class UpsertTodoUseCaseImpl: UpsertTodoUseCase { private let repository: TodoRepository init(_ repository: TodoRepository) { self.repository = repository } - func execute(_ todo: Todo) async throws { + public func execute(_ todo: Todo) async throws { try await repository.upsertTodo(todo) } } diff --git a/DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCase.swift b/DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCase.swift index d7ee10d9..3bcb2575 100644 --- a/DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCase.swift +++ b/DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 3/30/26. // -protocol FetchTodoCategoryPreferencesUseCase { +public protocol FetchTodoCategoryPreferencesUseCase { func execute() async throws -> [TodoCategoryPreference] } diff --git a/DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift b/DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift index 56c51adc..200c3471 100644 --- a/DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 3/30/26. // -final class FetchTodoCategoryPreferencesUseCaseImpl: FetchTodoCategoryPreferencesUseCase { +public final class FetchTodoCategoryPreferencesUseCaseImpl: FetchTodoCategoryPreferencesUseCase { private let todoCategoryRepository: TodoCategoryRepository init(_ todoCategoryRepository: TodoCategoryRepository) { self.todoCategoryRepository = todoCategoryRepository } - func execute() async throws -> [TodoCategoryPreference] { + public func execute() async throws -> [TodoCategoryPreference] { try await todoCategoryRepository.fetchPreferences() } } diff --git a/DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift b/DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift index 359f47c4..191a7e7e 100644 --- a/DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift +++ b/DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 3/30/26. // -protocol UpdateTodoCategoryPreferencesUseCase { +public protocol UpdateTodoCategoryPreferencesUseCase { func execute(_ preferences: [TodoCategoryPreference]) async throws } diff --git a/DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCaseImpl.swift b/DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCaseImpl.swift index a5e04993..fecdea9b 100644 --- a/DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 3/30/26. // -final class UpdateTodoCategoryPreferencesUseCaseImpl: UpdateTodoCategoryPreferencesUseCase { +public final class UpdateTodoCategoryPreferencesUseCaseImpl: UpdateTodoCategoryPreferencesUseCase { private let todoCategoryRepository: TodoCategoryRepository init(_ todoCategoryRepository: TodoCategoryRepository) { self.todoCategoryRepository = todoCategoryRepository } - func execute(_ preferences: [TodoCategoryPreference]) async throws { + public func execute(_ preferences: [TodoCategoryPreference]) async throws { try await todoCategoryRepository.updatePreferences(preferences) } } diff --git a/DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCase.swift b/DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCase.swift index f0ae815f..f22051e6 100644 --- a/DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCase.swift +++ b/DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 1/25/26. // -protocol FetchPushSettingsUseCase { +public protocol FetchPushSettingsUseCase { func execute() async throws -> PushNotificationSettings } diff --git a/DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCaseImpl.swift b/DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCaseImpl.swift index 925f0149..ff787766 100644 --- a/DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 1/24/26. // -final class FetchPushNotificationSettingsUseCaseImpl: FetchPushSettingsUseCase { +public final class FetchPushNotificationSettingsUseCaseImpl: FetchPushSettingsUseCase { private let repository: PushNotificationRepository init(_ repository: PushNotificationRepository) { self.repository = repository } - func execute() async throws -> PushNotificationSettings { + public func execute() async throws -> PushNotificationSettings { async let enabledValue = repository.fetchPushNotificationEnabled() async let componentsValue = repository.fetchPushNotificationTime() diff --git a/DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCase.swift b/DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCase.swift index 10107603..014c7587 100644 --- a/DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCase.swift +++ b/DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 1/10/26. // -protocol FetchUserDataUseCase { +public protocol FetchUserDataUseCase { func execute() async throws -> UserProfile } diff --git a/DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCaseImpl.swift b/DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCaseImpl.swift index 2f0f9eb3..14647d11 100644 --- a/DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 1/10/26. // -final class FetchUserDataUseCaseImpl: FetchUserDataUseCase { +public final class FetchUserDataUseCaseImpl: FetchUserDataUseCase { private let repository: UserDataRepository init(_ repository: UserDataRepository) { self.repository = repository } - func execute() async throws -> UserProfile { + public func execute() async throws -> UserProfile { return try await repository.fetch() } } diff --git a/DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift b/DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift index 90b59be4..cd4ee0d6 100644 --- a/DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift +++ b/DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 1/25/26. // -protocol UpdatePushSettingsUseCase { +public protocol UpdatePushSettingsUseCase { func execute(_ settings: PushNotificationSettings) async throws } diff --git a/DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCaseImpl.swift b/DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCaseImpl.swift index debce12b..bb5caf31 100644 --- a/DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 1/25/26. // -final class UpdatePushSettingsUseCaseImpl: UpdatePushSettingsUseCase { +public final class UpdatePushSettingsUseCaseImpl: UpdatePushSettingsUseCase { private let repository: PushNotificationRepository init(_ repository: PushNotificationRepository) { self.repository = repository } - func execute(_ settings: PushNotificationSettings) async throws { + public func execute(_ settings: PushNotificationSettings) async throws { try await repository.updatePushNotificationSettings(settings) } } diff --git a/DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift b/DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift index 0ae28930..f4538100 100644 --- a/DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift +++ b/DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 1/10/26. // -protocol UpsertStatusMessageUseCase { +public protocol UpsertStatusMessageUseCase { func execute(_ message: String) async throws } diff --git a/DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCaseImpl.swift b/DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCaseImpl.swift index f97d90b6..c6921d75 100644 --- a/DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 1/10/26. // -final class UpsertStatusMessageUseCaseImpl: UpsertStatusMessageUseCase { +public final class UpsertStatusMessageUseCaseImpl: UpsertStatusMessageUseCase { private let repository: UserDataRepository init(_ repository: UserDataRepository) { self.repository = repository } - func execute(_ message: String) async throws { + public func execute(_ message: String) async throws { try await repository.upsertStatusMessage(message) } } diff --git a/DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCase.swift b/DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCase.swift index 62fe1a61..e838bb40 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCase.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 3/2/26. // -protocol FetchHeatmapActivityTypesUseCase { +public protocol FetchHeatmapActivityTypesUseCase { func execute() -> [String] } diff --git a/DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCaseImpl.swift b/DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCaseImpl.swift index 32b05fd5..642cadb3 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 3/2/26. // -final class FetchHeatmapActivityTypesUseCaseImpl: FetchHeatmapActivityTypesUseCase { +public final class FetchHeatmapActivityTypesUseCaseImpl: FetchHeatmapActivityTypesUseCase { private let repository: UserPreferencesRepository init(_ repository: UserPreferencesRepository) { self.repository = repository } - func execute() -> [String] { + public func execute() -> [String] { repository.heatmapActivityTypes() } } diff --git a/DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCase.swift b/DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCase.swift index 8dbebe92..cf26c5f4 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCase.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 3/2/26. // -protocol UpdateHeatmapActivityTypesUseCase { +public protocol UpdateHeatmapActivityTypesUseCase { func execute(_ activityTypes: [String]) } diff --git a/DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCaseImpl.swift b/DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCaseImpl.swift index 6769416b..b28d7428 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 3/2/26. // -final class UpdateHeatmapActivityTypesUseCaseImpl: UpdateHeatmapActivityTypesUseCase { +public final class UpdateHeatmapActivityTypesUseCaseImpl: UpdateHeatmapActivityTypesUseCase { private let repository: UserPreferencesRepository init(_ repository: UserPreferencesRepository) { self.repository = repository } - func execute(_ activityTypes: [String]) { + public func execute(_ activityTypes: [String]) { repository.setHeatmapActivityTypes(activityTypes) } } diff --git a/DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift b/DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift index b3e42726..40bd2a8f 100644 --- a/DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift +++ b/DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/25/26. // -protocol FetchPushNotificationQueryUseCase { +public protocol FetchPushNotificationQueryUseCase { func execute() -> PushNotificationQuery } diff --git a/DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCaseImpl.swift b/DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCaseImpl.swift index 3ba9e974..1427e87c 100644 --- a/DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/25/26. // -final class FetchPushNotificationQueryUseCaseImpl: FetchPushNotificationQueryUseCase { +public final class FetchPushNotificationQueryUseCaseImpl: FetchPushNotificationQueryUseCase { private let repository: UserPreferencesRepository init(_ repository: UserPreferencesRepository) { self.repository = repository } - func execute() -> PushNotificationQuery { + public func execute() -> PushNotificationQuery { PushNotificationQuery( sortOrder: repository.pushNotificationSortOrder(), timeFilter: repository.pushNotificationTimeFilter(), diff --git a/DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCase.swift b/DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCase.swift index 8170daef..9190ac9c 100644 --- a/DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCase.swift +++ b/DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/25/26. // -protocol UpdatePushNotificationQueryUseCase { +public protocol UpdatePushNotificationQueryUseCase { func execute(_ query: PushNotificationQuery) } diff --git a/DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCaseImpl.swift b/DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCaseImpl.swift index 9de023d0..abb666fc 100644 --- a/DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/25/26. // -final class UpdatePushNotificationQueryUseCaseImpl: UpdatePushNotificationQueryUseCase { +public final class UpdatePushNotificationQueryUseCaseImpl: UpdatePushNotificationQueryUseCase { private let repository: UserPreferencesRepository init(_ repository: UserPreferencesRepository) { self.repository = repository } - func execute(_ query: PushNotificationQuery) { + public func execute(_ query: PushNotificationQuery) { repository.setPushNotificationSortOrder(query.sortOrder) repository.setPushNotificationTimeFilter(query.timeFilter) repository.setPushNotificationUnreadOnly(query.unreadOnly) diff --git a/DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCase.swift b/DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCase.swift index 1be065c6..85ced915 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCase.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/25/26. // -protocol FetchRecentSearchQueriesUseCase { +public protocol FetchRecentSearchQueriesUseCase { func execute() -> [String] } diff --git a/DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCaseImpl.swift b/DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCaseImpl.swift index 4645bd67..d57023e9 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/25/26. // -final class FetchRecentSearchQueriesUseCaseImpl: FetchRecentSearchQueriesUseCase { +public final class FetchRecentSearchQueriesUseCaseImpl: FetchRecentSearchQueriesUseCase { private let repository: UserPreferencesRepository init(_ repository: UserPreferencesRepository) { self.repository = repository } - func execute() -> [String] { + public func execute() -> [String] { repository.recentSearchQueries() } } diff --git a/DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCase.swift b/DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCase.swift index 5b7c4fc6..34c4555d 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCase.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/25/26. // -protocol UpdateRecentSearchQueriesUseCase { +public protocol UpdateRecentSearchQueriesUseCase { func execute(_ queries: [String]) } diff --git a/DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift b/DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift index beefb4c4..b9e0994a 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/25/26. // -final class UpdateRecentSearchQueriesUseCaseImpl: UpdateRecentSearchQueriesUseCase { +public final class UpdateRecentSearchQueriesUseCaseImpl: UpdateRecentSearchQueriesUseCase { private let repository: UserPreferencesRepository init(_ repository: UserPreferencesRepository) { self.repository = repository } - func execute(_ queries: [String]) { + public func execute(_ queries: [String]) { repository.setRecentSearchQueries(queries) } } diff --git a/DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCase.swift b/DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCase.swift index a0157c77..e7a126ab 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCase.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCase.swift @@ -7,6 +7,6 @@ import Combine -protocol ObserveSystemThemeUseCase { +public protocol ObserveSystemThemeUseCase { func observe() -> AnyPublisher } diff --git a/DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift b/DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift index 8391beef..0f16f5b8 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift @@ -7,14 +7,14 @@ import Combine -final class ObserveSystemThemeUseCaseImpl: ObserveSystemThemeUseCase { +public final class ObserveSystemThemeUseCaseImpl: ObserveSystemThemeUseCase { private let repository: UserPreferencesRepository init(_ repository: UserPreferencesRepository) { self.repository = repository } - func observe() -> AnyPublisher { + public func observe() -> AnyPublisher { repository.observeSystemTheme() } } diff --git a/DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCase.swift b/DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCase.swift index 351ed3c5..4a21f44c 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCase.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/25/26. // -protocol UpdateSystemThemeUseCase { +public protocol UpdateSystemThemeUseCase { func execute(_ theme: SystemTheme) } diff --git a/DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCaseImpl.swift b/DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCaseImpl.swift index b96cd9b2..7102567f 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/25/26. // -final class UpdateSystemThemeUseCaseImpl: UpdateSystemThemeUseCase { +public final class UpdateSystemThemeUseCaseImpl: UpdateSystemThemeUseCase { private let repository: UserPreferencesRepository init(_ repository: UserPreferencesRepository) { self.repository = repository } - func execute(_ theme: SystemTheme) { + public func execute(_ theme: SystemTheme) { repository.setSystemTheme(theme) } } diff --git a/DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCase.swift b/DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCase.swift index 2bad555c..f4c011d4 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCase.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 3/6/26. // -protocol FetchTodayDisplayOptionsUseCase { +public protocol FetchTodayDisplayOptionsUseCase { func execute() -> TodayDisplayOptions } diff --git a/DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCaseImpl.swift b/DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCaseImpl.swift index 610c796f..de0010cf 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 3/6/26. // -final class FetchTodayDisplayOptionsUseCaseImpl: FetchTodayDisplayOptionsUseCase { +public final class FetchTodayDisplayOptionsUseCaseImpl: FetchTodayDisplayOptionsUseCase { private let repository: UserPreferencesRepository init(_ repository: UserPreferencesRepository) { self.repository = repository } - func execute() -> TodayDisplayOptions { + public func execute() -> TodayDisplayOptions { repository.todayDisplayOptions() } } diff --git a/DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCase.swift b/DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCase.swift index 64f91b08..fe4aa93f 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCase.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 3/6/26. // -protocol UpdateTodayDisplayOptionsUseCase { +public protocol UpdateTodayDisplayOptionsUseCase { func execute(_ options: TodayDisplayOptions) } diff --git a/DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCaseImpl.swift b/DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCaseImpl.swift index 787ce9f7..62af3999 100644 --- a/DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 3/6/26. // -final class UpdateTodayDisplayOptionsUseCaseImpl: UpdateTodayDisplayOptionsUseCase { +public final class UpdateTodayDisplayOptionsUseCaseImpl: UpdateTodayDisplayOptionsUseCase { private let repository: UserPreferencesRepository init(_ repository: UserPreferencesRepository) { self.repository = repository } - func execute(_ options: TodayDisplayOptions) { + public func execute(_ options: TodayDisplayOptions) { repository.setTodayDisplayOptions(options) } } diff --git a/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCase.swift b/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCase.swift index cdba5c2f..663bcc8d 100644 --- a/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCase.swift +++ b/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 4/14/26. // -protocol FetchWebPageImageDirSizeUseCase { +public protocol FetchWebPageImageDirSizeUseCase { func execute() async -> Int64 } diff --git a/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCaseImpl.swift b/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCaseImpl.swift index 513262f5..3b41609f 100644 --- a/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 4/14/26. // -final class FetchWebPageImageDirSizeUseCaseImpl: FetchWebPageImageDirSizeUseCase { +public final class FetchWebPageImageDirSizeUseCaseImpl: FetchWebPageImageDirSizeUseCase { private let repository: WebPageImageRepository init(_ repository: WebPageImageRepository) { self.repository = repository } - func execute() async -> Int64 { + public func execute() async -> Int64 { await repository.fetchDirSizeInBytes() } } diff --git a/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift b/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift index 3499b52d..62cfe51b 100644 --- a/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift +++ b/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/9/26. // -protocol FetchWebPagesUseCase { +public protocol FetchWebPagesUseCase { func execute(_ query: String) async throws -> [WebPage] } diff --git a/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCaseImpl.swift b/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCaseImpl.swift index 7e749394..edf043b1 100644 --- a/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/9/26. // -final class FetchWebPagesUseCaseImpl: FetchWebPagesUseCase { +public final class FetchWebPagesUseCaseImpl: FetchWebPagesUseCase { private let repository: WebPageRepository init(_ repository: WebPageRepository) { self.repository = repository } - func execute(_ query: String) async throws -> [WebPage] { + public func execute(_ query: String) async throws -> [WebPage] { try await repository.fetch(query) } } diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCase.swift b/DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCase.swift index 8f73c764..d49ae012 100644 --- a/DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCase.swift +++ b/DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/8/26. // -protocol AddWebPageUseCase { +public protocol AddWebPageUseCase { func execute(_ urlString: String) async throws } diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCaseImpl.swift b/DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCaseImpl.swift index 8313a071..8543bcbf 100644 --- a/DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/9/26. // -final class AddWebPageUseCaseImpl: AddWebPageUseCase { +public final class AddWebPageUseCaseImpl: AddWebPageUseCase { private let repository: WebPageRepository init(_ repository: WebPageRepository) { self.repository = repository } - func execute(_ urlString: String) async throws { + public func execute(_ urlString: String) async throws { try await repository.upsert(urlString) } } diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCase.swift b/DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCase.swift index f2b5702a..0ce943ec 100644 --- a/DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCase.swift +++ b/DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 4/14/26. // -protocol ClearWebPageImageDirectoryUseCase { +public protocol ClearWebPageImageDirectoryUseCase { func execute() async throws } diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift b/DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift index 7443208a..2726391b 100644 --- a/DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 4/14/26. // -final class ClearWebPageImageDirectoryUseCaseImpl: ClearWebPageImageDirectoryUseCase { +public final class ClearWebPageImageDirectoryUseCaseImpl: ClearWebPageImageDirectoryUseCase { private let repository: WebPageImageRepository init(_ repository: WebPageImageRepository) { self.repository = repository } - func execute() async throws { + public func execute() async throws { try await repository.clearDirectory() } } diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift b/DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift index 35b2a83d..e3900b02 100644 --- a/DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift +++ b/DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 2/9/26. // -protocol DeleteWebPageUseCase { +public protocol DeleteWebPageUseCase { func execute(_ urlString: String) async throws } diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift b/DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift index f799f75c..d25f2e56 100644 --- a/DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by 최윤진 on 2/9/26. // -final class DeleteWebPageUseCaseImpl: DeleteWebPageUseCase { +public final class DeleteWebPageUseCaseImpl: DeleteWebPageUseCase { private let repository: WebPageRepository init(_ repository: WebPageRepository) { self.repository = repository } - func execute(_ urlString: String) async throws { + public func execute(_ urlString: String) async throws { try await repository.delete(urlString) } } diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift b/DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift index 19c653f8..c198fa32 100644 --- a/DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift +++ b/DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift @@ -5,6 +5,6 @@ // Created by opfic on 3/16/26. // -protocol UndoDeleteWebPageUseCase { +public protocol UndoDeleteWebPageUseCase { func execute(_ urlString: String) async throws } diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCaseImpl.swift b/DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCaseImpl.swift index 6afcfdfa..0fe9a442 100644 --- a/DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCaseImpl.swift +++ b/DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCaseImpl.swift @@ -5,14 +5,14 @@ // Created by opfic on 3/16/26. // -final class UndoDeleteWebPageUseCaseImpl: UndoDeleteWebPageUseCase { +public final class UndoDeleteWebPageUseCaseImpl: UndoDeleteWebPageUseCase { private let repository: WebPageRepository init(_ repository: WebPageRepository) { self.repository = repository } - func execute(_ urlString: String) async throws { + public func execute(_ urlString: String) async throws { try await repository.undoDelete(urlString) } } diff --git a/DevLog/Infra/Common/InfraLayerError.swift b/DevLog/Infra/Common/InfraLayerError.swift index 2a6af101..39c9532c 100644 --- a/DevLog/Infra/Common/InfraLayerError.swift +++ b/DevLog/Infra/Common/InfraLayerError.swift @@ -7,7 +7,6 @@ import AuthenticationServices import Foundation -import GoogleSignIn enum FirestoreError: Error, LocalizedError { case dataNotFound(_ key: String) @@ -24,20 +23,6 @@ enum UIError: Error { case notFoundTopViewController } -enum EmailFetchError: Error, Equatable { - case emailNotFound - case emailMismatch - - var code: String { - switch self { - case .emailMismatch: - "email_mismatch" - case .emailNotFound: - "email_not_found" - } - } -} - enum TokenError: Error { case invalidResponse } @@ -47,20 +32,3 @@ enum SocialLoginError: Error { case failedToStartWebAuthenticationSession case authenticationAlreadyInProgress } - -extension Error { - var isSocialLoginCancelled: Bool { - switch self { - // Apple 로그인 취소 - case let authError as ASAuthorizationError: - return authError.code == .canceled - // Github 로그인 취소 - case let webAuthError as ASWebAuthenticationSessionError: - return webAuthError.code == .canceledLogin - default: - let nsError = self as NSError - // Google 로그인 취소 - return nsError.domain == kGIDSignInErrorDomain && nsError.code == GIDSignInError.canceled.rawValue - } - } -} diff --git a/DevLog/Presentation/Common/LoadingState.swift b/DevLog/Presentation/Common/LoadingState.swift index 42c35c73..44bc4695 100644 --- a/DevLog/Presentation/Common/LoadingState.swift +++ b/DevLog/Presentation/Common/LoadingState.swift @@ -8,12 +8,12 @@ import Foundation @MainActor -final class LoadingState { +public final class LoadingState { private enum DefaultTarget: Hashable { case value } - enum Mode { + public enum Mode { case immediate case delayed } @@ -29,7 +29,7 @@ final class LoadingState { self.delay = delay } - func begin( + public func begin( mode: Mode, update: @escaping @MainActor (Bool) -> Void ) { @@ -38,7 +38,7 @@ final class LoadingState { } } - func begin( + public func begin( target: T, mode: Mode, update: @escaping @MainActor (T, Bool) -> Void @@ -49,7 +49,7 @@ final class LoadingState { } } - func end( + public func end( mode: Mode, update: @escaping @MainActor (Bool) -> Void ) { @@ -58,7 +58,7 @@ final class LoadingState { } } - func end( + public func end( target: T, mode: Mode, update: @escaping @MainActor (T, Bool) -> Void diff --git a/DevLog/Presentation/Protocol/Store.swift b/DevLog/Presentation/Protocol/Store.swift index 314fbd58..fb86119b 100644 --- a/DevLog/Presentation/Protocol/Store.swift +++ b/DevLog/Presentation/Protocol/Store.swift @@ -8,7 +8,7 @@ import Foundation @MainActor -protocol Store: AnyObject { +public protocol Store: AnyObject { associatedtype State associatedtype Action associatedtype SideEffect diff --git a/DevLog/Presentation/Structure/Profile/ActivityKindItem.swift b/DevLog/Presentation/Structure/Profile/ActivityKindItem.swift index 218b8c2d..fd01f6d9 100644 --- a/DevLog/Presentation/Structure/Profile/ActivityKindItem.swift +++ b/DevLog/Presentation/Structure/Profile/ActivityKindItem.swift @@ -7,22 +7,22 @@ import SwiftUI -struct ActivityKindItem: Identifiable, Hashable { +public struct ActivityKindItem: Identifiable, Hashable { private let activityKind: ActivityKind init(from activityKind: ActivityKind) { self.activityKind = activityKind } - static var selectableItems: [ActivityKindItem] {[ + public static var selectableItems: [ActivityKindItem] {[ .init(from: .created), .init(from: .completed), .init(from: .deleted) ] } - var id: String { activityKind.rawValue } + public var id: String { activityKind.rawValue } - var rawValue: String { activityKind.rawValue } + public var rawValue: String { activityKind.rawValue } - var title: String { + public var title: String { switch activityKind { case .created: return String(localized: "profile_activity_created") @@ -33,7 +33,7 @@ struct ActivityKindItem: Identifiable, Hashable { } } - var badgeColor: Color { + public var badgeColor: Color { switch activityKind { case .created: return .orange diff --git a/DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift b/DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift index 24344843..bf0cb082 100644 --- a/DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift +++ b/DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift @@ -7,16 +7,16 @@ import Foundation -struct HeatmapActivityItem: Identifiable, Hashable, Comparable { - var id: String { todoId } - let todoId: String - let title: String - let number: Int - let category: TodoCategory - let activityKinds: [ActivityKind] - let isDeleted: Bool +public struct HeatmapActivityItem: Identifiable, Hashable, Comparable { + public var id: String { todoId } + public let todoId: String + public let title: String + public let number: Int + public let category: TodoCategory + public let activityKinds: [ActivityKind] + public let isDeleted: Bool - var activityKindItems: [ActivityKindItem] { + public var activityKindItems: [ActivityKindItem] { let orderedKinds: [ActivityKind] = [.created, .completed, .deleted] return orderedKinds.compactMap { activityKind in if activityKinds.contains(activityKind) { @@ -36,7 +36,7 @@ struct HeatmapActivityItem: Identifiable, Hashable, Comparable { self.isDeleted = todo.deletedAt != nil } - static func < (lhs: HeatmapActivityItem, rhs: HeatmapActivityItem) -> Bool { + public static func < (lhs: HeatmapActivityItem, rhs: HeatmapActivityItem) -> Bool { lhs.number < rhs.number } } diff --git a/DevLog/Presentation/Structure/Profile/HeatmapDay.swift b/DevLog/Presentation/Structure/Profile/HeatmapDay.swift index ed7b3dae..d0ca0cdf 100644 --- a/DevLog/Presentation/Structure/Profile/HeatmapDay.swift +++ b/DevLog/Presentation/Structure/Profile/HeatmapDay.swift @@ -7,10 +7,10 @@ import Foundation -struct HeatmapDay: Hashable { - let date: Date - let createdCount: Int - let completedCount: Int - let deletedCount: Int - let isVisible: Bool +public struct HeatmapDay: Hashable { + public let date: Date + public let createdCount: Int + public let completedCount: Int + public let deletedCount: Int + public let isVisible: Bool } diff --git a/DevLog/Presentation/Structure/Profile/HeatmapMonth.swift b/DevLog/Presentation/Structure/Profile/HeatmapMonth.swift index 49af6186..5cec23c7 100644 --- a/DevLog/Presentation/Structure/Profile/HeatmapMonth.swift +++ b/DevLog/Presentation/Structure/Profile/HeatmapMonth.swift @@ -7,8 +7,8 @@ import Foundation -struct HeatmapMonth: Identifiable, Hashable { - var id: Date { monthStart } - let monthStart: Date - let weeks: [[HeatmapDay]] +public struct HeatmapMonth: Identifiable, Hashable { + public var id: Date { monthStart } + public let monthStart: Date + public let weeks: [[HeatmapDay]] } diff --git a/DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift b/DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift index b2b8f4a4..95f57589 100644 --- a/DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift +++ b/DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift @@ -7,8 +7,8 @@ import Foundation -struct HeatmapQuarter: Identifiable, Hashable { - var id: Date { quarterStart } - let quarterStart: Date - let months: [HeatmapMonth] +public struct HeatmapQuarter: Identifiable, Hashable { + public var id: Date { quarterStart } + public let quarterStart: Date + public let months: [HeatmapMonth] } diff --git a/DevLog/Presentation/Structure/PushNotificationItem.swift b/DevLog/Presentation/Structure/PushNotificationItem.swift index 5857f99c..442060fa 100644 --- a/DevLog/Presentation/Structure/PushNotificationItem.swift +++ b/DevLog/Presentation/Structure/PushNotificationItem.swift @@ -7,15 +7,15 @@ import Foundation -struct PushNotificationItem: Identifiable, Hashable { - let id: String - var isHidden = false - let title: String - let body: String - let receivedAt: Date - var isRead: Bool - let todoId: String - let todoCategory: TodoCategory +public struct PushNotificationItem: Identifiable, Hashable { + public let id: String + public var isHidden = false + public let title: String + public let body: String + public let receivedAt: Date + public var isRead: Bool + public let todoId: String + public let todoCategory: TodoCategory init(from notification: PushNotification) { self.id = notification.id diff --git a/DevLog/Presentation/Structure/Todo/RecentTodoItem.swift b/DevLog/Presentation/Structure/Todo/RecentTodoItem.swift index 20adae25..dbd8f8d6 100644 --- a/DevLog/Presentation/Structure/Todo/RecentTodoItem.swift +++ b/DevLog/Presentation/Structure/Todo/RecentTodoItem.swift @@ -7,14 +7,14 @@ import Foundation -struct RecentTodoItem: Identifiable, Hashable { - let id: String - let number: Int - let title: String - let isPinned: Bool - let updatedAt: Date - let tags: [String] - var category: TodoCategory +public struct RecentTodoItem: Identifiable, Hashable { + public let id: String + public let number: Int + public let title: String + public let isPinned: Bool + public let updatedAt: Date + public let tags: [String] + public var category: TodoCategory init?(from todo: Todo) { guard let number = todo.number else { return nil } diff --git a/DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift b/DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift index e81d9e53..d68a3cd5 100644 --- a/DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift +++ b/DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift @@ -7,16 +7,16 @@ import SwiftUI -struct SystemTodoCategoryItem: Identifiable, Hashable { - let systemTodoCategory: SystemTodoCategory +public struct SystemTodoCategoryItem: Identifiable, Hashable { + public let systemTodoCategory: SystemTodoCategory init(from systemTodoCategory: SystemTodoCategory) { self.systemTodoCategory = systemTodoCategory } - var id: String { systemTodoCategory.rawValue } + public var id: String { systemTodoCategory.rawValue } - var symbolName: String { + public var symbolName: String { switch systemTodoCategory { case .issue: return "exclamationmark.triangle" case .feature: return "sparkles" @@ -29,7 +29,7 @@ struct SystemTodoCategoryItem: Identifiable, Hashable { } } - var localizedName: String { + public var localizedName: String { switch systemTodoCategory { case .issue: return NSLocalizedString("todo_category_issue", comment: "Todo category: Issue") case .feature: return NSLocalizedString("todo_category_feature", comment: "Todo category: Feature") @@ -42,7 +42,7 @@ struct SystemTodoCategoryItem: Identifiable, Hashable { } } - var color: UIColor { + public var color: UIColor { switch systemTodoCategory { case .issue: return .systemRed case .feature: return .systemGreen diff --git a/DevLog/Presentation/Structure/Todo/TodayTodoItem.swift b/DevLog/Presentation/Structure/Todo/TodayTodoItem.swift index 0ee57bbf..979151e2 100644 --- a/DevLog/Presentation/Structure/Todo/TodayTodoItem.swift +++ b/DevLog/Presentation/Structure/Todo/TodayTodoItem.swift @@ -7,15 +7,15 @@ import Foundation -struct TodayTodoItem: Identifiable, Hashable { - let id: String - let number: Int - let title: String - let tags: [String] - let isPinned: Bool - let updatedAt: Date - let dueDate: Date? - let category: TodoCategory +public struct TodayTodoItem: Identifiable, Hashable { + public let id: String + public let number: Int + public let title: String + public let tags: [String] + public let isPinned: Bool + public let updatedAt: Date + public let dueDate: Date? + public let category: TodoCategory init?(from todo: Todo) { guard let number = todo.number else { return nil } diff --git a/DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift b/DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift index af9da76c..fea325e5 100644 --- a/DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift +++ b/DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift @@ -7,9 +7,9 @@ import SwiftUI -struct TodoCategoryItem: Identifiable, Hashable { - var category: TodoCategory - var isVisible: Bool +public struct TodoCategoryItem: Identifiable, Hashable { + public var category: TodoCategory + public var isVisible: Bool init(from preference: TodoCategoryPreference) { self.category = preference.category @@ -24,18 +24,18 @@ struct TodoCategoryItem: Identifiable, Hashable { self.isVisible = isVisible } - var id: String { category.storageValue } + public var id: String { category.storageValue } - var todoCategory: TodoCategory { category } + public var todoCategory: TodoCategory { category } - var preference: TodoCategoryPreference { + public var preference: TodoCategoryPreference { TodoCategoryPreference( category: category, isVisible: isVisible ) } - var isUserCategory: Bool { + public var isUserCategory: Bool { if case .user = category { return true } @@ -43,7 +43,7 @@ struct TodoCategoryItem: Identifiable, Hashable { return false } - var symbolName: String { + public var symbolName: String { switch category { case .system(let systemTodoCategory): return SystemTodoCategoryItem(from: systemTodoCategory).symbolName @@ -52,7 +52,7 @@ struct TodoCategoryItem: Identifiable, Hashable { } } - var localizedName: String { + public var localizedName: String { switch category { case .system(let systemTodoCategory): return SystemTodoCategoryItem(from: systemTodoCategory).localizedName @@ -61,7 +61,7 @@ struct TodoCategoryItem: Identifiable, Hashable { } } - var color: Color { + public var color: Color { switch category { case .system(let systemTodoCategory): return Color(SystemTodoCategoryItem(from: systemTodoCategory).color) @@ -70,11 +70,11 @@ struct TodoCategoryItem: Identifiable, Hashable { } } - static func == (lhs: TodoCategoryItem, rhs: TodoCategoryItem) -> Bool { + public static func == (lhs: TodoCategoryItem, rhs: TodoCategoryItem) -> Bool { lhs.category == rhs.category && lhs.isVisible == rhs.isVisible } - func hash(into hasher: inout Hasher) { + public func hash(into hasher: inout Hasher) { hasher.combine(id) switch category { diff --git a/DevLog/Presentation/Structure/Todo/TodoIDItem.swift b/DevLog/Presentation/Structure/Todo/TodoIDItem.swift index 0fdc5f9b..d95748e7 100644 --- a/DevLog/Presentation/Structure/Todo/TodoIDItem.swift +++ b/DevLog/Presentation/Structure/Todo/TodoIDItem.swift @@ -7,6 +7,6 @@ import Foundation -struct TodoIdItem: Identifiable, Hashable { - let id: String +public struct TodoIdItem: Identifiable, Hashable { + public let id: String } diff --git a/DevLog/Presentation/Structure/Todo/TodoListItem.swift b/DevLog/Presentation/Structure/Todo/TodoListItem.swift index dc958b0c..4d8a16fe 100644 --- a/DevLog/Presentation/Structure/Todo/TodoListItem.swift +++ b/DevLog/Presentation/Structure/Todo/TodoListItem.swift @@ -7,16 +7,16 @@ import Foundation -struct TodoListItem: Identifiable, Hashable { - let id: String - var isHidden = false - let number: Int - let title: String - let tags: [String] - let isPinned: Bool - let isCompleted: Bool - let createdAt: Date - let updatedAt: Date +public struct TodoListItem: Identifiable, Hashable { + public let id: String + public var isHidden = false + public let number: Int + public let title: String + public let tags: [String] + public let isPinned: Bool + public let isCompleted: Bool + public let createdAt: Date + public let updatedAt: Date init?(from todo: Todo) { guard let number = todo.number else { return nil } diff --git a/DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift b/DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift index 39440d02..2bf09fec 100644 --- a/DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift +++ b/DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift @@ -7,10 +7,10 @@ import Foundation -struct TodoReferenceItem: Equatable { - let id: String - let title: String - let category: TodoCategoryItem +public struct TodoReferenceItem: Equatable { + public let id: String + public let title: String + public let category: TodoCategoryItem init(from todoReference: TodoReference) { self.id = todoReference.id diff --git a/DevLog/Presentation/Structure/Todo/UserTodoCategoryItem.swift b/DevLog/Presentation/Structure/Todo/UserTodoCategoryItem.swift index cd3ad23b..2c928a45 100644 --- a/DevLog/Presentation/Structure/Todo/UserTodoCategoryItem.swift +++ b/DevLog/Presentation/Structure/Todo/UserTodoCategoryItem.swift @@ -7,18 +7,18 @@ import SwiftUI -struct UserTodoCategoryItem: Identifiable, Hashable { - let userTodoCategory: UserTodoCategory +public struct UserTodoCategoryItem: Identifiable, Hashable { + public let userTodoCategory: UserTodoCategory init(from userTodoCategory: UserTodoCategory) { self.userTodoCategory = userTodoCategory } - var id: String { userTodoCategory.id } + public var id: String { userTodoCategory.id } - var symbolName: String { "tray.fill" } + public var symbolName: String { "tray.fill" } - var localizedName: String { userTodoCategory.name } + public var localizedName: String { userTodoCategory.name } - var color: Color { Color(hexString: userTodoCategory.colorHex) ?? .gray } + public var color: Color { Color(hexString: userTodoCategory.colorHex) ?? .gray } } diff --git a/DevLog/Presentation/Structure/WebPageItem.swift b/DevLog/Presentation/Structure/WebPageItem.swift index 9f19f654..f8c23193 100644 --- a/DevLog/Presentation/Structure/WebPageItem.swift +++ b/DevLog/Presentation/Structure/WebPageItem.swift @@ -7,17 +7,17 @@ import SwiftUI -struct WebPageItem: Identifiable, Hashable { +public struct WebPageItem: Identifiable, Hashable { private let metadata: WebPage - var isHidden = false + public var isHidden = false init(from metadata: WebPage) { self.metadata = metadata } - var id: URL { metadata.url } - var title: String { metadata.title ?? String(localized: "web_page_missing_title") } - var url: URL { metadata.url } - var displayURL: String { metadata.displayURL.absoluteString } - var imageURL: URL? { metadata.imageURL } + public var id: URL { metadata.url } + public var title: String { metadata.title ?? String(localized: "web_page_missing_title") } + public var url: URL { metadata.url } + public var displayURL: String { metadata.displayURL.absoluteString } + public var imageURL: URL? { metadata.imageURL } } diff --git a/DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift b/DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift index a5af7766..ef1b71cd 100644 --- a/DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift +++ b/DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift @@ -394,14 +394,6 @@ extension PushNotificationQuery.SortOrder { } extension PushNotificationQuery.TimeFilter { - var id: String { - switch self { - case .none: return "none" - case .hours(let value): return "hours-\(value)" - case .days(let value): return "days-\(value)" - } - } - var title: String { switch self { case .none: @@ -428,18 +420,4 @@ extension PushNotificationQuery.TimeFilter { .days(7) ] } - - init(id: String) { - if id == "none" { - self = .none - } else if id.hasPrefix("hours-") { - let value = Int(id.replacingOccurrences(of: "hours-", with: "")) ?? 0 - self = value > 0 ? .hours(value) : .none - } else if id.hasPrefix("days-") { - let value = Int(id.replacingOccurrences(of: "days-", with: "")) ?? 0 - self = value > 0 ? .days(value) : .none - } else { - self = .none - } - } } diff --git a/WidgetShared/Calendar.swift b/WidgetShared/Calendar.swift index 2d985212..4eb7f208 100644 --- a/WidgetShared/Calendar.swift +++ b/WidgetShared/Calendar.swift @@ -7,8 +7,8 @@ import Foundation -extension Calendar { - func startOfQuarter(for date: Date) -> Date { +public extension Calendar { + public func startOfQuarter(for date: Date) -> Date { let month = component(.month, from: date) let startMonth = ((month - 1) / 3) * 3 + 1 var components = dateComponents([.year], from: date) diff --git a/WidgetShared/WidgetAppGroup.swift b/WidgetShared/WidgetAppGroup.swift index 6625334c..a0e6140f 100644 --- a/WidgetShared/WidgetAppGroup.swift +++ b/WidgetShared/WidgetAppGroup.swift @@ -7,6 +7,6 @@ import Foundation -enum WidgetAppGroup { - static let identifier = "group.opfic.DevLog" +public enum WidgetAppGroup { + public static let identifier = "group.opfic.DevLog" } diff --git a/WidgetShared/WidgetDeepLink.swift b/WidgetShared/WidgetDeepLink.swift index 26ce00b5..f9c35046 100644 --- a/WidgetShared/WidgetDeepLink.swift +++ b/WidgetShared/WidgetDeepLink.swift @@ -7,16 +7,16 @@ import Foundation -enum WidgetDeepLink { - static let scheme = "DevLog" - static let todayTodoHost = "today" - static let heatmapHost = "profile" +public enum WidgetDeepLink { + public static let scheme = "DevLog" + public static let todayTodoHost = "today" + public static let heatmapHost = "profile" - static var todayTodoURL: URL? { + public static var todayTodoURL: URL? { url(host: todayTodoHost) } - static var heatmapURL: URL? { + public static var heatmapURL: URL? { url(host: heatmapHost) } diff --git a/WidgetShared/WidgetHeatmapPlaceholderShape.swift b/WidgetShared/WidgetHeatmapPlaceholderShape.swift index 0fd803ee..90aec66a 100644 --- a/WidgetShared/WidgetHeatmapPlaceholderShape.swift +++ b/WidgetShared/WidgetHeatmapPlaceholderShape.swift @@ -7,15 +7,15 @@ import Foundation -struct WidgetHeatmapPlaceholderShape { - let currentMonths: [WidgetHeatmapPlaceholderMonthShape] - let quarterMonths: [WidgetHeatmapPlaceholderMonthShape] +public struct WidgetHeatmapPlaceholderShape { + public let currentMonths: [WidgetHeatmapPlaceholderMonthShape] + public let quarterMonths: [WidgetHeatmapPlaceholderMonthShape] - var currentMonthWeekCounts: [Int] { + public var currentMonthWeekCounts: [Int] { currentMonths.map(\.weeks.count) } - var quarterWeekCounts: [Int] { + public var quarterWeekCounts: [Int] { quarterMonths.map(\.weeks.count) } @@ -108,19 +108,19 @@ struct WidgetHeatmapPlaceholderShape { } } -struct WidgetHeatmapPlaceholderMonthShape: Identifiable, Hashable { - var id: Date { monthStart } - let monthStart: Date - let weeks: [WidgetHeatmapPlaceholderWeekShape] +public struct WidgetHeatmapPlaceholderMonthShape: Identifiable, Hashable { + public var id: Date { monthStart } + public let monthStart: Date + public let weeks: [WidgetHeatmapPlaceholderWeekShape] } -struct WidgetHeatmapPlaceholderWeekShape: Identifiable, Hashable { - let id: Int - let days: [WidgetHeatmapPlaceholderDayShape] +public struct WidgetHeatmapPlaceholderWeekShape: Identifiable, Hashable { + public let id: Int + public let days: [WidgetHeatmapPlaceholderDayShape] } -struct WidgetHeatmapPlaceholderDayShape: Identifiable, Hashable { - var id: Date { date } - let date: Date - let isVisible: Bool +public struct WidgetHeatmapPlaceholderDayShape: Identifiable, Hashable { + public var id: Date { date } + public let date: Date + public let isVisible: Bool } diff --git a/WidgetShared/WidgetKind.swift b/WidgetShared/WidgetKind.swift index 969af0f9..226bc0c3 100644 --- a/WidgetShared/WidgetKind.swift +++ b/WidgetShared/WidgetKind.swift @@ -7,7 +7,7 @@ import Foundation -enum WidgetKind { - static let todayTodo = "TodayTodoWidget" - static let heatmap = "HeatmapWidget" +public enum WidgetKind { + public static let todayTodo = "TodayTodoWidget" + public static let heatmap = "HeatmapWidget" } diff --git a/WidgetShared/WidgetSnapshotKey.swift b/WidgetShared/WidgetSnapshotKey.swift index 3f972d8b..34b03683 100644 --- a/WidgetShared/WidgetSnapshotKey.swift +++ b/WidgetShared/WidgetSnapshotKey.swift @@ -7,8 +7,8 @@ import Foundation -enum WidgetSnapshotKey { - static let today = "Widget.today.snapshot" - static let heatmap = "Widget.heatmap.snapshot" - static let snapshots = [today, heatmap] +public enum WidgetSnapshotKey { + public static let today = "Widget.today.snapshot" + public static let heatmap = "Widget.heatmap.snapshot" + public static let snapshots = [today, heatmap] } From a9b515d3be58e52a17545f9c76635975b288d0b2 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 00:29:40 +0900 Subject: [PATCH 04/46] =?UTF-8?q?refactor:=20=EB=A0=88=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=EB=B3=84=20=ED=95=84=EC=9A=94=ED=95=9C=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?import=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 모듈 분리에 따라 각 레이어 타깃에서 참조하는 내부 모듈 import 추가 DataMapper 파일의 import 위치 정리 --- DevLog/Data/DTO/AppleAuthResponse.swift | 1 + DevLog/Data/DTO/AuthDataResponse.swift | 1 + DevLog/Data/DTO/NotificationKind.swift | 1 + DevLog/Data/DTO/PushNotificationCursorDTO.swift | 1 + DevLog/Data/DTO/PushNotificationResponse.swift | 1 + DevLog/Data/DTO/TodoCategoryResponse.swift | 1 + DevLog/Data/DTO/TodoCursorDTO.swift | 1 + DevLog/Data/DTO/TodoDTO.swift | 1 + DevLog/Data/DTO/TodoReferenceResponse.swift | 1 + DevLog/Data/DTO/UserProfileResponse.swift | 1 + DevLog/Data/DTO/WebPageDTO.swift | 1 + DevLog/Data/Mapper/PushNotificationMapping.swift | 6 ++++-- DevLog/Data/Mapper/TodoMapping.swift | 6 ++++-- DevLog/Data/Mapper/UserProfileMapping.swift | 5 +++-- DevLog/Data/Mapper/WebPageMapping.swift | 3 +++ DevLog/Data/Protocol/AuthService.swift | 2 ++ DevLog/Data/Protocol/AuthenticationService.swift | 2 ++ DevLog/Data/Protocol/NWPathConnectivityProvider.swift | 2 ++ DevLog/Data/Protocol/PushNotificationService.swift | 2 ++ DevLog/Data/Protocol/ThemeStore.swift | 2 ++ DevLog/Data/Protocol/TodoCategoryService.swift | 2 ++ DevLog/Data/Protocol/TodoService.swift | 2 ++ DevLog/Data/Protocol/UserDefaultsStore.swift | 2 ++ DevLog/Data/Protocol/UserService.swift | 2 ++ DevLog/Data/Protocol/WebPageImageStore.swift | 2 ++ DevLog/Data/Protocol/WebPageMetadataService.swift | 2 ++ DevLog/Data/Protocol/WebPageService.swift | 2 ++ DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift | 2 ++ DevLog/Data/Protocol/WidgetSnapshotUpdater.swift | 2 ++ DevLog/Data/Repository/AuthDataRepositoryImpl.swift | 6 ++++++ DevLog/Data/Repository/AuthSessionRepositoryImpl.swift | 5 +++++ DevLog/Data/Repository/AuthenticationRepositoryImpl.swift | 6 ++++++ .../Data/Repository/NetworkConnectivityRepositoryImpl.swift | 5 +++++ DevLog/Data/Repository/PushNotificationRepositoryImpl.swift | 5 +++++ DevLog/Data/Repository/TodoCategoryRepositoryImpl.swift | 6 ++++++ DevLog/Data/Repository/TodoRepositoryImpl.swift | 5 +++++ DevLog/Data/Repository/UserDataRepositoryImpl.swift | 6 ++++++ DevLog/Data/Repository/UserPreferencesRepositoryImpl.swift | 5 +++++ DevLog/Data/Repository/WebPageImageRepositoryImpl.swift | 6 ++++++ DevLog/Data/Repository/WebPageRepositoryImpl.swift | 5 +++++ DevLog/Infra/Common/InfraLayerError.swift | 3 +++ DevLog/Infra/Common/TopViewControllerProvider.swift | 3 +++ DevLog/Infra/Extension/FirebaseAuthUser+.swift | 3 +++ DevLog/Infra/Extension/FirebaseFunctions+.swift | 3 +++ DevLog/Infra/Service/AuthServiceImpl.swift | 3 +++ DevLog/Infra/Service/NWPathConnectivityProviderImpl.swift | 3 +++ DevLog/Infra/Service/PushNotificationServiceImpl.swift | 3 +++ .../SocialLogin/AppleAuthenticationServiceImpl.swift | 3 +++ .../SocialLogin/GithubAuthenticationServiceImpl.swift | 3 +++ .../SocialLogin/GoogleAuthenticationServiceImpl.swift | 3 +++ DevLog/Infra/Service/TodoCategoryServiceImpl.swift | 3 +++ DevLog/Infra/Service/TodoServiceImpl.swift | 3 +++ DevLog/Infra/Service/UserServiceImpl.swift | 3 +++ DevLog/Infra/Service/WebPageMetadataServiceImpl.swift | 3 +++ DevLog/Infra/Service/WebPageServiceImpl.swift | 3 +++ DevLog/Presentation/Common/LoadingState.swift | 2 ++ DevLog/Presentation/Extension/Color+Hex.swift | 2 ++ DevLog/Presentation/Protocol/Store.swift | 2 ++ .../Presentation/Structure/Profile/ActivityKindItem.swift | 2 ++ .../Structure/Profile/HeatmapActivityItem.swift | 2 ++ DevLog/Presentation/Structure/Profile/HeatmapDay.swift | 2 ++ DevLog/Presentation/Structure/Profile/HeatmapMonth.swift | 2 ++ DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift | 2 ++ DevLog/Presentation/Structure/PushNotificationItem.swift | 2 ++ DevLog/Presentation/Structure/Todo/RecentTodoItem.swift | 2 ++ .../Structure/Todo/SystemTodoCategoryItem.swift | 2 ++ DevLog/Presentation/Structure/Todo/TodayTodoItem.swift | 2 ++ DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift | 2 ++ DevLog/Presentation/Structure/Todo/TodoIDItem.swift | 2 ++ DevLog/Presentation/Structure/Todo/TodoListItem.swift | 2 ++ DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift | 2 ++ .../Presentation/Structure/Todo/UserTodoCategoryItem.swift | 2 ++ DevLog/Presentation/Structure/WebPageItem.swift | 2 ++ DevLog/Presentation/ViewModel/AccountViewModel.swift | 2 ++ DevLog/Presentation/ViewModel/HomeViewModel.swift | 2 ++ DevLog/Presentation/ViewModel/LoginViewModel.swift | 2 ++ DevLog/Presentation/ViewModel/MainViewModel.swift | 2 ++ DevLog/Presentation/ViewModel/ProfileViewModel.swift | 2 ++ .../ViewModel/PushNotificationListViewModel.swift | 2 ++ .../ViewModel/PushNotificationSettingsViewModel.swift | 2 ++ DevLog/Presentation/ViewModel/RootViewModel.swift | 2 ++ DevLog/Presentation/ViewModel/SearchViewModel.swift | 2 ++ DevLog/Presentation/ViewModel/SettingViewModel.swift | 2 ++ DevLog/Presentation/ViewModel/TodayViewModel.swift | 2 ++ DevLog/Presentation/ViewModel/TodoDetailViewModel.swift | 2 ++ DevLog/Presentation/ViewModel/TodoEditorViewModel.swift | 2 ++ DevLog/Presentation/ViewModel/TodoListViewModel.swift | 2 ++ DevLog/Presentation/ViewModel/TodoManageViewModel.swift | 2 ++ DevLog/Storage/Persistence/ThemeStoreImpl.swift | 6 ++++++ DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift | 6 ++++++ DevLog/Storage/Persistence/WebPageImageStoreImpl.swift | 6 ++++++ .../Persistence/WidgetSnapshotPreferenceStoreImpl.swift | 6 ++++++ DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift | 6 ++++++ DevLog/UI/Common/Component/CacheableImage.swift | 2 ++ DevLog/UI/Common/Component/CheckBox.swift | 2 ++ DevLog/UI/Common/Component/LoadingView.swift | 2 ++ DevLog/UI/Common/Component/LoginButton.swift | 2 ++ DevLog/UI/Common/Component/RelativeTimeText.swift | 2 ++ DevLog/UI/Common/Component/Tag+.swift | 2 ++ DevLog/UI/Common/Component/Toast.swift | 2 ++ DevLog/UI/Common/Component/TodoItemRow.swift | 2 ++ DevLog/UI/Common/Component/ToolbarButton+.swift | 2 ++ DevLog/UI/Common/Component/UIKitTextEditor.swift | 2 ++ DevLog/UI/Common/Component/WebItemRow.swift | 2 ++ DevLog/UI/Common/NavigationBarConfigurator.swift | 2 ++ DevLog/UI/Common/NavigationRouter.swift | 2 ++ DevLog/UI/Common/TodoDetailContentView.swift | 2 ++ DevLog/UI/Common/TodoInfoSheetView.swift | 2 ++ DevLog/UI/Common/TodoMarkdownContentView.swift | 2 ++ DevLog/UI/Common/WebView.swift | 2 ++ DevLog/UI/Extension/EnvironmentValues+.swift | 2 ++ DevLog/UI/Extension/View+.swift | 2 ++ DevLog/UI/Home/HomeView.swift | 2 ++ DevLog/UI/Home/HomeViewCoordinator.swift | 2 ++ DevLog/UI/Home/TodoDetailView.swift | 2 ++ DevLog/UI/Home/TodoEditorView.swift | 2 ++ DevLog/UI/Home/TodoListView.swift | 2 ++ DevLog/UI/Home/TodoManageView.swift | 2 ++ DevLog/UI/Login/LoginView.swift | 2 ++ DevLog/UI/Main/MainView.swift | 2 ++ DevLog/UI/Main/MainViewCoordinator.swift | 2 ++ DevLog/UI/Profile/HeatmapView.swift | 2 ++ DevLog/UI/Profile/ProfileView.swift | 2 ++ DevLog/UI/PushNotification/PushNotificationListView.swift | 2 ++ DevLog/UI/Search/SearchView.swift | 2 ++ DevLog/UI/Setting/AccountView.swift | 2 ++ DevLog/UI/Setting/PushNotificationSettingsView.swift | 2 ++ DevLog/UI/Setting/SettingView.swift | 2 ++ DevLog/UI/Setting/ThemeView.swift | 2 ++ DevLog/UI/Today/TodayView.swift | 2 ++ DevLog/UI/Today/TodayViewCoordinator.swift | 2 ++ DevLog/Widget/Common/WidgetSharedDefaultsStore.swift | 5 +++++ DevLog/Widget/Common/WidgetSnapshotStore.swift | 5 +++++ DevLog/Widget/Common/WidgetSyncEvent.swift | 6 ++++++ DevLog/Widget/Heatmap/HeatmapWidgetSnapshot.swift | 5 +++++ DevLog/Widget/Heatmap/HeatmapWidgetSnapshotFactory.swift | 5 +++++ DevLog/Widget/Sync/WidgetSyncEventBus.swift | 5 +++++ DevLog/Widget/Sync/WidgetSyncEventBusImpl.swift | 5 +++++ DevLog/Widget/Sync/WidgetSyncEventHandler.swift | 5 +++++ DevLog/Widget/Today/TodayWidgetSnapshot.swift | 5 +++++ DevLog/Widget/Today/TodayWidgetSnapshotFactory.swift | 5 +++++ 141 files changed, 381 insertions(+), 6 deletions(-) diff --git a/DevLog/Data/DTO/AppleAuthResponse.swift b/DevLog/Data/DTO/AppleAuthResponse.swift index e33fdf9b..5c81e6cb 100644 --- a/DevLog/Data/DTO/AppleAuthResponse.swift +++ b/DevLog/Data/DTO/AppleAuthResponse.swift @@ -7,6 +7,7 @@ import Foundation import AuthenticationServices +import DevLogDomain public struct AppleAuthResponse { public let nonce: String diff --git a/DevLog/Data/DTO/AuthDataResponse.swift b/DevLog/Data/DTO/AuthDataResponse.swift index ce520b52..8be574d8 100644 --- a/DevLog/Data/DTO/AuthDataResponse.swift +++ b/DevLog/Data/DTO/AuthDataResponse.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogDomain public struct AuthDataResponse { public let uid: String diff --git a/DevLog/Data/DTO/NotificationKind.swift b/DevLog/Data/DTO/NotificationKind.swift index b9564e1b..ec08ec77 100644 --- a/DevLog/Data/DTO/NotificationKind.swift +++ b/DevLog/Data/DTO/NotificationKind.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogDomain public enum NotificationKind: String, Codable { case info diff --git a/DevLog/Data/DTO/PushNotificationCursorDTO.swift b/DevLog/Data/DTO/PushNotificationCursorDTO.swift index 5ae55ef1..596cd16e 100644 --- a/DevLog/Data/DTO/PushNotificationCursorDTO.swift +++ b/DevLog/Data/DTO/PushNotificationCursorDTO.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogDomain public struct PushNotificationCursorDTO { public let receivedAt: Date diff --git a/DevLog/Data/DTO/PushNotificationResponse.swift b/DevLog/Data/DTO/PushNotificationResponse.swift index c3df5dcc..980dd53b 100644 --- a/DevLog/Data/DTO/PushNotificationResponse.swift +++ b/DevLog/Data/DTO/PushNotificationResponse.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogDomain public struct PushNotificationResponse { public let id: String diff --git a/DevLog/Data/DTO/TodoCategoryResponse.swift b/DevLog/Data/DTO/TodoCategoryResponse.swift index fa33a781..704fed83 100644 --- a/DevLog/Data/DTO/TodoCategoryResponse.swift +++ b/DevLog/Data/DTO/TodoCategoryResponse.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogDomain public enum TodoCategoryResponse { case raw(String) diff --git a/DevLog/Data/DTO/TodoCursorDTO.swift b/DevLog/Data/DTO/TodoCursorDTO.swift index 23ceb852..f9ca3701 100644 --- a/DevLog/Data/DTO/TodoCursorDTO.swift +++ b/DevLog/Data/DTO/TodoCursorDTO.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogDomain public struct TodoCursorDTO { public let primarySortDate: Date? diff --git a/DevLog/Data/DTO/TodoDTO.swift b/DevLog/Data/DTO/TodoDTO.swift index f5967f12..03a9ae83 100644 --- a/DevLog/Data/DTO/TodoDTO.swift +++ b/DevLog/Data/DTO/TodoDTO.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogDomain public struct TodoRequest: Encodable { public let id: String diff --git a/DevLog/Data/DTO/TodoReferenceResponse.swift b/DevLog/Data/DTO/TodoReferenceResponse.swift index 2bdf7097..aca2c08b 100644 --- a/DevLog/Data/DTO/TodoReferenceResponse.swift +++ b/DevLog/Data/DTO/TodoReferenceResponse.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogDomain public struct TodoReferenceResponse { public let id: String diff --git a/DevLog/Data/DTO/UserProfileResponse.swift b/DevLog/Data/DTO/UserProfileResponse.swift index ba8adc89..517c7ff4 100644 --- a/DevLog/Data/DTO/UserProfileResponse.swift +++ b/DevLog/Data/DTO/UserProfileResponse.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogDomain public struct UserProfileResponse: Decodable { public let name: String diff --git a/DevLog/Data/DTO/WebPageDTO.swift b/DevLog/Data/DTO/WebPageDTO.swift index fcb8818a..26b59a74 100644 --- a/DevLog/Data/DTO/WebPageDTO.swift +++ b/DevLog/Data/DTO/WebPageDTO.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogDomain public struct WebPageRequest: Encodable { public let title: String diff --git a/DevLog/Data/Mapper/PushNotificationMapping.swift b/DevLog/Data/Mapper/PushNotificationMapping.swift index 4371a96b..b314ee88 100644 --- a/DevLog/Data/Mapper/PushNotificationMapping.swift +++ b/DevLog/Data/Mapper/PushNotificationMapping.swift @@ -2,11 +2,13 @@ // PushNotificationMapping.swift // DevLog // - - // Created by 최윤진 on 2/27/26. // +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO + public extension PushNotificationResponse { public func toDomain() throws -> PushNotification { let todoCategory: TodoCategory diff --git a/DevLog/Data/Mapper/TodoMapping.swift b/DevLog/Data/Mapper/TodoMapping.swift index 752797e6..937be302 100644 --- a/DevLog/Data/Mapper/TodoMapping.swift +++ b/DevLog/Data/Mapper/TodoMapping.swift @@ -2,11 +2,13 @@ // TodoMapping.swift // DevLog // - - // Created by 최윤진 on 2/19/26. // +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO + public extension TodoRequest { public static func fromDomain(_ entity: Todo) -> Self { TodoRequest( diff --git a/DevLog/Data/Mapper/UserProfileMapping.swift b/DevLog/Data/Mapper/UserProfileMapping.swift index dca6cd83..e2542ba3 100644 --- a/DevLog/Data/Mapper/UserProfileMapping.swift +++ b/DevLog/Data/Mapper/UserProfileMapping.swift @@ -2,11 +2,12 @@ // UserProfileMapping.swift // DevLog // - - // Created by 최윤진 on 2/19/26. // +import DevLogDomain +import DevLogDataDTO + public extension UserProfileResponse { public func toDomain() -> UserProfile { UserProfile( diff --git a/DevLog/Data/Mapper/WebPageMapping.swift b/DevLog/Data/Mapper/WebPageMapping.swift index 31b22c54..94172d92 100644 --- a/DevLog/Data/Mapper/WebPageMapping.swift +++ b/DevLog/Data/Mapper/WebPageMapping.swift @@ -6,6 +6,9 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO public extension WebPageResponse { public func toDomain() throws -> WebPage { diff --git a/DevLog/Data/Protocol/AuthService.swift b/DevLog/Data/Protocol/AuthService.swift index f8e535b5..1acf7c7b 100644 --- a/DevLog/Data/Protocol/AuthService.swift +++ b/DevLog/Data/Protocol/AuthService.swift @@ -7,6 +7,8 @@ import Combine import Foundation +import DevLogDomain +import DevLogDataDTO public protocol AuthService { var uid: String? { get } diff --git a/DevLog/Data/Protocol/AuthenticationService.swift b/DevLog/Data/Protocol/AuthenticationService.swift index 609658dc..a1b90077 100644 --- a/DevLog/Data/Protocol/AuthenticationService.swift +++ b/DevLog/Data/Protocol/AuthenticationService.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataDTO public protocol AuthenticationService { func signIn() async throws -> AuthDataResponse diff --git a/DevLog/Data/Protocol/NWPathConnectivityProvider.swift b/DevLog/Data/Protocol/NWPathConnectivityProvider.swift index 1c87c230..4b850f1d 100644 --- a/DevLog/Data/Protocol/NWPathConnectivityProvider.swift +++ b/DevLog/Data/Protocol/NWPathConnectivityProvider.swift @@ -7,6 +7,8 @@ import Combine import Foundation +import DevLogDomain +import DevLogDataDTO public protocol NWPathConnectivityProvider { func observeNetworkConnectivity() -> AnyPublisher diff --git a/DevLog/Data/Protocol/PushNotificationService.swift b/DevLog/Data/Protocol/PushNotificationService.swift index 77f6efd1..2e82d1c6 100644 --- a/DevLog/Data/Protocol/PushNotificationService.swift +++ b/DevLog/Data/Protocol/PushNotificationService.swift @@ -7,6 +7,8 @@ import Combine import Foundation +import DevLogDomain +import DevLogDataDTO public protocol PushNotificationService { func fetchPushNotificationEnabled() async throws -> Bool diff --git a/DevLog/Data/Protocol/ThemeStore.swift b/DevLog/Data/Protocol/ThemeStore.swift index 54efbff4..0e10a11d 100644 --- a/DevLog/Data/Protocol/ThemeStore.swift +++ b/DevLog/Data/Protocol/ThemeStore.swift @@ -7,6 +7,8 @@ import Combine import Foundation +import DevLogDomain +import DevLogDataDTO public protocol ThemeStore { func observeTheme() -> AnyPublisher diff --git a/DevLog/Data/Protocol/TodoCategoryService.swift b/DevLog/Data/Protocol/TodoCategoryService.swift index bb27d538..0851c57c 100644 --- a/DevLog/Data/Protocol/TodoCategoryService.swift +++ b/DevLog/Data/Protocol/TodoCategoryService.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataDTO public protocol TodoCategoryService { func fetchPreferences() async throws -> [TodoCategoryPreference] diff --git a/DevLog/Data/Protocol/TodoService.swift b/DevLog/Data/Protocol/TodoService.swift index e78209e3..0255c5bb 100644 --- a/DevLog/Data/Protocol/TodoService.swift +++ b/DevLog/Data/Protocol/TodoService.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataDTO public protocol TodoService { func fetchTodos(_ query: TodoQuery, cursor: TodoCursorDTO?) async throws -> TodoPageResponse diff --git a/DevLog/Data/Protocol/UserDefaultsStore.swift b/DevLog/Data/Protocol/UserDefaultsStore.swift index 0e1e805f..363ee1c7 100644 --- a/DevLog/Data/Protocol/UserDefaultsStore.swift +++ b/DevLog/Data/Protocol/UserDefaultsStore.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataDTO public protocol UserDefaultsStore { func string(forKey key: String) -> String? diff --git a/DevLog/Data/Protocol/UserService.swift b/DevLog/Data/Protocol/UserService.swift index df35bde4..091e6631 100644 --- a/DevLog/Data/Protocol/UserService.swift +++ b/DevLog/Data/Protocol/UserService.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataDTO public protocol UserService { func upsertUser(_ response: AuthDataResponse) async throws diff --git a/DevLog/Data/Protocol/WebPageImageStore.swift b/DevLog/Data/Protocol/WebPageImageStore.swift index b3277956..4623b100 100644 --- a/DevLog/Data/Protocol/WebPageImageStore.swift +++ b/DevLog/Data/Protocol/WebPageImageStore.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataDTO public protocol WebPageImageStore { func cachedImageURL(for url: URL) async throws -> URL diff --git a/DevLog/Data/Protocol/WebPageMetadataService.swift b/DevLog/Data/Protocol/WebPageMetadataService.swift index fe16ad5c..84a40d5f 100644 --- a/DevLog/Data/Protocol/WebPageMetadataService.swift +++ b/DevLog/Data/Protocol/WebPageMetadataService.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataDTO public protocol WebPageMetadataService { func fetchMetadata(from urlString: String) async throws -> WebPageMetadataResponse diff --git a/DevLog/Data/Protocol/WebPageService.swift b/DevLog/Data/Protocol/WebPageService.swift index 8566c836..b73e1fed 100644 --- a/DevLog/Data/Protocol/WebPageService.swift +++ b/DevLog/Data/Protocol/WebPageService.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataDTO public protocol WebPageService { func fetchWebPages(_ query: String) async throws -> [WebPageResponse] diff --git a/DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift b/DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift index 395f98c9..1014eb84 100644 --- a/DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift +++ b/DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataDTO public protocol WidgetSnapshotPreferenceStore { func heatmapActivityTypes() -> [String] diff --git a/DevLog/Data/Protocol/WidgetSnapshotUpdater.swift b/DevLog/Data/Protocol/WidgetSnapshotUpdater.swift index ab6d0a26..3c5b02bb 100644 --- a/DevLog/Data/Protocol/WidgetSnapshotUpdater.swift +++ b/DevLog/Data/Protocol/WidgetSnapshotUpdater.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataDTO public protocol WidgetSnapshotUpdater { func updateTodaySnapshot( diff --git a/DevLog/Data/Repository/AuthDataRepositoryImpl.swift b/DevLog/Data/Repository/AuthDataRepositoryImpl.swift index c1ac030c..a75f2546 100644 --- a/DevLog/Data/Repository/AuthDataRepositoryImpl.swift +++ b/DevLog/Data/Repository/AuthDataRepositoryImpl.swift @@ -5,6 +5,12 @@ // Created by 최윤진 on 2/12/26. // +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataMapper +import DevLogDataProtocol + final class AuthDataRepositoryImpl: AuthDataRepository { private let authService: AuthService private let appleAuthService: AuthenticationService diff --git a/DevLog/Data/Repository/AuthSessionRepositoryImpl.swift b/DevLog/Data/Repository/AuthSessionRepositoryImpl.swift index ad5a9af3..1e93e375 100644 --- a/DevLog/Data/Repository/AuthSessionRepositoryImpl.swift +++ b/DevLog/Data/Repository/AuthSessionRepositoryImpl.swift @@ -6,6 +6,11 @@ // import Combine +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataMapper +import DevLogDataProtocol final class AuthSessionRepositoryImpl: AuthSessionRepository { private let authService: AuthService diff --git a/DevLog/Data/Repository/AuthenticationRepositoryImpl.swift b/DevLog/Data/Repository/AuthenticationRepositoryImpl.swift index ba7d7db8..c5dc07a4 100644 --- a/DevLog/Data/Repository/AuthenticationRepositoryImpl.swift +++ b/DevLog/Data/Repository/AuthenticationRepositoryImpl.swift @@ -5,6 +5,12 @@ // Created by 최윤진 on 11/2/25. // +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataMapper +import DevLogDataProtocol + final class AuthenticationRepositoryImpl: AuthenticationRepository { private let authService: AuthService private let appleAuthService: AuthenticationService diff --git a/DevLog/Data/Repository/NetworkConnectivityRepositoryImpl.swift b/DevLog/Data/Repository/NetworkConnectivityRepositoryImpl.swift index 0e1a5397..7564341f 100644 --- a/DevLog/Data/Repository/NetworkConnectivityRepositoryImpl.swift +++ b/DevLog/Data/Repository/NetworkConnectivityRepositoryImpl.swift @@ -6,6 +6,11 @@ // import Combine +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataMapper +import DevLogDataProtocol final class NetworkConnectivityRepositoryImpl: NetworkConnectivityRepository { private let connectivityProvider: NWPathConnectivityProvider diff --git a/DevLog/Data/Repository/PushNotificationRepositoryImpl.swift b/DevLog/Data/Repository/PushNotificationRepositoryImpl.swift index 030cc0db..074221f5 100644 --- a/DevLog/Data/Repository/PushNotificationRepositoryImpl.swift +++ b/DevLog/Data/Repository/PushNotificationRepositoryImpl.swift @@ -7,6 +7,11 @@ import Foundation import Combine +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataMapper +import DevLogDataProtocol final class PushNotificationRepositoryImpl: PushNotificationRepository { private let pushNotificationService: PushNotificationService diff --git a/DevLog/Data/Repository/TodoCategoryRepositoryImpl.swift b/DevLog/Data/Repository/TodoCategoryRepositoryImpl.swift index 1689b9cb..888176a8 100644 --- a/DevLog/Data/Repository/TodoCategoryRepositoryImpl.swift +++ b/DevLog/Data/Repository/TodoCategoryRepositoryImpl.swift @@ -5,6 +5,12 @@ // Created by opfic on 3/30/26. // +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataMapper +import DevLogDataProtocol + final class TodoCategoryRepositoryImpl: TodoCategoryRepository { private let todoCategoryService: TodoCategoryService diff --git a/DevLog/Data/Repository/TodoRepositoryImpl.swift b/DevLog/Data/Repository/TodoRepositoryImpl.swift index ec3a49d3..5150be02 100644 --- a/DevLog/Data/Repository/TodoRepositoryImpl.swift +++ b/DevLog/Data/Repository/TodoRepositoryImpl.swift @@ -6,6 +6,11 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataMapper +import DevLogDataProtocol final class TodoRepositoryImpl: TodoRepository { private let todoService: TodoService diff --git a/DevLog/Data/Repository/UserDataRepositoryImpl.swift b/DevLog/Data/Repository/UserDataRepositoryImpl.swift index e1ea8a9d..333fd33d 100644 --- a/DevLog/Data/Repository/UserDataRepositoryImpl.swift +++ b/DevLog/Data/Repository/UserDataRepositoryImpl.swift @@ -5,6 +5,12 @@ // Created by 최윤진 on 1/10/26. // +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataMapper +import DevLogDataProtocol + final class UserDataRepositoryImpl: UserDataRepository { private let userService: UserService diff --git a/DevLog/Data/Repository/UserPreferencesRepositoryImpl.swift b/DevLog/Data/Repository/UserPreferencesRepositoryImpl.swift index 4b8c2ade..a058c786 100644 --- a/DevLog/Data/Repository/UserPreferencesRepositoryImpl.swift +++ b/DevLog/Data/Repository/UserPreferencesRepositoryImpl.swift @@ -7,6 +7,11 @@ import Foundation import Combine +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataMapper +import DevLogDataProtocol final class UserPreferencesRepositoryImpl: UserPreferencesRepository { private enum Key { diff --git a/DevLog/Data/Repository/WebPageImageRepositoryImpl.swift b/DevLog/Data/Repository/WebPageImageRepositoryImpl.swift index 31ebd8cf..77ba9264 100644 --- a/DevLog/Data/Repository/WebPageImageRepositoryImpl.swift +++ b/DevLog/Data/Repository/WebPageImageRepositoryImpl.swift @@ -5,6 +5,12 @@ // Created by opfic on 4/14/26. // +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataMapper +import DevLogDataProtocol + final class WebPageImageRepositoryImpl: WebPageImageRepository { private let store: WebPageImageStore diff --git a/DevLog/Data/Repository/WebPageRepositoryImpl.swift b/DevLog/Data/Repository/WebPageRepositoryImpl.swift index 214e336d..f7f12ca6 100644 --- a/DevLog/Data/Repository/WebPageRepositoryImpl.swift +++ b/DevLog/Data/Repository/WebPageRepositoryImpl.swift @@ -7,6 +7,11 @@ import Foundation import UIKit +import DevLogDomain +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataMapper +import DevLogDataProtocol final class WebPageRepositoryImpl: WebPageRepository { private let webPageService: WebPageService diff --git a/DevLog/Infra/Common/InfraLayerError.swift b/DevLog/Infra/Common/InfraLayerError.swift index 39c9532c..6b4a9c45 100644 --- a/DevLog/Infra/Common/InfraLayerError.swift +++ b/DevLog/Infra/Common/InfraLayerError.swift @@ -7,6 +7,9 @@ import AuthenticationServices import Foundation +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol enum FirestoreError: Error, LocalizedError { case dataNotFound(_ key: String) diff --git a/DevLog/Infra/Common/TopViewControllerProvider.swift b/DevLog/Infra/Common/TopViewControllerProvider.swift index ba5304c5..c527d073 100644 --- a/DevLog/Infra/Common/TopViewControllerProvider.swift +++ b/DevLog/Infra/Common/TopViewControllerProvider.swift @@ -6,6 +6,9 @@ // import UIKit +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol final class TopViewControllerProvider { @MainActor diff --git a/DevLog/Infra/Extension/FirebaseAuthUser+.swift b/DevLog/Infra/Extension/FirebaseAuthUser+.swift index 11b8dccd..9ce56799 100644 --- a/DevLog/Infra/Extension/FirebaseAuthUser+.swift +++ b/DevLog/Infra/Extension/FirebaseAuthUser+.swift @@ -7,6 +7,9 @@ import Foundation import FirebaseAuth +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol extension FirebaseAuth.User { func makeResponse( diff --git a/DevLog/Infra/Extension/FirebaseFunctions+.swift b/DevLog/Infra/Extension/FirebaseFunctions+.swift index e255bcec..f4db1630 100644 --- a/DevLog/Infra/Extension/FirebaseFunctions+.swift +++ b/DevLog/Infra/Extension/FirebaseFunctions+.swift @@ -6,6 +6,9 @@ // import FirebaseFunctions +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol extension Functions { func httpsCallable(_ name: some RawRepresentable) -> HTTPSCallable { diff --git a/DevLog/Infra/Service/AuthServiceImpl.swift b/DevLog/Infra/Service/AuthServiceImpl.swift index ba8b94d4..689a5965 100644 --- a/DevLog/Infra/Service/AuthServiceImpl.swift +++ b/DevLog/Infra/Service/AuthServiceImpl.swift @@ -9,6 +9,9 @@ import Combine import FirebaseAuth import FirebaseFirestore import FirebaseMessaging +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol final class AuthServiceImpl: AuthService { private let store = Firestore.firestore() diff --git a/DevLog/Infra/Service/NWPathConnectivityProviderImpl.swift b/DevLog/Infra/Service/NWPathConnectivityProviderImpl.swift index 3167162c..2092bd10 100644 --- a/DevLog/Infra/Service/NWPathConnectivityProviderImpl.swift +++ b/DevLog/Infra/Service/NWPathConnectivityProviderImpl.swift @@ -7,6 +7,9 @@ import Network import Combine +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol final class NWPathConnectivityProviderImpl: NWPathConnectivityProvider { private let networkPathMonitor = NWPathMonitor() diff --git a/DevLog/Infra/Service/PushNotificationServiceImpl.swift b/DevLog/Infra/Service/PushNotificationServiceImpl.swift index 0760ed90..d815db9f 100644 --- a/DevLog/Infra/Service/PushNotificationServiceImpl.swift +++ b/DevLog/Infra/Service/PushNotificationServiceImpl.swift @@ -9,6 +9,9 @@ import FirebaseAuth import Combine import FirebaseFirestore import FirebaseFunctions +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol final class PushNotificationServiceImpl: PushNotificationService { private enum FunctionName: String { diff --git a/DevLog/Infra/Service/SocialLogin/AppleAuthenticationServiceImpl.swift b/DevLog/Infra/Service/SocialLogin/AppleAuthenticationServiceImpl.swift index e20bd4b7..d744fad6 100644 --- a/DevLog/Infra/Service/SocialLogin/AppleAuthenticationServiceImpl.swift +++ b/DevLog/Infra/Service/SocialLogin/AppleAuthenticationServiceImpl.swift @@ -12,6 +12,9 @@ import FirebaseFirestore import FirebaseFunctions import FirebaseMessaging import Foundation +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol final class AppleAuthenticationServiceImpl: AuthenticationService { private enum FunctionName: String { diff --git a/DevLog/Infra/Service/SocialLogin/GithubAuthenticationServiceImpl.swift b/DevLog/Infra/Service/SocialLogin/GithubAuthenticationServiceImpl.swift index 2a67dde9..b95dbc98 100644 --- a/DevLog/Infra/Service/SocialLogin/GithubAuthenticationServiceImpl.swift +++ b/DevLog/Infra/Service/SocialLogin/GithubAuthenticationServiceImpl.swift @@ -12,6 +12,9 @@ import FirebaseFirestore import FirebaseFunctions import FirebaseMessaging import Nexa +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol final class GithubAuthenticationServiceImpl: NSObject, AuthenticationService { private enum FunctionName: String { diff --git a/DevLog/Infra/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift b/DevLog/Infra/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift index b603bcd3..cf20ff45 100644 --- a/DevLog/Infra/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift +++ b/DevLog/Infra/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift @@ -10,6 +10,9 @@ import FirebaseFirestore import FirebaseMessaging import Foundation import GoogleSignIn +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol final class GoogleAuthenticationServiceImpl: AuthenticationService { private let store = Firestore.firestore() diff --git a/DevLog/Infra/Service/TodoCategoryServiceImpl.swift b/DevLog/Infra/Service/TodoCategoryServiceImpl.swift index 1c846741..78706d2c 100644 --- a/DevLog/Infra/Service/TodoCategoryServiceImpl.swift +++ b/DevLog/Infra/Service/TodoCategoryServiceImpl.swift @@ -7,6 +7,9 @@ import FirebaseAuth import FirebaseFirestore +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol final class TodoCategoryServiceImpl: TodoCategoryService { private enum Field: String { diff --git a/DevLog/Infra/Service/TodoServiceImpl.swift b/DevLog/Infra/Service/TodoServiceImpl.swift index 2dff5998..6e8d2d5a 100644 --- a/DevLog/Infra/Service/TodoServiceImpl.swift +++ b/DevLog/Infra/Service/TodoServiceImpl.swift @@ -8,6 +8,9 @@ import FirebaseAuth import FirebaseFirestore import FirebaseFunctions +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol final class TodoServiceImpl: TodoService { private enum FunctionName: String { diff --git a/DevLog/Infra/Service/UserServiceImpl.swift b/DevLog/Infra/Service/UserServiceImpl.swift index 7218f979..f80478dd 100644 --- a/DevLog/Infra/Service/UserServiceImpl.swift +++ b/DevLog/Infra/Service/UserServiceImpl.swift @@ -7,6 +7,9 @@ import FirebaseAuth import FirebaseFirestore +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol final class UserServiceImpl: UserService { private let store = Firestore.firestore() diff --git a/DevLog/Infra/Service/WebPageMetadataServiceImpl.swift b/DevLog/Infra/Service/WebPageMetadataServiceImpl.swift index d24a275a..e1bf420e 100644 --- a/DevLog/Infra/Service/WebPageMetadataServiceImpl.swift +++ b/DevLog/Infra/Service/WebPageMetadataServiceImpl.swift @@ -8,6 +8,9 @@ import Foundation import LinkPresentation import UIKit +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol final class WebPageMetadataServiceImpl: WebPageMetadataService { private let imageStore: WebPageImageStore diff --git a/DevLog/Infra/Service/WebPageServiceImpl.swift b/DevLog/Infra/Service/WebPageServiceImpl.swift index 65bda729..e8e57631 100644 --- a/DevLog/Infra/Service/WebPageServiceImpl.swift +++ b/DevLog/Infra/Service/WebPageServiceImpl.swift @@ -8,6 +8,9 @@ import FirebaseAuth import FirebaseFirestore import FirebaseFunctions +import DevLogDataCommon +import DevLogDataDTO +import DevLogDataProtocol final class WebPageServiceImpl: WebPageService { private enum FunctionName: String { diff --git a/DevLog/Presentation/Common/LoadingState.swift b/DevLog/Presentation/Common/LoadingState.swift index 44bc4695..0f47263e 100644 --- a/DevLog/Presentation/Common/LoadingState.swift +++ b/DevLog/Presentation/Common/LoadingState.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon @MainActor public final class LoadingState { diff --git a/DevLog/Presentation/Extension/Color+Hex.swift b/DevLog/Presentation/Extension/Color+Hex.swift index 766cc2b6..8138fea3 100644 --- a/DevLog/Presentation/Extension/Color+Hex.swift +++ b/DevLog/Presentation/Extension/Color+Hex.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogDataCommon extension Color { static var randomValue: Color { diff --git a/DevLog/Presentation/Protocol/Store.swift b/DevLog/Presentation/Protocol/Store.swift index fb86119b..4ad5298d 100644 --- a/DevLog/Presentation/Protocol/Store.swift +++ b/DevLog/Presentation/Protocol/Store.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon @MainActor public protocol Store: AnyObject { diff --git a/DevLog/Presentation/Structure/Profile/ActivityKindItem.swift b/DevLog/Presentation/Structure/Profile/ActivityKindItem.swift index fd01f6d9..37380427 100644 --- a/DevLog/Presentation/Structure/Profile/ActivityKindItem.swift +++ b/DevLog/Presentation/Structure/Profile/ActivityKindItem.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogDataCommon public struct ActivityKindItem: Identifiable, Hashable { private let activityKind: ActivityKind diff --git a/DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift b/DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift index bf0cb082..09804ad8 100644 --- a/DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift +++ b/DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon public struct HeatmapActivityItem: Identifiable, Hashable, Comparable { public var id: String { todoId } diff --git a/DevLog/Presentation/Structure/Profile/HeatmapDay.swift b/DevLog/Presentation/Structure/Profile/HeatmapDay.swift index d0ca0cdf..e6d42127 100644 --- a/DevLog/Presentation/Structure/Profile/HeatmapDay.swift +++ b/DevLog/Presentation/Structure/Profile/HeatmapDay.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon public struct HeatmapDay: Hashable { public let date: Date diff --git a/DevLog/Presentation/Structure/Profile/HeatmapMonth.swift b/DevLog/Presentation/Structure/Profile/HeatmapMonth.swift index 5cec23c7..30b0a978 100644 --- a/DevLog/Presentation/Structure/Profile/HeatmapMonth.swift +++ b/DevLog/Presentation/Structure/Profile/HeatmapMonth.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon public struct HeatmapMonth: Identifiable, Hashable { public var id: Date { monthStart } diff --git a/DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift b/DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift index 95f57589..07c3bec8 100644 --- a/DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift +++ b/DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon public struct HeatmapQuarter: Identifiable, Hashable { public var id: Date { quarterStart } diff --git a/DevLog/Presentation/Structure/PushNotificationItem.swift b/DevLog/Presentation/Structure/PushNotificationItem.swift index 442060fa..3ee21875 100644 --- a/DevLog/Presentation/Structure/PushNotificationItem.swift +++ b/DevLog/Presentation/Structure/PushNotificationItem.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon public struct PushNotificationItem: Identifiable, Hashable { public let id: String diff --git a/DevLog/Presentation/Structure/Todo/RecentTodoItem.swift b/DevLog/Presentation/Structure/Todo/RecentTodoItem.swift index dbd8f8d6..85bba2c0 100644 --- a/DevLog/Presentation/Structure/Todo/RecentTodoItem.swift +++ b/DevLog/Presentation/Structure/Todo/RecentTodoItem.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon public struct RecentTodoItem: Identifiable, Hashable { public let id: String diff --git a/DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift b/DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift index d68a3cd5..d7874aa5 100644 --- a/DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift +++ b/DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogDataCommon public struct SystemTodoCategoryItem: Identifiable, Hashable { public let systemTodoCategory: SystemTodoCategory diff --git a/DevLog/Presentation/Structure/Todo/TodayTodoItem.swift b/DevLog/Presentation/Structure/Todo/TodayTodoItem.swift index 979151e2..792c411a 100644 --- a/DevLog/Presentation/Structure/Todo/TodayTodoItem.swift +++ b/DevLog/Presentation/Structure/Todo/TodayTodoItem.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon public struct TodayTodoItem: Identifiable, Hashable { public let id: String diff --git a/DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift b/DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift index fea325e5..768dbb90 100644 --- a/DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift +++ b/DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogDataCommon public struct TodoCategoryItem: Identifiable, Hashable { public var category: TodoCategory diff --git a/DevLog/Presentation/Structure/Todo/TodoIDItem.swift b/DevLog/Presentation/Structure/Todo/TodoIDItem.swift index d95748e7..e19ae21f 100644 --- a/DevLog/Presentation/Structure/Todo/TodoIDItem.swift +++ b/DevLog/Presentation/Structure/Todo/TodoIDItem.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon public struct TodoIdItem: Identifiable, Hashable { public let id: String diff --git a/DevLog/Presentation/Structure/Todo/TodoListItem.swift b/DevLog/Presentation/Structure/Todo/TodoListItem.swift index 4d8a16fe..0d5f9484 100644 --- a/DevLog/Presentation/Structure/Todo/TodoListItem.swift +++ b/DevLog/Presentation/Structure/Todo/TodoListItem.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon public struct TodoListItem: Identifiable, Hashable { public let id: String diff --git a/DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift b/DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift index 2bf09fec..dcb9ee45 100644 --- a/DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift +++ b/DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon public struct TodoReferenceItem: Equatable { public let id: String diff --git a/DevLog/Presentation/Structure/Todo/UserTodoCategoryItem.swift b/DevLog/Presentation/Structure/Todo/UserTodoCategoryItem.swift index 2c928a45..2d5d00c2 100644 --- a/DevLog/Presentation/Structure/Todo/UserTodoCategoryItem.swift +++ b/DevLog/Presentation/Structure/Todo/UserTodoCategoryItem.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogDataCommon public struct UserTodoCategoryItem: Identifiable, Hashable { public let userTodoCategory: UserTodoCategory diff --git a/DevLog/Presentation/Structure/WebPageItem.swift b/DevLog/Presentation/Structure/WebPageItem.swift index f8c23193..f3bef92d 100644 --- a/DevLog/Presentation/Structure/WebPageItem.swift +++ b/DevLog/Presentation/Structure/WebPageItem.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogDataCommon public struct WebPageItem: Identifiable, Hashable { private let metadata: WebPage diff --git a/DevLog/Presentation/ViewModel/AccountViewModel.swift b/DevLog/Presentation/ViewModel/AccountViewModel.swift index edeee134..e7b469d4 100644 --- a/DevLog/Presentation/ViewModel/AccountViewModel.swift +++ b/DevLog/Presentation/ViewModel/AccountViewModel.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon @Observable final class AccountViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/HomeViewModel.swift b/DevLog/Presentation/ViewModel/HomeViewModel.swift index 1440c0cf..3db9908f 100644 --- a/DevLog/Presentation/ViewModel/HomeViewModel.swift +++ b/DevLog/Presentation/ViewModel/HomeViewModel.swift @@ -7,6 +7,8 @@ import Foundation import Combine +import DevLogDomain +import DevLogDataCommon @Observable final class HomeViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/LoginViewModel.swift b/DevLog/Presentation/ViewModel/LoginViewModel.swift index a5a41507..b09444a4 100644 --- a/DevLog/Presentation/ViewModel/LoginViewModel.swift +++ b/DevLog/Presentation/ViewModel/LoginViewModel.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon @Observable final class LoginViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/MainViewModel.swift b/DevLog/Presentation/ViewModel/MainViewModel.swift index a8629738..567a53c6 100644 --- a/DevLog/Presentation/ViewModel/MainViewModel.swift +++ b/DevLog/Presentation/ViewModel/MainViewModel.swift @@ -8,6 +8,8 @@ import Foundation import Combine import UserNotifications +import DevLogDomain +import DevLogDataCommon @Observable final class MainViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/ProfileViewModel.swift b/DevLog/Presentation/ViewModel/ProfileViewModel.swift index 67893ba0..9431cdcf 100644 --- a/DevLog/Presentation/ViewModel/ProfileViewModel.swift +++ b/DevLog/Presentation/ViewModel/ProfileViewModel.swift @@ -7,6 +7,8 @@ import Foundation import Combine +import DevLogDomain +import DevLogDataCommon @Observable final class ProfileViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift b/DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift index ef1b71cd..531b042c 100644 --- a/DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift +++ b/DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift @@ -7,6 +7,8 @@ import Foundation import Combine +import DevLogDomain +import DevLogDataCommon @Observable final class PushNotificationListViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/PushNotificationSettingsViewModel.swift b/DevLog/Presentation/ViewModel/PushNotificationSettingsViewModel.swift index 6bbaf64f..7c7ad65f 100644 --- a/DevLog/Presentation/ViewModel/PushNotificationSettingsViewModel.swift +++ b/DevLog/Presentation/ViewModel/PushNotificationSettingsViewModel.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon @Observable final class PushNotificationSettingsViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/RootViewModel.swift b/DevLog/Presentation/ViewModel/RootViewModel.swift index 14fb7121..752628e0 100644 --- a/DevLog/Presentation/ViewModel/RootViewModel.swift +++ b/DevLog/Presentation/ViewModel/RootViewModel.swift @@ -8,6 +8,8 @@ import Foundation import Combine import UserNotifications +import DevLogDomain +import DevLogDataCommon @Observable final class RootViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/SearchViewModel.swift b/DevLog/Presentation/ViewModel/SearchViewModel.swift index 742ec15f..ad17d5fb 100644 --- a/DevLog/Presentation/ViewModel/SearchViewModel.swift +++ b/DevLog/Presentation/ViewModel/SearchViewModel.swift @@ -7,6 +7,8 @@ import Foundation import OrderedCollections +import DevLogDomain +import DevLogDataCommon @Observable final class SearchViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/SettingViewModel.swift b/DevLog/Presentation/ViewModel/SettingViewModel.swift index c79d3c92..be625ab4 100644 --- a/DevLog/Presentation/ViewModel/SettingViewModel.swift +++ b/DevLog/Presentation/ViewModel/SettingViewModel.swift @@ -7,6 +7,8 @@ import Foundation import Combine +import DevLogDomain +import DevLogDataCommon @Observable final class SettingViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/TodayViewModel.swift b/DevLog/Presentation/ViewModel/TodayViewModel.swift index 53e1f675..8d9b4aa1 100644 --- a/DevLog/Presentation/ViewModel/TodayViewModel.swift +++ b/DevLog/Presentation/ViewModel/TodayViewModel.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon @Observable final class TodayViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/TodoDetailViewModel.swift b/DevLog/Presentation/ViewModel/TodoDetailViewModel.swift index c3c4e9eb..e34ce913 100644 --- a/DevLog/Presentation/ViewModel/TodoDetailViewModel.swift +++ b/DevLog/Presentation/ViewModel/TodoDetailViewModel.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon @Observable final class TodoDetailViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/TodoEditorViewModel.swift b/DevLog/Presentation/ViewModel/TodoEditorViewModel.swift index a3877ae3..deb1afb3 100644 --- a/DevLog/Presentation/ViewModel/TodoEditorViewModel.swift +++ b/DevLog/Presentation/ViewModel/TodoEditorViewModel.swift @@ -7,6 +7,8 @@ import Foundation import OrderedCollections +import DevLogDomain +import DevLogDataCommon @Observable final class TodoEditorViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/TodoListViewModel.swift b/DevLog/Presentation/ViewModel/TodoListViewModel.swift index 86643ab6..2e167104 100644 --- a/DevLog/Presentation/ViewModel/TodoListViewModel.swift +++ b/DevLog/Presentation/ViewModel/TodoListViewModel.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon @Observable final class TodoListViewModel: Store { diff --git a/DevLog/Presentation/ViewModel/TodoManageViewModel.swift b/DevLog/Presentation/ViewModel/TodoManageViewModel.swift index 35669a73..5f235e67 100644 --- a/DevLog/Presentation/ViewModel/TodoManageViewModel.swift +++ b/DevLog/Presentation/ViewModel/TodoManageViewModel.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogDataCommon @Observable final class TodoManageViewModel: Store { diff --git a/DevLog/Storage/Persistence/ThemeStoreImpl.swift b/DevLog/Storage/Persistence/ThemeStoreImpl.swift index 7cf0d0ff..b3684983 100644 --- a/DevLog/Storage/Persistence/ThemeStoreImpl.swift +++ b/DevLog/Storage/Persistence/ThemeStoreImpl.swift @@ -6,6 +6,12 @@ // import Combine +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetCore +import DevLogWidgetShared final class ThemeStoreImpl: ThemeStore { private let subject = CurrentValueSubject(.automatic) diff --git a/DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift b/DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift index c26fa8d2..147f26ad 100644 --- a/DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift +++ b/DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift @@ -6,6 +6,12 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetCore +import DevLogWidgetShared final class UserDefaultsStoreImpl: UserDefaultsStore { private let userDefaults: UserDefaults diff --git a/DevLog/Storage/Persistence/WebPageImageStoreImpl.swift b/DevLog/Storage/Persistence/WebPageImageStoreImpl.swift index fac6dc06..208f9654 100644 --- a/DevLog/Storage/Persistence/WebPageImageStoreImpl.swift +++ b/DevLog/Storage/Persistence/WebPageImageStoreImpl.swift @@ -7,6 +7,12 @@ import CryptoKit import Foundation +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetCore +import DevLogWidgetShared actor WebPageImageStoreImpl: WebPageImageStore { func cachedImageURL(for url: URL) async throws -> URL { diff --git a/DevLog/Storage/Persistence/WidgetSnapshotPreferenceStoreImpl.swift b/DevLog/Storage/Persistence/WidgetSnapshotPreferenceStoreImpl.swift index db58c7b5..897a84ef 100644 --- a/DevLog/Storage/Persistence/WidgetSnapshotPreferenceStoreImpl.swift +++ b/DevLog/Storage/Persistence/WidgetSnapshotPreferenceStoreImpl.swift @@ -6,6 +6,12 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetCore +import DevLogWidgetShared final class WidgetSnapshotPreferenceStoreImpl: WidgetSnapshotPreferenceStore { private enum Key: String, CaseIterable { diff --git a/DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift b/DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift index 36a0926b..e715ebf0 100644 --- a/DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift +++ b/DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift @@ -7,6 +7,12 @@ import Foundation import WidgetKit +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetCore +import DevLogWidgetShared final class WidgetSnapshotUpdaterImpl: WidgetSnapshotUpdater { private let snapshotStore: WidgetSnapshotStore diff --git a/DevLog/UI/Common/Component/CacheableImage.swift b/DevLog/UI/Common/Component/CacheableImage.swift index 43f583aa..e1cc921f 100644 --- a/DevLog/UI/Common/Component/CacheableImage.swift +++ b/DevLog/UI/Common/Component/CacheableImage.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct CacheableImage: View { @State private var loadedUIImage: UIImage? diff --git a/DevLog/UI/Common/Component/CheckBox.swift b/DevLog/UI/Common/Component/CheckBox.swift index 0858186e..9fe77648 100644 --- a/DevLog/UI/Common/Component/CheckBox.swift +++ b/DevLog/UI/Common/Component/CheckBox.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct CheckBox: View { private let isChecked: Bool diff --git a/DevLog/UI/Common/Component/LoadingView.swift b/DevLog/UI/Common/Component/LoadingView.swift index 7d20d99c..72f0b8d8 100644 --- a/DevLog/UI/Common/Component/LoadingView.swift +++ b/DevLog/UI/Common/Component/LoadingView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct LoadingView: View { var body: some View { diff --git a/DevLog/UI/Common/Component/LoginButton.swift b/DevLog/UI/Common/Component/LoginButton.swift index 1f925003..1fdb5a43 100644 --- a/DevLog/UI/Common/Component/LoginButton.swift +++ b/DevLog/UI/Common/Component/LoginButton.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct LoginButton: View { @State private var logo: Image? diff --git a/DevLog/UI/Common/Component/RelativeTimeText.swift b/DevLog/UI/Common/Component/RelativeTimeText.swift index 7682c70f..d7f9c0c6 100644 --- a/DevLog/UI/Common/Component/RelativeTimeText.swift +++ b/DevLog/UI/Common/Component/RelativeTimeText.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct RelativeTimeText: View { let date: Date diff --git a/DevLog/UI/Common/Component/Tag+.swift b/DevLog/UI/Common/Component/Tag+.swift index 3c474888..9515131c 100644 --- a/DevLog/UI/Common/Component/Tag+.swift +++ b/DevLog/UI/Common/Component/Tag+.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct Tag: View { @Environment(\.colorScheme) private var colorScheme diff --git a/DevLog/UI/Common/Component/Toast.swift b/DevLog/UI/Common/Component/Toast.swift index 18b38cd1..922648be 100644 --- a/DevLog/UI/Common/Component/Toast.swift +++ b/DevLog/UI/Common/Component/Toast.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation extension View { func toast( diff --git a/DevLog/UI/Common/Component/TodoItemRow.swift b/DevLog/UI/Common/Component/TodoItemRow.swift index 370025b5..5705e18b 100644 --- a/DevLog/UI/Common/Component/TodoItemRow.swift +++ b/DevLog/UI/Common/Component/TodoItemRow.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct TodoItemRow: View { @ScaledMetric(relativeTo: .largeTitle) private var labelWidth = CGFloat(34) diff --git a/DevLog/UI/Common/Component/ToolbarButton+.swift b/DevLog/UI/Common/Component/ToolbarButton+.swift index 64c0fe34..a0c15b74 100644 --- a/DevLog/UI/Common/Component/ToolbarButton+.swift +++ b/DevLog/UI/Common/Component/ToolbarButton+.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct ToolbarLeadingButton: ToolbarContent { var action: (() -> Void)? diff --git a/DevLog/UI/Common/Component/UIKitTextEditor.swift b/DevLog/UI/Common/Component/UIKitTextEditor.swift index cb7bffdf..ce0d8172 100644 --- a/DevLog/UI/Common/Component/UIKitTextEditor.swift +++ b/DevLog/UI/Common/Component/UIKitTextEditor.swift @@ -7,6 +7,8 @@ import SwiftUI import UIKit +import DevLogDomain +import DevLogPresentation struct UIKitTextEditor: View { @Binding var text: String diff --git a/DevLog/UI/Common/Component/WebItemRow.swift b/DevLog/UI/Common/Component/WebItemRow.swift index e1119172..10169712 100644 --- a/DevLog/UI/Common/Component/WebItemRow.swift +++ b/DevLog/UI/Common/Component/WebItemRow.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct WebItemRow: View { @ScaledMetric(relativeTo: .largeTitle) private var labelWidth = CGFloat(34) diff --git a/DevLog/UI/Common/NavigationBarConfigurator.swift b/DevLog/UI/Common/NavigationBarConfigurator.swift index 5831d208..ccb22375 100644 --- a/DevLog/UI/Common/NavigationBarConfigurator.swift +++ b/DevLog/UI/Common/NavigationBarConfigurator.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation /// NavigationBar의 배경색을 지정하고 shadowColor를 제거하는 구조체 /// diff --git a/DevLog/UI/Common/NavigationRouter.swift b/DevLog/UI/Common/NavigationRouter.swift index bfff3939..3e7ddeea 100644 --- a/DevLog/UI/Common/NavigationRouter.swift +++ b/DevLog/UI/Common/NavigationRouter.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation @Observable final class NavigationRouter { diff --git a/DevLog/UI/Common/TodoDetailContentView.swift b/DevLog/UI/Common/TodoDetailContentView.swift index 9c3a1562..50f1961b 100644 --- a/DevLog/UI/Common/TodoDetailContentView.swift +++ b/DevLog/UI/Common/TodoDetailContentView.swift @@ -7,6 +7,8 @@ import SwiftUI import MarkdownUI +import DevLogDomain +import DevLogPresentation struct TodoDetailContentView: View { let title: String diff --git a/DevLog/UI/Common/TodoInfoSheetView.swift b/DevLog/UI/Common/TodoInfoSheetView.swift index 32cdf7f0..c13dc56f 100644 --- a/DevLog/UI/Common/TodoInfoSheetView.swift +++ b/DevLog/UI/Common/TodoInfoSheetView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct TodoInfoSheetView: View { let createdAt: Date diff --git a/DevLog/UI/Common/TodoMarkdownContentView.swift b/DevLog/UI/Common/TodoMarkdownContentView.swift index c6803644..0497f45d 100644 --- a/DevLog/UI/Common/TodoMarkdownContentView.swift +++ b/DevLog/UI/Common/TodoMarkdownContentView.swift @@ -7,6 +7,8 @@ import MarkdownUI import SwiftUI +import DevLogDomain +import DevLogPresentation private enum TodoMarkdownSection: Equatable { case markdown(String) diff --git a/DevLog/UI/Common/WebView.swift b/DevLog/UI/Common/WebView.swift index 0303438f..edfe1289 100644 --- a/DevLog/UI/Common/WebView.swift +++ b/DevLog/UI/Common/WebView.swift @@ -7,6 +7,8 @@ import SwiftUI import WebKit +import DevLogDomain +import DevLogPresentation struct WebView: UIViewRepresentable { let url: URL diff --git a/DevLog/UI/Extension/EnvironmentValues+.swift b/DevLog/UI/Extension/EnvironmentValues+.swift index 20ead498..ce9bb299 100644 --- a/DevLog/UI/Extension/EnvironmentValues+.swift +++ b/DevLog/UI/Extension/EnvironmentValues+.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation extension EnvironmentValues { var safeAreaInsets: EdgeInsets { diff --git a/DevLog/UI/Extension/View+.swift b/DevLog/UI/Extension/View+.swift index 11760d7c..07841993 100644 --- a/DevLog/UI/Extension/View+.swift +++ b/DevLog/UI/Extension/View+.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation extension View { @ViewBuilder diff --git a/DevLog/UI/Home/HomeView.swift b/DevLog/UI/Home/HomeView.swift index ec2381e6..3b041b18 100644 --- a/DevLog/UI/Home/HomeView.swift +++ b/DevLog/UI/Home/HomeView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct HomeView: View { @ScaledMetric(relativeTo: .largeTitle) private var labelWidth = CGFloat(34) diff --git a/DevLog/UI/Home/HomeViewCoordinator.swift b/DevLog/UI/Home/HomeViewCoordinator.swift index 1cf29106..d0578c1b 100644 --- a/DevLog/UI/Home/HomeViewCoordinator.swift +++ b/DevLog/UI/Home/HomeViewCoordinator.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogPresentation @MainActor @Observable diff --git a/DevLog/UI/Home/TodoDetailView.swift b/DevLog/UI/Home/TodoDetailView.swift index b9e906d4..398b3779 100644 --- a/DevLog/UI/Home/TodoDetailView.swift +++ b/DevLog/UI/Home/TodoDetailView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct TodoDetailView: View { @Environment(\.diContainer) private var container: DIContainer diff --git a/DevLog/UI/Home/TodoEditorView.swift b/DevLog/UI/Home/TodoEditorView.swift index ee2f3bee..bff0e77e 100644 --- a/DevLog/UI/Home/TodoEditorView.swift +++ b/DevLog/UI/Home/TodoEditorView.swift @@ -8,6 +8,8 @@ import MarkdownUI import OrderedCollections import SwiftUI +import DevLogDomain +import DevLogPresentation struct TodoEditorView: View { @State var viewModel: TodoEditorViewModel diff --git a/DevLog/UI/Home/TodoListView.swift b/DevLog/UI/Home/TodoListView.swift index 9a99bf51..afb27ad0 100644 --- a/DevLog/UI/Home/TodoListView.swift +++ b/DevLog/UI/Home/TodoListView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct TodoListView: View { @Environment(NavigationRouter.self) private var router diff --git a/DevLog/UI/Home/TodoManageView.swift b/DevLog/UI/Home/TodoManageView.swift index 8019d9f9..8c4fc256 100644 --- a/DevLog/UI/Home/TodoManageView.swift +++ b/DevLog/UI/Home/TodoManageView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct TodoManageView: View { @State var viewModel: TodoManageViewModel diff --git a/DevLog/UI/Login/LoginView.swift b/DevLog/UI/Login/LoginView.swift index 52c89a4b..be1ee88c 100644 --- a/DevLog/UI/Login/LoginView.swift +++ b/DevLog/UI/Login/LoginView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct LoginView: View { @Environment(\.colorScheme) var colorScheme diff --git a/DevLog/UI/Main/MainView.swift b/DevLog/UI/Main/MainView.swift index 7701fa90..6138d223 100644 --- a/DevLog/UI/Main/MainView.swift +++ b/DevLog/UI/Main/MainView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct MainView: View { @Environment(\.horizontalSizeClass) private var horizontalSizeClass diff --git a/DevLog/UI/Main/MainViewCoordinator.swift b/DevLog/UI/Main/MainViewCoordinator.swift index 8e89fe9e..a094a731 100644 --- a/DevLog/UI/Main/MainViewCoordinator.swift +++ b/DevLog/UI/Main/MainViewCoordinator.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogPresentation @MainActor @Observable diff --git a/DevLog/UI/Profile/HeatmapView.swift b/DevLog/UI/Profile/HeatmapView.swift index c8861c88..2ec6f59e 100644 --- a/DevLog/UI/Profile/HeatmapView.swift +++ b/DevLog/UI/Profile/HeatmapView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct HeatmapView: View { @State private var availableWidth = CGFloat.zero diff --git a/DevLog/UI/Profile/ProfileView.swift b/DevLog/UI/Profile/ProfileView.swift index 6d2e64dc..e2085372 100644 --- a/DevLog/UI/Profile/ProfileView.swift +++ b/DevLog/UI/Profile/ProfileView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct ProfileView: View { @State var viewModel: ProfileViewModel diff --git a/DevLog/UI/PushNotification/PushNotificationListView.swift b/DevLog/UI/PushNotification/PushNotificationListView.swift index 4015da06..a21bf762 100644 --- a/DevLog/UI/PushNotification/PushNotificationListView.swift +++ b/DevLog/UI/PushNotification/PushNotificationListView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct PushNotificationListView: View { @Environment(\.colorScheme) private var colorScheme diff --git a/DevLog/UI/Search/SearchView.swift b/DevLog/UI/Search/SearchView.swift index fc43299a..2ffbdbcb 100644 --- a/DevLog/UI/Search/SearchView.swift +++ b/DevLog/UI/Search/SearchView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct SearchView: View { @Environment(\.dismiss) private var dismiss diff --git a/DevLog/UI/Setting/AccountView.swift b/DevLog/UI/Setting/AccountView.swift index 2dbcbd57..67d004dc 100644 --- a/DevLog/UI/Setting/AccountView.swift +++ b/DevLog/UI/Setting/AccountView.swift @@ -7,6 +7,8 @@ import SwiftUI import FirebaseAuth +import DevLogDomain +import DevLogPresentation struct AccountView: View { @State var viewModel: AccountViewModel diff --git a/DevLog/UI/Setting/PushNotificationSettingsView.swift b/DevLog/UI/Setting/PushNotificationSettingsView.swift index 37f48119..88675153 100644 --- a/DevLog/UI/Setting/PushNotificationSettingsView.swift +++ b/DevLog/UI/Setting/PushNotificationSettingsView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct PushNotificationSettingsView: View { @State var viewModel: PushNotificationSettingsViewModel diff --git a/DevLog/UI/Setting/SettingView.swift b/DevLog/UI/Setting/SettingView.swift index 2d9f8baa..d4e50944 100644 --- a/DevLog/UI/Setting/SettingView.swift +++ b/DevLog/UI/Setting/SettingView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct SettingView: View { @Environment(\.diContainer) var container: DIContainer diff --git a/DevLog/UI/Setting/ThemeView.swift b/DevLog/UI/Setting/ThemeView.swift index 3dee9ba5..78e1928e 100644 --- a/DevLog/UI/Setting/ThemeView.swift +++ b/DevLog/UI/Setting/ThemeView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct ThemeView: View { @Binding var theme: SystemTheme diff --git a/DevLog/UI/Today/TodayView.swift b/DevLog/UI/Today/TodayView.swift index 1cc027c7..4a1c24a6 100644 --- a/DevLog/UI/Today/TodayView.swift +++ b/DevLog/UI/Today/TodayView.swift @@ -6,6 +6,8 @@ // import SwiftUI +import DevLogDomain +import DevLogPresentation struct TodayView: View { let coordinator: TodayViewCoordinator diff --git a/DevLog/UI/Today/TodayViewCoordinator.swift b/DevLog/UI/Today/TodayViewCoordinator.swift index abcf992a..c9511635 100644 --- a/DevLog/UI/Today/TodayViewCoordinator.swift +++ b/DevLog/UI/Today/TodayViewCoordinator.swift @@ -6,6 +6,8 @@ // import Foundation +import DevLogDomain +import DevLogPresentation @MainActor @Observable diff --git a/DevLog/Widget/Common/WidgetSharedDefaultsStore.swift b/DevLog/Widget/Common/WidgetSharedDefaultsStore.swift index b30ad1b0..899557d7 100644 --- a/DevLog/Widget/Common/WidgetSharedDefaultsStore.swift +++ b/DevLog/Widget/Common/WidgetSharedDefaultsStore.swift @@ -6,6 +6,11 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetShared final class WidgetSharedDefaultsStore { private let userDefaults: UserDefaults diff --git a/DevLog/Widget/Common/WidgetSnapshotStore.swift b/DevLog/Widget/Common/WidgetSnapshotStore.swift index 5a887efd..abb6e7da 100644 --- a/DevLog/Widget/Common/WidgetSnapshotStore.swift +++ b/DevLog/Widget/Common/WidgetSnapshotStore.swift @@ -6,6 +6,11 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetShared final class WidgetSnapshotStore { private let store: WidgetSharedDefaultsStore diff --git a/DevLog/Widget/Common/WidgetSyncEvent.swift b/DevLog/Widget/Common/WidgetSyncEvent.swift index 5358322b..08d28059 100644 --- a/DevLog/Widget/Common/WidgetSyncEvent.swift +++ b/DevLog/Widget/Common/WidgetSyncEvent.swift @@ -5,6 +5,12 @@ // Created by opfic on 4/29/26. // +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetShared + enum WidgetSyncEvent: Equatable { case syncRequested } diff --git a/DevLog/Widget/Heatmap/HeatmapWidgetSnapshot.swift b/DevLog/Widget/Heatmap/HeatmapWidgetSnapshot.swift index 0a387915..84652ad1 100644 --- a/DevLog/Widget/Heatmap/HeatmapWidgetSnapshot.swift +++ b/DevLog/Widget/Heatmap/HeatmapWidgetSnapshot.swift @@ -6,6 +6,11 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetShared struct HeatmapWidgetSnapshot: Codable, Equatable { let generatedAt: Date diff --git a/DevLog/Widget/Heatmap/HeatmapWidgetSnapshotFactory.swift b/DevLog/Widget/Heatmap/HeatmapWidgetSnapshotFactory.swift index 864ba664..23716e36 100644 --- a/DevLog/Widget/Heatmap/HeatmapWidgetSnapshotFactory.swift +++ b/DevLog/Widget/Heatmap/HeatmapWidgetSnapshotFactory.swift @@ -6,6 +6,11 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetShared struct HeatmapWidgetSnapshotFactory { fileprivate struct DailyCounts { diff --git a/DevLog/Widget/Sync/WidgetSyncEventBus.swift b/DevLog/Widget/Sync/WidgetSyncEventBus.swift index b5f069be..23b55966 100644 --- a/DevLog/Widget/Sync/WidgetSyncEventBus.swift +++ b/DevLog/Widget/Sync/WidgetSyncEventBus.swift @@ -6,6 +6,11 @@ // import Combine +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetShared protocol WidgetSyncEventBus { func publish(_ event: WidgetSyncEvent) diff --git a/DevLog/Widget/Sync/WidgetSyncEventBusImpl.swift b/DevLog/Widget/Sync/WidgetSyncEventBusImpl.swift index 41a560d2..93dc5fa7 100644 --- a/DevLog/Widget/Sync/WidgetSyncEventBusImpl.swift +++ b/DevLog/Widget/Sync/WidgetSyncEventBusImpl.swift @@ -6,6 +6,11 @@ // import Combine +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetShared final class WidgetSyncEventBusImpl: WidgetSyncEventBus { private let subject = PassthroughSubject() diff --git a/DevLog/Widget/Sync/WidgetSyncEventHandler.swift b/DevLog/Widget/Sync/WidgetSyncEventHandler.swift index b6e0e99c..973978e5 100644 --- a/DevLog/Widget/Sync/WidgetSyncEventHandler.swift +++ b/DevLog/Widget/Sync/WidgetSyncEventHandler.swift @@ -7,6 +7,11 @@ import Combine import Foundation +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetShared final class WidgetSyncEventHandler { private let repository: TodoRepository diff --git a/DevLog/Widget/Today/TodayWidgetSnapshot.swift b/DevLog/Widget/Today/TodayWidgetSnapshot.swift index 65f3504b..3cc86571 100644 --- a/DevLog/Widget/Today/TodayWidgetSnapshot.swift +++ b/DevLog/Widget/Today/TodayWidgetSnapshot.swift @@ -6,6 +6,11 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetShared struct TodayWidgetSnapshot: Codable, Equatable { let generatedAt: Date diff --git a/DevLog/Widget/Today/TodayWidgetSnapshotFactory.swift b/DevLog/Widget/Today/TodayWidgetSnapshotFactory.swift index f6e72f78..c4226875 100644 --- a/DevLog/Widget/Today/TodayWidgetSnapshotFactory.swift +++ b/DevLog/Widget/Today/TodayWidgetSnapshotFactory.swift @@ -6,6 +6,11 @@ // import Foundation +import DevLogDomain +import DevLogDataCommon +import DevLogDataProtocol +import DevLogPresentation +import DevLogWidgetShared struct TodayWidgetSnapshotFactory { private enum SectionCategory: String, CaseIterable { From 38f4ec6738cced8ea0c9b1f35380af4fa6ffa579 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 00:57:26 +0900 Subject: [PATCH 05/46] =?UTF-8?q?refactor:=20=EB=A0=88=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=EB=B3=84=20Xcode=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8?= =?UTF-8?q?=EC=99=80=20=EC=9B=8C=ED=81=AC=EC=8A=A4=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4=20=EA=B5=AC=EC=A1=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DevLog.xcworkspace/contents.xcworkspacedata | 31 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/swiftpm/Package.resolved | 96 ++ .../DevLogData.xcodeproj/project.pbxproj | 1105 +++++++++++++++++ .../xcschemes/DevLogDataCommon.xcscheme | 58 + .../xcschemes/DevLogDataDTO.xcscheme | 58 + .../xcschemes/DevLogDataMapper.xcscheme | 58 + .../xcschemes/DevLogDataProtocol.xcscheme | 58 + .../xcschemes/DevLogDataRepository.xcscheme | 58 + .../DevLogDomain.xcodeproj/project.pbxproj | 803 ++++++++++++ .../xcschemes/DevLogDomain.xcscheme | 58 + .../DevLogInfra.xcodeproj/project.pbxproj | 403 ++++++ .../xcschemes/DevLogInfra.xcscheme | 58 + .../project.pbxproj | 471 +++++++ .../xcschemes/DevLogPresentation.xcscheme | 58 + .../DevLogStorage.xcodeproj/project.pbxproj | 359 ++++++ .../xcschemes/DevLogStorage.xcscheme | 58 + .../DevLogUI.xcodeproj/project.pbxproj | 491 ++++++++ .../xcshareddata/xcschemes/DevLogUI.xcscheme | 58 + .../project.pbxproj | 379 ++++++ .../xcschemes/DevLogWidgetCore.xcscheme | 58 + .../project.pbxproj | 363 ++++++ .../xcschemes/DevLogWidgetShared.xcscheme | 58 + 23 files changed, 5205 insertions(+) create mode 100644 DevLog.xcworkspace/contents.xcworkspacedata create mode 100644 DevLog.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj create mode 100644 Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme create mode 100644 Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme create mode 100644 Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme create mode 100644 Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme create mode 100644 Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataRepository.xcscheme create mode 100644 Projects/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj create mode 100644 Projects/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomain.xcscheme create mode 100644 Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj create mode 100644 Projects/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfra.xcscheme create mode 100644 Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj create mode 100644 Projects/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentation.xcscheme create mode 100644 Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj create mode 100644 Projects/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme create mode 100644 Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj create mode 100644 Projects/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme create mode 100644 Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj create mode 100644 Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme create mode 100644 Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj create mode 100644 Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme diff --git a/DevLog.xcworkspace/contents.xcworkspacedata b/DevLog.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..d02a1fac --- /dev/null +++ b/DevLog.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/DevLog.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/DevLog.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/DevLog.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..20720f0f --- /dev/null +++ b/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,96 @@ +{ + "originHash" : "4489714843df66e69545dbcba4e839fab69c69cf9e4b9b54ce76bb1fbbf0c229", + "pins" : [ + { + "identity" : "collectionconcurrencykit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/JohnSundell/CollectionConcurrencyKit.git", + "state" : { + "revision" : "b4f23e24b5a1bff301efc5e70871083ca029ff95", + "version" : "0.2.0" + } + }, + { + "identity" : "cryptoswift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/krzyzanowskim/CryptoSwift.git", + "state" : { + "revision" : "f2a627b84c1ff96f21ac2fcb623ab36142dd5512", + "version" : "1.10.0" + } + }, + { + "identity" : "sourcekitten", + "kind" : "remoteSourceControl", + "location" : "https://github.com/jpsim/SourceKitten.git", + "state" : { + "revision" : "6529c17fe80dd94843a3df7ed3e6a239790d5c91", + "version" : "0.37.3" + } + }, + { + "identity" : "swift-argument-parser", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-argument-parser.git", + "state" : { + "revision" : "626b5b7b2f45e1b0b1c6f4a309296d1d21d7311b", + "version" : "1.7.1" + } + }, + { + "identity" : "swift-filename-matcher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ileitch/swift-filename-matcher", + "state" : { + "revision" : "eef5ac0b6b3cdc64b3039b037bed2def8a1edaeb", + "version" : "2.0.1" + } + }, + { + "identity" : "swift-syntax", + "kind" : "remoteSourceControl", + "location" : "https://github.com/swiftlang/swift-syntax.git", + "state" : { + "revision" : "65b02a90ad2cc213e09309faeb7f6909e0a8577a", + "version" : "604.0.0-prerelease-2026-01-20" + } + }, + { + "identity" : "swiftlint", + "kind" : "remoteSourceControl", + "location" : "https://github.com/realm/SwiftLint", + "state" : { + "revision" : "88952528a590ed366c6f76f6bfb980b5ebdcefc1", + "version" : "0.63.2" + } + }, + { + "identity" : "swiftytexttable", + "kind" : "remoteSourceControl", + "location" : "https://github.com/scottrhoyt/SwiftyTextTable.git", + "state" : { + "revision" : "c6df6cf533d120716bff38f8ff9885e1ce2a4ac3", + "version" : "0.9.0" + } + }, + { + "identity" : "swxmlhash", + "kind" : "remoteSourceControl", + "location" : "https://github.com/drmohundro/SWXMLHash.git", + "state" : { + "revision" : "a853604c9e9a83ad9954c7e3d2a565273982471f", + "version" : "7.0.2" + } + }, + { + "identity" : "yams", + "kind" : "remoteSourceControl", + "location" : "https://github.com/jpsim/Yams.git", + "state" : { + "revision" : "deaf82e867fa2cbd3cd865978b079bfcf384ac28", + "version" : "6.2.1" + } + } + ], + "version" : 3 +} diff --git a/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj b/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj new file mode 100644 index 00000000..a3503553 --- /dev/null +++ b/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj @@ -0,0 +1,1105 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 02989D2DD8C861339C89EFAB /* TodoReferenceResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F6961039F12AFD8B33F25DF /* TodoReferenceResponse.swift */; }; + 02AD0EC1D813FD957B53FBE5 /* PushNotificationRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CEB1EE245302780E69EC631 /* PushNotificationRepositoryImpl.swift */; }; + 06C8405C9CCC37319D16F4D6 /* TodoCursorDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */; }; + 0C8E1C07EF01FB22BF8B80B9 /* PushNotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */; }; + 14D1BF4D1F50FB067DA875B3 /* WebPageDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */; }; + 18C2B39408BF745FE0BFC810 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67FC3A5288FABA7441F4D6AA /* Logger.swift */; }; + 18D37737A07ECBDA79EA9270 /* WidgetSnapshotPreferenceStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */; }; + 2068F0B84A3BC53EEB156D82 /* WebPageMetadataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */; }; + 2D91812BD78B5FA8DBE2F030 /* NotificationKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13680A4153A719F15E7DFDF6 /* NotificationKind.swift */; }; + 2F0ECAAFBEB7651130A6160A /* AuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7154773B586C2D41307CD49 /* AuthenticationService.swift */; }; + 320469937B9BD964D29F5C97 /* TodoRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F8C39E4E51A7A62D716612 /* TodoRepositoryImpl.swift */; }; + 326C26B47FCE678C36BE5788 /* AuthenticationRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09310E1D16103C0E6E96C7C7 /* AuthenticationRepositoryImpl.swift */; }; + 3774F15D0E51BAE1445550C8 /* WebPageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE1FE53786D11AC7B192698 /* WebPageService.swift */; }; + 3E47658FDC0F074222D07B2C /* AuthDataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */; }; + 415FA233A97D67108CA8FA60 /* ThemeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */; }; + 48520BBB5EAEF3DB9D65CAE8 /* TodoPageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1ABB0ED51067433D3C90F02 /* TodoPageResponse.swift */; }; + 49F6E1752300C28F873AE959 /* PushNotificationPageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE96D070821D1FB62A155AB5 /* PushNotificationPageResponse.swift */; }; + 4ABBDC64F51AD1D019D93D0E /* DevLogDataProtocol.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C063BD562070CA11C2AA4EDF /* DevLogDataProtocol.framework */; }; + 4B18018B63AE2321B8B7761A /* DataLayerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */; }; + 4BD06832F56598B25183EF06 /* WebPageRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF764A3F6E025A18E6A0BC /* WebPageRepositoryImpl.swift */; }; + 4C0F2F479581D2E091C429B2 /* TodoCategoryRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36E09221F6FBF67359105995 /* TodoCategoryRepositoryImpl.swift */; }; + 4EFB81EBF4C8E68D1219E261 /* UserService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42BC563A225597B3D761253 /* UserService.swift */; }; + 4FCA3EE76074371F5CA5F50F /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */; }; + 50C769615D094189B739F055 /* UserPreferencesRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0202E26A972D5D274AF77C67 /* UserPreferencesRepositoryImpl.swift */; }; + 552E7AC6C92BB3EDA4A3B99B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; + 59FB0D9F7C8C8D1B63EA5880 /* UserProfileResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 387E711B7A3BA319D3E7C2AB /* UserProfileResponse.swift */; }; + 5CC76E5C85D4133B0E2409EC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; + 5D56791D0D2F4F4B299C183C /* PushNotificationCursorDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF12B44E80793EF948B211B /* PushNotificationCursorDTO.swift */; }; + 627A5B276E98C623E7953868 /* WebPageMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C2B7108CD63C65097876046 /* WebPageMapping.swift */; }; + 630C1F917AED059FBE29BDBC /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7559825C27ED42F9F86EBAC1 /* AuthService.swift */; }; + 6386F4E9FC44422C070273C8 /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */; }; + 67F3E365DA09012FBBE2012F /* PushNotificationMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44C564559DBDF765945456FA /* PushNotificationMapping.swift */; }; + 696ECBF42D3E9504BE9939FB /* AuthDataRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B3ED1B2326966F84851DFDD /* AuthDataRepositoryImpl.swift */; }; + 6DACC3B9A91F4B83A51E001C /* NetworkConnectivityRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78DB5B22BE2E31B18173E89E /* NetworkConnectivityRepositoryImpl.swift */; }; + 6F59D30C084D7C827CC50F51 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; + 6FB5E632397385B569B5FB5E /* PushNotificationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */; }; + 71C83A8D875833719759B1FE /* UserDataRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B167270C81CB76E8F5ED9CA /* UserDataRepositoryImpl.swift */; }; + 74E91703D0FC8E5849507A99 /* AppleAuthResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB4A7B045A63D5BC6A541D8E /* AppleAuthResponse.swift */; }; + 7A71FF2428AECD0170B555F7 /* WebPageMetadataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */; }; + 7A74659BAEE980ECCBA0D22A /* UserProfileMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37830EA98EFABE66D2ADBCE9 /* UserProfileMapping.swift */; }; + 7C88E53D0CC7798B5EFF8228 /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */; }; + 8744A8E2492B34573A5A1459 /* WebPageImageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 454F04A5E5887B163DD7E5A9 /* WebPageImageStore.swift */; }; + 986DAE304B67FC8F8563FC40 /* AuthSessionRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80CBBE2B99B80E70DCD800ED /* AuthSessionRepositoryImpl.swift */; }; + 9B584555CC7504BEDF5F8008 /* WebPageImageRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 914EE1DC0A02968747B6B3A2 /* WebPageImageRepositoryImpl.swift */; }; + A6BADE4BA91529F464FBEB0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; + A99E2FD1B2E157BF7BE9FB5C /* TodoDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = B28D4F60262075223EC096E0 /* TodoDTO.swift */; }; + B02D9699AED8ACA2DA62A4B4 /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */; }; + B2D2F2614E6446B422B42E98 /* TodoService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E716EC015A5805DD7C949B /* TodoService.swift */; }; + B5F2954F61C8263C3A31B295 /* TodoMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CB1CEA7122BFEDED0F4370 /* TodoMapping.swift */; }; + B8E8AB9B2529E248BF3E9AC5 /* NWPathConnectivityProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B67886F72C946CBC709AFCB /* NWPathConnectivityProvider.swift */; }; + BB7C667A5651F5C5E60C9C65 /* TodoCategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 082E30ECD7061C9E401FF2D0 /* TodoCategoryService.swift */; }; + C25D925CD643720891C3CD85 /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */; }; + D910214884BD6503097E03F6 /* TodoCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */; }; + E671A77745F90F217E091010 /* UserDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */; }; + E8FA3EF7AE26AA96A2168FEE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; + EB5E684FF9C0430609D41D24 /* WidgetSnapshotUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */; }; + F88DD9F3B1720EE23C9A23CC /* DevLogDataMapper.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44466B71BA6B67309210A7BB /* DevLogDataMapper.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 265EA22D69D36B94BD0FADCC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0B9228953A84A7D7ED3BC5B8; + remoteInfo = DevLogDataDTO; + }; + 291C29C98BA846DB1EFF9263 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 27C8E1F04453FD577C839404; + remoteInfo = DevLogDataMapper; + }; + 2C3CE6146CD5AB882B075236 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6D02EDBA887507AC7BA79658; + remoteInfo = DevLogDataProtocol; + }; + 3838BBE0FEC6B9E08242914D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0B9228953A84A7D7ED3BC5B8; + remoteInfo = DevLogDataDTO; + }; + 87C4E293CEB68865146027D2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0B9228953A84A7D7ED3BC5B8; + remoteInfo = DevLogDataDTO; + }; + BB3B1390C9968DC8F87296F8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 80A60CC195BD79C638F5B405; + remoteInfo = DevLogDataCommon; + }; + F8A671FF637FB67637A2D9A2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 80A60CC195BD79C638F5B405; + remoteInfo = DevLogDataCommon; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 0202E26A972D5D274AF77C67 /* UserPreferencesRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserPreferencesRepositoryImpl.swift; path = ../../DevLog/Data/Repository/UserPreferencesRepositoryImpl.swift; sourceTree = ""; }; + 082E30ECD7061C9E401FF2D0 /* TodoCategoryService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryService.swift; path = ../../DevLog/Data/Protocol/TodoCategoryService.swift; sourceTree = ""; }; + 09310E1D16103C0E6E96C7C7 /* AuthenticationRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationRepositoryImpl.swift; path = ../../DevLog/Data/Repository/AuthenticationRepositoryImpl.swift; sourceTree = ""; }; + 13680A4153A719F15E7DFDF6 /* NotificationKind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NotificationKind.swift; path = ../../DevLog/Data/DTO/NotificationKind.swift; sourceTree = ""; }; + 17CB1CEA7122BFEDED0F4370 /* TodoMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoMapping.swift; path = ../../DevLog/Data/Mapper/TodoMapping.swift; sourceTree = ""; }; + 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStore.swift; path = ../../DevLog/Data/Protocol/UserDefaultsStore.swift; sourceTree = ""; }; + 1AAF764A3F6E025A18E6A0BC /* WebPageRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageRepositoryImpl.swift; path = ../../DevLog/Data/Repository/WebPageRepositoryImpl.swift; sourceTree = ""; }; + 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStore.swift; path = ../../DevLog/Data/Protocol/ThemeStore.swift; sourceTree = ""; }; + 2DF12B44E80793EF948B211B /* PushNotificationCursorDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationCursorDTO.swift; path = ../../DevLog/Data/DTO/PushNotificationCursorDTO.swift; sourceTree = ""; }; + 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationService.swift; path = ../../DevLog/Data/Protocol/PushNotificationService.swift; sourceTree = ""; }; + 36E09221F6FBF67359105995 /* TodoCategoryRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryRepositoryImpl.swift; path = ../../DevLog/Data/Repository/TodoCategoryRepositoryImpl.swift; sourceTree = ""; }; + 37830EA98EFABE66D2ADBCE9 /* UserProfileMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserProfileMapping.swift; path = ../../DevLog/Data/Mapper/UserProfileMapping.swift; sourceTree = ""; }; + 387E711B7A3BA319D3E7C2AB /* UserProfileResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserProfileResponse.swift; path = ../../DevLog/Data/DTO/UserProfileResponse.swift; sourceTree = ""; }; + 3B67886F72C946CBC709AFCB /* NWPathConnectivityProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NWPathConnectivityProvider.swift; path = ../../DevLog/Data/Protocol/NWPathConnectivityProvider.swift; sourceTree = ""; }; + 3C2B7108CD63C65097876046 /* WebPageMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMapping.swift; path = ../../DevLog/Data/Mapper/WebPageMapping.swift; sourceTree = ""; }; + 3CEB1EE245302780E69EC631 /* PushNotificationRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationRepositoryImpl.swift; path = ../../DevLog/Data/Repository/PushNotificationRepositoryImpl.swift; sourceTree = ""; }; + 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdater.swift; path = ../../DevLog/Data/Protocol/WidgetSnapshotUpdater.swift; sourceTree = ""; }; + 3F6961039F12AFD8B33F25DF /* TodoReferenceResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReferenceResponse.swift; path = ../../DevLog/Data/DTO/TodoReferenceResponse.swift; sourceTree = ""; }; + 44466B71BA6B67309210A7BB /* DevLogDataMapper.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataMapper.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 44C564559DBDF765945456FA /* PushNotificationMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationMapping.swift; path = ../../DevLog/Data/Mapper/PushNotificationMapping.swift; sourceTree = ""; }; + 454F04A5E5887B163DD7E5A9 /* WebPageImageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStore.swift; path = ../../DevLog/Data/Protocol/WebPageImageStore.swift; sourceTree = ""; }; + 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataResponse.swift; path = ../../DevLog/Data/DTO/AuthDataResponse.swift; sourceTree = ""; }; + 4AB6E00A38C37CDBF82B57FD /* DevLogDataRepository.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataRepository.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageDTO.swift; path = ../../DevLog/Data/DTO/WebPageDTO.swift; sourceTree = ""; }; + 60E716EC015A5805DD7C949B /* TodoService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoService.swift; path = ../../DevLog/Data/Protocol/TodoService.swift; sourceTree = ""; }; + 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationResponse.swift; path = ../../DevLog/Data/DTO/PushNotificationResponse.swift; sourceTree = ""; }; + 67FC3A5288FABA7441F4D6AA /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Logger.swift; path = ../../DevLog/Data/Common/Logger.swift; sourceTree = ""; }; + 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataCommon.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7559825C27ED42F9F86EBAC1 /* AuthService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthService.swift; path = ../../DevLog/Data/Protocol/AuthService.swift; sourceTree = ""; }; + 78DB5B22BE2E31B18173E89E /* NetworkConnectivityRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkConnectivityRepositoryImpl.swift; path = ../../DevLog/Data/Repository/NetworkConnectivityRepositoryImpl.swift; sourceTree = ""; }; + 7B3ED1B2326966F84851DFDD /* AuthDataRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataRepositoryImpl.swift; path = ../../DevLog/Data/Repository/AuthDataRepositoryImpl.swift; sourceTree = ""; }; + 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataService.swift; path = ../../DevLog/Data/Protocol/WebPageMetadataService.swift; sourceTree = ""; }; + 80CBBE2B99B80E70DCD800ED /* AuthSessionRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthSessionRepositoryImpl.swift; path = ../../DevLog/Data/Repository/AuthSessionRepositoryImpl.swift; sourceTree = ""; }; + 8B167270C81CB76E8F5ED9CA /* UserDataRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDataRepositoryImpl.swift; path = ../../DevLog/Data/Repository/UserDataRepositoryImpl.swift; sourceTree = ""; }; + 914EE1DC0A02968747B6B3A2 /* WebPageImageRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageRepositoryImpl.swift; path = ../../DevLog/Data/Repository/WebPageImageRepositoryImpl.swift; sourceTree = ""; }; + 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataDTO.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataLayerError.swift; path = ../../DevLog/Data/Common/DataLayerError.swift; sourceTree = ""; }; + ADE1FE53786D11AC7B192698 /* WebPageService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageService.swift; path = ../../DevLog/Data/Protocol/WebPageService.swift; sourceTree = ""; }; + B1ABB0ED51067433D3C90F02 /* TodoPageResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoPageResponse.swift; path = ../../DevLog/Data/DTO/TodoPageResponse.swift; sourceTree = ""; }; + B28D4F60262075223EC096E0 /* TodoDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDTO.swift; path = ../../DevLog/Data/DTO/TodoDTO.swift; sourceTree = ""; }; + B5F8C39E4E51A7A62D716612 /* TodoRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoRepositoryImpl.swift; path = ../../DevLog/Data/Repository/TodoRepositoryImpl.swift; sourceTree = ""; }; + BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStore.swift; path = ../../DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift; sourceTree = ""; }; + C063BD562070CA11C2AA4EDF /* DevLogDataProtocol.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataProtocol.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C42BC563A225597B3D761253 /* UserService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserService.swift; path = ../../DevLog/Data/Protocol/UserService.swift; sourceTree = ""; }; + D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryResponse.swift; path = ../../DevLog/Data/DTO/TodoCategoryResponse.swift; sourceTree = ""; }; + DD765636013B36A3BCCCF8B7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + E7154773B586C2D41307CD49 /* AuthenticationService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationService.swift; path = ../../DevLog/Data/Protocol/AuthenticationService.swift; sourceTree = ""; }; + EB4A7B045A63D5BC6A541D8E /* AppleAuthResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppleAuthResponse.swift; path = ../../DevLog/Data/DTO/AppleAuthResponse.swift; sourceTree = ""; }; + EE96D070821D1FB62A155AB5 /* PushNotificationPageResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationPageResponse.swift; path = ../../DevLog/Data/DTO/PushNotificationPageResponse.swift; sourceTree = ""; }; + EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCursorDTO.swift; path = ../../DevLog/Data/DTO/TodoCursorDTO.swift; sourceTree = ""; }; + EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataResponse.swift; path = ../../DevLog/Data/DTO/WebPageMetadataResponse.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 27B38693800AEADD845028A9 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 552E7AC6C92BB3EDA4A3B99B /* Foundation.framework in Frameworks */, + C25D925CD643720891C3CD85 /* DevLogDataCommon.framework in Frameworks */, + 4FCA3EE76074371F5CA5F50F /* DevLogDataDTO.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 483D4601CF8E621607331AB6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6F59D30C084D7C827CC50F51 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 59A9CE50C120F550A7D99914 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A6BADE4BA91529F464FBEB0F /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DC3B63D4A3808A9CE20EE7CD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E8FA3EF7AE26AA96A2168FEE /* Foundation.framework in Frameworks */, + B02D9699AED8ACA2DA62A4B4 /* DevLogDataCommon.framework in Frameworks */, + 7C88E53D0CC7798B5EFF8228 /* DevLogDataDTO.framework in Frameworks */, + 4ABBDC64F51AD1D019D93D0E /* DevLogDataProtocol.framework in Frameworks */, + F88DD9F3B1720EE23C9A23CC /* DevLogDataMapper.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E059E60416E6E796FB83CCFB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5CC76E5C85D4133B0E2409EC /* Foundation.framework in Frameworks */, + 6386F4E9FC44422C070273C8 /* DevLogDataDTO.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 27CDFCFF9F1093391B8566A1 /* Products */ = { + isa = PBXGroup; + children = ( + 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */, + 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */, + C063BD562070CA11C2AA4EDF /* DevLogDataProtocol.framework */, + 44466B71BA6B67309210A7BB /* DevLogDataMapper.framework */, + 4AB6E00A38C37CDBF82B57FD /* DevLogDataRepository.framework */, + ); + name = Products; + sourceTree = ""; + }; + 32F3EA46CD5E7F17AC449CB8 /* DevLogDataDTO */ = { + isa = PBXGroup; + children = ( + EB4A7B045A63D5BC6A541D8E /* AppleAuthResponse.swift */, + 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */, + 13680A4153A719F15E7DFDF6 /* NotificationKind.swift */, + 2DF12B44E80793EF948B211B /* PushNotificationCursorDTO.swift */, + EE96D070821D1FB62A155AB5 /* PushNotificationPageResponse.swift */, + 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */, + D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */, + EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */, + B28D4F60262075223EC096E0 /* TodoDTO.swift */, + B1ABB0ED51067433D3C90F02 /* TodoPageResponse.swift */, + 3F6961039F12AFD8B33F25DF /* TodoReferenceResponse.swift */, + 387E711B7A3BA319D3E7C2AB /* UserProfileResponse.swift */, + 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */, + EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */, + ); + name = DevLogDataDTO; + sourceTree = ""; + }; + 3957A84DA44597517DA50BD3 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8800BDCE685EF17A4BCB28C8 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 7B245CFF089F6CEF60B4F6D2 /* DevLogDataProtocol */ = { + isa = PBXGroup; + children = ( + 7559825C27ED42F9F86EBAC1 /* AuthService.swift */, + E7154773B586C2D41307CD49 /* AuthenticationService.swift */, + 3B67886F72C946CBC709AFCB /* NWPathConnectivityProvider.swift */, + 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */, + 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */, + 082E30ECD7061C9E401FF2D0 /* TodoCategoryService.swift */, + 60E716EC015A5805DD7C949B /* TodoService.swift */, + 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */, + C42BC563A225597B3D761253 /* UserService.swift */, + 454F04A5E5887B163DD7E5A9 /* WebPageImageStore.swift */, + 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */, + ADE1FE53786D11AC7B192698 /* WebPageService.swift */, + BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */, + 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */, + ); + name = DevLogDataProtocol; + sourceTree = ""; + }; + 8800BDCE685EF17A4BCB28C8 /* iOS */ = { + isa = PBXGroup; + children = ( + DD765636013B36A3BCCCF8B7 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 8C9988B575EE07030E07DEDE /* DevLogDataCommon */ = { + isa = PBXGroup; + children = ( + A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */, + 67FC3A5288FABA7441F4D6AA /* Logger.swift */, + ); + name = DevLogDataCommon; + sourceTree = ""; + }; + AC74AEDF3E1FA188F66D5536 /* DevLogDataMapper */ = { + isa = PBXGroup; + children = ( + 44C564559DBDF765945456FA /* PushNotificationMapping.swift */, + 17CB1CEA7122BFEDED0F4370 /* TodoMapping.swift */, + 37830EA98EFABE66D2ADBCE9 /* UserProfileMapping.swift */, + 3C2B7108CD63C65097876046 /* WebPageMapping.swift */, + ); + name = DevLogDataMapper; + sourceTree = ""; + }; + E08CCD18836950C1AECD91DE /* DevLogDataRepository */ = { + isa = PBXGroup; + children = ( + 7B3ED1B2326966F84851DFDD /* AuthDataRepositoryImpl.swift */, + 80CBBE2B99B80E70DCD800ED /* AuthSessionRepositoryImpl.swift */, + 09310E1D16103C0E6E96C7C7 /* AuthenticationRepositoryImpl.swift */, + 78DB5B22BE2E31B18173E89E /* NetworkConnectivityRepositoryImpl.swift */, + 3CEB1EE245302780E69EC631 /* PushNotificationRepositoryImpl.swift */, + 36E09221F6FBF67359105995 /* TodoCategoryRepositoryImpl.swift */, + B5F8C39E4E51A7A62D716612 /* TodoRepositoryImpl.swift */, + 8B167270C81CB76E8F5ED9CA /* UserDataRepositoryImpl.swift */, + 0202E26A972D5D274AF77C67 /* UserPreferencesRepositoryImpl.swift */, + 914EE1DC0A02968747B6B3A2 /* WebPageImageRepositoryImpl.swift */, + 1AAF764A3F6E025A18E6A0BC /* WebPageRepositoryImpl.swift */, + ); + name = DevLogDataRepository; + sourceTree = ""; + }; + FEAA5F036FEFF5A2BF2FD218 = { + isa = PBXGroup; + children = ( + 27CDFCFF9F1093391B8566A1 /* Products */, + 3957A84DA44597517DA50BD3 /* Frameworks */, + 8C9988B575EE07030E07DEDE /* DevLogDataCommon */, + 32F3EA46CD5E7F17AC449CB8 /* DevLogDataDTO */, + 7B245CFF089F6CEF60B4F6D2 /* DevLogDataProtocol */, + AC74AEDF3E1FA188F66D5536 /* DevLogDataMapper */, + E08CCD18836950C1AECD91DE /* DevLogDataRepository */, + ); + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 2A431786CA770FC6A975CD96 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4539FA1B796BDDC510AAF82E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5E24448CBA4C00D26FA5F908 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + CA6383B9828EE3271083BF32 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FEB154AC88AD6EBCF8E8763D /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 0B9228953A84A7D7ED3BC5B8 /* DevLogDataDTO */ = { + isa = PBXNativeTarget; + buildConfigurationList = A94BF61A161D9751A69AD42A /* Build configuration list for PBXNativeTarget "DevLogDataDTO" */; + buildPhases = ( + CA6383B9828EE3271083BF32 /* Headers */, + D76E724F041C4AE595FDCBE2 /* Sources */, + 483D4601CF8E621607331AB6 /* Frameworks */, + FBA6D30F7E480099B3FF4EEB /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DevLogDataDTO; + productName = DevLogDataDTO; + productReference = 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */; + productType = "com.apple.product-type.framework"; + }; + 27C8E1F04453FD577C839404 /* DevLogDataMapper */ = { + isa = PBXNativeTarget; + buildConfigurationList = DC47700CBACAB161C518DE36 /* Build configuration list for PBXNativeTarget "DevLogDataMapper" */; + buildPhases = ( + 2A431786CA770FC6A975CD96 /* Headers */, + B5B0646A96399A2D3FCB09E9 /* Sources */, + 27B38693800AEADD845028A9 /* Frameworks */, + CB8656DB659B465E5B2E5A0D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 6BD7CDC2CE90027069EBF474 /* PBXTargetDependency */, + 9DF49C480F5AB60C3B9EBE38 /* PBXTargetDependency */, + ); + name = DevLogDataMapper; + productName = DevLogDataMapper; + productReference = 44466B71BA6B67309210A7BB /* DevLogDataMapper.framework */; + productType = "com.apple.product-type.framework"; + }; + 6D02EDBA887507AC7BA79658 /* DevLogDataProtocol */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6DD7FDB4425EE810218E2C32 /* Build configuration list for PBXNativeTarget "DevLogDataProtocol" */; + buildPhases = ( + 5E24448CBA4C00D26FA5F908 /* Headers */, + 10F00E11702D43472906BF45 /* Sources */, + E059E60416E6E796FB83CCFB /* Frameworks */, + C728749A5150DFF9753B0CBF /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + AC3779B9D6B670AB6BC05C43 /* PBXTargetDependency */, + ); + name = DevLogDataProtocol; + productName = DevLogDataProtocol; + productReference = C063BD562070CA11C2AA4EDF /* DevLogDataProtocol.framework */; + productType = "com.apple.product-type.framework"; + }; + 80A60CC195BD79C638F5B405 /* DevLogDataCommon */ = { + isa = PBXNativeTarget; + buildConfigurationList = EFD568C3CDC85883840DBD45 /* Build configuration list for PBXNativeTarget "DevLogDataCommon" */; + buildPhases = ( + 4539FA1B796BDDC510AAF82E /* Headers */, + 1E8F3697B1D7CB1C23D15D6A /* Sources */, + 59A9CE50C120F550A7D99914 /* Frameworks */, + 1E37BB8AE25D5987F5E24FEF /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DevLogDataCommon; + productName = DevLogDataCommon; + productReference = 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */; + productType = "com.apple.product-type.framework"; + }; + D9D76C33D8B4790694BD3488 /* DevLogDataRepository */ = { + isa = PBXNativeTarget; + buildConfigurationList = 64EB1E90241FDB4FE019B42A /* Build configuration list for PBXNativeTarget "DevLogDataRepository" */; + buildPhases = ( + FEB154AC88AD6EBCF8E8763D /* Headers */, + 2674AC03A9187931B580AAEE /* Sources */, + DC3B63D4A3808A9CE20EE7CD /* Frameworks */, + 73B3ACF5A02F5A91A7C72F92 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 437F9D225A70C7BCFF3FBF39 /* PBXTargetDependency */, + 0E96401944C90EF831B7D8E1 /* PBXTargetDependency */, + BBF9CC002B18DE6FE4839A0B /* PBXTargetDependency */, + C1C19451F7732DCE6BED672E /* PBXTargetDependency */, + ); + name = DevLogDataRepository; + productName = DevLogDataRepository; + productReference = 4AB6E00A38C37CDBF82B57FD /* DevLogDataRepository.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + CC7EBB5B45CD6E34221B84D0 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1600; + LastUpgradeCheck = 1600; + }; + buildConfigurationList = 7F096A3943F90686072B1DF1 /* Build configuration list for PBXProject "DevLogData" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = FEAA5F036FEFF5A2BF2FD218; + minimizedProjectReferenceProxies = 0; + preferredProjectObjectVersion = 77; + productRefGroup = 27CDFCFF9F1093391B8566A1 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 80A60CC195BD79C638F5B405 /* DevLogDataCommon */, + 0B9228953A84A7D7ED3BC5B8 /* DevLogDataDTO */, + 6D02EDBA887507AC7BA79658 /* DevLogDataProtocol */, + 27C8E1F04453FD577C839404 /* DevLogDataMapper */, + D9D76C33D8B4790694BD3488 /* DevLogDataRepository */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 1E37BB8AE25D5987F5E24FEF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 73B3ACF5A02F5A91A7C72F92 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C728749A5150DFF9753B0CBF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + CB8656DB659B465E5B2E5A0D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FBA6D30F7E480099B3FF4EEB /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 10F00E11702D43472906BF45 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 630C1F917AED059FBE29BDBC /* AuthService.swift in Sources */, + 2F0ECAAFBEB7651130A6160A /* AuthenticationService.swift in Sources */, + B8E8AB9B2529E248BF3E9AC5 /* NWPathConnectivityProvider.swift in Sources */, + 0C8E1C07EF01FB22BF8B80B9 /* PushNotificationService.swift in Sources */, + 415FA233A97D67108CA8FA60 /* ThemeStore.swift in Sources */, + BB7C667A5651F5C5E60C9C65 /* TodoCategoryService.swift in Sources */, + B2D2F2614E6446B422B42E98 /* TodoService.swift in Sources */, + E671A77745F90F217E091010 /* UserDefaultsStore.swift in Sources */, + 4EFB81EBF4C8E68D1219E261 /* UserService.swift in Sources */, + 8744A8E2492B34573A5A1459 /* WebPageImageStore.swift in Sources */, + 7A71FF2428AECD0170B555F7 /* WebPageMetadataService.swift in Sources */, + 3774F15D0E51BAE1445550C8 /* WebPageService.swift in Sources */, + 18D37737A07ECBDA79EA9270 /* WidgetSnapshotPreferenceStore.swift in Sources */, + EB5E684FF9C0430609D41D24 /* WidgetSnapshotUpdater.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1E8F3697B1D7CB1C23D15D6A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 4B18018B63AE2321B8B7761A /* DataLayerError.swift in Sources */, + 18C2B39408BF745FE0BFC810 /* Logger.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2674AC03A9187931B580AAEE /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 696ECBF42D3E9504BE9939FB /* AuthDataRepositoryImpl.swift in Sources */, + 986DAE304B67FC8F8563FC40 /* AuthSessionRepositoryImpl.swift in Sources */, + 326C26B47FCE678C36BE5788 /* AuthenticationRepositoryImpl.swift in Sources */, + 6DACC3B9A91F4B83A51E001C /* NetworkConnectivityRepositoryImpl.swift in Sources */, + 02AD0EC1D813FD957B53FBE5 /* PushNotificationRepositoryImpl.swift in Sources */, + 4C0F2F479581D2E091C429B2 /* TodoCategoryRepositoryImpl.swift in Sources */, + 320469937B9BD964D29F5C97 /* TodoRepositoryImpl.swift in Sources */, + 71C83A8D875833719759B1FE /* UserDataRepositoryImpl.swift in Sources */, + 50C769615D094189B739F055 /* UserPreferencesRepositoryImpl.swift in Sources */, + 9B584555CC7504BEDF5F8008 /* WebPageImageRepositoryImpl.swift in Sources */, + 4BD06832F56598B25183EF06 /* WebPageRepositoryImpl.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B5B0646A96399A2D3FCB09E9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 67F3E365DA09012FBBE2012F /* PushNotificationMapping.swift in Sources */, + B5F2954F61C8263C3A31B295 /* TodoMapping.swift in Sources */, + 7A74659BAEE980ECCBA0D22A /* UserProfileMapping.swift in Sources */, + 627A5B276E98C623E7953868 /* WebPageMapping.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D76E724F041C4AE595FDCBE2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74E91703D0FC8E5849507A99 /* AppleAuthResponse.swift in Sources */, + 3E47658FDC0F074222D07B2C /* AuthDataResponse.swift in Sources */, + 2D91812BD78B5FA8DBE2F030 /* NotificationKind.swift in Sources */, + 5D56791D0D2F4F4B299C183C /* PushNotificationCursorDTO.swift in Sources */, + 49F6E1752300C28F873AE959 /* PushNotificationPageResponse.swift in Sources */, + 6FB5E632397385B569B5FB5E /* PushNotificationResponse.swift in Sources */, + D910214884BD6503097E03F6 /* TodoCategoryResponse.swift in Sources */, + 06C8405C9CCC37319D16F4D6 /* TodoCursorDTO.swift in Sources */, + A99E2FD1B2E157BF7BE9FB5C /* TodoDTO.swift in Sources */, + 48520BBB5EAEF3DB9D65CAE8 /* TodoPageResponse.swift in Sources */, + 02989D2DD8C861339C89EFAB /* TodoReferenceResponse.swift in Sources */, + 59FB0D9F7C8C8D1B63EA5880 /* UserProfileResponse.swift in Sources */, + 14D1BF4D1F50FB067DA875B3 /* WebPageDTO.swift in Sources */, + 2068F0B84A3BC53EEB156D82 /* WebPageMetadataResponse.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 0E96401944C90EF831B7D8E1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataDTO; + target = 0B9228953A84A7D7ED3BC5B8 /* DevLogDataDTO */; + targetProxy = 87C4E293CEB68865146027D2 /* PBXContainerItemProxy */; + }; + 437F9D225A70C7BCFF3FBF39 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataCommon; + target = 80A60CC195BD79C638F5B405 /* DevLogDataCommon */; + targetProxy = F8A671FF637FB67637A2D9A2 /* PBXContainerItemProxy */; + }; + 6BD7CDC2CE90027069EBF474 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataCommon; + target = 80A60CC195BD79C638F5B405 /* DevLogDataCommon */; + targetProxy = BB3B1390C9968DC8F87296F8 /* PBXContainerItemProxy */; + }; + 9DF49C480F5AB60C3B9EBE38 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataDTO; + target = 0B9228953A84A7D7ED3BC5B8 /* DevLogDataDTO */; + targetProxy = 265EA22D69D36B94BD0FADCC /* PBXContainerItemProxy */; + }; + AC3779B9D6B670AB6BC05C43 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataDTO; + target = 0B9228953A84A7D7ED3BC5B8 /* DevLogDataDTO */; + targetProxy = 3838BBE0FEC6B9E08242914D /* PBXContainerItemProxy */; + }; + BBF9CC002B18DE6FE4839A0B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataProtocol; + target = 6D02EDBA887507AC7BA79658 /* DevLogDataProtocol */; + targetProxy = 2C3CE6146CD5AB882B075236 /* PBXContainerItemProxy */; + }; + C1C19451F7732DCE6BED672E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataMapper; + target = 27C8E1F04453FD577C839404 /* DevLogDataMapper */; + targetProxy = 291C29C98BA846DB1EFF9263 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 1E63E77475382EF159DBD932 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataRepository; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 3203A99F59D1BEAB6D3C8FB3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataMapper; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 4675F51029F52D544979DADD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataDTO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 496C32FE03087C102E98CAEB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataCommon; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 4F49639B93B193AA0E9EC7FD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 6AF1DADBD0DF112129374DCD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataProtocol; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 79E19457A49085BD47013120 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataCommon; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 7DE72E58DE6F03593F856276 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataMapper; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 808AF7FF654C2CE90505C83C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + BDE089461B9B8C04DEAD4833 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataProtocol; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + C8237CB7F17187931E3D8CFB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataDTO; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + D6BAE0518A7CBD73832246F3 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataRepository; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 64EB1E90241FDB4FE019B42A /* Build configuration list for PBXNativeTarget "DevLogDataRepository" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + D6BAE0518A7CBD73832246F3 /* Release */, + 1E63E77475382EF159DBD932 /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6DD7FDB4425EE810218E2C32 /* Build configuration list for PBXNativeTarget "DevLogDataProtocol" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6AF1DADBD0DF112129374DCD /* Release */, + BDE089461B9B8C04DEAD4833 /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 7F096A3943F90686072B1DF1 /* Build configuration list for PBXProject "DevLogData" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 808AF7FF654C2CE90505C83C /* Debug */, + 4F49639B93B193AA0E9EC7FD /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A94BF61A161D9751A69AD42A /* Build configuration list for PBXNativeTarget "DevLogDataDTO" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4675F51029F52D544979DADD /* Release */, + C8237CB7F17187931E3D8CFB /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DC47700CBACAB161C518DE36 /* Build configuration list for PBXNativeTarget "DevLogDataMapper" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3203A99F59D1BEAB6D3C8FB3 /* Release */, + 7DE72E58DE6F03593F856276 /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EFD568C3CDC85883840DBD45 /* Build configuration list for PBXNativeTarget "DevLogDataCommon" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 79E19457A49085BD47013120 /* Release */, + 496C32FE03087C102E98CAEB /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = CC7EBB5B45CD6E34221B84D0 /* Project object */; +} diff --git a/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme b/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme new file mode 100644 index 00000000..2a08880c --- /dev/null +++ b/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme b/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme new file mode 100644 index 00000000..53106c6a --- /dev/null +++ b/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme b/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme new file mode 100644 index 00000000..9b996cb4 --- /dev/null +++ b/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme b/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme new file mode 100644 index 00000000..e1c052f3 --- /dev/null +++ b/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataRepository.xcscheme b/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataRepository.xcscheme new file mode 100644 index 00000000..3f9e5818 --- /dev/null +++ b/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataRepository.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj b/Projects/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj new file mode 100644 index 00000000..fa6a2310 --- /dev/null +++ b/Projects/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj @@ -0,0 +1,803 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 077096D1600C7389AE494C8D /* UpdateSystemThemeUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E821078E0E30A646FFFC1F1 /* UpdateSystemThemeUseCase.swift */; }; + 108705FB292C48F626E0A5C9 /* AddWebPageUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9F4C2B618DA0B796EC02CF4 /* AddWebPageUseCase.swift */; }; + 120C2A8316793FDC3B58FE4E /* FetchPushNotificationQueryUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B498CD874F5AE906BB27898F /* FetchPushNotificationQueryUseCaseImpl.swift */; }; + 12AB338C5D8E4CF3546D1717 /* UpsertStatusMessageUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 015FCD58DFE25D15A98767DD /* UpsertStatusMessageUseCase.swift */; }; + 12AF5699CB1F8EBB8A7CD084 /* UpsertStatusMessageUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 328FC6A361021DBFC9C0FB3B /* UpsertStatusMessageUseCaseImpl.swift */; }; + 12DF4FA2C79E207DF02D10C8 /* TogglePushNotificationReadUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFCB23F0E622C1872DA543DB /* TogglePushNotificationReadUseCaseImpl.swift */; }; + 14D9C7664DD4100049B9F74E /* DeleteWebPageUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9594B66FCEF77D951B887634 /* DeleteWebPageUseCase.swift */; }; + 1C2FF673C40594AB218ABEF3 /* FetchWebPageImageDirSizeUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9956BD2EFBA1679FF20ED65 /* FetchWebPageImageDirSizeUseCase.swift */; }; + 1C75BDBB2E374297B78CE42B /* DeleteAuthUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755AD7D03795F56790F1B378 /* DeleteAuthUseCase.swift */; }; + 1DF07B23A72AA6D0CD7D7F2E /* UpdatePushSettingsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0FB230E9723243D9C16E1C3 /* UpdatePushSettingsUseCase.swift */; }; + 20078F5D83F56D1E8142069F /* UpdateHeatmapActivityTypesUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49115FDA37F30A80D0756093 /* UpdateHeatmapActivityTypesUseCase.swift */; }; + 21C2857E902A9E9CFED4F068 /* FetchRecentSearchQueriesUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3E4B6613C6FA82D6772ED06 /* FetchRecentSearchQueriesUseCase.swift */; }; + 229C3C65B5BFA9D321C32D66 /* TodoPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = E8C9C99957DF94BCF349AEE8 /* TodoPage.swift */; }; + 26A45B87761951B2EA27F4EE /* ObserveAuthSessionUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B831790BFE85097FB9034BD /* ObserveAuthSessionUseCaseImpl.swift */; }; + 2760C338F0C3FAF88A5789E0 /* ClearWebPageImageDirectoryUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01DC43DAB9ACFA7C5A237F91 /* ClearWebPageImageDirectoryUseCaseImpl.swift */; }; + 27C80F06F67D4606F453428D /* TodoCategoryPreference.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06CE556F368F3FFB8F45D19B /* TodoCategoryPreference.swift */; }; + 28CD152E23FB7D94C516B81A /* FetchTodoByIDUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DD73A331A61A27A1A9BDFD0 /* FetchTodoByIDUseCaseImpl.swift */; }; + 2A7E0A650CD20BDB7B98EB5B /* ObserveUnreadPushCountUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7255B9F0D6EA9A0D9C81F512 /* ObserveUnreadPushCountUseCase.swift */; }; + 2B3BC20D91E8D473D561BFF1 /* SignOutUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1A4B3291A774346C97DDCA02 /* SignOutUseCase.swift */; }; + 2F969DD3AEC2016D02C0CAFB /* DeletePushNotificationUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = A10FD608ACEAFA303C7743BA /* DeletePushNotificationUseCase.swift */; }; + 2FFDF36BE7DA3E87BCFEF5EE /* UndoDeletePushNotificationUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1ADECD2AC2EA5C3AF0567E21 /* UndoDeletePushNotificationUseCase.swift */; }; + 32753194C414A26FAA93C52A /* UpdateTodayDisplayOptionsUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D13DBD497C26307CEDEF65E /* UpdateTodayDisplayOptionsUseCaseImpl.swift */; }; + 3538938461FB8751B7619868 /* PushNotificationQuery.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46B06C77D7DB705ECED40A6 /* PushNotificationQuery.swift */; }; + 355E9E3FFA1677FE95ED4563 /* UpdatePushNotificationQueryUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5CEE90FC2BA6B2E4F9B5B2E /* UpdatePushNotificationQueryUseCaseImpl.swift */; }; + 39B28A327CBC789667F04D41 /* TodoCategoryRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = B843042D7E2BCD42C7DD3FE4 /* TodoCategoryRepository.swift */; }; + 3A5FD27711863BD4A073DCDA /* LinkAuthProviderUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = C766DC43AFC8A07B1E009FF1 /* LinkAuthProviderUseCase.swift */; }; + 3CBE85905AD871CC3C44E051 /* UserPreferencesRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6606DC27F4AC1B348D9A499 /* UserPreferencesRepository.swift */; }; + 3D951E5FD03D60E4994EF109 /* FetchUserDataUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD23C531988288EA45977604 /* FetchUserDataUseCaseImpl.swift */; }; + 3DF939929E9A941D7ED40AC0 /* FetchPushNotificationQueryUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D653CA5AFBA637461B27A7F /* FetchPushNotificationQueryUseCase.swift */; }; + 3FDB964402AD30FD463379A6 /* FetchTodosUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FD502CE4EB95263D32AF23E /* FetchTodosUseCase.swift */; }; + 4386CBF280D5088E8248EB99 /* PushNotificationRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DE514CE1D81A91A79B3F483 /* PushNotificationRepository.swift */; }; + 45E4D220F9E732145F948770 /* AuthenticationRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64F3941915699B8D1DC2631A /* AuthenticationRepository.swift */; }; + 461ED28ED0266D0A247AFB5E /* FetchTodoCategoryPreferencesUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11B14A760F12F75DD433E6E3 /* FetchTodoCategoryPreferencesUseCase.swift */; }; + 4A5C4124502517F0676BBC3B /* PushNotificationPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DBC9D7FFF5FC58F5EE67A4E /* PushNotificationPage.swift */; }; + 4BF41C43A47CEB3151674757 /* UpsertTodoUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 127C20813795B0B77A99F955 /* UpsertTodoUseCase.swift */; }; + 4DF153046EACFF1116D0B084 /* UndoDeleteWebPageUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = D310014E8ACFC3A55D3B83B3 /* UndoDeleteWebPageUseCaseImpl.swift */; }; + 50063A8EF58B57D05389736B /* FetchHeatmapActivityTypesUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = E22EE946DD06C2BDA66070D5 /* FetchHeatmapActivityTypesUseCase.swift */; }; + 5044FDD5ED149194C21F45DD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CCF9FBE3E5B1E3AF0A65F342 /* Foundation.framework */; }; + 531F0ED95CDF89C7DFBF4261 /* DeleteAuthUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F7C774056C083FD3BDFEE92 /* DeleteAuthUseCaseImpl.swift */; }; + 53274984357FD12A65AC1E6C /* UpdateSystemThemeUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B306337D1C6C39407105B783 /* UpdateSystemThemeUseCaseImpl.swift */; }; + 54909F981153B44A6FCB22B8 /* UpdateRecentSearchQueriesUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B2B36142EDE421CE4CAF82E /* UpdateRecentSearchQueriesUseCaseImpl.swift */; }; + 54A5D9233AB679479EC9BCDD /* FetchWebPageImageDirSizeUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B663E911F22760A9B0C71DA6 /* FetchWebPageImageDirSizeUseCaseImpl.swift */; }; + 552FC32730FADECA9E2D7CA6 /* UnlinkAuthProviderUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EBE5CCA6FD562D1FD4E3DC0 /* UnlinkAuthProviderUseCaseImpl.swift */; }; + 5ECD88BAC2FC629FA728DAA7 /* FetchPushNotificationsUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = A275ADD90916E0CD19E658A1 /* FetchPushNotificationsUseCaseImpl.swift */; }; + 616D10488AF4F02D83FEA18B /* SignOutUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B7A3642B89C1CA241B6AADF /* SignOutUseCaseImpl.swift */; }; + 61878C15C1889E13E16C0C35 /* FetchTodoCategoryPreferencesUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0135F093DDF8F5DB4D320010 /* FetchTodoCategoryPreferencesUseCaseImpl.swift */; }; + 63AAD7A1FD3A07C488DC96A5 /* UndoDeleteTodoUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 522510AA4DD57769034B3A49 /* UndoDeleteTodoUseCaseImpl.swift */; }; + 64E2F2A55DA11EB4CE6E82A0 /* TodoRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CCD260120C0B0358DA09105 /* TodoRepository.swift */; }; + 68B2F1A68013784767C7BDA8 /* UserDataRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44D430F73E1C4A9F5EC65263 /* UserDataRepository.swift */; }; + 6941CE2F8E390A78BA99EB2F /* UIFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CE5DDD90F87E43F27311D31 /* UIFont.swift */; }; + 6CCA27E186BA818C36FCD69A /* AuthProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9A9B5170723706520E75DC7 /* AuthProvider.swift */; }; + 6E9DF84535092F43786277E9 /* UpdateRecentSearchQueriesUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4721FC0DF30EE97CCFD8AEB2 /* UpdateRecentSearchQueriesUseCase.swift */; }; + 71BAC4D47D7B9351E59745F0 /* AddWebPageUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B0536F975D3FE76D0B58F /* AddWebPageUseCaseImpl.swift */; }; + 73969D227D8103F45DFD546D /* TodoQuery.swift in Sources */ = {isa = PBXBuildFile; fileRef = F528B902B4AC945DE2357AF4 /* TodoQuery.swift */; }; + 740D49EA35D555A5CC0B740C /* FetchReferenceItemsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = A403DFBCDB028B255F8B9EC5 /* FetchReferenceItemsUseCase.swift */; }; + 76DE905274DA17536AC07024 /* FetchPushNotificationSettingsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65FE1967BCA4B1FF8D517617 /* FetchPushNotificationSettingsUseCase.swift */; }; + 79E0CF57B7A79A24A2D7C030 /* SignInUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 517E1CF92FE5C7461C24F2F2 /* SignInUseCase.swift */; }; + 7B8CBBEFB51817FB36B0F02E /* ActivityKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3C71ECDDDA08716A716D9B2 /* ActivityKind.swift */; }; + 7DE9D23DA294DD0A2E247B55 /* TodoCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7697A8469158261B1299B121 /* TodoCategory.swift */; }; + 7F594B5105F64EBDEF77CC58 /* UpdatePushNotificationQueryUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2632BB4BB4A6F4FA74B2CC6 /* UpdatePushNotificationQueryUseCase.swift */; }; + 813B6E20C071E2CEFF275AC9 /* UndoDeleteTodoUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E6726827D53639E678488EE /* UndoDeleteTodoUseCase.swift */; }; + 83B834C10753628FAA84B4B9 /* FetchTodosUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01987DD2F38CF633D3C4162 /* FetchTodosUseCaseImpl.swift */; }; + 87E3984F704DB3DD242781C0 /* FetchRecentSearchQueriesUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9161CF59F34F6666BDD773A8 /* FetchRecentSearchQueriesUseCaseImpl.swift */; }; + 923BA6345B44D68CB47C7CA4 /* PushNotificationCursor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 741F53346E83DDAB8912B25C /* PushNotificationCursor.swift */; }; + 93FA660D3518C64F541F2990 /* UpdateTodoCategoryPreferencesUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4ED6069D8B0C24A2C3E295C /* UpdateTodoCategoryPreferencesUseCase.swift */; }; + 94D084B5F6D7619C4A7B2219 /* AuthDataRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1725CFBBBCE02A2C5412C24D /* AuthDataRepository.swift */; }; + 95775E70F0CE8D51926B1C48 /* WebPage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1290A4B9F0ED6ABFABC5749D /* WebPage.swift */; }; + 95FB57C79E74093F46210B6A /* FetchAuthProvidersUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6357C21C07A2374530C5302B /* FetchAuthProvidersUseCaseImpl.swift */; }; + 97D8B6B04A501BA4CD80F6A9 /* UnlinkAuthProviderUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C2EA32A4DF93B6F77789409 /* UnlinkAuthProviderUseCase.swift */; }; + 98BD52ADE79F7AE22FB24EA8 /* ObserveNetworkConnectivityUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12F96A31F7367B2BFA3F8226 /* ObserveNetworkConnectivityUseCaseImpl.swift */; }; + 9B6EB6778E867A48B426F879 /* FetchHeatmapActivityTypesUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56F3A28A8CE602EF8A5A12F7 /* FetchHeatmapActivityTypesUseCaseImpl.swift */; }; + 9CBFACE0CB9571165174A67C /* Todo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07865C391ACEC35BD969A730 /* Todo.swift */; }; + 9D39B3BEA4F1EC0A7AEB4927 /* DeleteWebPageUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = F276F5D3E9AD8963189E58AC /* DeleteWebPageUseCaseImpl.swift */; }; + A45F34DFB63505AEFE69C779 /* ObserveSystemThemeUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ADDC57ACEBB9CEB3FCD3F80 /* ObserveSystemThemeUseCase.swift */; }; + A62783C62DEFCF74833A1EF1 /* ClearWebPageImageDirectoryUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76BA71B47A419D205968A49D /* ClearWebPageImageDirectoryUseCase.swift */; }; + A6DA6F5726BCB6404A5A9B93 /* UpsertTodoUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B484D427B8653E772AB4156 /* UpsertTodoUseCaseImpl.swift */; }; + A7A49D396929B3C1DBBEE572 /* PushNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = C482DCAC8527FFE9767388C8 /* PushNotification.swift */; }; + AA27593C59ED7E2986F105EA /* SystemTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6452B0B4E524F90595D77FD /* SystemTheme.swift */; }; + AA911F852FE29E79F044E65B /* ObserveNetworkConnectivityUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E2D323E5EAF19D03C4BFAD0 /* ObserveNetworkConnectivityUseCase.swift */; }; + AB1782B2496741C30BAE8E6F /* FetchPushNotificationsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B6A80CB4CD95B3FE2463F52 /* FetchPushNotificationsUseCase.swift */; }; + AE174F1C75E803E01819CC57 /* WebPageImageRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45439A52C6F35B7655776A07 /* WebPageImageRepository.swift */; }; + B0BB7AF1F85E5A34C56DE91D /* FetchTodayDisplayOptionsUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 746A826E7B24EF22A287ABC5 /* FetchTodayDisplayOptionsUseCaseImpl.swift */; }; + B30B01550E49D790EB32B4B3 /* TodoCursor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42C7EE23A3F45CFA5C2F7ECE /* TodoCursor.swift */; }; + B448FD7380BD53ECE50FC1F6 /* FetchWebPagesUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C18AFE080D0761AFF8D82FC5 /* FetchWebPagesUseCaseImpl.swift */; }; + B48976B9D062D57641F8C4E5 /* UserProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = A32E327BE5F24582BDE808DE /* UserProfile.swift */; }; + B549A6618BFA8B4C25BE6C38 /* FetchAuthProvidersUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 975B88E82CD480E408410A60 /* FetchAuthProvidersUseCase.swift */; }; + B5798D25566FD92076495381 /* TodoReference.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1914B9FD743F5AC5E82A431 /* TodoReference.swift */; }; + B65F8040161BBDA088DAE4E0 /* LinkAuthProviderUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = A22B34E1AF11D76CE7171CE7 /* LinkAuthProviderUseCaseImpl.swift */; }; + BAA7BD8E41F339D1F1F7156E /* AuthSessionRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 323A45003F23C91F09B2583C /* AuthSessionRepository.swift */; }; + C9165FE5B452A1918267DF33 /* UpdatePushSettingsUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EB6D6DDEED0E961F68CB3E3 /* UpdatePushSettingsUseCaseImpl.swift */; }; + CA0EDC37863EDE2D84BA8C3F /* TogglePushNotificationReadUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 658249EA021AFF8428B32FD0 /* TogglePushNotificationReadUseCase.swift */; }; + CF3DE7F5DBF9C56338003090 /* FetchWebPagesUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0378EC4E10380BAE247185B /* FetchWebPagesUseCase.swift */; }; + D58ADC81E147FECD6C45361C /* UserTodoCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5AFD6F6E1DDE50BC837955F /* UserTodoCategory.swift */; }; + DC143314307BD56F77168430 /* TodayDisplayOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 087434742ED1FAA4546120B9 /* TodayDisplayOptions.swift */; }; + DD2EDF7A517D0B96BD33EECF /* FetchUserDataUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C1F27652023B70495066F9E /* FetchUserDataUseCase.swift */; }; + DD4F8EC25943435D6F52A31E /* String.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05D14CAC89969BC5FB42B8D1 /* String.swift */; }; + DDCC1EF77FF676BF55920294 /* UpdateTodoCategoryPreferencesUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 759AFAA7929D8227152D0C09 /* UpdateTodoCategoryPreferencesUseCaseImpl.swift */; }; + DE533613F55F517E74FAAAB1 /* FetchPushNotificationSettingsUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CF1E8DC279C84BE986E2296 /* FetchPushNotificationSettingsUseCaseImpl.swift */; }; + E2F63B8E23E940C4C2029551 /* SignInUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B41302357AD2793E8F75E88 /* SignInUseCaseImpl.swift */; }; + E2FD30DB60B1100C314EDF49 /* ObserveUnreadPushCountUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68D7B585C369EADAEBE8A470 /* ObserveUnreadPushCountUseCaseImpl.swift */; }; + E36F4A98939F682531D0CA91 /* SystemTodoCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 372106128F8BE30DDE0D41E7 /* SystemTodoCategory.swift */; }; + E555D345939E00BA066CEB77 /* FetchTodayDisplayOptionsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D457ED2B8E1CA7C2E401DBB /* FetchTodayDisplayOptionsUseCase.swift */; }; + E64278EB4572582E17FED172 /* Array.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83B40B6FE8272B804E1C7712 /* Array.swift */; }; + E821A95E218A4B131EAF7906 /* UndoDeleteWebPageUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 931E348B8445B611C6486B0D /* UndoDeleteWebPageUseCase.swift */; }; + E86597628CDA7E10629F9AF0 /* DeletePushNotificationUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C1EF4E237E1F3BEDAB0B730 /* DeletePushNotificationUseCaseImpl.swift */; }; + E8BE91D227BD0BC968C04EDD /* FetchReferenceItemsUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA4EC8FBD39E0AEF21117F7C /* FetchReferenceItemsUseCaseImpl.swift */; }; + EB38589556DD66BE814CC14C /* DeleteTodoUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD0C8F7B1FB7DE7DD17C99BE /* DeleteTodoUseCase.swift */; }; + EBFD8EF52239AC36A06AEED5 /* DeleteTodoUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB02651AFF3D9DE27351DA7B /* DeleteTodoUseCaseImpl.swift */; }; + ECCE25C418E13D89F87019B3 /* NetworkConnectivityRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 090C424EC663DC420E210405 /* NetworkConnectivityRepository.swift */; }; + F05108AAD731A853913692DF /* ObserveSystemThemeUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01351069EBDFEFE9BEB4E26F /* ObserveSystemThemeUseCaseImpl.swift */; }; + F1696E21D1CDFC2BD8BFE7FF /* UpdateTodayDisplayOptionsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F9677D48BA38AB69BE26D3A /* UpdateTodayDisplayOptionsUseCase.swift */; }; + F32D2C5951FFFEF2F3F997E1 /* UpdateHeatmapActivityTypesUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA4F782752735905BE93CD95 /* UpdateHeatmapActivityTypesUseCaseImpl.swift */; }; + F5EB9F580779123FEC284F24 /* ObserveAuthSessionUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41B41F22B16C359A70312D77 /* ObserveAuthSessionUseCase.swift */; }; + F64684F5611E3547CDE5C12B /* FetchTodoByIDUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD49CB792C5CCA040D99F1CD /* FetchTodoByIDUseCase.swift */; }; + F90BFB71ECDDF9E5FAE80AC4 /* WebPageRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = F28AC36CBBB716A8B3C6FDDD /* WebPageRepository.swift */; }; + FC43C025719D63AC2FEAA0D2 /* UndoDeletePushNotificationUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03910A114D3321A63F692113 /* UndoDeletePushNotificationUseCaseImpl.swift */; }; + FC9F3DE1D0F3D83CF07D4935 /* PushNotificationSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86771BA0A9014E81E93B8C0 /* PushNotificationSettings.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 01351069EBDFEFE9BEB4E26F /* ObserveSystemThemeUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveSystemThemeUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift; sourceTree = ""; }; + 0135F093DDF8F5DB4D320010 /* FetchTodoCategoryPreferencesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoCategoryPreferencesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift; sourceTree = ""; }; + 015FCD58DFE25D15A98767DD /* UpsertStatusMessageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertStatusMessageUseCase.swift; path = ../../DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift; sourceTree = ""; }; + 01DC43DAB9ACFA7C5A237F91 /* ClearWebPageImageDirectoryUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ClearWebPageImageDirectoryUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift; sourceTree = ""; }; + 03910A114D3321A63F692113 /* UndoDeletePushNotificationUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeletePushNotificationUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift; sourceTree = ""; }; + 05D14CAC89969BC5FB42B8D1 /* String.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = String.swift; path = ../../DevLog/Domain/Extension/String.swift; sourceTree = ""; }; + 06CE556F368F3FFB8F45D19B /* TodoCategoryPreference.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryPreference.swift; path = ../../DevLog/Domain/Entity/TodoCategoryPreference.swift; sourceTree = ""; }; + 07865C391ACEC35BD969A730 /* Todo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Todo.swift; path = ../../DevLog/Domain/Entity/Todo.swift; sourceTree = ""; }; + 087434742ED1FAA4546120B9 /* TodayDisplayOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayDisplayOptions.swift; path = ../../DevLog/Domain/Entity/TodayDisplayOptions.swift; sourceTree = ""; }; + 090C424EC663DC420E210405 /* NetworkConnectivityRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkConnectivityRepository.swift; path = ../../DevLog/Domain/Protocol/NetworkConnectivityRepository.swift; sourceTree = ""; }; + 0DD73A331A61A27A1A9BDFD0 /* FetchTodoByIDUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoByIDUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCaseImpl.swift; sourceTree = ""; }; + 0E6726827D53639E678488EE /* UndoDeleteTodoUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteTodoUseCase.swift; path = ../../DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCase.swift; sourceTree = ""; }; + 0F9677D48BA38AB69BE26D3A /* UpdateTodayDisplayOptionsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodayDisplayOptionsUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCase.swift; sourceTree = ""; }; + 11B14A760F12F75DD433E6E3 /* FetchTodoCategoryPreferencesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoCategoryPreferencesUseCase.swift; path = ../../DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCase.swift; sourceTree = ""; }; + 127C20813795B0B77A99F955 /* UpsertTodoUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertTodoUseCase.swift; path = ../../DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCase.swift; sourceTree = ""; }; + 1290A4B9F0ED6ABFABC5749D /* WebPage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPage.swift; path = ../../DevLog/Domain/Entity/WebPage.swift; sourceTree = ""; }; + 12F96A31F7367B2BFA3F8226 /* ObserveNetworkConnectivityUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveNetworkConnectivityUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift; sourceTree = ""; }; + 1725CFBBBCE02A2C5412C24D /* AuthDataRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataRepository.swift; path = ../../DevLog/Domain/Protocol/AuthDataRepository.swift; sourceTree = ""; }; + 1A4B3291A774346C97DDCA02 /* SignOutUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignOutUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCase.swift; sourceTree = ""; }; + 1ADECD2AC2EA5C3AF0567E21 /* UndoDeletePushNotificationUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeletePushNotificationUseCase.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCase.swift; sourceTree = ""; }; + 1B484D427B8653E772AB4156 /* UpsertTodoUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertTodoUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCaseImpl.swift; sourceTree = ""; }; + 1CF1E8DC279C84BE986E2296 /* FetchPushNotificationSettingsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationSettingsUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCaseImpl.swift; sourceTree = ""; }; + 1DBC9D7FFF5FC58F5EE67A4E /* PushNotificationPage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationPage.swift; path = ../../DevLog/Domain/Entity/PushNotificationPage.swift; sourceTree = ""; }; + 1DE514CE1D81A91A79B3F483 /* PushNotificationRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationRepository.swift; path = ../../DevLog/Domain/Protocol/PushNotificationRepository.swift; sourceTree = ""; }; + 2B41302357AD2793E8F75E88 /* SignInUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignInUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/SignIn/SignInUseCaseImpl.swift; sourceTree = ""; }; + 2E2D323E5EAF19D03C4BFAD0 /* ObserveNetworkConnectivityUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveNetworkConnectivityUseCase.swift; path = ../../DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCase.swift; sourceTree = ""; }; + 323A45003F23C91F09B2583C /* AuthSessionRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthSessionRepository.swift; path = ../../DevLog/Domain/Protocol/AuthSessionRepository.swift; sourceTree = ""; }; + 328FC6A361021DBFC9C0FB3B /* UpsertStatusMessageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertStatusMessageUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCaseImpl.swift; sourceTree = ""; }; + 372106128F8BE30DDE0D41E7 /* SystemTodoCategory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SystemTodoCategory.swift; path = ../../DevLog/Domain/Entity/SystemTodoCategory.swift; sourceTree = ""; }; + 3D653CA5AFBA637461B27A7F /* FetchPushNotificationQueryUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationQueryUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift; sourceTree = ""; }; + 3F08F6B94839E9021FCFC466 /* DevLogDomain.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDomain.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 41B41F22B16C359A70312D77 /* ObserveAuthSessionUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveAuthSessionUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift; sourceTree = ""; }; + 42C7EE23A3F45CFA5C2F7ECE /* TodoCursor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCursor.swift; path = ../../DevLog/Domain/Entity/TodoCursor.swift; sourceTree = ""; }; + 44D430F73E1C4A9F5EC65263 /* UserDataRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDataRepository.swift; path = ../../DevLog/Domain/Protocol/UserDataRepository.swift; sourceTree = ""; }; + 45439A52C6F35B7655776A07 /* WebPageImageRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageRepository.swift; path = ../../DevLog/Domain/Protocol/WebPageImageRepository.swift; sourceTree = ""; }; + 4721FC0DF30EE97CCFD8AEB2 /* UpdateRecentSearchQueriesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateRecentSearchQueriesUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCase.swift; sourceTree = ""; }; + 49115FDA37F30A80D0756093 /* UpdateHeatmapActivityTypesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateHeatmapActivityTypesUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCase.swift; sourceTree = ""; }; + 4B6A80CB4CD95B3FE2463F52 /* FetchPushNotificationsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationsUseCase.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCase.swift; sourceTree = ""; }; + 4C1EF4E237E1F3BEDAB0B730 /* DeletePushNotificationUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeletePushNotificationUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCaseImpl.swift; sourceTree = ""; }; + 4C2EA32A4DF93B6F77789409 /* UnlinkAuthProviderUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UnlinkAuthProviderUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCase.swift; sourceTree = ""; }; + 4F7C774056C083FD3BDFEE92 /* DeleteAuthUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteAuthUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCaseImpl.swift; sourceTree = ""; }; + 517E1CF92FE5C7461C24F2F2 /* SignInUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignInUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/SignIn/SignInUseCase.swift; sourceTree = ""; }; + 522510AA4DD57769034B3A49 /* UndoDeleteTodoUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteTodoUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCaseImpl.swift; sourceTree = ""; }; + 56F3A28A8CE602EF8A5A12F7 /* FetchHeatmapActivityTypesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchHeatmapActivityTypesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCaseImpl.swift; sourceTree = ""; }; + 5E821078E0E30A646FFFC1F1 /* UpdateSystemThemeUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateSystemThemeUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCase.swift; sourceTree = ""; }; + 5EB6D6DDEED0E961F68CB3E3 /* UpdatePushSettingsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushSettingsUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCaseImpl.swift; sourceTree = ""; }; + 6357C21C07A2374530C5302B /* FetchAuthProvidersUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchAuthProvidersUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCaseImpl.swift; sourceTree = ""; }; + 64F3941915699B8D1DC2631A /* AuthenticationRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationRepository.swift; path = ../../DevLog/Domain/Protocol/AuthenticationRepository.swift; sourceTree = ""; }; + 658249EA021AFF8428B32FD0 /* TogglePushNotificationReadUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TogglePushNotificationReadUseCase.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCase.swift; sourceTree = ""; }; + 65FE1967BCA4B1FF8D517617 /* FetchPushNotificationSettingsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationSettingsUseCase.swift; path = ../../DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCase.swift; sourceTree = ""; }; + 68D7B585C369EADAEBE8A470 /* ObserveUnreadPushCountUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveUnreadPushCountUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCaseImpl.swift; sourceTree = ""; }; + 6C1F27652023B70495066F9E /* FetchUserDataUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchUserDataUseCase.swift; path = ../../DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCase.swift; sourceTree = ""; }; + 6D13DBD497C26307CEDEF65E /* UpdateTodayDisplayOptionsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodayDisplayOptionsUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCaseImpl.swift; sourceTree = ""; }; + 6D457ED2B8E1CA7C2E401DBB /* FetchTodayDisplayOptionsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodayDisplayOptionsUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCase.swift; sourceTree = ""; }; + 7255B9F0D6EA9A0D9C81F512 /* ObserveUnreadPushCountUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveUnreadPushCountUseCase.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCase.swift; sourceTree = ""; }; + 741F53346E83DDAB8912B25C /* PushNotificationCursor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationCursor.swift; path = ../../DevLog/Domain/Entity/PushNotificationCursor.swift; sourceTree = ""; }; + 746A826E7B24EF22A287ABC5 /* FetchTodayDisplayOptionsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodayDisplayOptionsUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCaseImpl.swift; sourceTree = ""; }; + 755AD7D03795F56790F1B378 /* DeleteAuthUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteAuthUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCase.swift; sourceTree = ""; }; + 759AFAA7929D8227152D0C09 /* UpdateTodoCategoryPreferencesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodoCategoryPreferencesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCaseImpl.swift; sourceTree = ""; }; + 7697A8469158261B1299B121 /* TodoCategory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategory.swift; path = ../../DevLog/Domain/Entity/TodoCategory.swift; sourceTree = ""; }; + 76BA71B47A419D205968A49D /* ClearWebPageImageDirectoryUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ClearWebPageImageDirectoryUseCase.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCase.swift; sourceTree = ""; }; + 7CCD260120C0B0358DA09105 /* TodoRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoRepository.swift; path = ../../DevLog/Domain/Protocol/TodoRepository.swift; sourceTree = ""; }; + 7CE5DDD90F87E43F27311D31 /* UIFont.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIFont.swift; path = ../../DevLog/Domain/Extension/UIFont.swift; sourceTree = ""; }; + 7EBE5CCA6FD562D1FD4E3DC0 /* UnlinkAuthProviderUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UnlinkAuthProviderUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCaseImpl.swift; sourceTree = ""; }; + 83B40B6FE8272B804E1C7712 /* Array.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Array.swift; path = ../../DevLog/Domain/Extension/Array.swift; sourceTree = ""; }; + 8ADDC57ACEBB9CEB3FCD3F80 /* ObserveSystemThemeUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveSystemThemeUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCase.swift; sourceTree = ""; }; + 8B7A3642B89C1CA241B6AADF /* SignOutUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignOutUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCaseImpl.swift; sourceTree = ""; }; + 8B831790BFE85097FB9034BD /* ObserveAuthSessionUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveAuthSessionUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCaseImpl.swift; sourceTree = ""; }; + 8FD502CE4EB95263D32AF23E /* FetchTodosUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodosUseCase.swift; path = ../../DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCase.swift; sourceTree = ""; }; + 9161CF59F34F6666BDD773A8 /* FetchRecentSearchQueriesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchRecentSearchQueriesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCaseImpl.swift; sourceTree = ""; }; + 931E348B8445B611C6486B0D /* UndoDeleteWebPageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteWebPageUseCase.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift; sourceTree = ""; }; + 9594B66FCEF77D951B887634 /* DeleteWebPageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteWebPageUseCase.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift; sourceTree = ""; }; + 975B88E82CD480E408410A60 /* FetchAuthProvidersUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchAuthProvidersUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift; sourceTree = ""; }; + 9B2B36142EDE421CE4CAF82E /* UpdateRecentSearchQueriesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateRecentSearchQueriesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift; sourceTree = ""; }; + A0FB230E9723243D9C16E1C3 /* UpdatePushSettingsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushSettingsUseCase.swift; path = ../../DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift; sourceTree = ""; }; + A10FD608ACEAFA303C7743BA /* DeletePushNotificationUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeletePushNotificationUseCase.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift; sourceTree = ""; }; + A22B34E1AF11D76CE7171CE7 /* LinkAuthProviderUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinkAuthProviderUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCaseImpl.swift; sourceTree = ""; }; + A2632BB4BB4A6F4FA74B2CC6 /* UpdatePushNotificationQueryUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushNotificationQueryUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCase.swift; sourceTree = ""; }; + A275ADD90916E0CD19E658A1 /* FetchPushNotificationsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationsUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCaseImpl.swift; sourceTree = ""; }; + A32E327BE5F24582BDE808DE /* UserProfile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserProfile.swift; path = ../../DevLog/Domain/Entity/UserProfile.swift; sourceTree = ""; }; + A403DFBCDB028B255F8B9EC5 /* FetchReferenceItemsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchReferenceItemsUseCase.swift; path = ../../DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCase.swift; sourceTree = ""; }; + A5CEE90FC2BA6B2E4F9B5B2E /* UpdatePushNotificationQueryUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushNotificationQueryUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCaseImpl.swift; sourceTree = ""; }; + A86771BA0A9014E81E93B8C0 /* PushNotificationSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettings.swift; path = ../../DevLog/Domain/Entity/PushNotificationSettings.swift; sourceTree = ""; }; + AB02651AFF3D9DE27351DA7B /* DeleteTodoUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteTodoUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCaseImpl.swift; sourceTree = ""; }; + AD49CB792C5CCA040D99F1CD /* FetchTodoByIDUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoByIDUseCase.swift; path = ../../DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCase.swift; sourceTree = ""; }; + B306337D1C6C39407105B783 /* UpdateSystemThemeUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateSystemThemeUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCaseImpl.swift; sourceTree = ""; }; + B3E4B6613C6FA82D6772ED06 /* FetchRecentSearchQueriesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchRecentSearchQueriesUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCase.swift; sourceTree = ""; }; + B498CD874F5AE906BB27898F /* FetchPushNotificationQueryUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationQueryUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCaseImpl.swift; sourceTree = ""; }; + B663E911F22760A9B0C71DA6 /* FetchWebPageImageDirSizeUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPageImageDirSizeUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCaseImpl.swift; sourceTree = ""; }; + B843042D7E2BCD42C7DD3FE4 /* TodoCategoryRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryRepository.swift; path = ../../DevLog/Domain/Protocol/TodoCategoryRepository.swift; sourceTree = ""; }; + C18AFE080D0761AFF8D82FC5 /* FetchWebPagesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPagesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCaseImpl.swift; sourceTree = ""; }; + C1914B9FD743F5AC5E82A431 /* TodoReference.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReference.swift; path = ../../DevLog/Domain/Entity/TodoReference.swift; sourceTree = ""; }; + C46B06C77D7DB705ECED40A6 /* PushNotificationQuery.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationQuery.swift; path = ../../DevLog/Domain/Entity/PushNotificationQuery.swift; sourceTree = ""; }; + C482DCAC8527FFE9767388C8 /* PushNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotification.swift; path = ../../DevLog/Domain/Entity/PushNotification.swift; sourceTree = ""; }; + C6606DC27F4AC1B348D9A499 /* UserPreferencesRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserPreferencesRepository.swift; path = ../../DevLog/Domain/Protocol/UserPreferencesRepository.swift; sourceTree = ""; }; + C766DC43AFC8A07B1E009FF1 /* LinkAuthProviderUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinkAuthProviderUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCase.swift; sourceTree = ""; }; + CCF9FBE3E5B1E3AF0A65F342 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + D01987DD2F38CF633D3C4162 /* FetchTodosUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodosUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCaseImpl.swift; sourceTree = ""; }; + D310014E8ACFC3A55D3B83B3 /* UndoDeleteWebPageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteWebPageUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCaseImpl.swift; sourceTree = ""; }; + D3C71ECDDDA08716A716D9B2 /* ActivityKind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ActivityKind.swift; path = ../../DevLog/Domain/Entity/ActivityKind.swift; sourceTree = ""; }; + D9956BD2EFBA1679FF20ED65 /* FetchWebPageImageDirSizeUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPageImageDirSizeUseCase.swift; path = ../../DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCase.swift; sourceTree = ""; }; + DA4EC8FBD39E0AEF21117F7C /* FetchReferenceItemsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchReferenceItemsUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCaseImpl.swift; sourceTree = ""; }; + DA4F782752735905BE93CD95 /* UpdateHeatmapActivityTypesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateHeatmapActivityTypesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCaseImpl.swift; sourceTree = ""; }; + DB6B0536F975D3FE76D0B58F /* AddWebPageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AddWebPageUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCaseImpl.swift; sourceTree = ""; }; + DD0C8F7B1FB7DE7DD17C99BE /* DeleteTodoUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteTodoUseCase.swift; path = ../../DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCase.swift; sourceTree = ""; }; + DD23C531988288EA45977604 /* FetchUserDataUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchUserDataUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCaseImpl.swift; sourceTree = ""; }; + E22EE946DD06C2BDA66070D5 /* FetchHeatmapActivityTypesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchHeatmapActivityTypesUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCase.swift; sourceTree = ""; }; + E4ED6069D8B0C24A2C3E295C /* UpdateTodoCategoryPreferencesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodoCategoryPreferencesUseCase.swift; path = ../../DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift; sourceTree = ""; }; + E8C9C99957DF94BCF349AEE8 /* TodoPage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoPage.swift; path = ../../DevLog/Domain/Entity/TodoPage.swift; sourceTree = ""; }; + EFCB23F0E622C1872DA543DB /* TogglePushNotificationReadUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TogglePushNotificationReadUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift; sourceTree = ""; }; + F0378EC4E10380BAE247185B /* FetchWebPagesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPagesUseCase.swift; path = ../../DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift; sourceTree = ""; }; + F276F5D3E9AD8963189E58AC /* DeleteWebPageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteWebPageUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift; sourceTree = ""; }; + F28AC36CBBB716A8B3C6FDDD /* WebPageRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageRepository.swift; path = ../../DevLog/Domain/Protocol/WebPageRepository.swift; sourceTree = ""; }; + F528B902B4AC945DE2357AF4 /* TodoQuery.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoQuery.swift; path = ../../DevLog/Domain/Entity/TodoQuery.swift; sourceTree = ""; }; + F5AFD6F6E1DDE50BC837955F /* UserTodoCategory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserTodoCategory.swift; path = ../../DevLog/Domain/Entity/UserTodoCategory.swift; sourceTree = ""; }; + F6452B0B4E524F90595D77FD /* SystemTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SystemTheme.swift; path = ../../DevLog/Domain/Entity/SystemTheme.swift; sourceTree = ""; }; + F9A9B5170723706520E75DC7 /* AuthProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthProvider.swift; path = ../../DevLog/Domain/Entity/AuthProvider.swift; sourceTree = ""; }; + F9F4C2B618DA0B796EC02CF4 /* AddWebPageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AddWebPageUseCase.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCase.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 1DB051D810852AA9B9A7AA3A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5044FDD5ED149194C21F45DD /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 40116A7CE17130969F51069D /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8FA83A83534627957C480771 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 534E4B81FFFA3D0023139ACE /* DevLogDomain */ = { + isa = PBXGroup; + children = ( + D3C71ECDDDA08716A716D9B2 /* ActivityKind.swift */, + F9A9B5170723706520E75DC7 /* AuthProvider.swift */, + C482DCAC8527FFE9767388C8 /* PushNotification.swift */, + 741F53346E83DDAB8912B25C /* PushNotificationCursor.swift */, + 1DBC9D7FFF5FC58F5EE67A4E /* PushNotificationPage.swift */, + C46B06C77D7DB705ECED40A6 /* PushNotificationQuery.swift */, + A86771BA0A9014E81E93B8C0 /* PushNotificationSettings.swift */, + F6452B0B4E524F90595D77FD /* SystemTheme.swift */, + 372106128F8BE30DDE0D41E7 /* SystemTodoCategory.swift */, + 087434742ED1FAA4546120B9 /* TodayDisplayOptions.swift */, + 07865C391ACEC35BD969A730 /* Todo.swift */, + 7697A8469158261B1299B121 /* TodoCategory.swift */, + 06CE556F368F3FFB8F45D19B /* TodoCategoryPreference.swift */, + 42C7EE23A3F45CFA5C2F7ECE /* TodoCursor.swift */, + E8C9C99957DF94BCF349AEE8 /* TodoPage.swift */, + F528B902B4AC945DE2357AF4 /* TodoQuery.swift */, + C1914B9FD743F5AC5E82A431 /* TodoReference.swift */, + A32E327BE5F24582BDE808DE /* UserProfile.swift */, + F5AFD6F6E1DDE50BC837955F /* UserTodoCategory.swift */, + 1290A4B9F0ED6ABFABC5749D /* WebPage.swift */, + 83B40B6FE8272B804E1C7712 /* Array.swift */, + 05D14CAC89969BC5FB42B8D1 /* String.swift */, + 7CE5DDD90F87E43F27311D31 /* UIFont.swift */, + 1725CFBBBCE02A2C5412C24D /* AuthDataRepository.swift */, + 323A45003F23C91F09B2583C /* AuthSessionRepository.swift */, + 64F3941915699B8D1DC2631A /* AuthenticationRepository.swift */, + 090C424EC663DC420E210405 /* NetworkConnectivityRepository.swift */, + 1DE514CE1D81A91A79B3F483 /* PushNotificationRepository.swift */, + B843042D7E2BCD42C7DD3FE4 /* TodoCategoryRepository.swift */, + 7CCD260120C0B0358DA09105 /* TodoRepository.swift */, + 44D430F73E1C4A9F5EC65263 /* UserDataRepository.swift */, + C6606DC27F4AC1B348D9A499 /* UserPreferencesRepository.swift */, + 45439A52C6F35B7655776A07 /* WebPageImageRepository.swift */, + F28AC36CBBB716A8B3C6FDDD /* WebPageRepository.swift */, + 755AD7D03795F56790F1B378 /* DeleteAuthUseCase.swift */, + 4F7C774056C083FD3BDFEE92 /* DeleteAuthUseCaseImpl.swift */, + 975B88E82CD480E408410A60 /* FetchAuthProvidersUseCase.swift */, + 6357C21C07A2374530C5302B /* FetchAuthProvidersUseCaseImpl.swift */, + C766DC43AFC8A07B1E009FF1 /* LinkAuthProviderUseCase.swift */, + A22B34E1AF11D76CE7171CE7 /* LinkAuthProviderUseCaseImpl.swift */, + 4C2EA32A4DF93B6F77789409 /* UnlinkAuthProviderUseCase.swift */, + 7EBE5CCA6FD562D1FD4E3DC0 /* UnlinkAuthProviderUseCaseImpl.swift */, + 41B41F22B16C359A70312D77 /* ObserveAuthSessionUseCase.swift */, + 8B831790BFE85097FB9034BD /* ObserveAuthSessionUseCaseImpl.swift */, + 517E1CF92FE5C7461C24F2F2 /* SignInUseCase.swift */, + 2B41302357AD2793E8F75E88 /* SignInUseCaseImpl.swift */, + 1A4B3291A774346C97DDCA02 /* SignOutUseCase.swift */, + 8B7A3642B89C1CA241B6AADF /* SignOutUseCaseImpl.swift */, + 2E2D323E5EAF19D03C4BFAD0 /* ObserveNetworkConnectivityUseCase.swift */, + 12F96A31F7367B2BFA3F8226 /* ObserveNetworkConnectivityUseCaseImpl.swift */, + A10FD608ACEAFA303C7743BA /* DeletePushNotificationUseCase.swift */, + 4C1EF4E237E1F3BEDAB0B730 /* DeletePushNotificationUseCaseImpl.swift */, + 1ADECD2AC2EA5C3AF0567E21 /* UndoDeletePushNotificationUseCase.swift */, + 03910A114D3321A63F692113 /* UndoDeletePushNotificationUseCaseImpl.swift */, + 4B6A80CB4CD95B3FE2463F52 /* FetchPushNotificationsUseCase.swift */, + A275ADD90916E0CD19E658A1 /* FetchPushNotificationsUseCaseImpl.swift */, + 7255B9F0D6EA9A0D9C81F512 /* ObserveUnreadPushCountUseCase.swift */, + 68D7B585C369EADAEBE8A470 /* ObserveUnreadPushCountUseCaseImpl.swift */, + 658249EA021AFF8428B32FD0 /* TogglePushNotificationReadUseCase.swift */, + EFCB23F0E622C1872DA543DB /* TogglePushNotificationReadUseCaseImpl.swift */, + DD0C8F7B1FB7DE7DD17C99BE /* DeleteTodoUseCase.swift */, + AB02651AFF3D9DE27351DA7B /* DeleteTodoUseCaseImpl.swift */, + 0E6726827D53639E678488EE /* UndoDeleteTodoUseCase.swift */, + 522510AA4DD57769034B3A49 /* UndoDeleteTodoUseCaseImpl.swift */, + A403DFBCDB028B255F8B9EC5 /* FetchReferenceItemsUseCase.swift */, + DA4EC8FBD39E0AEF21117F7C /* FetchReferenceItemsUseCaseImpl.swift */, + AD49CB792C5CCA040D99F1CD /* FetchTodoByIDUseCase.swift */, + 0DD73A331A61A27A1A9BDFD0 /* FetchTodoByIDUseCaseImpl.swift */, + 8FD502CE4EB95263D32AF23E /* FetchTodosUseCase.swift */, + D01987DD2F38CF633D3C4162 /* FetchTodosUseCaseImpl.swift */, + 127C20813795B0B77A99F955 /* UpsertTodoUseCase.swift */, + 1B484D427B8653E772AB4156 /* UpsertTodoUseCaseImpl.swift */, + 11B14A760F12F75DD433E6E3 /* FetchTodoCategoryPreferencesUseCase.swift */, + 0135F093DDF8F5DB4D320010 /* FetchTodoCategoryPreferencesUseCaseImpl.swift */, + E4ED6069D8B0C24A2C3E295C /* UpdateTodoCategoryPreferencesUseCase.swift */, + 759AFAA7929D8227152D0C09 /* UpdateTodoCategoryPreferencesUseCaseImpl.swift */, + 65FE1967BCA4B1FF8D517617 /* FetchPushNotificationSettingsUseCase.swift */, + 1CF1E8DC279C84BE986E2296 /* FetchPushNotificationSettingsUseCaseImpl.swift */, + 6C1F27652023B70495066F9E /* FetchUserDataUseCase.swift */, + DD23C531988288EA45977604 /* FetchUserDataUseCaseImpl.swift */, + A0FB230E9723243D9C16E1C3 /* UpdatePushSettingsUseCase.swift */, + 5EB6D6DDEED0E961F68CB3E3 /* UpdatePushSettingsUseCaseImpl.swift */, + 015FCD58DFE25D15A98767DD /* UpsertStatusMessageUseCase.swift */, + 328FC6A361021DBFC9C0FB3B /* UpsertStatusMessageUseCaseImpl.swift */, + E22EE946DD06C2BDA66070D5 /* FetchHeatmapActivityTypesUseCase.swift */, + 56F3A28A8CE602EF8A5A12F7 /* FetchHeatmapActivityTypesUseCaseImpl.swift */, + 49115FDA37F30A80D0756093 /* UpdateHeatmapActivityTypesUseCase.swift */, + DA4F782752735905BE93CD95 /* UpdateHeatmapActivityTypesUseCaseImpl.swift */, + 3D653CA5AFBA637461B27A7F /* FetchPushNotificationQueryUseCase.swift */, + B498CD874F5AE906BB27898F /* FetchPushNotificationQueryUseCaseImpl.swift */, + A2632BB4BB4A6F4FA74B2CC6 /* UpdatePushNotificationQueryUseCase.swift */, + A5CEE90FC2BA6B2E4F9B5B2E /* UpdatePushNotificationQueryUseCaseImpl.swift */, + B3E4B6613C6FA82D6772ED06 /* FetchRecentSearchQueriesUseCase.swift */, + 9161CF59F34F6666BDD773A8 /* FetchRecentSearchQueriesUseCaseImpl.swift */, + 4721FC0DF30EE97CCFD8AEB2 /* UpdateRecentSearchQueriesUseCase.swift */, + 9B2B36142EDE421CE4CAF82E /* UpdateRecentSearchQueriesUseCaseImpl.swift */, + 8ADDC57ACEBB9CEB3FCD3F80 /* ObserveSystemThemeUseCase.swift */, + 01351069EBDFEFE9BEB4E26F /* ObserveSystemThemeUseCaseImpl.swift */, + 5E821078E0E30A646FFFC1F1 /* UpdateSystemThemeUseCase.swift */, + B306337D1C6C39407105B783 /* UpdateSystemThemeUseCaseImpl.swift */, + 6D457ED2B8E1CA7C2E401DBB /* FetchTodayDisplayOptionsUseCase.swift */, + 746A826E7B24EF22A287ABC5 /* FetchTodayDisplayOptionsUseCaseImpl.swift */, + 0F9677D48BA38AB69BE26D3A /* UpdateTodayDisplayOptionsUseCase.swift */, + 6D13DBD497C26307CEDEF65E /* UpdateTodayDisplayOptionsUseCaseImpl.swift */, + D9956BD2EFBA1679FF20ED65 /* FetchWebPageImageDirSizeUseCase.swift */, + B663E911F22760A9B0C71DA6 /* FetchWebPageImageDirSizeUseCaseImpl.swift */, + F0378EC4E10380BAE247185B /* FetchWebPagesUseCase.swift */, + C18AFE080D0761AFF8D82FC5 /* FetchWebPagesUseCaseImpl.swift */, + F9F4C2B618DA0B796EC02CF4 /* AddWebPageUseCase.swift */, + DB6B0536F975D3FE76D0B58F /* AddWebPageUseCaseImpl.swift */, + 76BA71B47A419D205968A49D /* ClearWebPageImageDirectoryUseCase.swift */, + 01DC43DAB9ACFA7C5A237F91 /* ClearWebPageImageDirectoryUseCaseImpl.swift */, + 9594B66FCEF77D951B887634 /* DeleteWebPageUseCase.swift */, + F276F5D3E9AD8963189E58AC /* DeleteWebPageUseCaseImpl.swift */, + 931E348B8445B611C6486B0D /* UndoDeleteWebPageUseCase.swift */, + D310014E8ACFC3A55D3B83B3 /* UndoDeleteWebPageUseCaseImpl.swift */, + ); + name = DevLogDomain; + sourceTree = ""; + }; + 63B68BC59AF32C52B6CBF85B = { + isa = PBXGroup; + children = ( + B4BFBC14E31354BAE25BA2A4 /* Products */, + 40116A7CE17130969F51069D /* Frameworks */, + 534E4B81FFFA3D0023139ACE /* DevLogDomain */, + ); + sourceTree = ""; + }; + 8FA83A83534627957C480771 /* iOS */ = { + isa = PBXGroup; + children = ( + CCF9FBE3E5B1E3AF0A65F342 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + B4BFBC14E31354BAE25BA2A4 /* Products */ = { + isa = PBXGroup; + children = ( + 3F08F6B94839E9021FCFC466 /* DevLogDomain.framework */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + E732AB314789E68442B7D81B /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 7D1E74925088998D68BBFBBB /* DevLogDomain */ = { + isa = PBXNativeTarget; + buildConfigurationList = A1CC6382BF27FF25C0A22374 /* Build configuration list for PBXNativeTarget "DevLogDomain" */; + buildPhases = ( + E732AB314789E68442B7D81B /* Headers */, + 1B05160EC8564CFF74EEA733 /* Sources */, + 1DB051D810852AA9B9A7AA3A /* Frameworks */, + 0A4716162D54F03993DEF290 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DevLogDomain; + productName = DevLogDomain; + productReference = 3F08F6B94839E9021FCFC466 /* DevLogDomain.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3D911168F99784261C777CF5 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1600; + LastUpgradeCheck = 1600; + }; + buildConfigurationList = 6AF8ED1DC9D941A4993FB61A /* Build configuration list for PBXProject "DevLogDomain" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 63B68BC59AF32C52B6CBF85B; + minimizedProjectReferenceProxies = 0; + preferredProjectObjectVersion = 77; + productRefGroup = B4BFBC14E31354BAE25BA2A4 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 7D1E74925088998D68BBFBBB /* DevLogDomain */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 0A4716162D54F03993DEF290 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 1B05160EC8564CFF74EEA733 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7B8CBBEFB51817FB36B0F02E /* ActivityKind.swift in Sources */, + 6CCA27E186BA818C36FCD69A /* AuthProvider.swift in Sources */, + A7A49D396929B3C1DBBEE572 /* PushNotification.swift in Sources */, + 923BA6345B44D68CB47C7CA4 /* PushNotificationCursor.swift in Sources */, + 4A5C4124502517F0676BBC3B /* PushNotificationPage.swift in Sources */, + 3538938461FB8751B7619868 /* PushNotificationQuery.swift in Sources */, + FC9F3DE1D0F3D83CF07D4935 /* PushNotificationSettings.swift in Sources */, + AA27593C59ED7E2986F105EA /* SystemTheme.swift in Sources */, + E36F4A98939F682531D0CA91 /* SystemTodoCategory.swift in Sources */, + DC143314307BD56F77168430 /* TodayDisplayOptions.swift in Sources */, + 9CBFACE0CB9571165174A67C /* Todo.swift in Sources */, + 7DE9D23DA294DD0A2E247B55 /* TodoCategory.swift in Sources */, + 27C80F06F67D4606F453428D /* TodoCategoryPreference.swift in Sources */, + B30B01550E49D790EB32B4B3 /* TodoCursor.swift in Sources */, + 229C3C65B5BFA9D321C32D66 /* TodoPage.swift in Sources */, + 73969D227D8103F45DFD546D /* TodoQuery.swift in Sources */, + B5798D25566FD92076495381 /* TodoReference.swift in Sources */, + B48976B9D062D57641F8C4E5 /* UserProfile.swift in Sources */, + D58ADC81E147FECD6C45361C /* UserTodoCategory.swift in Sources */, + 95775E70F0CE8D51926B1C48 /* WebPage.swift in Sources */, + E64278EB4572582E17FED172 /* Array.swift in Sources */, + DD4F8EC25943435D6F52A31E /* String.swift in Sources */, + 6941CE2F8E390A78BA99EB2F /* UIFont.swift in Sources */, + 94D084B5F6D7619C4A7B2219 /* AuthDataRepository.swift in Sources */, + BAA7BD8E41F339D1F1F7156E /* AuthSessionRepository.swift in Sources */, + 45E4D220F9E732145F948770 /* AuthenticationRepository.swift in Sources */, + ECCE25C418E13D89F87019B3 /* NetworkConnectivityRepository.swift in Sources */, + 4386CBF280D5088E8248EB99 /* PushNotificationRepository.swift in Sources */, + 39B28A327CBC789667F04D41 /* TodoCategoryRepository.swift in Sources */, + 64E2F2A55DA11EB4CE6E82A0 /* TodoRepository.swift in Sources */, + 68B2F1A68013784767C7BDA8 /* UserDataRepository.swift in Sources */, + 3CBE85905AD871CC3C44E051 /* UserPreferencesRepository.swift in Sources */, + AE174F1C75E803E01819CC57 /* WebPageImageRepository.swift in Sources */, + F90BFB71ECDDF9E5FAE80AC4 /* WebPageRepository.swift in Sources */, + 1C75BDBB2E374297B78CE42B /* DeleteAuthUseCase.swift in Sources */, + 531F0ED95CDF89C7DFBF4261 /* DeleteAuthUseCaseImpl.swift in Sources */, + B549A6618BFA8B4C25BE6C38 /* FetchAuthProvidersUseCase.swift in Sources */, + 95FB57C79E74093F46210B6A /* FetchAuthProvidersUseCaseImpl.swift in Sources */, + 3A5FD27711863BD4A073DCDA /* LinkAuthProviderUseCase.swift in Sources */, + B65F8040161BBDA088DAE4E0 /* LinkAuthProviderUseCaseImpl.swift in Sources */, + 97D8B6B04A501BA4CD80F6A9 /* UnlinkAuthProviderUseCase.swift in Sources */, + 552FC32730FADECA9E2D7CA6 /* UnlinkAuthProviderUseCaseImpl.swift in Sources */, + F5EB9F580779123FEC284F24 /* ObserveAuthSessionUseCase.swift in Sources */, + 26A45B87761951B2EA27F4EE /* ObserveAuthSessionUseCaseImpl.swift in Sources */, + 79E0CF57B7A79A24A2D7C030 /* SignInUseCase.swift in Sources */, + E2F63B8E23E940C4C2029551 /* SignInUseCaseImpl.swift in Sources */, + 2B3BC20D91E8D473D561BFF1 /* SignOutUseCase.swift in Sources */, + 616D10488AF4F02D83FEA18B /* SignOutUseCaseImpl.swift in Sources */, + AA911F852FE29E79F044E65B /* ObserveNetworkConnectivityUseCase.swift in Sources */, + 98BD52ADE79F7AE22FB24EA8 /* ObserveNetworkConnectivityUseCaseImpl.swift in Sources */, + 2F969DD3AEC2016D02C0CAFB /* DeletePushNotificationUseCase.swift in Sources */, + E86597628CDA7E10629F9AF0 /* DeletePushNotificationUseCaseImpl.swift in Sources */, + 2FFDF36BE7DA3E87BCFEF5EE /* UndoDeletePushNotificationUseCase.swift in Sources */, + FC43C025719D63AC2FEAA0D2 /* UndoDeletePushNotificationUseCaseImpl.swift in Sources */, + AB1782B2496741C30BAE8E6F /* FetchPushNotificationsUseCase.swift in Sources */, + 5ECD88BAC2FC629FA728DAA7 /* FetchPushNotificationsUseCaseImpl.swift in Sources */, + 2A7E0A650CD20BDB7B98EB5B /* ObserveUnreadPushCountUseCase.swift in Sources */, + E2FD30DB60B1100C314EDF49 /* ObserveUnreadPushCountUseCaseImpl.swift in Sources */, + CA0EDC37863EDE2D84BA8C3F /* TogglePushNotificationReadUseCase.swift in Sources */, + 12DF4FA2C79E207DF02D10C8 /* TogglePushNotificationReadUseCaseImpl.swift in Sources */, + EB38589556DD66BE814CC14C /* DeleteTodoUseCase.swift in Sources */, + EBFD8EF52239AC36A06AEED5 /* DeleteTodoUseCaseImpl.swift in Sources */, + 813B6E20C071E2CEFF275AC9 /* UndoDeleteTodoUseCase.swift in Sources */, + 63AAD7A1FD3A07C488DC96A5 /* UndoDeleteTodoUseCaseImpl.swift in Sources */, + 740D49EA35D555A5CC0B740C /* FetchReferenceItemsUseCase.swift in Sources */, + E8BE91D227BD0BC968C04EDD /* FetchReferenceItemsUseCaseImpl.swift in Sources */, + F64684F5611E3547CDE5C12B /* FetchTodoByIDUseCase.swift in Sources */, + 28CD152E23FB7D94C516B81A /* FetchTodoByIDUseCaseImpl.swift in Sources */, + 3FDB964402AD30FD463379A6 /* FetchTodosUseCase.swift in Sources */, + 83B834C10753628FAA84B4B9 /* FetchTodosUseCaseImpl.swift in Sources */, + 4BF41C43A47CEB3151674757 /* UpsertTodoUseCase.swift in Sources */, + A6DA6F5726BCB6404A5A9B93 /* UpsertTodoUseCaseImpl.swift in Sources */, + 461ED28ED0266D0A247AFB5E /* FetchTodoCategoryPreferencesUseCase.swift in Sources */, + 61878C15C1889E13E16C0C35 /* FetchTodoCategoryPreferencesUseCaseImpl.swift in Sources */, + 93FA660D3518C64F541F2990 /* UpdateTodoCategoryPreferencesUseCase.swift in Sources */, + DDCC1EF77FF676BF55920294 /* UpdateTodoCategoryPreferencesUseCaseImpl.swift in Sources */, + 76DE905274DA17536AC07024 /* FetchPushNotificationSettingsUseCase.swift in Sources */, + DE533613F55F517E74FAAAB1 /* FetchPushNotificationSettingsUseCaseImpl.swift in Sources */, + DD2EDF7A517D0B96BD33EECF /* FetchUserDataUseCase.swift in Sources */, + 3D951E5FD03D60E4994EF109 /* FetchUserDataUseCaseImpl.swift in Sources */, + 1DF07B23A72AA6D0CD7D7F2E /* UpdatePushSettingsUseCase.swift in Sources */, + C9165FE5B452A1918267DF33 /* UpdatePushSettingsUseCaseImpl.swift in Sources */, + 12AB338C5D8E4CF3546D1717 /* UpsertStatusMessageUseCase.swift in Sources */, + 12AF5699CB1F8EBB8A7CD084 /* UpsertStatusMessageUseCaseImpl.swift in Sources */, + 50063A8EF58B57D05389736B /* FetchHeatmapActivityTypesUseCase.swift in Sources */, + 9B6EB6778E867A48B426F879 /* FetchHeatmapActivityTypesUseCaseImpl.swift in Sources */, + 20078F5D83F56D1E8142069F /* UpdateHeatmapActivityTypesUseCase.swift in Sources */, + F32D2C5951FFFEF2F3F997E1 /* UpdateHeatmapActivityTypesUseCaseImpl.swift in Sources */, + 3DF939929E9A941D7ED40AC0 /* FetchPushNotificationQueryUseCase.swift in Sources */, + 120C2A8316793FDC3B58FE4E /* FetchPushNotificationQueryUseCaseImpl.swift in Sources */, + 7F594B5105F64EBDEF77CC58 /* UpdatePushNotificationQueryUseCase.swift in Sources */, + 355E9E3FFA1677FE95ED4563 /* UpdatePushNotificationQueryUseCaseImpl.swift in Sources */, + 21C2857E902A9E9CFED4F068 /* FetchRecentSearchQueriesUseCase.swift in Sources */, + 87E3984F704DB3DD242781C0 /* FetchRecentSearchQueriesUseCaseImpl.swift in Sources */, + 6E9DF84535092F43786277E9 /* UpdateRecentSearchQueriesUseCase.swift in Sources */, + 54909F981153B44A6FCB22B8 /* UpdateRecentSearchQueriesUseCaseImpl.swift in Sources */, + A45F34DFB63505AEFE69C779 /* ObserveSystemThemeUseCase.swift in Sources */, + F05108AAD731A853913692DF /* ObserveSystemThemeUseCaseImpl.swift in Sources */, + 077096D1600C7389AE494C8D /* UpdateSystemThemeUseCase.swift in Sources */, + 53274984357FD12A65AC1E6C /* UpdateSystemThemeUseCaseImpl.swift in Sources */, + E555D345939E00BA066CEB77 /* FetchTodayDisplayOptionsUseCase.swift in Sources */, + B0BB7AF1F85E5A34C56DE91D /* FetchTodayDisplayOptionsUseCaseImpl.swift in Sources */, + F1696E21D1CDFC2BD8BFE7FF /* UpdateTodayDisplayOptionsUseCase.swift in Sources */, + 32753194C414A26FAA93C52A /* UpdateTodayDisplayOptionsUseCaseImpl.swift in Sources */, + 1C2FF673C40594AB218ABEF3 /* FetchWebPageImageDirSizeUseCase.swift in Sources */, + 54A5D9233AB679479EC9BCDD /* FetchWebPageImageDirSizeUseCaseImpl.swift in Sources */, + CF3DE7F5DBF9C56338003090 /* FetchWebPagesUseCase.swift in Sources */, + B448FD7380BD53ECE50FC1F6 /* FetchWebPagesUseCaseImpl.swift in Sources */, + 108705FB292C48F626E0A5C9 /* AddWebPageUseCase.swift in Sources */, + 71BAC4D47D7B9351E59745F0 /* AddWebPageUseCaseImpl.swift in Sources */, + A62783C62DEFCF74833A1EF1 /* ClearWebPageImageDirectoryUseCase.swift in Sources */, + 2760C338F0C3FAF88A5789E0 /* ClearWebPageImageDirectoryUseCaseImpl.swift in Sources */, + 14D9C7664DD4100049B9F74E /* DeleteWebPageUseCase.swift in Sources */, + 9D39B3BEA4F1EC0A7AEB4927 /* DeleteWebPageUseCaseImpl.swift in Sources */, + E821A95E218A4B131EAF7906 /* UndoDeleteWebPageUseCase.swift in Sources */, + 4DF153046EACFF1116D0B084 /* UndoDeleteWebPageUseCaseImpl.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 3A4C7479653B809907982EE0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + CADEDB342CB3262319BD2DCA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + CE7099C63D3B75B186422932 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDomain; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + F0EB74E2AA0977D6CB2E3A56 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDomain; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6AF8ED1DC9D941A4993FB61A /* Build configuration list for PBXProject "DevLogDomain" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3A4C7479653B809907982EE0 /* Debug */, + CADEDB342CB3262319BD2DCA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A1CC6382BF27FF25C0A22374 /* Build configuration list for PBXNativeTarget "DevLogDomain" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F0EB74E2AA0977D6CB2E3A56 /* Release */, + CE7099C63D3B75B186422932 /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3D911168F99784261C777CF5 /* Project object */; +} diff --git a/Projects/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomain.xcscheme b/Projects/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomain.xcscheme new file mode 100644 index 00000000..b1faeb76 --- /dev/null +++ b/Projects/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomain.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj b/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj new file mode 100644 index 00000000..0b929ab4 --- /dev/null +++ b/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj @@ -0,0 +1,403 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0E1D2D0391955DAAAEB0090F /* PushNotificationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */; }; + 1F4B40F21FD77E3BB481E763 /* GithubAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */; }; + 3A2B4478D6F3438C00240EB4 /* GoogleAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */; }; + 4A36236096C643DA1FF29771 /* UserServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 383CD000472C3025FACB9EFF /* UserServiceImpl.swift */; }; + 5C3D4AB0EA1E2DA901239A6C /* FirestorePath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */; }; + 6493ACB77436F1E887D91D59 /* FirebaseAuthUser+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59E81A47825142881793450F /* FirebaseAuthUser+.swift */; }; + 65478CAC7F8597445F84F656 /* TodoServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */; }; + 6F30F7AD6A048E8ED847D123 /* AuthServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */; }; + 6FCB70DE3225AFA821300AC7 /* InfraLayerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */; }; + 70CDB738E0DE3895B7539B16 /* WebPageMetadataServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EB8D1DB924582822B68442 /* WebPageMetadataServiceImpl.swift */; }; + 87F2CCAD35FD485467397CCC /* WebPageServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */; }; + 93D79429D184808FB702BF2D /* AppleAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E56286B1275FC5BD988C94B /* AppleAuthenticationServiceImpl.swift */; }; + 9529B735E38CE98A8EC12AC3 /* TopViewControllerProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED31F0EEEF764BB7538C585 /* TopViewControllerProvider.swift */; }; + D6A1524366DC5CF153821979 /* NWPathConnectivityProviderImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */; }; + EA3F834C61E50B4F60789473 /* TodoCategoryServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */; }; + F75AA9259C6636CF733C4D82 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */; }; + FE130A3E1E85658BD3ECE791 /* FirebaseFunctions+.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9AFF9DAE09B8132A62D6DA8 /* FirebaseFunctions+.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GithubAuthenticationServiceImpl.swift; path = ../../DevLog/Infra/Service/SocialLogin/GithubAuthenticationServiceImpl.swift; sourceTree = ""; }; + 34EB8D1DB924582822B68442 /* WebPageMetadataServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataServiceImpl.swift; path = ../../DevLog/Infra/Service/WebPageMetadataServiceImpl.swift; sourceTree = ""; }; + 383CD000472C3025FACB9EFF /* UserServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserServiceImpl.swift; path = ../../DevLog/Infra/Service/UserServiceImpl.swift; sourceTree = ""; }; + 3E56286B1275FC5BD988C94B /* AppleAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppleAuthenticationServiceImpl.swift; path = ../../DevLog/Infra/Service/SocialLogin/AppleAuthenticationServiceImpl.swift; sourceTree = ""; }; + 4ED31F0EEEF764BB7538C585 /* TopViewControllerProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TopViewControllerProvider.swift; path = ../../DevLog/Infra/Common/TopViewControllerProvider.swift; sourceTree = ""; }; + 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GoogleAuthenticationServiceImpl.swift; path = ../../DevLog/Infra/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift; sourceTree = ""; }; + 592C8B7B099933759AB316A5 /* DevLogInfra.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogInfra.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 59E81A47825142881793450F /* FirebaseAuthUser+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FirebaseAuthUser+.swift"; path = "../../DevLog/Infra/Extension/FirebaseAuthUser+.swift"; sourceTree = ""; }; + 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FirestorePath.swift; path = ../../DevLog/Infra/Common/FirestorePath.swift; sourceTree = ""; }; + 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NWPathConnectivityProviderImpl.swift; path = ../../DevLog/Infra/Service/NWPathConnectivityProviderImpl.swift; sourceTree = ""; }; + BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoServiceImpl.swift; path = ../../DevLog/Infra/Service/TodoServiceImpl.swift; sourceTree = ""; }; + C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationServiceImpl.swift; path = ../../DevLog/Infra/Service/PushNotificationServiceImpl.swift; sourceTree = ""; }; + CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryServiceImpl.swift; path = ../../DevLog/Infra/Service/TodoCategoryServiceImpl.swift; sourceTree = ""; }; + E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthServiceImpl.swift; path = ../../DevLog/Infra/Service/AuthServiceImpl.swift; sourceTree = ""; }; + E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageServiceImpl.swift; path = ../../DevLog/Infra/Service/WebPageServiceImpl.swift; sourceTree = ""; }; + F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InfraLayerError.swift; path = ../../DevLog/Infra/Common/InfraLayerError.swift; sourceTree = ""; }; + F9AFF9DAE09B8132A62D6DA8 /* FirebaseFunctions+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FirebaseFunctions+.swift"; path = "../../DevLog/Infra/Extension/FirebaseFunctions+.swift"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D357D4FEA7FE7E547ABC10EF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + F75AA9259C6636CF733C4D82 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0488BFD2A2F470EEE29679F1 /* Products */ = { + isa = PBXGroup; + children = ( + 592C8B7B099933759AB316A5 /* DevLogInfra.framework */, + ); + name = Products; + sourceTree = ""; + }; + 78591B5535D993B16F897C7C = { + isa = PBXGroup; + children = ( + 0488BFD2A2F470EEE29679F1 /* Products */, + FBD6499620DAC9E2F9216AD5 /* Frameworks */, + 959D79D1263CC74E32B40D78 /* DevLogInfra */, + ); + sourceTree = ""; + }; + 8FB7B6A102C789590DAA9FE4 /* iOS */ = { + isa = PBXGroup; + children = ( + 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 959D79D1263CC74E32B40D78 /* DevLogInfra */ = { + isa = PBXGroup; + children = ( + 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */, + F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */, + 4ED31F0EEEF764BB7538C585 /* TopViewControllerProvider.swift */, + 59E81A47825142881793450F /* FirebaseAuthUser+.swift */, + F9AFF9DAE09B8132A62D6DA8 /* FirebaseFunctions+.swift */, + E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */, + B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */, + C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */, + 3E56286B1275FC5BD988C94B /* AppleAuthenticationServiceImpl.swift */, + 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */, + 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */, + CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */, + BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */, + 383CD000472C3025FACB9EFF /* UserServiceImpl.swift */, + 34EB8D1DB924582822B68442 /* WebPageMetadataServiceImpl.swift */, + E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */, + ); + name = DevLogInfra; + sourceTree = ""; + }; + FBD6499620DAC9E2F9216AD5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8FB7B6A102C789590DAA9FE4 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 056E5BFE3EAA1D9D0F80702C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + CB9B628AE2E0684C1FCF8840 /* DevLogInfra */ = { + isa = PBXNativeTarget; + buildConfigurationList = 84235CDC6916AB01B475D550 /* Build configuration list for PBXNativeTarget "DevLogInfra" */; + buildPhases = ( + 056E5BFE3EAA1D9D0F80702C /* Headers */, + FBFB77DC8BC559975D45BE7E /* Sources */, + D357D4FEA7FE7E547ABC10EF /* Frameworks */, + 24A3D66AD03AA277EDDA0CC7 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DevLogInfra; + productName = DevLogInfra; + productReference = 592C8B7B099933759AB316A5 /* DevLogInfra.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + FF22261AB99602DAB8E9B323 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1600; + LastUpgradeCheck = 1600; + }; + buildConfigurationList = C6F3911AA3FBE8FB727B853A /* Build configuration list for PBXProject "DevLogInfra" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 78591B5535D993B16F897C7C; + minimizedProjectReferenceProxies = 0; + preferredProjectObjectVersion = 77; + productRefGroup = 0488BFD2A2F470EEE29679F1 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + CB9B628AE2E0684C1FCF8840 /* DevLogInfra */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 24A3D66AD03AA277EDDA0CC7 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + FBFB77DC8BC559975D45BE7E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5C3D4AB0EA1E2DA901239A6C /* FirestorePath.swift in Sources */, + 6FCB70DE3225AFA821300AC7 /* InfraLayerError.swift in Sources */, + 9529B735E38CE98A8EC12AC3 /* TopViewControllerProvider.swift in Sources */, + 6493ACB77436F1E887D91D59 /* FirebaseAuthUser+.swift in Sources */, + FE130A3E1E85658BD3ECE791 /* FirebaseFunctions+.swift in Sources */, + 6F30F7AD6A048E8ED847D123 /* AuthServiceImpl.swift in Sources */, + D6A1524366DC5CF153821979 /* NWPathConnectivityProviderImpl.swift in Sources */, + 0E1D2D0391955DAAAEB0090F /* PushNotificationServiceImpl.swift in Sources */, + 93D79429D184808FB702BF2D /* AppleAuthenticationServiceImpl.swift in Sources */, + 1F4B40F21FD77E3BB481E763 /* GithubAuthenticationServiceImpl.swift in Sources */, + 3A2B4478D6F3438C00240EB4 /* GoogleAuthenticationServiceImpl.swift in Sources */, + EA3F834C61E50B4F60789473 /* TodoCategoryServiceImpl.swift in Sources */, + 65478CAC7F8597445F84F656 /* TodoServiceImpl.swift in Sources */, + 4A36236096C643DA1FF29771 /* UserServiceImpl.swift in Sources */, + 70CDB738E0DE3895B7539B16 /* WebPageMetadataServiceImpl.swift in Sources */, + 87F2CCAD35FD485467397CCC /* WebPageServiceImpl.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 7569DA679CECDD9F8128BF95 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogInfra; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + B1D42568726630BF33AC1CB9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + DD3059FD7C49E00F6F754331 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogInfra; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + EC4C1A0879F2C632B39430D8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 84235CDC6916AB01B475D550 /* Build configuration list for PBXNativeTarget "DevLogInfra" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7569DA679CECDD9F8128BF95 /* Release */, + DD3059FD7C49E00F6F754331 /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C6F3911AA3FBE8FB727B853A /* Build configuration list for PBXProject "DevLogInfra" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EC4C1A0879F2C632B39430D8 /* Debug */, + B1D42568726630BF33AC1CB9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = FF22261AB99602DAB8E9B323 /* Project object */; +} diff --git a/Projects/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfra.xcscheme b/Projects/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfra.xcscheme new file mode 100644 index 00000000..3aaff701 --- /dev/null +++ b/Projects/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfra.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj b/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj new file mode 100644 index 00000000..d8ccccee --- /dev/null +++ b/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj @@ -0,0 +1,471 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0A5A148F5EF1BAD010BED113 /* HeatmapMonth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70C952669C86B8EB042ED7CF /* HeatmapMonth.swift */; }; + 0F4B4A95DBD1219D374B47E3 /* HeatmapActivityItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A04BEF390A74ECC5558A076F /* HeatmapActivityItem.swift */; }; + 104A1B691C40A8182E5F8EF8 /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = D26AF44FFBB251F34E8F80B5 /* Store.swift */; }; + 10EA3E7496613DE389BF9DB7 /* PushNotificationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF28FCF602F6165DC67FE7D6 /* PushNotificationItem.swift */; }; + 143CCE59C5AE926947DA0EA6 /* SystemTodoCategoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A117BE662EC3F9C96FF9AC61 /* SystemTodoCategoryItem.swift */; }; + 1A5EF7B2B4490CBCA9DAA040 /* SearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E844646CD1D172C92451FBE /* SearchViewModel.swift */; }; + 246479E87ECFD0B2DDDA1F75 /* TodoListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA522CF101F432B37F315C24 /* TodoListViewModel.swift */; }; + 2FB6AD996A213275B4EEEA05 /* TodayViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */; }; + 3530599B937DC8E3F908F3F3 /* LoadingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = E06ED9387372D891F65B1CAD /* LoadingState.swift */; }; + 363613285150A9CE24C9A251 /* ActivityKindItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */; }; + 44ACA41EDDAB32BA6DD4419B /* MainViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */; }; + 44B70769659747F403D98B3A /* SettingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */; }; + 516FF64DF6F521E446A4E55B /* AccountViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B9804109E1FE95126DD869B /* AccountViewModel.swift */; }; + 55F93EBF8B32C5B838DC13A3 /* TodoDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */; }; + 59A456649207F4FA33CCD747 /* TodoManageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */; }; + 5C687AA63F317542D6EBAC59 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C39861EE0C254CCC9A608201 /* LoginViewModel.swift */; }; + 5E60673D981843248E402D54 /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1907637E4162396EEDF058C2 /* RootViewModel.swift */; }; + 72DEE86FF7C989E685B4AC0B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */; }; + 73D3CC9EDECF98AEE1D71A7E /* PushNotificationListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */; }; + 8177365142615E093EFEBA2D /* TodoCategoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BE3388699802CC7CD57BD74 /* TodoCategoryItem.swift */; }; + 8F0F4426566FDABC9804C3FD /* TodoIDItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9305330DB8199E1911FAAF49 /* TodoIDItem.swift */; }; + A36B72465455E8FE6C5D95FD /* HeatmapDay.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D75E33B582B3347AC077B0 /* HeatmapDay.swift */; }; + AB242EFD5B25055A0F4B3436 /* TodoEditorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */; }; + BAFA35470372A100D996D4A8 /* Color+Hex.swift in Sources */ = {isa = PBXBuildFile; fileRef = D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */; }; + BD140AE5E7EBE1F485AE5C65 /* TodoListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7258BA3748F0B1BDB1AFFD3 /* TodoListItem.swift */; }; + BDC5D53C3F06032A1CE7AFDA /* WebPageItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19BFDE3E7FFD430D6DF2AA5 /* WebPageItem.swift */; }; + C217400D4242DC74BA88D82D /* UserTodoCategoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */; }; + C3F4F347400691516783EF81 /* TodoReferenceItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */; }; + CC36598B842BA60E284D4A9E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E43EBE726188C58FFB2B6CD /* Foundation.framework */; }; + CD1D494C5D0EC118C8BAD491 /* TodayTodoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF82DE8DF3DDEAF78826B5 /* TodayTodoItem.swift */; }; + D8DCEA367C54C527295E004F /* HeatmapQuarter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */; }; + DB081DF4854E8D445EFE0608 /* ProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */; }; + E7EBEBA803A9449A6CBEF11B /* RecentTodoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */; }; + FBD395A75EDED059CC021AF3 /* PushNotificationSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingViewModel.swift; path = ../../DevLog/Presentation/ViewModel/SettingViewModel.swift; sourceTree = ""; }; + 0BE3388699802CC7CD57BD74 /* TodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift; sourceTree = ""; }; + 0E844646CD1D172C92451FBE /* SearchViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SearchViewModel.swift; path = ../../DevLog/Presentation/ViewModel/SearchViewModel.swift; sourceTree = ""; }; + 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewModel.swift; path = ../../DevLog/Presentation/ViewModel/TodayViewModel.swift; sourceTree = ""; }; + 1907637E4162396EEDF058C2 /* RootViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RootViewModel.swift; path = ../../DevLog/Presentation/ViewModel/RootViewModel.swift; sourceTree = ""; }; + 1B9804109E1FE95126DD869B /* AccountViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccountViewModel.swift; path = ../../DevLog/Presentation/ViewModel/AccountViewModel.swift; sourceTree = ""; }; + 2BCF82DE8DF3DDEAF78826B5 /* TodayTodoItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayTodoItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodayTodoItem.swift; sourceTree = ""; }; + 3E43EBE726188C58FFB2B6CD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileViewModel.swift; path = ../../DevLog/Presentation/ViewModel/ProfileViewModel.swift; sourceTree = ""; }; + 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogPresentation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageViewModel.swift; path = ../../DevLog/Presentation/ViewModel/TodoManageViewModel.swift; sourceTree = ""; }; + 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ActivityKindItem.swift; path = ../../DevLog/Presentation/Structure/Profile/ActivityKindItem.swift; sourceTree = ""; }; + 70C952669C86B8EB042ED7CF /* HeatmapMonth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapMonth.swift; path = ../../DevLog/Presentation/Structure/Profile/HeatmapMonth.swift; sourceTree = ""; }; + 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewModel.swift; path = ../../DevLog/Presentation/ViewModel/HomeViewModel.swift; sourceTree = ""; }; + 9305330DB8199E1911FAAF49 /* TodoIDItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoIDItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodoIDItem.swift; sourceTree = ""; }; + 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReferenceItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift; sourceTree = ""; }; + A04BEF390A74ECC5558A076F /* HeatmapActivityItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapActivityItem.swift; path = ../../DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift; sourceTree = ""; }; + A117BE662EC3F9C96FF9AC61 /* SystemTodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SystemTodoCategoryItem.swift; path = ../../DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift; sourceTree = ""; }; + A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailViewModel.swift; path = ../../DevLog/Presentation/ViewModel/TodoDetailViewModel.swift; sourceTree = ""; }; + A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsViewModel.swift; path = ../../DevLog/Presentation/ViewModel/PushNotificationSettingsViewModel.swift; sourceTree = ""; }; + B19BFDE3E7FFD430D6DF2AA5 /* WebPageItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageItem.swift; path = ../../DevLog/Presentation/Structure/WebPageItem.swift; sourceTree = ""; }; + B4D75E33B582B3347AC077B0 /* HeatmapDay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapDay.swift; path = ../../DevLog/Presentation/Structure/Profile/HeatmapDay.swift; sourceTree = ""; }; + B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewModel.swift; path = ../../DevLog/Presentation/ViewModel/MainViewModel.swift; sourceTree = ""; }; + BA522CF101F432B37F315C24 /* TodoListViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListViewModel.swift; path = ../../DevLog/Presentation/ViewModel/TodoListViewModel.swift; sourceTree = ""; }; + BF28FCF602F6165DC67FE7D6 /* PushNotificationItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationItem.swift; path = ../../DevLog/Presentation/Structure/PushNotificationItem.swift; sourceTree = ""; }; + C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapQuarter.swift; path = ../../DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift; sourceTree = ""; }; + C39861EE0C254CCC9A608201 /* LoginViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginViewModel.swift; path = ../../DevLog/Presentation/ViewModel/LoginViewModel.swift; sourceTree = ""; }; + D26AF44FFBB251F34E8F80B5 /* Store.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Store.swift; path = ../../DevLog/Presentation/Protocol/Store.swift; sourceTree = ""; }; + D7258BA3748F0B1BDB1AFFD3 /* TodoListItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodoListItem.swift; sourceTree = ""; }; + D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Color+Hex.swift"; path = "../../DevLog/Presentation/Extension/Color+Hex.swift"; sourceTree = ""; }; + E06ED9387372D891F65B1CAD /* LoadingState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingState.swift; path = ../../DevLog/Presentation/Common/LoadingState.swift; sourceTree = ""; }; + E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoEditorViewModel.swift; path = ../../DevLog/Presentation/ViewModel/TodoEditorViewModel.swift; sourceTree = ""; }; + E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListViewModel.swift; path = ../../DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift; sourceTree = ""; }; + F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserTodoCategoryItem.swift; path = ../../DevLog/Presentation/Structure/Todo/UserTodoCategoryItem.swift; sourceTree = ""; }; + F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RecentTodoItem.swift; path = ../../DevLog/Presentation/Structure/Todo/RecentTodoItem.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 583BF4C4F7EB77076D3CFEA2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + CC36598B842BA60E284D4A9E /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 03D4331F04C462F4C642860F /* Products */ = { + isa = PBXGroup; + children = ( + 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */, + ); + name = Products; + sourceTree = ""; + }; + 253FAAC4504D4C5E1B11C833 = { + isa = PBXGroup; + children = ( + 03D4331F04C462F4C642860F /* Products */, + 9CC0354538B2A1DF2C74E484 /* Frameworks */, + A4A427D518004ED78EB659DE /* DevLogPresentation */, + ); + sourceTree = ""; + }; + 9A88EA8D5BC609F90B07B726 /* iOS */ = { + isa = PBXGroup; + children = ( + 3E43EBE726188C58FFB2B6CD /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 9CC0354538B2A1DF2C74E484 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9A88EA8D5BC609F90B07B726 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + A4A427D518004ED78EB659DE /* DevLogPresentation */ = { + isa = PBXGroup; + children = ( + E06ED9387372D891F65B1CAD /* LoadingState.swift */, + D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */, + D26AF44FFBB251F34E8F80B5 /* Store.swift */, + 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */, + A04BEF390A74ECC5558A076F /* HeatmapActivityItem.swift */, + B4D75E33B582B3347AC077B0 /* HeatmapDay.swift */, + 70C952669C86B8EB042ED7CF /* HeatmapMonth.swift */, + C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */, + BF28FCF602F6165DC67FE7D6 /* PushNotificationItem.swift */, + F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */, + A117BE662EC3F9C96FF9AC61 /* SystemTodoCategoryItem.swift */, + 2BCF82DE8DF3DDEAF78826B5 /* TodayTodoItem.swift */, + 0BE3388699802CC7CD57BD74 /* TodoCategoryItem.swift */, + 9305330DB8199E1911FAAF49 /* TodoIDItem.swift */, + D7258BA3748F0B1BDB1AFFD3 /* TodoListItem.swift */, + 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */, + F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */, + B19BFDE3E7FFD430D6DF2AA5 /* WebPageItem.swift */, + 1B9804109E1FE95126DD869B /* AccountViewModel.swift */, + 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */, + C39861EE0C254CCC9A608201 /* LoginViewModel.swift */, + B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */, + 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */, + E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */, + A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */, + 1907637E4162396EEDF058C2 /* RootViewModel.swift */, + 0E844646CD1D172C92451FBE /* SearchViewModel.swift */, + 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */, + 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */, + A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */, + E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */, + BA522CF101F432B37F315C24 /* TodoListViewModel.swift */, + 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */, + ); + name = DevLogPresentation; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B43C4645395086BDD925E8B4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + A85D2D7D1D6DAAFBF86C9C34 /* DevLogPresentation */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3740A9B62C71D6CE98B3688F /* Build configuration list for PBXNativeTarget "DevLogPresentation" */; + buildPhases = ( + B43C4645395086BDD925E8B4 /* Headers */, + F3DA432031981B11AF07B907 /* Sources */, + 583BF4C4F7EB77076D3CFEA2 /* Frameworks */, + 5F943984CC1B4A3836CF316E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DevLogPresentation; + productName = DevLogPresentation; + productReference = 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 096704712B06C41C6A0FE074 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1600; + LastUpgradeCheck = 1600; + }; + buildConfigurationList = FE8B1D393F1236CFECA60C89 /* Build configuration list for PBXProject "DevLogPresentation" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 253FAAC4504D4C5E1B11C833; + minimizedProjectReferenceProxies = 0; + preferredProjectObjectVersion = 77; + productRefGroup = 03D4331F04C462F4C642860F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + A85D2D7D1D6DAAFBF86C9C34 /* DevLogPresentation */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 5F943984CC1B4A3836CF316E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + F3DA432031981B11AF07B907 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3530599B937DC8E3F908F3F3 /* LoadingState.swift in Sources */, + BAFA35470372A100D996D4A8 /* Color+Hex.swift in Sources */, + 104A1B691C40A8182E5F8EF8 /* Store.swift in Sources */, + 363613285150A9CE24C9A251 /* ActivityKindItem.swift in Sources */, + 0F4B4A95DBD1219D374B47E3 /* HeatmapActivityItem.swift in Sources */, + A36B72465455E8FE6C5D95FD /* HeatmapDay.swift in Sources */, + 0A5A148F5EF1BAD010BED113 /* HeatmapMonth.swift in Sources */, + D8DCEA367C54C527295E004F /* HeatmapQuarter.swift in Sources */, + 10EA3E7496613DE389BF9DB7 /* PushNotificationItem.swift in Sources */, + E7EBEBA803A9449A6CBEF11B /* RecentTodoItem.swift in Sources */, + 143CCE59C5AE926947DA0EA6 /* SystemTodoCategoryItem.swift in Sources */, + CD1D494C5D0EC118C8BAD491 /* TodayTodoItem.swift in Sources */, + 8177365142615E093EFEBA2D /* TodoCategoryItem.swift in Sources */, + 8F0F4426566FDABC9804C3FD /* TodoIDItem.swift in Sources */, + BD140AE5E7EBE1F485AE5C65 /* TodoListItem.swift in Sources */, + C3F4F347400691516783EF81 /* TodoReferenceItem.swift in Sources */, + C217400D4242DC74BA88D82D /* UserTodoCategoryItem.swift in Sources */, + BDC5D53C3F06032A1CE7AFDA /* WebPageItem.swift in Sources */, + 516FF64DF6F521E446A4E55B /* AccountViewModel.swift in Sources */, + 72DEE86FF7C989E685B4AC0B /* HomeViewModel.swift in Sources */, + 5C687AA63F317542D6EBAC59 /* LoginViewModel.swift in Sources */, + 44ACA41EDDAB32BA6DD4419B /* MainViewModel.swift in Sources */, + DB081DF4854E8D445EFE0608 /* ProfileViewModel.swift in Sources */, + 73D3CC9EDECF98AEE1D71A7E /* PushNotificationListViewModel.swift in Sources */, + FBD395A75EDED059CC021AF3 /* PushNotificationSettingsViewModel.swift in Sources */, + 5E60673D981843248E402D54 /* RootViewModel.swift in Sources */, + 1A5EF7B2B4490CBCA9DAA040 /* SearchViewModel.swift in Sources */, + 44B70769659747F403D98B3A /* SettingViewModel.swift in Sources */, + 2FB6AD996A213275B4EEEA05 /* TodayViewModel.swift in Sources */, + 55F93EBF8B32C5B838DC13A3 /* TodoDetailViewModel.swift in Sources */, + AB242EFD5B25055A0F4B3436 /* TodoEditorViewModel.swift in Sources */, + 246479E87ECFD0B2DDDA1F75 /* TodoListViewModel.swift in Sources */, + 59A456649207F4FA33CCD747 /* TodoManageViewModel.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1119D89647A3E81696CD6F79 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 3B6C7C7825EC72D04CACF6BF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogPresentation; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 8DD7AD0C295CF0638E03F403 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogPresentation; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 973B1093961F1A8F15179643 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3740A9B62C71D6CE98B3688F /* Build configuration list for PBXNativeTarget "DevLogPresentation" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3B6C7C7825EC72D04CACF6BF /* Release */, + 8DD7AD0C295CF0638E03F403 /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FE8B1D393F1236CFECA60C89 /* Build configuration list for PBXProject "DevLogPresentation" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1119D89647A3E81696CD6F79 /* Debug */, + 973B1093961F1A8F15179643 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 096704712B06C41C6A0FE074 /* Project object */; +} diff --git a/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentation.xcscheme b/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentation.xcscheme new file mode 100644 index 00000000..2523225b --- /dev/null +++ b/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentation.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj b/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj new file mode 100644 index 00000000..2708b5ba --- /dev/null +++ b/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj @@ -0,0 +1,359 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 041CEED3822FCBD881DF75CD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 98B16FCDA8A71E2E4E1DC05E /* Foundation.framework */; }; + 50BBA1C19A7C61B8B8F3A68B /* WebPageImageStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */; }; + 5967B32779F22DD0E3C2D247 /* UserDefaultsStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */; }; + 7044FCFCA32C8AA8F6FF4474 /* ThemeStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */; }; + 9814DBF1A0DCD650FEF5A376 /* WidgetSnapshotUpdaterImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */; }; + B1EAEC66B3C4F0B16072F5BE /* WidgetSnapshotPreferenceStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStoreImpl.swift; path = ../../DevLog/Storage/Persistence/ThemeStoreImpl.swift; sourceTree = ""; }; + 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStoreImpl.swift; path = ../../DevLog/Storage/Persistence/WidgetSnapshotPreferenceStoreImpl.swift; sourceTree = ""; }; + 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStoreImpl.swift; path = ../../DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift; sourceTree = ""; }; + 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdaterImpl.swift; path = ../../DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift; sourceTree = ""; }; + 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogStorage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 98B16FCDA8A71E2E4E1DC05E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStoreImpl.swift; path = ../../DevLog/Storage/Persistence/WebPageImageStoreImpl.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 66FC24A6C49BE85AEA4B9B02 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 041CEED3822FCBD881DF75CD /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 431FFAA2A9B7604E5BF94BF0 /* iOS */ = { + isa = PBXGroup; + children = ( + 98B16FCDA8A71E2E4E1DC05E /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 49F17FD9095E72DC89748471 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 431FFAA2A9B7604E5BF94BF0 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 63CE47D539EE6F9653C99773 /* DevLogStorage */ = { + isa = PBXGroup; + children = ( + 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */, + 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */, + C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */, + 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */, + 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */, + ); + name = DevLogStorage; + sourceTree = ""; + }; + 9DC6ED43838A6F065422AA8B = { + isa = PBXGroup; + children = ( + AD653F86B18A4BB73CB50AFE /* Products */, + 49F17FD9095E72DC89748471 /* Frameworks */, + 63CE47D539EE6F9653C99773 /* DevLogStorage */, + ); + sourceTree = ""; + }; + AD653F86B18A4BB73CB50AFE /* Products */ = { + isa = PBXGroup; + children = ( + 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 5FF511FD5A5529526022FD9C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 0C205A501EF8E79FA9A73C4B /* DevLogStorage */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8C12A3FB7175A40B4479C85B /* Build configuration list for PBXNativeTarget "DevLogStorage" */; + buildPhases = ( + 5FF511FD5A5529526022FD9C /* Headers */, + D4CC01793812ABB253D6AC08 /* Sources */, + 66FC24A6C49BE85AEA4B9B02 /* Frameworks */, + E2A3D481BE3C181451082513 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DevLogStorage; + productName = DevLogStorage; + productReference = 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + DF1E7E43C1BA2439E9B82492 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1600; + LastUpgradeCheck = 1600; + }; + buildConfigurationList = 7977F26B747BC5BCE5E0A6B4 /* Build configuration list for PBXProject "DevLogStorage" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 9DC6ED43838A6F065422AA8B; + minimizedProjectReferenceProxies = 0; + preferredProjectObjectVersion = 77; + productRefGroup = AD653F86B18A4BB73CB50AFE /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 0C205A501EF8E79FA9A73C4B /* DevLogStorage */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + E2A3D481BE3C181451082513 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + D4CC01793812ABB253D6AC08 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7044FCFCA32C8AA8F6FF4474 /* ThemeStoreImpl.swift in Sources */, + 5967B32779F22DD0E3C2D247 /* UserDefaultsStoreImpl.swift in Sources */, + 50BBA1C19A7C61B8B8F3A68B /* WebPageImageStoreImpl.swift in Sources */, + B1EAEC66B3C4F0B16072F5BE /* WidgetSnapshotPreferenceStoreImpl.swift in Sources */, + 9814DBF1A0DCD650FEF5A376 /* WidgetSnapshotUpdaterImpl.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 3047117C7630A6B91F1477F5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 586E1D6B64BF31CC733055C9 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogStorage; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 6618F205C9EAFE00EB519ADB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + D36B8CAC0F1A28A54A5C1BFA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogStorage; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 7977F26B747BC5BCE5E0A6B4 /* Build configuration list for PBXProject "DevLogStorage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3047117C7630A6B91F1477F5 /* Debug */, + 6618F205C9EAFE00EB519ADB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8C12A3FB7175A40B4479C85B /* Build configuration list for PBXNativeTarget "DevLogStorage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 586E1D6B64BF31CC733055C9 /* Release */, + D36B8CAC0F1A28A54A5C1BFA /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = DF1E7E43C1BA2439E9B82492 /* Project object */; +} diff --git a/Projects/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme b/Projects/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme new file mode 100644 index 00000000..06bf85e8 --- /dev/null +++ b/Projects/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj b/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj new file mode 100644 index 00000000..1477f44a --- /dev/null +++ b/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj @@ -0,0 +1,491 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0553E143B544CD7ACD082298 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2A9C9F3E543201091571C00 /* LoadingView.swift */; }; + 071B4E6FE1D0DC0EF26E0705 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B01ACB5EB0ACD6D3233BA118 /* MainView.swift */; }; + 075FA5A9704297F5A51D765D /* ThemeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */; }; + 0CEB2B1729B59439362725A5 /* ToolbarButton+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */; }; + 1EC3663DB97BFF5D2D511DAF /* AccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC142E4A256288A6D73AEB3E /* AccountView.swift */; }; + 1F5831DA8EC5DCC3AF604DC7 /* TodoDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */; }; + 233981B375AF5EA066660B86 /* UIKitTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */; }; + 26FA5A7B5E8EDE1B8B6BEE4C /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4255A04E841570A664D15C72 /* SearchView.swift */; }; + 2781DD85BEB0D586F730C53C /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F04A173095F3737E4487EF7 /* ProfileView.swift */; }; + 33374D81BED973A28E95EB88 /* HeatmapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */; }; + 3568FBF125892AF4577A533B /* PushNotificationListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */; }; + 3C865F560E7A379D616F092D /* TodoManageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9340555B2B620464698851A5 /* TodoManageView.swift */; }; + 3E3A8CF9B7867748C06B02AD /* HomeViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */; }; + 4A7897CEB011769A2C01CB4C /* TodoEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */; }; + 4C497F6F2C1A7ADCE28CBF4D /* NavigationRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */; }; + 5417F145841A7CAF38C83F35 /* TodoListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B45C610096E5AC2967606A6 /* TodoListView.swift */; }; + 54FB7AB76BCAED80E9CB742D /* WebItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9A20E0402D598F5587EAFFE /* WebItemRow.swift */; }; + 73FF33B77C4FE6E19604D9AE /* View+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DF0168AAD4373A780DC5A51 /* View+.swift */; }; + 81F78FF2F35149E80FDA1BAF /* SettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CB6D9970E4286BA9A17C47C /* SettingView.swift */; }; + 8A11F86B28EC69A9D6CA4FD2 /* MainViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */; }; + 9225927FB28E8A2DD20DEF54 /* CacheableImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 192A2827C2D676A1AE820FBA /* CacheableImage.swift */; }; + 9A245A6C4C2FA8D55EA8840D /* TodoItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */; }; + 9E8EAA00729A59F67360F063 /* WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BB99F804DD47B96FCCFDC0 /* WebView.swift */; }; + AAA318D37BC97EFB4C785ECD /* TodoInfoSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */; }; + AEA3D50A9080249A6359476C /* CheckBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B72345FA909BFA40078D53 /* CheckBox.swift */; }; + B4A60A3AB524E4F9D68750C3 /* TodayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F51F902DA946EBFEEC4CD14B /* TodayView.swift */; }; + BABB40EAD145095BEC1ACB58 /* TodoDetailContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */; }; + BB77CD69698477D38EEB62DA /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EAB97486EC371BE330C70FE /* Toast.swift */; }; + BE5CF573B4B89C77F4A36A94 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2028F13D1316DD7D0229249 /* LoginView.swift */; }; + C4F0BBA11DCEC8017F541999 /* Tag+.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C555707203C5E83B5B5D7B /* Tag+.swift */; }; + C5654549920DB2EEBA5A3F07 /* NavigationBarConfigurator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */; }; + C85FD011138539C08D18D22F /* RelativeTimeText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */; }; + D12294635C147B35F3EA3314 /* PushNotificationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */; }; + D7ED2E08383517AA3E242B0C /* TodayViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */; }; + DCF1DA50663107DA4687A0D4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69C35DBF629B40E93721B79D /* Foundation.framework */; }; + E9BE203BADA107278CFBDD54 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */; }; + F0B4DBB89733E466B105CF25 /* EnvironmentValues+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */; }; + F1474D4F84693113355B7DA2 /* TodoMarkdownContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */; }; + F99147DC6D6F48E3842CD204 /* LoginButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsView.swift; path = ../../DevLog/UI/Setting/PushNotificationSettingsView.swift; sourceTree = ""; }; + 192A2827C2D676A1AE820FBA /* CacheableImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheableImage.swift; path = ../../DevLog/UI/Common/Component/CacheableImage.swift; sourceTree = ""; }; + 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginButton.swift; path = ../../DevLog/UI/Common/Component/LoginButton.swift; sourceTree = ""; }; + 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoEditorView.swift; path = ../../DevLog/UI/Home/TodoEditorView.swift; sourceTree = ""; }; + 27BB99F804DD47B96FCCFDC0 /* WebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebView.swift; path = ../../DevLog/UI/Common/WebView.swift; sourceTree = ""; }; + 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RelativeTimeText.swift; path = ../../DevLog/UI/Common/Component/RelativeTimeText.swift; sourceTree = ""; }; + 2B45C610096E5AC2967606A6 /* TodoListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListView.swift; path = ../../DevLog/UI/Home/TodoListView.swift; sourceTree = ""; }; + 2EAB97486EC371BE330C70FE /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = ../../DevLog/UI/Common/Component/Toast.swift; sourceTree = ""; }; + 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewCoordinator.swift; path = ../../DevLog/UI/Main/MainViewCoordinator.swift; sourceTree = ""; }; + 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoItemRow.swift; path = ../../DevLog/UI/Common/Component/TodoItemRow.swift; sourceTree = ""; }; + 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ToolbarButton+.swift"; path = "../../DevLog/UI/Common/Component/ToolbarButton+.swift"; sourceTree = ""; }; + 3DF0168AAD4373A780DC5A51 /* View+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "View+.swift"; path = "../../DevLog/UI/Extension/View+.swift"; sourceTree = ""; }; + 4255A04E841570A664D15C72 /* SearchView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SearchView.swift; path = ../../DevLog/UI/Search/SearchView.swift; sourceTree = ""; }; + 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewCoordinator.swift; path = ../../DevLog/UI/Home/HomeViewCoordinator.swift; sourceTree = ""; }; + 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewCoordinator.swift; path = ../../DevLog/UI/Today/TodayViewCoordinator.swift; sourceTree = ""; }; + 69C35DBF629B40E93721B79D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationBarConfigurator.swift; path = ../../DevLog/UI/Common/NavigationBarConfigurator.swift; sourceTree = ""; }; + 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationRouter.swift; path = ../../DevLog/UI/Common/NavigationRouter.swift; sourceTree = ""; }; + 7F04A173095F3737E4487EF7 /* ProfileView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileView.swift; path = ../../DevLog/UI/Profile/ProfileView.swift; sourceTree = ""; }; + 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapView.swift; path = ../../DevLog/UI/Profile/HeatmapView.swift; sourceTree = ""; }; + 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "EnvironmentValues+.swift"; path = "../../DevLog/UI/Extension/EnvironmentValues+.swift"; sourceTree = ""; }; + 9340555B2B620464698851A5 /* TodoManageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageView.swift; path = ../../DevLog/UI/Home/TodoManageView.swift; sourceTree = ""; }; + 93B72345FA909BFA40078D53 /* CheckBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CheckBox.swift; path = ../../DevLog/UI/Common/Component/CheckBox.swift; sourceTree = ""; }; + 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIKitTextEditor.swift; path = ../../DevLog/UI/Common/Component/UIKitTextEditor.swift; sourceTree = ""; }; + 9CB6D9970E4286BA9A17C47C /* SettingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingView.swift; path = ../../DevLog/UI/Setting/SettingView.swift; sourceTree = ""; }; + 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeView.swift; path = ../../DevLog/UI/Home/HomeView.swift; sourceTree = ""; }; + A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoMarkdownContentView.swift; path = ../../DevLog/UI/Common/TodoMarkdownContentView.swift; sourceTree = ""; }; + A2A9C9F3E543201091571C00 /* LoadingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingView.swift; path = ../../DevLog/UI/Common/Component/LoadingView.swift; sourceTree = ""; }; + AC142E4A256288A6D73AEB3E /* AccountView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccountView.swift; path = ../../DevLog/UI/Setting/AccountView.swift; sourceTree = ""; }; + B01ACB5EB0ACD6D3233BA118 /* MainView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainView.swift; path = ../../DevLog/UI/Main/MainView.swift; sourceTree = ""; }; + B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListView.swift; path = ../../DevLog/UI/PushNotification/PushNotificationListView.swift; sourceTree = ""; }; + B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailView.swift; path = ../../DevLog/UI/Home/TodoDetailView.swift; sourceTree = ""; }; + B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoInfoSheetView.swift; path = ../../DevLog/UI/Common/TodoInfoSheetView.swift; sourceTree = ""; }; + D2028F13D1316DD7D0229249 /* LoginView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginView.swift; path = ../../DevLog/UI/Login/LoginView.swift; sourceTree = ""; }; + D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailContentView.swift; path = ../../DevLog/UI/Common/TodoDetailContentView.swift; sourceTree = ""; }; + E0C555707203C5E83B5B5D7B /* Tag+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Tag+.swift"; path = "../../DevLog/UI/Common/Component/Tag+.swift"; sourceTree = ""; }; + EF72EFD447F4FDC1142BABA1 /* DevLogUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F51F902DA946EBFEEC4CD14B /* TodayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayView.swift; path = ../../DevLog/UI/Today/TodayView.swift; sourceTree = ""; }; + F9A20E0402D598F5587EAFFE /* WebItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebItemRow.swift; path = ../../DevLog/UI/Common/Component/WebItemRow.swift; sourceTree = ""; }; + FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeView.swift; path = ../../DevLog/UI/Setting/ThemeView.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + FF42A9B9045A4560A9CF0F35 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + DCF1DA50663107DA4687A0D4 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 1D5CC500CAF3AB573D582AC0 /* iOS */ = { + isa = PBXGroup; + children = ( + 69C35DBF629B40E93721B79D /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 7B53286AA9A58D5B6C0124F8 /* DevLogUI */ = { + isa = PBXGroup; + children = ( + 192A2827C2D676A1AE820FBA /* CacheableImage.swift */, + 93B72345FA909BFA40078D53 /* CheckBox.swift */, + A2A9C9F3E543201091571C00 /* LoadingView.swift */, + 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */, + 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */, + E0C555707203C5E83B5B5D7B /* Tag+.swift */, + 2EAB97486EC371BE330C70FE /* Toast.swift */, + 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */, + 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */, + 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */, + F9A20E0402D598F5587EAFFE /* WebItemRow.swift */, + 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */, + 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */, + D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */, + B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */, + A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */, + 27BB99F804DD47B96FCCFDC0 /* WebView.swift */, + 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */, + 3DF0168AAD4373A780DC5A51 /* View+.swift */, + 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */, + 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */, + B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */, + 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */, + 2B45C610096E5AC2967606A6 /* TodoListView.swift */, + 9340555B2B620464698851A5 /* TodoManageView.swift */, + D2028F13D1316DD7D0229249 /* LoginView.swift */, + B01ACB5EB0ACD6D3233BA118 /* MainView.swift */, + 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */, + 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */, + 7F04A173095F3737E4487EF7 /* ProfileView.swift */, + B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */, + 4255A04E841570A664D15C72 /* SearchView.swift */, + AC142E4A256288A6D73AEB3E /* AccountView.swift */, + 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */, + 9CB6D9970E4286BA9A17C47C /* SettingView.swift */, + FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */, + F51F902DA946EBFEEC4CD14B /* TodayView.swift */, + 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */, + ); + name = DevLogUI; + sourceTree = ""; + }; + 904674574352E72D5129271C /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1D5CC500CAF3AB573D582AC0 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + B68C915FE344171A3A1311EF /* Products */ = { + isa = PBXGroup; + children = ( + EF72EFD447F4FDC1142BABA1 /* DevLogUI.framework */, + ); + name = Products; + sourceTree = ""; + }; + D808B5660152F4480C65BB71 = { + isa = PBXGroup; + children = ( + B68C915FE344171A3A1311EF /* Products */, + 904674574352E72D5129271C /* Frameworks */, + 7B53286AA9A58D5B6C0124F8 /* DevLogUI */, + ); + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 5A9F5709F2EABC84F2D9B9F8 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D205F480E5CDACDE14BEF619 /* DevLogUI */ = { + isa = PBXNativeTarget; + buildConfigurationList = 62535B94E527BBFB825E8D92 /* Build configuration list for PBXNativeTarget "DevLogUI" */; + buildPhases = ( + 5A9F5709F2EABC84F2D9B9F8 /* Headers */, + 7980448EDB6A7F36F3A48072 /* Sources */, + FF42A9B9045A4560A9CF0F35 /* Frameworks */, + 770F98EDFF3E434D5AA9B2FF /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DevLogUI; + productName = DevLogUI; + productReference = EF72EFD447F4FDC1142BABA1 /* DevLogUI.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 2A5CEF5F3893E84D1C70CACE /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1600; + LastUpgradeCheck = 1600; + }; + buildConfigurationList = C00E270E4A31C8DFFA6C3BC4 /* Build configuration list for PBXProject "DevLogUI" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = D808B5660152F4480C65BB71; + minimizedProjectReferenceProxies = 0; + preferredProjectObjectVersion = 77; + productRefGroup = B68C915FE344171A3A1311EF /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D205F480E5CDACDE14BEF619 /* DevLogUI */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 770F98EDFF3E434D5AA9B2FF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 7980448EDB6A7F36F3A48072 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9225927FB28E8A2DD20DEF54 /* CacheableImage.swift in Sources */, + AEA3D50A9080249A6359476C /* CheckBox.swift in Sources */, + 0553E143B544CD7ACD082298 /* LoadingView.swift in Sources */, + F99147DC6D6F48E3842CD204 /* LoginButton.swift in Sources */, + C85FD011138539C08D18D22F /* RelativeTimeText.swift in Sources */, + C4F0BBA11DCEC8017F541999 /* Tag+.swift in Sources */, + BB77CD69698477D38EEB62DA /* Toast.swift in Sources */, + 9A245A6C4C2FA8D55EA8840D /* TodoItemRow.swift in Sources */, + 0CEB2B1729B59439362725A5 /* ToolbarButton+.swift in Sources */, + 233981B375AF5EA066660B86 /* UIKitTextEditor.swift in Sources */, + 54FB7AB76BCAED80E9CB742D /* WebItemRow.swift in Sources */, + C5654549920DB2EEBA5A3F07 /* NavigationBarConfigurator.swift in Sources */, + 4C497F6F2C1A7ADCE28CBF4D /* NavigationRouter.swift in Sources */, + BABB40EAD145095BEC1ACB58 /* TodoDetailContentView.swift in Sources */, + AAA318D37BC97EFB4C785ECD /* TodoInfoSheetView.swift in Sources */, + F1474D4F84693113355B7DA2 /* TodoMarkdownContentView.swift in Sources */, + 9E8EAA00729A59F67360F063 /* WebView.swift in Sources */, + F0B4DBB89733E466B105CF25 /* EnvironmentValues+.swift in Sources */, + 73FF33B77C4FE6E19604D9AE /* View+.swift in Sources */, + E9BE203BADA107278CFBDD54 /* HomeView.swift in Sources */, + 3E3A8CF9B7867748C06B02AD /* HomeViewCoordinator.swift in Sources */, + 1F5831DA8EC5DCC3AF604DC7 /* TodoDetailView.swift in Sources */, + 4A7897CEB011769A2C01CB4C /* TodoEditorView.swift in Sources */, + 5417F145841A7CAF38C83F35 /* TodoListView.swift in Sources */, + 3C865F560E7A379D616F092D /* TodoManageView.swift in Sources */, + BE5CF573B4B89C77F4A36A94 /* LoginView.swift in Sources */, + 071B4E6FE1D0DC0EF26E0705 /* MainView.swift in Sources */, + 8A11F86B28EC69A9D6CA4FD2 /* MainViewCoordinator.swift in Sources */, + 33374D81BED973A28E95EB88 /* HeatmapView.swift in Sources */, + 2781DD85BEB0D586F730C53C /* ProfileView.swift in Sources */, + 3568FBF125892AF4577A533B /* PushNotificationListView.swift in Sources */, + 26FA5A7B5E8EDE1B8B6BEE4C /* SearchView.swift in Sources */, + 1EC3663DB97BFF5D2D511DAF /* AccountView.swift in Sources */, + D12294635C147B35F3EA3314 /* PushNotificationSettingsView.swift in Sources */, + 81F78FF2F35149E80FDA1BAF /* SettingView.swift in Sources */, + 075FA5A9704297F5A51D765D /* ThemeView.swift in Sources */, + B4A60A3AB524E4F9D68750C3 /* TodayView.swift in Sources */, + D7ED2E08383517AA3E242B0C /* TodayViewCoordinator.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 0017B20412D6EAAA00596A5A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogUI; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 057474AABB547252F03AD3B0 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + A4D5F6FE725B3AB43CB2316A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogUI; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + D997A0EFA65F220D52A8DF38 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 62535B94E527BBFB825E8D92 /* Build configuration list for PBXNativeTarget "DevLogUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0017B20412D6EAAA00596A5A /* Release */, + A4D5F6FE725B3AB43CB2316A /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C00E270E4A31C8DFFA6C3BC4 /* Build configuration list for PBXProject "DevLogUI" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 057474AABB547252F03AD3B0 /* Debug */, + D997A0EFA65F220D52A8DF38 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 2A5CEF5F3893E84D1C70CACE /* Project object */; +} diff --git a/Projects/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme b/Projects/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme new file mode 100644 index 00000000..2ecac534 --- /dev/null +++ b/Projects/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj b/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj new file mode 100644 index 00000000..b5e89c82 --- /dev/null +++ b/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj @@ -0,0 +1,379 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 13912C8BE3310B5BCCE71ED8 /* WidgetSharedDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */; }; + 3BF3B864B5A91686CFA17EDD /* WidgetSyncEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */; }; + 5C7FE28461303EC8CE211B57 /* WidgetSyncEventBusImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 489FB48B79E61FF3332C9F3F /* WidgetSyncEventBusImpl.swift */; }; + 641BA820F65E8F78F200EDCF /* HeatmapWidgetSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */; }; + 75C99AB35C6DF930E824185E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBD260F923A87C1577DBFF0F /* Foundation.framework */; }; + A839995EF6B607DBECF11933 /* HeatmapWidgetSnapshotFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */; }; + B2223843996C9D11E0193B16 /* WidgetSnapshotStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */; }; + CD7C54E749A6696CF92AEF71 /* WidgetSyncEventBus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */; }; + F29C18438886406B532B926B /* TodayWidgetSnapshotFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */; }; + F9D4F24C64D75DC51F89BBC5 /* TodayWidgetSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */; }; + FF161CCB92AC2C2C754DDA8C /* WidgetSyncEventHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventBus.swift; path = ../../DevLog/Widget/Sync/WidgetSyncEventBus.swift; sourceTree = ""; }; + 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshotFactory.swift; path = ../../DevLog/Widget/Heatmap/HeatmapWidgetSnapshotFactory.swift; sourceTree = ""; }; + 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshotFactory.swift; path = ../../DevLog/Widget/Today/TodayWidgetSnapshotFactory.swift; sourceTree = ""; }; + 489FB48B79E61FF3332C9F3F /* WidgetSyncEventBusImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventBusImpl.swift; path = ../../DevLog/Widget/Sync/WidgetSyncEventBusImpl.swift; sourceTree = ""; }; + 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEvent.swift; path = ../../DevLog/Widget/Common/WidgetSyncEvent.swift; sourceTree = ""; }; + 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotStore.swift; path = ../../DevLog/Widget/Common/WidgetSnapshotStore.swift; sourceTree = ""; }; + 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshot.swift; path = ../../DevLog/Widget/Today/TodayWidgetSnapshot.swift; sourceTree = ""; }; + 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogWidgetCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshot.swift; path = ../../DevLog/Widget/Heatmap/HeatmapWidgetSnapshot.swift; sourceTree = ""; }; + 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSharedDefaultsStore.swift; path = ../../DevLog/Widget/Common/WidgetSharedDefaultsStore.swift; sourceTree = ""; }; + DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventHandler.swift; path = ../../DevLog/Widget/Sync/WidgetSyncEventHandler.swift; sourceTree = ""; }; + FBD260F923A87C1577DBFF0F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + ABB4D885A18FE546FC106112 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 75C99AB35C6DF930E824185E /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 22B18020E715C5AFC73F00FA /* Frameworks */ = { + isa = PBXGroup; + children = ( + E4683C4F36BFC412C75D164A /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 573F3011EB6718B39FCF276F /* Products */ = { + isa = PBXGroup; + children = ( + 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */, + ); + name = Products; + sourceTree = ""; + }; + 6AE182A73B6A9D0A2981CE97 = { + isa = PBXGroup; + children = ( + 573F3011EB6718B39FCF276F /* Products */, + 22B18020E715C5AFC73F00FA /* Frameworks */, + B60F0C6B052E1EF8CC827AD9 /* DevLogWidgetCore */, + ); + sourceTree = ""; + }; + B60F0C6B052E1EF8CC827AD9 /* DevLogWidgetCore */ = { + isa = PBXGroup; + children = ( + 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */, + 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */, + 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */, + 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */, + 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */, + 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */, + 489FB48B79E61FF3332C9F3F /* WidgetSyncEventBusImpl.swift */, + DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */, + 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */, + 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */, + ); + name = DevLogWidgetCore; + sourceTree = ""; + }; + E4683C4F36BFC412C75D164A /* iOS */ = { + isa = PBXGroup; + children = ( + FBD260F923A87C1577DBFF0F /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + B6FD9C57EC4CCCB72C506FD9 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 687DD42230CC25053ABB5FB8 /* DevLogWidgetCore */ = { + isa = PBXNativeTarget; + buildConfigurationList = A8996A1DFD084C1D6663F586 /* Build configuration list for PBXNativeTarget "DevLogWidgetCore" */; + buildPhases = ( + B6FD9C57EC4CCCB72C506FD9 /* Headers */, + E1043BC6F578C87214D6C661 /* Sources */, + ABB4D885A18FE546FC106112 /* Frameworks */, + 26D0E06B5E51FC49407674A2 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DevLogWidgetCore; + productName = DevLogWidgetCore; + productReference = 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 836D58C848CD386B5BF2287A /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1600; + LastUpgradeCheck = 1600; + }; + buildConfigurationList = ED2CF47A9B589A0852A232E5 /* Build configuration list for PBXProject "DevLogWidgetCore" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 6AE182A73B6A9D0A2981CE97; + minimizedProjectReferenceProxies = 0; + preferredProjectObjectVersion = 77; + productRefGroup = 573F3011EB6718B39FCF276F /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 687DD42230CC25053ABB5FB8 /* DevLogWidgetCore */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 26D0E06B5E51FC49407674A2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + E1043BC6F578C87214D6C661 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 13912C8BE3310B5BCCE71ED8 /* WidgetSharedDefaultsStore.swift in Sources */, + B2223843996C9D11E0193B16 /* WidgetSnapshotStore.swift in Sources */, + 3BF3B864B5A91686CFA17EDD /* WidgetSyncEvent.swift in Sources */, + 641BA820F65E8F78F200EDCF /* HeatmapWidgetSnapshot.swift in Sources */, + A839995EF6B607DBECF11933 /* HeatmapWidgetSnapshotFactory.swift in Sources */, + CD7C54E749A6696CF92AEF71 /* WidgetSyncEventBus.swift in Sources */, + 5C7FE28461303EC8CE211B57 /* WidgetSyncEventBusImpl.swift in Sources */, + FF161CCB92AC2C2C754DDA8C /* WidgetSyncEventHandler.swift in Sources */, + F9D4F24C64D75DC51F89BBC5 /* TodayWidgetSnapshot.swift in Sources */, + F29C18438886406B532B926B /* TodayWidgetSnapshotFactory.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 8E2FD158204AEBB5D6B1CAA7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogWidgetCore; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + C5BA4998DAC2550DE98EA22B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogWidgetCore; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + F94376F626E7E72731032F28 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + F9E434CB9809C01A5FA29D3B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + A8996A1DFD084C1D6663F586 /* Build configuration list for PBXNativeTarget "DevLogWidgetCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8E2FD158204AEBB5D6B1CAA7 /* Release */, + C5BA4998DAC2550DE98EA22B /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + ED2CF47A9B589A0852A232E5 /* Build configuration list for PBXProject "DevLogWidgetCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F94376F626E7E72731032F28 /* Debug */, + F9E434CB9809C01A5FA29D3B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 836D58C848CD386B5BF2287A /* Project object */; +} diff --git a/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme b/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme new file mode 100644 index 00000000..49e73f98 --- /dev/null +++ b/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj b/Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj new file mode 100644 index 00000000..4b2e4d08 --- /dev/null +++ b/Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj @@ -0,0 +1,363 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 18BA78C685175B1BC0DEFCCB /* Calendar.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2B11CDF5A711E473115E8E3 /* Calendar.swift */; }; + 2D055D7F21B321D6CCD40A16 /* WidgetAppGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEF84B2C1BD8C8ED1F6A5A36 /* WidgetAppGroup.swift */; }; + 52EDCA6F95F360B0075E8708 /* WidgetKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = E75E718B8308165441EB1A8A /* WidgetKind.swift */; }; + 6C3457965AC3DE2CD7E8F88B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 814ECC408D237131E365FC92 /* Foundation.framework */; }; + 9393A3FE5F2FABEFF02AACC7 /* WidgetSnapshotKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6B67DC942FD2230C2E3C8EC /* WidgetSnapshotKey.swift */; }; + BEB9B8FDDC40DFEAE23FF15C /* WidgetHeatmapPlaceholderShape.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0BDD8E4BCD4F432B11496E0 /* WidgetHeatmapPlaceholderShape.swift */; }; + FF8B0BCB371AA1459B70C6D4 /* WidgetDeepLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 286D442FAA18B8D52A6845FF /* WidgetDeepLink.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 286D442FAA18B8D52A6845FF /* WidgetDeepLink.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetDeepLink.swift; path = ../../WidgetShared/WidgetDeepLink.swift; sourceTree = ""; }; + 814ECC408D237131E365FC92 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 9E9FD7B09D0D7EAB8B828A5E /* DevLogWidgetShared.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogWidgetShared.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A0BDD8E4BCD4F432B11496E0 /* WidgetHeatmapPlaceholderShape.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetHeatmapPlaceholderShape.swift; path = ../../WidgetShared/WidgetHeatmapPlaceholderShape.swift; sourceTree = ""; }; + C2B11CDF5A711E473115E8E3 /* Calendar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Calendar.swift; path = ../../WidgetShared/Calendar.swift; sourceTree = ""; }; + C6B67DC942FD2230C2E3C8EC /* WidgetSnapshotKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotKey.swift; path = ../../WidgetShared/WidgetSnapshotKey.swift; sourceTree = ""; }; + DEF84B2C1BD8C8ED1F6A5A36 /* WidgetAppGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetAppGroup.swift; path = ../../WidgetShared/WidgetAppGroup.swift; sourceTree = ""; }; + E75E718B8308165441EB1A8A /* WidgetKind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetKind.swift; path = ../../WidgetShared/WidgetKind.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B36EC59A07DCF6BD1DCD4667 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6C3457965AC3DE2CD7E8F88B /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3A2B4275F79E5911D714CC6A /* Frameworks */ = { + isa = PBXGroup; + children = ( + CC38F8B599D9AFD777F4CF21 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + B66C037F848BDEE68DAC8902 /* Products */ = { + isa = PBXGroup; + children = ( + 9E9FD7B09D0D7EAB8B828A5E /* DevLogWidgetShared.framework */, + ); + name = Products; + sourceTree = ""; + }; + C0DE4BE90CB1A6B4CEDFCA61 = { + isa = PBXGroup; + children = ( + B66C037F848BDEE68DAC8902 /* Products */, + 3A2B4275F79E5911D714CC6A /* Frameworks */, + DA0865721A6D430B66025E66 /* DevLogWidgetShared */, + ); + sourceTree = ""; + }; + CC38F8B599D9AFD777F4CF21 /* iOS */ = { + isa = PBXGroup; + children = ( + 814ECC408D237131E365FC92 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + DA0865721A6D430B66025E66 /* DevLogWidgetShared */ = { + isa = PBXGroup; + children = ( + C2B11CDF5A711E473115E8E3 /* Calendar.swift */, + DEF84B2C1BD8C8ED1F6A5A36 /* WidgetAppGroup.swift */, + 286D442FAA18B8D52A6845FF /* WidgetDeepLink.swift */, + A0BDD8E4BCD4F432B11496E0 /* WidgetHeatmapPlaceholderShape.swift */, + E75E718B8308165441EB1A8A /* WidgetKind.swift */, + C6B67DC942FD2230C2E3C8EC /* WidgetSnapshotKey.swift */, + ); + name = DevLogWidgetShared; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 345C56D731B240D9209C739D /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 5755BDB768C11CE0FDEA4828 /* DevLogWidgetShared */ = { + isa = PBXNativeTarget; + buildConfigurationList = 619CC6CBC0D2FBA1B1D3AD2B /* Build configuration list for PBXNativeTarget "DevLogWidgetShared" */; + buildPhases = ( + 345C56D731B240D9209C739D /* Headers */, + A7C9D6BE813475D614E5A95D /* Sources */, + B36EC59A07DCF6BD1DCD4667 /* Frameworks */, + 6DAD9D3DB11C5C6B2F92C1F0 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DevLogWidgetShared; + productName = DevLogWidgetShared; + productReference = 9E9FD7B09D0D7EAB8B828A5E /* DevLogWidgetShared.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3CF16EA616D3B65329E78465 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1600; + LastUpgradeCheck = 1600; + }; + buildConfigurationList = FAE9B719E52217CA1B55B989 /* Build configuration list for PBXProject "DevLogWidgetShared" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = C0DE4BE90CB1A6B4CEDFCA61; + minimizedProjectReferenceProxies = 0; + preferredProjectObjectVersion = 77; + productRefGroup = B66C037F848BDEE68DAC8902 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 5755BDB768C11CE0FDEA4828 /* DevLogWidgetShared */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 6DAD9D3DB11C5C6B2F92C1F0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + A7C9D6BE813475D614E5A95D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 18BA78C685175B1BC0DEFCCB /* Calendar.swift in Sources */, + 2D055D7F21B321D6CCD40A16 /* WidgetAppGroup.swift in Sources */, + FF8B0BCB371AA1459B70C6D4 /* WidgetDeepLink.swift in Sources */, + BEB9B8FDDC40DFEAE23FF15C /* WidgetHeatmapPlaceholderShape.swift in Sources */, + 52EDCA6F95F360B0075E8708 /* WidgetKind.swift in Sources */, + 9393A3FE5F2FABEFF02AACC7 /* WidgetSnapshotKey.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 0095EA3D0E3FC18B545418BE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogWidgetShared; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B22A027E657DD85A9516F14C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + CE0953D10C4F8C380398A44D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogWidgetShared; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + CEBA7A8B66FE2E8ED4AEDF32 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 619CC6CBC0D2FBA1B1D3AD2B /* Build configuration list for PBXNativeTarget "DevLogWidgetShared" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CE0953D10C4F8C380398A44D /* Release */, + 0095EA3D0E3FC18B545418BE /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FAE9B719E52217CA1B55B989 /* Build configuration list for PBXProject "DevLogWidgetShared" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CEBA7A8B66FE2E8ED4AEDF32 /* Debug */, + B22A027E657DD85A9516F14C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3CF16EA616D3B65329E78465 /* Project object */; +} diff --git a/Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme b/Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme new file mode 100644 index 00000000..3fa6a459 --- /dev/null +++ b/Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + From 534c3f19376790cd1437676d167be4629f6cada9 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 01:07:31 +0900 Subject: [PATCH 06/46] =?UTF-8?q?refactor:=20SwiftPM=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=20=EC=9D=98=EC=A1=B4=EC=84=B1=EC=9D=84=20Xcode=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=EC=A0=9D=ED=8A=B8=20=EC=9D=98=EC=A1=B4=EC=84=B1?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EA=B5=90=EC=B2=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DevLog.xcodeproj/project.pbxproj | 501 +++++++++++++++--- Package.swift | 123 ----- .../DevLogData.xcodeproj/project.pbxproj | 94 ++++ .../DevLogInfra.xcodeproj/project.pbxproj | 145 +++++ .../project.pbxproj | 151 ++++++ .../DevLogStorage.xcodeproj/project.pbxproj | 274 ++++++++++ .../DevLogUI.xcodeproj/project.pbxproj | 91 ++++ .../project.pbxproj | 238 +++++++++ 8 files changed, 1420 insertions(+), 197 deletions(-) delete mode 100644 Package.swift diff --git a/DevLog.xcodeproj/project.pbxproj b/DevLog.xcodeproj/project.pbxproj index 24f1fe2c..482de74b 100644 --- a/DevLog.xcodeproj/project.pbxproj +++ b/DevLog.xcodeproj/project.pbxproj @@ -7,22 +7,152 @@ objects = { /* Begin PBXBuildFile section */ - FBF000012F91000000D3E001 /* DevLogDomain in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E101 /* DevLogDomain */; }; - FBF000012F91000000D3E002 /* DevLogData in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E102 /* DevLogData */; }; - FBF000012F91000000D3E003 /* DevLogInfra in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E103 /* DevLogInfra */; }; - FBF000012F91000000D3E004 /* DevLogStorage in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E104 /* DevLogStorage */; }; - FBF000012F91000000D3E005 /* DevLogPresentation in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E105 /* DevLogPresentation */; }; - FBF000012F91000000D3E006 /* DevLogUI in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E106 /* DevLogUI */; }; - FBF000012F91000000D3E007 /* DevLogWidgetCore in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E107 /* DevLogWidgetCore */; }; - FBF000012F91000000D3E008 /* DevLogWidgetShared in Frameworks */ = {isa = PBXBuildFile; productRef = FBF000012F91000000D3E108 /* DevLogWidgetShared */; }; + 0957A66CFE9CB98EA302CC22 /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */; }; + 1589C1EF4029ECBF15A842F0 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; }; + 186E9AB4F0A79C50FE853607 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA49949C677DDE083F7DE29E /* DevLogDomain.framework */; }; + 26C3DC51F23F9C590FDB282D /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67918B544432C45E63273D84 /* DevLogPresentation.framework */; }; + 593BFC1632C776A7D59EF625 /* DevLogDataMapper.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF31C7E0802E4877630B4E0D /* DevLogDataMapper.framework */; }; + 7188DA2B6DFD13F7FF73069E /* DevLogInfra.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */; }; + 79134AD67952720CCC5069EA /* DevLogStorage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */; }; + 7AB46A7765E72B61AC730D41 /* DevLogUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A2F070E465CD9260A295A505 /* DevLogUI.framework */; }; + 8B41461F945DA9A94D3330F9 /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA04D8F5F1B04A3FBE8C5763 /* DevLogDataCommon.framework */; }; + B51F2FBCE730B52489D0F89F /* DevLogDataRepository.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C86A027695491A3640899360 /* DevLogDataRepository.framework */; }; + CA836545BFC2C01D1A1197AF /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DF226704A710E19F3CCAD1A /* DevLogDataDTO.framework */; }; DFD3A9722F8E89DD001DA7CD /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9712F8E89DD001DA7CD /* WidgetKit.framework */; }; DFD3A9742F8E89DD001DA7CD /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9732F8E89DD001DA7CD /* SwiftUI.framework */; }; DFD3A97F2F8E89DF001DA7CD /* DevLogWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; DFD645402EC827A10073E133 /* .gitignore in Resources */ = {isa = PBXBuildFile; fileRef = DFD6453F2EC827A10073E133 /* .gitignore */; }; DFD74E2F2E423EA700613803 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = DFD74E2E2E423EA700613803 /* README.md */; }; + E21AC32BAD51AD53627F4649 /* DevLogDataProtocol.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 731CC979BBA178E3862BBB74 /* DevLogDataProtocol.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 08788C32F0E85A76D975F825 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D9D76C33D8B4790694BD3488; + remoteInfo = DevLogDataRepository; + }; + 0F460A6F0F9B74AE847DFD16 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = CB9B628AE2E0684C1FCF8840; + remoteInfo = DevLogInfra; + }; + 16573F1134973B16E8CBBE1A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 80A60CC195BD79C638F5B405; + remoteInfo = DevLogDataCommon; + }; + 17E732C4E37D1ADD4E46D669 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = A85D2D7D1D6DAAFBF86C9C34; + remoteInfo = DevLogPresentation; + }; + 18CFACC537B0E3106305F47B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = EF72EFD447F4FDC1142BABA1; + remoteInfo = Subproject; + }; + 1EE32CC37C6DFCB68E794DB9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 27C8E1F04453FD577C839404; + remoteInfo = DevLogDataMapper; + }; + 3BC2BDF8DAF15E7E6FF53443 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3F08F6B94839E9021FCFC466; + remoteInfo = Subproject; + }; + 3EECE4329ECCA26C0A19337E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0C205A501EF8E79FA9A73C4B; + remoteInfo = DevLogStorage; + }; + 52E6272133B73E021A630191 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D205F480E5CDACDE14BEF619; + remoteInfo = DevLogUI; + }; + 687F85C6DCE6D569D448B141 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 6AF1B307A7E7CC03AA2BABB1; + remoteInfo = Subproject; + }; + 77B58AFF05F40515211C8701 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 92502C9F074520D19CC451EF; + remoteInfo = Subproject; + }; + 933EF563698CBBA322E4A1FF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 86E8AA2A43914F444BF5A6C2; + remoteInfo = Subproject; + }; + A74090DFC060507C027FF285 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 6D02EDBA887507AC7BA79658; + remoteInfo = DevLogDataProtocol; + }; + A974AB39F1B9AEC8C3519A47 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 592C8B7B099933759AB316A5; + remoteInfo = Subproject; + }; + B0DA389C8C1AEFBF239204D4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = C063BD562070CA11C2AA4EDF; + remoteInfo = Subproject; + }; + C74665BE4047F0FD1DF4CEA7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 690289F520872AC78D6C95D3; + remoteInfo = Subproject; + }; + D113DE9A0832A6EB30D402FD /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E7473315771B5D3030C5003; + remoteInfo = Subproject; + }; + D47319B34F77243F170E2A1A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 687DD42230CC25053ABB5FB8; + remoteInfo = DevLogWidgetCore; + }; DF34164B2E45F67C00F9312B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = DFD48AF82DC4D6E2005905C5 /* Project object */; @@ -37,6 +167,48 @@ remoteGlobalIDString = DFD3A96F2F8E89DD001DA7CD; remoteInfo = DevLogWidgetExtension; }; + EA9A577921BC21C5451FCE98 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; + remoteInfo = Subproject; + }; + EA9B82690DAF18F719BA42AC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; + EFFE07E9E4CFAEB9C8C44C2A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0B9228953A84A7D7ED3BC5B8; + remoteInfo = DevLogDataDTO; + }; + F0A01BBA37FA27D63B9D6943 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogWidgetShared; + }; + FB9F2FE12E43931C76A6A7D5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; + remoteInfo = Subproject; + }; + FEDD8ED334FBDE63B0402F8D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 44466B71BA6B67309210A7BB; + remoteInfo = Subproject; + }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -54,6 +226,13 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; + 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = Projects/DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; + 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; + 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogUI.xcodeproj; path = Projects/DevLogUI/DevLogUI.xcodeproj; sourceTree = ""; }; + 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogStorage.xcodeproj; path = Projects/DevLogStorage/DevLogStorage.xcodeproj; sourceTree = ""; }; + CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogInfra.xcodeproj; path = Projects/DevLogInfra/DevLogInfra.xcodeproj; sourceTree = ""; }; + DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = Projects/DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; DF3416492E45F67C00F9312B /* DevLog_Unit.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLog_Unit.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = DevLogWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; DFD3A9712F8E89DD001DA7CD /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; @@ -61,7 +240,7 @@ DFD48B002DC4D6E2005905C5 /* DevLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DevLog.app; sourceTree = BUILT_PRODUCTS_DIR; }; DFD6453F2EC827A10073E133 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; DFD74E2E2E423EA700613803 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - FBF000012F91000000D3E301 /* Package.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Package.swift; sourceTree = ""; }; + E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = Projects/DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ @@ -92,6 +271,8 @@ /* Begin PBXFileSystemSynchronizedRootGroup section */ DF34164A2E45F67C00F9312B /* DevLog_Unit */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + ); path = DevLog_Unit; sourceTree = ""; }; @@ -113,6 +294,8 @@ }; FB02A8C62F900000001DA7CD /* WidgetShared */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + ); path = WidgetShared; sourceTree = ""; }; @@ -123,14 +306,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FBF000012F91000000D3E007 /* DevLogWidgetCore in Frameworks */, - FBF000012F91000000D3E008 /* DevLogWidgetShared in Frameworks */, - FBF000012F91000000D3E006 /* DevLogUI in Frameworks */, - FBF000012F91000000D3E005 /* DevLogPresentation in Frameworks */, - FBF000012F91000000D3E004 /* DevLogStorage in Frameworks */, - FBF000012F91000000D3E003 /* DevLogInfra in Frameworks */, - FBF000012F91000000D3E002 /* DevLogData in Frameworks */, - FBF000012F91000000D3E001 /* DevLogDomain in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -147,24 +322,51 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 186E9AB4F0A79C50FE853607 /* DevLogDomain.framework in Frameworks */, + 8B41461F945DA9A94D3330F9 /* DevLogDataCommon.framework in Frameworks */, + CA836545BFC2C01D1A1197AF /* DevLogDataDTO.framework in Frameworks */, + E21AC32BAD51AD53627F4649 /* DevLogDataProtocol.framework in Frameworks */, + 593BFC1632C776A7D59EF625 /* DevLogDataMapper.framework in Frameworks */, + B51F2FBCE730B52489D0F89F /* DevLogDataRepository.framework in Frameworks */, + 7188DA2B6DFD13F7FF73069E /* DevLogInfra.framework in Frameworks */, + 79134AD67952720CCC5069EA /* DevLogStorage.framework in Frameworks */, + 26C3DC51F23F9C590FDB282D /* DevLogPresentation.framework in Frameworks */, + 7AB46A7765E72B61AC730D41 /* DevLogUI.framework in Frameworks */, + 1589C1EF4029ECBF15A842F0 /* DevLogWidgetCore.framework in Frameworks */, + 0957A66CFE9CB98EA302CC22 /* DevLogWidgetShared.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 4F3D8CEC7F23C3BFF6B9E27B /* Projects */ = { + isa = PBXGroup; + children = ( + 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */, + E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */, + CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */, + 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */, + DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */, + 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */, + 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */, + 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */, + ); + name = Projects; + sourceTree = ""; + }; DFD48AF72DC4D6E2005905C5 = { isa = PBXGroup; children = ( DFD74E2E2E423EA700613803 /* README.md */, DFD6453F2EC827A10073E133 /* .gitignore */, - FBF000012F91000000D3E301 /* Package.swift */, DF8AB7982E938B0B00E50BBF /* DevLog */, DF34164A2E45F67C00F9312B /* DevLog_Unit */, DFD3A9752F8E89DD001DA7CD /* DevLogWidget */, FB02A8C62F900000001DA7CD /* WidgetShared */, DFE28EB62DCCF26300B28FE5 /* Frameworks */, DFD48B012DC4D6E2005905C5 /* Products */, + 4F3D8CEC7F23C3BFF6B9E27B /* Projects */, ); sourceTree = ""; }; @@ -174,6 +376,18 @@ DF3416492E45F67C00F9312B /* DevLog_Unit.xctest */, DFD48B002DC4D6E2005905C5 /* DevLog.app */, DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */, + DA49949C677DDE083F7DE29E /* DevLogDomain.framework */, + DA04D8F5F1B04A3FBE8C5763 /* DevLogDataCommon.framework */, + 5DF226704A710E19F3CCAD1A /* DevLogDataDTO.framework */, + 731CC979BBA178E3862BBB74 /* DevLogDataProtocol.framework */, + AF31C7E0802E4877630B4E0D /* DevLogDataMapper.framework */, + C86A027695491A3640899360 /* DevLogDataRepository.framework */, + 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */, + 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */, + 67918B544432C45E63273D84 /* DevLogPresentation.framework */, + A2F070E465CD9260A295A505 /* DevLogUI.framework */, + EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */, + 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */, ); name = Products; sourceTree = ""; @@ -207,8 +421,6 @@ DF34164A2E45F67C00F9312B /* DevLog_Unit */, ); name = DevLog_Unit; - packageProductDependencies = ( - ); productName = DevLog_Unit; productReference = DF3416492E45F67C00F9312B /* DevLog_Unit.xctest */; productType = "com.apple.product-type.bundle.unit-test"; @@ -230,8 +442,6 @@ FB02A8C62F900000001DA7CD /* WidgetShared */, ); name = DevLogWidgetExtension; - packageProductDependencies = ( - ); productName = DevLogWidgetExtension; productReference = DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */; productType = "com.apple.product-type.app-extension"; @@ -250,21 +460,23 @@ dependencies = ( DF66A07D2EA52E9F0098E643 /* PBXTargetDependency */, DFD3A97E2F8E89DF001DA7CD /* PBXTargetDependency */, + 50D25760371BEF13D9781476 /* PBXTargetDependency */, + 9AC24C8197811B1C56EA711D /* PBXTargetDependency */, + FD5F4A6387D906469DD6FC9C /* PBXTargetDependency */, + CAFCDC210D73DEF4316034B4 /* PBXTargetDependency */, + 0BFC6FE7043DE7320546ABAF /* PBXTargetDependency */, + 82D40B00239B0AC02F41C723 /* PBXTargetDependency */, + 56CC02CD824E370E0BF33D2E /* PBXTargetDependency */, + CD56EF21C39E985CEDBB9165 /* PBXTargetDependency */, + F00B1378BDC6B8D7CCD24AB0 /* PBXTargetDependency */, + 9F9CC6108F20A1C3067082DD /* PBXTargetDependency */, + A2A3C286B46BB965A8D4C047 /* PBXTargetDependency */, + 88A796BDB56C53FB2A6CBBB0 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( DF8AB7982E938B0B00E50BBF /* DevLog */, ); name = DevLog; - packageProductDependencies = ( - FBF000012F91000000D3E101 /* DevLogDomain */, - FBF000012F91000000D3E102 /* DevLogData */, - FBF000012F91000000D3E103 /* DevLogInfra */, - FBF000012F91000000D3E104 /* DevLogStorage */, - FBF000012F91000000D3E105 /* DevLogPresentation */, - FBF000012F91000000D3E106 /* DevLogUI */, - FBF000012F91000000D3E107 /* DevLogWidgetCore */, - FBF000012F91000000D3E108 /* DevLogWidgetShared */, - ); productName = SwiftUI_DevLog; productReference = DFD48B002DC4D6E2005905C5 /* DevLog.app */; productType = "com.apple.product-type.application"; @@ -303,11 +515,44 @@ minimizedProjectReferenceProxies = 1; packageReferences = ( DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */, - FBF000012F91000000D3E201 /* XCLocalSwiftPackageReference "." */, ); preferredProjectObjectVersion = 77; productRefGroup = DFD48B012DC4D6E2005905C5 /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProjectRef = 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */; + }, + { + ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProjectRef = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + }, + { + ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProjectRef = CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */; + }, + { + ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProjectRef = 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */; + }, + { + ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProjectRef = DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */; + }, + { + ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProjectRef = 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */; + }, + { + ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProjectRef = 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */; + }, + { + ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProjectRef = 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */; + }, + ); projectRoot = ""; targets = ( DF3416442E45F67C00F9312B /* DevLog_Unit */, @@ -317,6 +562,93 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogWidgetShared.framework; + remoteRef = EA9A577921BC21C5451FCE98 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5DF226704A710E19F3CCAD1A /* DevLogDataDTO.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataDTO.framework; + remoteRef = 77B58AFF05F40515211C8701 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 67918B544432C45E63273D84 /* DevLogPresentation.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogPresentation.framework; + remoteRef = D113DE9A0832A6EB30D402FD /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogStorage.framework; + remoteRef = 933EF563698CBBA322E4A1FF /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 731CC979BBA178E3862BBB74 /* DevLogDataProtocol.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataProtocol.framework; + remoteRef = B0DA389C8C1AEFBF239204D4 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogInfra.framework; + remoteRef = A974AB39F1B9AEC8C3519A47 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + A2F070E465CD9260A295A505 /* DevLogUI.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogUI.framework; + remoteRef = 18CFACC537B0E3106305F47B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + AF31C7E0802E4877630B4E0D /* DevLogDataMapper.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataMapper.framework; + remoteRef = FEDD8ED334FBDE63B0402F8D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + C86A027695491A3640899360 /* DevLogDataRepository.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataRepository.framework; + remoteRef = FB9F2FE12E43931C76A6A7D5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + DA04D8F5F1B04A3FBE8C5763 /* DevLogDataCommon.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataCommon.framework; + remoteRef = C74665BE4047F0FD1DF4CEA7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + DA49949C677DDE083F7DE29E /* DevLogDomain.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDomain.framework; + remoteRef = 3BC2BDF8DAF15E7E6FF53443 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogWidgetCore.framework; + remoteRef = 687F85C6DCE6D569D448B141 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ DF3416482E45F67C00F9312B /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -368,6 +700,56 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 0BFC6FE7043DE7320546ABAF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataMapper; + targetProxy = 1EE32CC37C6DFCB68E794DB9 /* PBXContainerItemProxy */; + }; + 50D25760371BEF13D9781476 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = EA9B82690DAF18F719BA42AC /* PBXContainerItemProxy */; + }; + 56CC02CD824E370E0BF33D2E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogInfra; + targetProxy = 0F460A6F0F9B74AE847DFD16 /* PBXContainerItemProxy */; + }; + 82D40B00239B0AC02F41C723 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataRepository; + targetProxy = 08788C32F0E85A76D975F825 /* PBXContainerItemProxy */; + }; + 88A796BDB56C53FB2A6CBBB0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogWidgetShared; + targetProxy = F0A01BBA37FA27D63B9D6943 /* PBXContainerItemProxy */; + }; + 9AC24C8197811B1C56EA711D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataCommon; + targetProxy = 16573F1134973B16E8CBBE1A /* PBXContainerItemProxy */; + }; + 9F9CC6108F20A1C3067082DD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogUI; + targetProxy = 52E6272133B73E021A630191 /* PBXContainerItemProxy */; + }; + A2A3C286B46BB965A8D4C047 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogWidgetCore; + targetProxy = D47319B34F77243F170E2A1A /* PBXContainerItemProxy */; + }; + CAFCDC210D73DEF4316034B4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataProtocol; + targetProxy = A74090DFC060507C027FF285 /* PBXContainerItemProxy */; + }; + CD56EF21C39E985CEDBB9165 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogStorage; + targetProxy = 3EECE4329ECCA26C0A19337E /* PBXContainerItemProxy */; + }; DF34164C2E45F67C00F9312B /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = DFD48AFF2DC4D6E2005905C5 /* DevLog */; @@ -375,13 +757,23 @@ }; DF66A07D2EA52E9F0098E643 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - productRef = DF66A07C2EA52E9F0098E643 /* SwiftLintBuildToolPlugin */; + productRef = DF66A07C2EA52E9F0098E643 /* plugin:SwiftLintBuildToolPlugin */; }; DFD3A97E2F8E89DF001DA7CD /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = DFD3A96F2F8E89DD001DA7CD /* DevLogWidgetExtension */; targetProxy = DFD3A97D2F8E89DF001DA7CD /* PBXContainerItemProxy */; }; + F00B1378BDC6B8D7CCD24AB0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogPresentation; + targetProxy = 17E732C4E37D1ADD4E46D669 /* PBXContainerItemProxy */; + }; + FD5F4A6387D906469DD6FC9C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataDTO; + targetProxy = EFFE07E9E4CFAEB9C8C44C2A /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -773,13 +1165,6 @@ }; /* End XCConfigurationList section */ -/* Begin XCLocalSwiftPackageReference section */ - FBF000012F91000000D3E201 /* XCLocalSwiftPackageReference "." */ = { - isa = XCLocalSwiftPackageReference; - relativePath = "."; - }; -/* End XCLocalSwiftPackageReference section */ - /* Begin XCRemoteSwiftPackageReference section */ DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */ = { isa = XCRemoteSwiftPackageReference; @@ -792,43 +1177,11 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - DF66A07C2EA52E9F0098E643 /* SwiftLintBuildToolPlugin */ = { + DF66A07C2EA52E9F0098E643 /* plugin:SwiftLintBuildToolPlugin */ = { isa = XCSwiftPackageProductDependency; package = DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */; productName = "plugin:SwiftLintBuildToolPlugin"; }; - FBF000012F91000000D3E101 /* DevLogDomain */ = { - isa = XCSwiftPackageProductDependency; - productName = DevLogDomain; - }; - FBF000012F91000000D3E102 /* DevLogData */ = { - isa = XCSwiftPackageProductDependency; - productName = DevLogData; - }; - FBF000012F91000000D3E103 /* DevLogInfra */ = { - isa = XCSwiftPackageProductDependency; - productName = DevLogInfra; - }; - FBF000012F91000000D3E104 /* DevLogStorage */ = { - isa = XCSwiftPackageProductDependency; - productName = DevLogStorage; - }; - FBF000012F91000000D3E105 /* DevLogPresentation */ = { - isa = XCSwiftPackageProductDependency; - productName = DevLogPresentation; - }; - FBF000012F91000000D3E106 /* DevLogUI */ = { - isa = XCSwiftPackageProductDependency; - productName = DevLogUI; - }; - FBF000012F91000000D3E107 /* DevLogWidgetCore */ = { - isa = XCSwiftPackageProductDependency; - productName = DevLogWidgetCore; - }; - FBF000012F91000000D3E108 /* DevLogWidgetShared */ = { - isa = XCSwiftPackageProductDependency; - productName = DevLogWidgetShared; - }; /* End XCSwiftPackageProductDependency section */ }; rootObject = DFD48AF82DC4D6E2005905C5 /* Project object */; diff --git a/Package.swift b/Package.swift deleted file mode 100644 index 979320bf..00000000 --- a/Package.swift +++ /dev/null @@ -1,123 +0,0 @@ -// swift-tools-version: 5.9 - -import PackageDescription - -let package = Package( - name: "DevLogModules", - platforms: [ - .iOS(.v17) - ], - products: [ - .library(name: "DevLogDomain", targets: ["DevLogDomain"]), - .library(name: "DevLogData", targets: [ - "DevLogDataCommon", - "DevLogDataDTO", - "DevLogDataProtocol", - "DevLogDataMapper", - "DevLogDataRepository" - ]), - .library(name: "DevLogInfra", targets: ["DevLogInfra"]), - .library(name: "DevLogStorage", targets: ["DevLogStorage"]), - .library(name: "DevLogPresentation", targets: ["DevLogPresentation"]), - .library(name: "DevLogUI", targets: ["DevLogUI"]), - .library(name: "DevLogWidgetCore", targets: [ - "DevLogWidgetCore", - "DevLogWidgetShared" - ]), - .library(name: "DevLogWidgetShared", targets: ["DevLogWidgetShared"]) - ], - targets: [ - .target( - name: "DevLogDomain", - path: "DevLog/Domain" - ), - .target( - name: "DevLogDataCommon", - path: "DevLog/Data/Common" - ), - .target( - name: "DevLogDataDTO", - dependencies: ["DevLogDomain"], - path: "DevLog/Data/DTO" - ), - .target( - name: "DevLogDataProtocol", - dependencies: [ - "DevLogDomain", - "DevLogDataDTO" - ], - path: "DevLog/Data/Protocol" - ), - .target( - name: "DevLogDataMapper", - dependencies: [ - "DevLogDomain", - "DevLogDataCommon", - "DevLogDataDTO" - ], - path: "DevLog/Data/Mapper" - ), - .target( - name: "DevLogInfra", - dependencies: [ - "DevLogDataCommon", - "DevLogDataDTO", - "DevLogDataProtocol" - ], - path: "DevLog/Infra" - ), - .target( - name: "DevLogStorage", - dependencies: [ - "DevLogDomain", - "DevLogDataProtocol", - "DevLogPresentation", - "DevLogWidgetCore", - "DevLogWidgetShared" - ], - path: "DevLog/Storage" - ), - .target( - name: "DevLogDataRepository", - dependencies: [ - "DevLogDomain", - "DevLogDataCommon", - "DevLogDataDTO", - "DevLogDataProtocol", - "DevLogDataMapper" - ], - path: "DevLog/Data/Repository" - ), - .target( - name: "DevLogPresentation", - dependencies: [ - "DevLogDomain", - "DevLogDataCommon" - ], - path: "DevLog/Presentation" - ), - .target( - name: "DevLogUI", - dependencies: [ - "DevLogDomain", - "DevLogPresentation" - ], - path: "DevLog/UI" - ), - .target( - name: "DevLogWidgetCore", - dependencies: [ - "DevLogDomain", - "DevLogDataCommon", - "DevLogDataProtocol", - "DevLogPresentation", - "DevLogWidgetShared" - ], - path: "DevLog/Widget" - ), - .target( - name: "DevLogWidgetShared", - path: "WidgetShared" - ) - ] -) diff --git a/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj b/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj index a3503553..de343270 100644 --- a/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj +++ b/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj @@ -12,6 +12,7 @@ 06C8405C9CCC37319D16F4D6 /* TodoCursorDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */; }; 0C8E1C07EF01FB22BF8B80B9 /* PushNotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */; }; 14D1BF4D1F50FB067DA875B3 /* WebPageDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */; }; + 159FADC56D29B32B0613BB77 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; 18C2B39408BF745FE0BFC810 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67FC3A5288FABA7441F4D6AA /* Logger.swift */; }; 18D37737A07ECBDA79EA9270 /* WidgetSnapshotPreferenceStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */; }; 2068F0B84A3BC53EEB156D82 /* WebPageMetadataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */; }; @@ -48,7 +49,9 @@ 7A71FF2428AECD0170B555F7 /* WebPageMetadataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */; }; 7A74659BAEE980ECCBA0D22A /* UserProfileMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37830EA98EFABE66D2ADBCE9 /* UserProfileMapping.swift */; }; 7C88E53D0CC7798B5EFF8228 /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */; }; + 7FD388EB6C3123479B304478 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; 8744A8E2492B34573A5A1459 /* WebPageImageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 454F04A5E5887B163DD7E5A9 /* WebPageImageStore.swift */; }; + 8F9466853CB478992BFA7762 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; 986DAE304B67FC8F8563FC40 /* AuthSessionRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80CBBE2B99B80E70DCD800ED /* AuthSessionRepositoryImpl.swift */; }; 9B584555CC7504BEDF5F8008 /* WebPageImageRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 914EE1DC0A02968747B6B3A2 /* WebPageImageRepositoryImpl.swift */; }; A6BADE4BA91529F464FBEB0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; @@ -60,6 +63,7 @@ BB7C667A5651F5C5E60C9C65 /* TodoCategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 082E30ECD7061C9E401FF2D0 /* TodoCategoryService.swift */; }; C25D925CD643720891C3CD85 /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */; }; D910214884BD6503097E03F6 /* TodoCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */; }; + E00C306546BD8A52E12D2296 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; E671A77745F90F217E091010 /* UserDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */; }; E8FA3EF7AE26AA96A2168FEE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; EB5E684FF9C0430609D41D24 /* WidgetSnapshotUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */; }; @@ -67,6 +71,20 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 1981B85192DAF367924DB34F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; + 1AEE6078E99E8794FC5D9C1A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; 265EA22D69D36B94BD0FADCC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; @@ -88,6 +106,13 @@ remoteGlobalIDString = 6D02EDBA887507AC7BA79658; remoteInfo = DevLogDataProtocol; }; + 345F8284E22699C65B7FF89B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; 3838BBE0FEC6B9E08242914D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; @@ -95,6 +120,13 @@ remoteGlobalIDString = 0B9228953A84A7D7ED3BC5B8; remoteInfo = DevLogDataDTO; }; + 6E927734EC01B34C7A7B01C2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3F08F6B94839E9021FCFC466; + remoteInfo = Subproject; + }; 87C4E293CEB68865146027D2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; @@ -109,6 +141,13 @@ remoteGlobalIDString = 80A60CC195BD79C638F5B405; remoteInfo = DevLogDataCommon; }; + C7F303494B4D15C44C82AF32 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; F8A671FF637FB67637A2D9A2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; @@ -170,6 +209,7 @@ EE96D070821D1FB62A155AB5 /* PushNotificationPageResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationPageResponse.swift; path = ../../DevLog/Data/DTO/PushNotificationPageResponse.swift; sourceTree = ""; }; EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCursorDTO.swift; path = ../../DevLog/Data/DTO/TodoCursorDTO.swift; sourceTree = ""; }; EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataResponse.swift; path = ../../DevLog/Data/DTO/WebPageMetadataResponse.swift; sourceTree = ""; }; + F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -180,6 +220,7 @@ 552E7AC6C92BB3EDA4A3B99B /* Foundation.framework in Frameworks */, C25D925CD643720891C3CD85 /* DevLogDataCommon.framework in Frameworks */, 4FCA3EE76074371F5CA5F50F /* DevLogDataDTO.framework in Frameworks */, + 8F9466853CB478992BFA7762 /* DevLogDomain.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -188,6 +229,7 @@ buildActionMask = 2147483647; files = ( 6F59D30C084D7C827CC50F51 /* Foundation.framework in Frameworks */, + E00C306546BD8A52E12D2296 /* DevLogDomain.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -208,6 +250,7 @@ 7C88E53D0CC7798B5EFF8228 /* DevLogDataDTO.framework in Frameworks */, 4ABBDC64F51AD1D019D93D0E /* DevLogDataProtocol.framework in Frameworks */, F88DD9F3B1720EE23C9A23CC /* DevLogDataMapper.framework in Frameworks */, + 7FD388EB6C3123479B304478 /* DevLogDomain.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -217,6 +260,7 @@ files = ( 5CC76E5C85D4133B0E2409EC /* Foundation.framework in Frameworks */, 6386F4E9FC44422C070273C8 /* DevLogDataDTO.framework in Frameworks */, + 159FADC56D29B32B0613BB77 /* DevLogDomain.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -231,6 +275,7 @@ C063BD562070CA11C2AA4EDF /* DevLogDataProtocol.framework */, 44466B71BA6B67309210A7BB /* DevLogDataMapper.framework */, 4AB6E00A38C37CDBF82B57FD /* DevLogDataRepository.framework */, + 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */, ); name = Products; sourceTree = ""; @@ -264,6 +309,14 @@ name = Frameworks; sourceTree = ""; }; + 42F9CB6B105B33619467DE78 /* Projects */ = { + isa = PBXGroup; + children = ( + F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */, + ); + name = Projects; + sourceTree = ""; + }; 7B245CFF089F6CEF60B4F6D2 /* DevLogDataProtocol */ = { isa = PBXGroup; children = ( @@ -341,6 +394,7 @@ 7B245CFF089F6CEF60B4F6D2 /* DevLogDataProtocol */, AC74AEDF3E1FA188F66D5536 /* DevLogDataMapper */, E08CCD18836950C1AECD91DE /* DevLogDataRepository */, + 42F9CB6B105B33619467DE78 /* Projects */, ); sourceTree = ""; }; @@ -397,6 +451,7 @@ buildRules = ( ); dependencies = ( + 5B2FEE8E4475FD1CFDEBE355 /* PBXTargetDependency */, ); name = DevLogDataDTO; productName = DevLogDataDTO; @@ -417,6 +472,7 @@ dependencies = ( 6BD7CDC2CE90027069EBF474 /* PBXTargetDependency */, 9DF49C480F5AB60C3B9EBE38 /* PBXTargetDependency */, + 2AB91A72C9F3135F2114FAFE /* PBXTargetDependency */, ); name = DevLogDataMapper; productName = DevLogDataMapper; @@ -436,6 +492,7 @@ ); dependencies = ( AC3779B9D6B670AB6BC05C43 /* PBXTargetDependency */, + 297FB8C855D46D77DDDA1925 /* PBXTargetDependency */, ); name = DevLogDataProtocol; productName = DevLogDataProtocol; @@ -476,6 +533,7 @@ 0E96401944C90EF831B7D8E1 /* PBXTargetDependency */, BBF9CC002B18DE6FE4839A0B /* PBXTargetDependency */, C1C19451F7732DCE6BED672E /* PBXTargetDependency */, + C2D9D7E526019AEF507D8EFD /* PBXTargetDependency */, ); name = DevLogDataRepository; productName = DevLogDataRepository; @@ -504,6 +562,12 @@ preferredProjectObjectVersion = 77; productRefGroup = 27CDFCFF9F1093391B8566A1 /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 27CDFCFF9F1093391B8566A1 /* Products */; + ProjectRef = F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */; + }, + ); projectRoot = ""; targets = ( 80A60CC195BD79C638F5B405 /* DevLogDataCommon */, @@ -515,6 +579,16 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDomain.framework; + remoteRef = 6E927734EC01B34C7A7B01C2 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ 1E37BB8AE25D5987F5E24FEF /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -643,12 +717,27 @@ target = 0B9228953A84A7D7ED3BC5B8 /* DevLogDataDTO */; targetProxy = 87C4E293CEB68865146027D2 /* PBXContainerItemProxy */; }; + 297FB8C855D46D77DDDA1925 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = 345F8284E22699C65B7FF89B /* PBXContainerItemProxy */; + }; + 2AB91A72C9F3135F2114FAFE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = C7F303494B4D15C44C82AF32 /* PBXContainerItemProxy */; + }; 437F9D225A70C7BCFF3FBF39 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDataCommon; target = 80A60CC195BD79C638F5B405 /* DevLogDataCommon */; targetProxy = F8A671FF637FB67637A2D9A2 /* PBXContainerItemProxy */; }; + 5B2FEE8E4475FD1CFDEBE355 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = 1AEE6078E99E8794FC5D9C1A /* PBXContainerItemProxy */; + }; 6BD7CDC2CE90027069EBF474 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDataCommon; @@ -679,6 +768,11 @@ target = 27C8E1F04453FD577C839404 /* DevLogDataMapper */; targetProxy = 291C29C98BA846DB1EFF9263 /* PBXContainerItemProxy */; }; + C2D9D7E526019AEF507D8EFD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = 1981B85192DAF367924DB34F /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ diff --git a/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj b/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj index 0b929ab4..1580d4c8 100644 --- a/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj +++ b/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 0E1D2D0391955DAAAEB0090F /* PushNotificationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */; }; + 17DCF2F561737FAE2CE744AC /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E93139280AFA8F1C2B741F3 /* DevLogDataCommon.framework */; }; 1F4B40F21FD77E3BB481E763 /* GithubAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */; }; 3A2B4478D6F3438C00240EB4 /* GoogleAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */; }; 4A36236096C643DA1FF29771 /* UserServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 383CD000472C3025FACB9EFF /* UserServiceImpl.swift */; }; @@ -18,14 +19,75 @@ 6FCB70DE3225AFA821300AC7 /* InfraLayerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */; }; 70CDB738E0DE3895B7539B16 /* WebPageMetadataServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EB8D1DB924582822B68442 /* WebPageMetadataServiceImpl.swift */; }; 87F2CCAD35FD485467397CCC /* WebPageServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */; }; + 8DC809F74EA0D636E5F51A83 /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A5DD33E6F5140069CA53AAF /* DevLogDataDTO.framework */; }; 93D79429D184808FB702BF2D /* AppleAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E56286B1275FC5BD988C94B /* AppleAuthenticationServiceImpl.swift */; }; 9529B735E38CE98A8EC12AC3 /* TopViewControllerProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED31F0EEEF764BB7538C585 /* TopViewControllerProvider.swift */; }; + A18672C71ABCFAAFC19775F5 /* DevLogDataProtocol.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CE407FD20ABD6E4ABC9BC63 /* DevLogDataProtocol.framework */; }; D6A1524366DC5CF153821979 /* NWPathConnectivityProviderImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */; }; EA3F834C61E50B4F60789473 /* TodoCategoryServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */; }; F75AA9259C6636CF733C4D82 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */; }; FE130A3E1E85658BD3ECE791 /* FirebaseFunctions+.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9AFF9DAE09B8132A62D6DA8 /* FirebaseFunctions+.swift */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 222664031A3755F898AC4A64 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; + remoteInfo = Subproject; + }; + 32EC06031958F9D5646C1D0C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 6D02EDBA887507AC7BA79658; + remoteInfo = DevLogDataProtocol; + }; + 3C55FED4AAAFF680BC9A9419 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 690289F520872AC78D6C95D3; + remoteInfo = Subproject; + }; + 3CCA8B999AE2B98D2879E143 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 80A60CC195BD79C638F5B405; + remoteInfo = DevLogDataCommon; + }; + 727CFE0E6C6DAB110ACB562B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = C063BD562070CA11C2AA4EDF; + remoteInfo = Subproject; + }; + 7C38D533DC06F649C1864BD6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 44466B71BA6B67309210A7BB; + remoteInfo = Subproject; + }; + 9CDFD7B003CE61367A243C92 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 92502C9F074520D19CC451EF; + remoteInfo = Subproject; + }; + 9E214F3BA927C38871E8B03B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 0B9228953A84A7D7ED3BC5B8; + remoteInfo = DevLogDataDTO; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GithubAuthenticationServiceImpl.swift; path = ../../DevLog/Infra/Service/SocialLogin/GithubAuthenticationServiceImpl.swift; sourceTree = ""; }; 34EB8D1DB924582822B68442 /* WebPageMetadataServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataServiceImpl.swift; path = ../../DevLog/Infra/Service/WebPageMetadataServiceImpl.swift; sourceTree = ""; }; @@ -41,6 +103,7 @@ BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoServiceImpl.swift; path = ../../DevLog/Infra/Service/TodoServiceImpl.swift; sourceTree = ""; }; C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationServiceImpl.swift; path = ../../DevLog/Infra/Service/PushNotificationServiceImpl.swift; sourceTree = ""; }; CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryServiceImpl.swift; path = ../../DevLog/Infra/Service/TodoCategoryServiceImpl.swift; sourceTree = ""; }; + DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthServiceImpl.swift; path = ../../DevLog/Infra/Service/AuthServiceImpl.swift; sourceTree = ""; }; E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageServiceImpl.swift; path = ../../DevLog/Infra/Service/WebPageServiceImpl.swift; sourceTree = ""; }; F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InfraLayerError.swift; path = ../../DevLog/Infra/Common/InfraLayerError.swift; sourceTree = ""; }; @@ -53,6 +116,9 @@ buildActionMask = 2147483647; files = ( F75AA9259C6636CF733C4D82 /* Foundation.framework in Frameworks */, + 17DCF2F561737FAE2CE744AC /* DevLogDataCommon.framework in Frameworks */, + 8DC809F74EA0D636E5F51A83 /* DevLogDataDTO.framework in Frameworks */, + A18672C71ABCFAAFC19775F5 /* DevLogDataProtocol.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -63,6 +129,11 @@ isa = PBXGroup; children = ( 592C8B7B099933759AB316A5 /* DevLogInfra.framework */, + 7E93139280AFA8F1C2B741F3 /* DevLogDataCommon.framework */, + 6A5DD33E6F5140069CA53AAF /* DevLogDataDTO.framework */, + 6CE407FD20ABD6E4ABC9BC63 /* DevLogDataProtocol.framework */, + 2AC0C307821B12C249CFFC13 /* DevLogDataMapper.framework */, + 344EDB4AD1E8A6EE910CBABC /* DevLogDataRepository.framework */, ); name = Products; sourceTree = ""; @@ -73,6 +144,7 @@ 0488BFD2A2F470EEE29679F1 /* Products */, FBD6499620DAC9E2F9216AD5 /* Frameworks */, 959D79D1263CC74E32B40D78 /* DevLogInfra */, + D47699189A73B8C6972C611A /* Projects */, ); sourceTree = ""; }; @@ -107,6 +179,14 @@ name = DevLogInfra; sourceTree = ""; }; + D47699189A73B8C6972C611A /* Projects */ = { + isa = PBXGroup; + children = ( + DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */, + ); + name = Projects; + sourceTree = ""; + }; FBD6499620DAC9E2F9216AD5 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -140,6 +220,9 @@ buildRules = ( ); dependencies = ( + 70E913DD1742622E14034FA5 /* PBXTargetDependency */, + 56E7098218C952A11F239418 /* PBXTargetDependency */, + A7332E416B2191D257886169 /* PBXTargetDependency */, ); name = DevLogInfra; productName = DevLogInfra; @@ -168,6 +251,12 @@ preferredProjectObjectVersion = 77; productRefGroup = 0488BFD2A2F470EEE29679F1 /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 0488BFD2A2F470EEE29679F1 /* Products */; + ProjectRef = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; + }, + ); projectRoot = ""; targets = ( CB9B628AE2E0684C1FCF8840 /* DevLogInfra */, @@ -175,6 +264,44 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + 2AC0C307821B12C249CFFC13 /* DevLogDataMapper.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataMapper.framework; + remoteRef = 7C38D533DC06F649C1864BD6 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 344EDB4AD1E8A6EE910CBABC /* DevLogDataRepository.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataRepository.framework; + remoteRef = 222664031A3755F898AC4A64 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6A5DD33E6F5140069CA53AAF /* DevLogDataDTO.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataDTO.framework; + remoteRef = 9CDFD7B003CE61367A243C92 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6CE407FD20ABD6E4ABC9BC63 /* DevLogDataProtocol.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataProtocol.framework; + remoteRef = 727CFE0E6C6DAB110ACB562B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 7E93139280AFA8F1C2B741F3 /* DevLogDataCommon.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataCommon.framework; + remoteRef = 3C55FED4AAAFF680BC9A9419 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ 24A3D66AD03AA277EDDA0CC7 /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -211,6 +338,24 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 56E7098218C952A11F239418 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataDTO; + targetProxy = 9E214F3BA927C38871E8B03B /* PBXContainerItemProxy */; + }; + 70E913DD1742622E14034FA5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataCommon; + targetProxy = 3CCA8B999AE2B98D2879E143 /* PBXContainerItemProxy */; + }; + A7332E416B2191D257886169 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataProtocol; + targetProxy = 32EC06031958F9D5646C1D0C /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ 7569DA679CECDD9F8128BF95 /* Release */ = { isa = XCBuildConfiguration; diff --git a/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj b/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj index d8ccccee..c454cb2f 100644 --- a/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj +++ b/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj @@ -12,6 +12,7 @@ 104A1B691C40A8182E5F8EF8 /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = D26AF44FFBB251F34E8F80B5 /* Store.swift */; }; 10EA3E7496613DE389BF9DB7 /* PushNotificationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF28FCF602F6165DC67FE7D6 /* PushNotificationItem.swift */; }; 143CCE59C5AE926947DA0EA6 /* SystemTodoCategoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A117BE662EC3F9C96FF9AC61 /* SystemTodoCategoryItem.swift */; }; + 18C98041FF04371B8D65344B /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DCC0B6BEE21E7E61E0D2C8 /* DevLogDataCommon.framework */; }; 1A5EF7B2B4490CBCA9DAA040 /* SearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E844646CD1D172C92451FBE /* SearchViewModel.swift */; }; 246479E87ECFD0B2DDDA1F75 /* TodoListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA522CF101F432B37F315C24 /* TodoListViewModel.swift */; }; 2FB6AD996A213275B4EEEA05 /* TodayViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */; }; @@ -40,9 +41,69 @@ D8DCEA367C54C527295E004F /* HeatmapQuarter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */; }; DB081DF4854E8D445EFE0608 /* ProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */; }; E7EBEBA803A9449A6CBEF11B /* RecentTodoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */; }; + E91B53D33C90B9298E0B2EA1 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */; }; FBD395A75EDED059CC021AF3 /* PushNotificationSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 3DFAA1B8CAA99746A43B0525 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = C063BD562070CA11C2AA4EDF; + remoteInfo = Subproject; + }; + 63A78AEC0654C9B6030C055B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; + 77E4314FC17F4A0414624BB3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 80A60CC195BD79C638F5B405; + remoteInfo = DevLogDataCommon; + }; + 7EC73D0C02D4A6D53AB175BB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 690289F520872AC78D6C95D3; + remoteInfo = Subproject; + }; + 8AB12CC1E45EA2E88A0C348C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 44466B71BA6B67309210A7BB; + remoteInfo = Subproject; + }; + BDCEF8AD496E43BE1880A579 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 92502C9F074520D19CC451EF; + remoteInfo = Subproject; + }; + D589A82F38CCB742DB42F82D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; + remoteInfo = Subproject; + }; + F62246BFB23AD8069C3C9A25 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3F08F6B94839E9021FCFC466; + remoteInfo = Subproject; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingViewModel.swift; path = ../../DevLog/Presentation/ViewModel/SettingViewModel.swift; sourceTree = ""; }; 0BE3388699802CC7CD57BD74 /* TodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift; sourceTree = ""; }; @@ -58,6 +119,7 @@ 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ActivityKindItem.swift; path = ../../DevLog/Presentation/Structure/Profile/ActivityKindItem.swift; sourceTree = ""; }; 70C952669C86B8EB042ED7CF /* HeatmapMonth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapMonth.swift; path = ../../DevLog/Presentation/Structure/Profile/HeatmapMonth.swift; sourceTree = ""; }; 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewModel.swift; path = ../../DevLog/Presentation/ViewModel/HomeViewModel.swift; sourceTree = ""; }; + 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; 9305330DB8199E1911FAAF49 /* TodoIDItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoIDItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodoIDItem.swift; sourceTree = ""; }; 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReferenceItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift; sourceTree = ""; }; A04BEF390A74ECC5558A076F /* HeatmapActivityItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapActivityItem.swift; path = ../../DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift; sourceTree = ""; }; @@ -65,6 +127,7 @@ A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailViewModel.swift; path = ../../DevLog/Presentation/ViewModel/TodoDetailViewModel.swift; sourceTree = ""; }; A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsViewModel.swift; path = ../../DevLog/Presentation/ViewModel/PushNotificationSettingsViewModel.swift; sourceTree = ""; }; B19BFDE3E7FFD430D6DF2AA5 /* WebPageItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageItem.swift; path = ../../DevLog/Presentation/Structure/WebPageItem.swift; sourceTree = ""; }; + B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; B4D75E33B582B3347AC077B0 /* HeatmapDay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapDay.swift; path = ../../DevLog/Presentation/Structure/Profile/HeatmapDay.swift; sourceTree = ""; }; B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewModel.swift; path = ../../DevLog/Presentation/ViewModel/MainViewModel.swift; sourceTree = ""; }; BA522CF101F432B37F315C24 /* TodoListViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListViewModel.swift; path = ../../DevLog/Presentation/ViewModel/TodoListViewModel.swift; sourceTree = ""; }; @@ -87,6 +150,8 @@ buildActionMask = 2147483647; files = ( CC36598B842BA60E284D4A9E /* Foundation.framework in Frameworks */, + E91B53D33C90B9298E0B2EA1 /* DevLogDomain.framework in Frameworks */, + 18C98041FF04371B8D65344B /* DevLogDataCommon.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -97,6 +162,12 @@ isa = PBXGroup; children = ( 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */, + 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */, + E2DCC0B6BEE21E7E61E0D2C8 /* DevLogDataCommon.framework */, + B369CB942ED1617E5B26BEF5 /* DevLogDataDTO.framework */, + ECA0FA5D48B08534F54744FC /* DevLogDataProtocol.framework */, + 80C7F2CB4F4D5904E5DB6956 /* DevLogDataMapper.framework */, + 45BCDF66F607E7CACB49B7C9 /* DevLogDataRepository.framework */, ); name = Products; sourceTree = ""; @@ -107,9 +178,19 @@ 03D4331F04C462F4C642860F /* Products */, 9CC0354538B2A1DF2C74E484 /* Frameworks */, A4A427D518004ED78EB659DE /* DevLogPresentation */, + 65C85B83FD4ECCC13F82B90F /* Projects */, ); sourceTree = ""; }; + 65C85B83FD4ECCC13F82B90F /* Projects */ = { + isa = PBXGroup; + children = ( + B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */, + 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */, + ); + name = Projects; + sourceTree = ""; + }; 9A88EA8D5BC609F90B07B726 /* iOS */ = { isa = PBXGroup; children = ( @@ -191,6 +272,8 @@ buildRules = ( ); dependencies = ( + C8EA2345A40DFA6BCCD803EE /* PBXTargetDependency */, + 3E21F3A3C22C9F31A55EC073 /* PBXTargetDependency */, ); name = DevLogPresentation; productName = DevLogPresentation; @@ -219,6 +302,16 @@ preferredProjectObjectVersion = 77; productRefGroup = 03D4331F04C462F4C642860F /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 03D4331F04C462F4C642860F /* Products */; + ProjectRef = B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */; + }, + { + ProductGroup = 03D4331F04C462F4C642860F /* Products */; + ProjectRef = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; + }, + ); projectRoot = ""; targets = ( A85D2D7D1D6DAAFBF86C9C34 /* DevLogPresentation */, @@ -226,6 +319,51 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + 45BCDF66F607E7CACB49B7C9 /* DevLogDataRepository.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataRepository.framework; + remoteRef = D589A82F38CCB742DB42F82D /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDomain.framework; + remoteRef = F62246BFB23AD8069C3C9A25 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 80C7F2CB4F4D5904E5DB6956 /* DevLogDataMapper.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataMapper.framework; + remoteRef = 8AB12CC1E45EA2E88A0C348C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B369CB942ED1617E5B26BEF5 /* DevLogDataDTO.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataDTO.framework; + remoteRef = BDCEF8AD496E43BE1880A579 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + E2DCC0B6BEE21E7E61E0D2C8 /* DevLogDataCommon.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataCommon.framework; + remoteRef = 7EC73D0C02D4A6D53AB175BB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + ECA0FA5D48B08534F54744FC /* DevLogDataProtocol.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataProtocol.framework; + remoteRef = 3DFAA1B8CAA99746A43B0525 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ 5F943984CC1B4A3836CF316E /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -279,6 +417,19 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 3E21F3A3C22C9F31A55EC073 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataCommon; + targetProxy = 77E4314FC17F4A0414624BB3 /* PBXContainerItemProxy */; + }; + C8EA2345A40DFA6BCCD803EE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = 63A78AEC0654C9B6030C055B /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ 1119D89647A3E81696CD6F79 /* Debug */ = { isa = XCBuildConfiguration; diff --git a/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj b/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj index 2708b5ba..816d290d 100644 --- a/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj +++ b/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj @@ -8,20 +8,139 @@ /* Begin PBXBuildFile section */ 041CEED3822FCBD881DF75CD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 98B16FCDA8A71E2E4E1DC05E /* Foundation.framework */; }; + 0B318F82A17C708D399761BB /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A901500062F184A55322ED05 /* DevLogWidgetShared.framework */; }; 50BBA1C19A7C61B8B8F3A68B /* WebPageImageStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */; }; 5967B32779F22DD0E3C2D247 /* UserDefaultsStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */; }; 7044FCFCA32C8AA8F6FF4474 /* ThemeStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */; }; + 7D8DE74BD24B456D42B04806 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F334BCFC52C730D5901F6051 /* DevLogDomain.framework */; }; + 809200C32B4373978AEB0E9C /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E11B536BC8D874B485E853C1 /* DevLogDataCommon.framework */; }; 9814DBF1A0DCD650FEF5A376 /* WidgetSnapshotUpdaterImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */; }; B1EAEC66B3C4F0B16072F5BE /* WidgetSnapshotPreferenceStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */; }; + CBCE60D1065F6E710D2448C2 /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92ED589CB5AF264F08FAC2AA /* DevLogPresentation.framework */; }; + E53E13B73BFAF0C51013ECA2 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */; }; + FD5714A26C340EB6EA8EDF20 /* DevLogDataProtocol.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B82421EAA10239DFA7F2BC87 /* DevLogDataProtocol.framework */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 03525AD86342AAD3446AD593 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 667A0BFA990142C8AE46316A /* DevLogPresentation.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = A85D2D7D1D6DAAFBF86C9C34; + remoteInfo = DevLogPresentation; + }; + 1E8A0ECBDDDDE7B102E9CE1B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 690289F520872AC78D6C95D3; + remoteInfo = Subproject; + }; + 3F2DE4C241EABA0D34263E21 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 667A0BFA990142C8AE46316A /* DevLogPresentation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E7473315771B5D3030C5003; + remoteInfo = Subproject; + }; + 60C2DA2FC710E0E17F04FE38 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 80A60CC195BD79C638F5B405; + remoteInfo = DevLogDataCommon; + }; + 6556E45987F0D11205D84D04 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 687DD42230CC25053ABB5FB8; + remoteInfo = DevLogWidgetCore; + }; + 6AA166FC9277234B4C6E2573 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogWidgetShared; + }; + 702B915FA3D211548F1624EC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; + remoteInfo = Subproject; + }; + 7CD34B27DE3CD401A888D01C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 6AF1B307A7E7CC03AA2BABB1; + remoteInfo = Subproject; + }; + B483D32B2CE2C7866C3D2B67 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = C063BD562070CA11C2AA4EDF; + remoteInfo = Subproject; + }; + B5FF9EF1399BA2E5A9D85D03 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3F08F6B94839E9021FCFC466; + remoteInfo = Subproject; + }; + C118DECC34A0AE1E3085D4AB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; + D4D5E6A626F52A82593C41A7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; + remoteInfo = Subproject; + }; + EF59A8B8BF9427A9CCBFDED7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 92502C9F074520D19CC451EF; + remoteInfo = Subproject; + }; + F6327665FB1D25A5C222EAC8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 6D02EDBA887507AC7BA79658; + remoteInfo = DevLogDataProtocol; + }; + FEC02A9EDC4A1473ED0A43B5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 44466B71BA6B67309210A7BB; + remoteInfo = Subproject; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStoreImpl.swift; path = ../../DevLog/Storage/Persistence/ThemeStoreImpl.swift; sourceTree = ""; }; + 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; + 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; + 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; + 667A0BFA990142C8AE46316A /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStoreImpl.swift; path = ../../DevLog/Storage/Persistence/WidgetSnapshotPreferenceStoreImpl.swift; sourceTree = ""; }; 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStoreImpl.swift; path = ../../DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift; sourceTree = ""; }; 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdaterImpl.swift; path = ../../DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift; sourceTree = ""; }; 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogStorage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 98B16FCDA8A71E2E4E1DC05E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStoreImpl.swift; path = ../../DevLog/Storage/Persistence/WebPageImageStoreImpl.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -31,6 +150,12 @@ buildActionMask = 2147483647; files = ( 041CEED3822FCBD881DF75CD /* Foundation.framework in Frameworks */, + 7D8DE74BD24B456D42B04806 /* DevLogDomain.framework in Frameworks */, + 809200C32B4373978AEB0E9C /* DevLogDataCommon.framework in Frameworks */, + FD5714A26C340EB6EA8EDF20 /* DevLogDataProtocol.framework in Frameworks */, + CBCE60D1065F6E710D2448C2 /* DevLogPresentation.framework in Frameworks */, + E53E13B73BFAF0C51013ECA2 /* DevLogWidgetCore.framework in Frameworks */, + 0B318F82A17C708D399761BB /* DevLogWidgetShared.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -71,6 +196,7 @@ AD653F86B18A4BB73CB50AFE /* Products */, 49F17FD9095E72DC89748471 /* Frameworks */, 63CE47D539EE6F9653C99773 /* DevLogStorage */, + C005798DC28F77FF8B0E248A /* Projects */, ); sourceTree = ""; }; @@ -78,10 +204,31 @@ isa = PBXGroup; children = ( 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */, + F334BCFC52C730D5901F6051 /* DevLogDomain.framework */, + E11B536BC8D874B485E853C1 /* DevLogDataCommon.framework */, + D300944DB7E80C6114C3B3CC /* DevLogDataDTO.framework */, + B82421EAA10239DFA7F2BC87 /* DevLogDataProtocol.framework */, + C44C541F40188C5D426687A9 /* DevLogDataMapper.framework */, + 85C80A6D5C01B14BC8BA3898 /* DevLogDataRepository.framework */, + 92ED589CB5AF264F08FAC2AA /* DevLogPresentation.framework */, + 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */, + A901500062F184A55322ED05 /* DevLogWidgetShared.framework */, ); name = Products; sourceTree = ""; }; + C005798DC28F77FF8B0E248A /* Projects */ = { + isa = PBXGroup; + children = ( + 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */, + 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */, + 667A0BFA990142C8AE46316A /* DevLogPresentation.xcodeproj */, + AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */, + 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */, + ); + name = Projects; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -107,6 +254,12 @@ buildRules = ( ); dependencies = ( + 083FDD9BBD997A11EED7ACA9 /* PBXTargetDependency */, + 4E20E0F4BBBBD8A8C0B4C71F /* PBXTargetDependency */, + 990E65E094C3CCFB4C1E1A8B /* PBXTargetDependency */, + 2E5E60AD3247315CCBCA3361 /* PBXTargetDependency */, + 8C9EB60C8E58A67726AF0EF1 /* PBXTargetDependency */, + 79C71E38CBE3984287E4AC6A /* PBXTargetDependency */, ); name = DevLogStorage; productName = DevLogStorage; @@ -135,6 +288,28 @@ preferredProjectObjectVersion = 77; productRefGroup = AD653F86B18A4BB73CB50AFE /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = AD653F86B18A4BB73CB50AFE /* Products */; + ProjectRef = 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */; + }, + { + ProductGroup = AD653F86B18A4BB73CB50AFE /* Products */; + ProjectRef = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; + }, + { + ProductGroup = AD653F86B18A4BB73CB50AFE /* Products */; + ProjectRef = 667A0BFA990142C8AE46316A /* DevLogPresentation.xcodeproj */; + }, + { + ProductGroup = AD653F86B18A4BB73CB50AFE /* Products */; + ProjectRef = AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */; + }, + { + ProductGroup = AD653F86B18A4BB73CB50AFE /* Products */; + ProjectRef = 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */; + }, + ); projectRoot = ""; targets = ( 0C205A501EF8E79FA9A73C4B /* DevLogStorage */, @@ -142,6 +317,72 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogWidgetCore.framework; + remoteRef = 7CD34B27DE3CD401A888D01C /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 85C80A6D5C01B14BC8BA3898 /* DevLogDataRepository.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataRepository.framework; + remoteRef = D4D5E6A626F52A82593C41A7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 92ED589CB5AF264F08FAC2AA /* DevLogPresentation.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogPresentation.framework; + remoteRef = 3F2DE4C241EABA0D34263E21 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + A901500062F184A55322ED05 /* DevLogWidgetShared.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogWidgetShared.framework; + remoteRef = 702B915FA3D211548F1624EC /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B82421EAA10239DFA7F2BC87 /* DevLogDataProtocol.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataProtocol.framework; + remoteRef = B483D32B2CE2C7866C3D2B67 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + C44C541F40188C5D426687A9 /* DevLogDataMapper.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataMapper.framework; + remoteRef = FEC02A9EDC4A1473ED0A43B5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + D300944DB7E80C6114C3B3CC /* DevLogDataDTO.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataDTO.framework; + remoteRef = EF59A8B8BF9427A9CCBFDED7 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + E11B536BC8D874B485E853C1 /* DevLogDataCommon.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataCommon.framework; + remoteRef = 1E8A0ECBDDDDE7B102E9CE1B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + F334BCFC52C730D5901F6051 /* DevLogDomain.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDomain.framework; + remoteRef = B5FF9EF1399BA2E5A9D85D03 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ E2A3D481BE3C181451082513 /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -167,6 +408,39 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 083FDD9BBD997A11EED7ACA9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = C118DECC34A0AE1E3085D4AB /* PBXContainerItemProxy */; + }; + 2E5E60AD3247315CCBCA3361 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogPresentation; + targetProxy = 03525AD86342AAD3446AD593 /* PBXContainerItemProxy */; + }; + 4E20E0F4BBBBD8A8C0B4C71F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataCommon; + targetProxy = 60C2DA2FC710E0E17F04FE38 /* PBXContainerItemProxy */; + }; + 79C71E38CBE3984287E4AC6A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogWidgetShared; + targetProxy = 6AA166FC9277234B4C6E2573 /* PBXContainerItemProxy */; + }; + 8C9EB60C8E58A67726AF0EF1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogWidgetCore; + targetProxy = 6556E45987F0D11205D84D04 /* PBXContainerItemProxy */; + }; + 990E65E094C3CCFB4C1E1A8B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataProtocol; + targetProxy = F6327665FB1D25A5C222EAC8 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ 3047117C7630A6B91F1477F5 /* Debug */ = { isa = XCBuildConfiguration; diff --git a/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj b/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj index 1477f44a..8d0a2633 100644 --- a/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj +++ b/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ 233981B375AF5EA066660B86 /* UIKitTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */; }; 26FA5A7B5E8EDE1B8B6BEE4C /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4255A04E841570A664D15C72 /* SearchView.swift */; }; 2781DD85BEB0D586F730C53C /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F04A173095F3737E4487EF7 /* ProfileView.swift */; }; + 2A16034EA7F17361A17B80AA /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A7EFE823B69A90528963EA6 /* DevLogPresentation.framework */; }; 33374D81BED973A28E95EB88 /* HeatmapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */; }; 3568FBF125892AF4577A533B /* PushNotificationListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */; }; 3C865F560E7A379D616F092D /* TodoManageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9340555B2B620464698851A5 /* TodoManageView.swift */; }; @@ -30,6 +31,7 @@ 9225927FB28E8A2DD20DEF54 /* CacheableImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 192A2827C2D676A1AE820FBA /* CacheableImage.swift */; }; 9A245A6C4C2FA8D55EA8840D /* TodoItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */; }; 9E8EAA00729A59F67360F063 /* WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BB99F804DD47B96FCCFDC0 /* WebView.swift */; }; + A4AD1EE45C758CF4DBA545A9 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03163FCF510FAA69D772F466 /* DevLogDomain.framework */; }; AAA318D37BC97EFB4C785ECD /* TodoInfoSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */; }; AEA3D50A9080249A6359476C /* CheckBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B72345FA909BFA40078D53 /* CheckBox.swift */; }; B4A60A3AB524E4F9D68750C3 /* TodayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F51F902DA946EBFEEC4CD14B /* TodayView.swift */; }; @@ -48,6 +50,37 @@ F99147DC6D6F48E3842CD204 /* LoginButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 4B34A432C50DB9586CA58C58 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E7473315771B5D3030C5003; + remoteInfo = Subproject; + }; + D408B4BC83C710F46F7B9E1B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; + F8D6CA488ADBE3311ABF0142 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = A85D2D7D1D6DAAFBF86C9C34; + remoteInfo = DevLogPresentation; + }; + FA6ED833721ECB7CAC797902 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3F08F6B94839E9021FCFC466; + remoteInfo = Subproject; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsView.swift; path = ../../DevLog/UI/Setting/PushNotificationSettingsView.swift; sourceTree = ""; }; 192A2827C2D676A1AE820FBA /* CacheableImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheableImage.swift; path = ../../DevLog/UI/Common/Component/CacheableImage.swift; sourceTree = ""; }; @@ -56,6 +89,7 @@ 27BB99F804DD47B96FCCFDC0 /* WebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebView.swift; path = ../../DevLog/UI/Common/WebView.swift; sourceTree = ""; }; 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RelativeTimeText.swift; path = ../../DevLog/UI/Common/Component/RelativeTimeText.swift; sourceTree = ""; }; 2B45C610096E5AC2967606A6 /* TodoListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListView.swift; path = ../../DevLog/UI/Home/TodoListView.swift; sourceTree = ""; }; + 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; 2EAB97486EC371BE330C70FE /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = ../../DevLog/UI/Common/Component/Toast.swift; sourceTree = ""; }; 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewCoordinator.swift; path = ../../DevLog/UI/Main/MainViewCoordinator.swift; sourceTree = ""; }; 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoItemRow.swift; path = ../../DevLog/UI/Common/Component/TodoItemRow.swift; sourceTree = ""; }; @@ -66,6 +100,7 @@ 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewCoordinator.swift; path = ../../DevLog/UI/Today/TodayViewCoordinator.swift; sourceTree = ""; }; 69C35DBF629B40E93721B79D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationBarConfigurator.swift; path = ../../DevLog/UI/Common/NavigationBarConfigurator.swift; sourceTree = ""; }; + 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationRouter.swift; path = ../../DevLog/UI/Common/NavigationRouter.swift; sourceTree = ""; }; 7F04A173095F3737E4487EF7 /* ProfileView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileView.swift; path = ../../DevLog/UI/Profile/ProfileView.swift; sourceTree = ""; }; 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapView.swift; path = ../../DevLog/UI/Profile/HeatmapView.swift; sourceTree = ""; }; @@ -97,6 +132,8 @@ buildActionMask = 2147483647; files = ( DCF1DA50663107DA4687A0D4 /* Foundation.framework in Frameworks */, + A4AD1EE45C758CF4DBA545A9 /* DevLogDomain.framework in Frameworks */, + 2A16034EA7F17361A17B80AA /* DevLogPresentation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -111,6 +148,15 @@ name = iOS; sourceTree = ""; }; + 6C60332595233030EAFFE839 /* Projects */ = { + isa = PBXGroup; + children = ( + 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */, + 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */, + ); + name = Projects; + sourceTree = ""; + }; 7B53286AA9A58D5B6C0124F8 /* DevLogUI */ = { isa = PBXGroup; children = ( @@ -168,6 +214,8 @@ isa = PBXGroup; children = ( EF72EFD447F4FDC1142BABA1 /* DevLogUI.framework */, + 03163FCF510FAA69D772F466 /* DevLogDomain.framework */, + 2A7EFE823B69A90528963EA6 /* DevLogPresentation.framework */, ); name = Products; sourceTree = ""; @@ -178,6 +226,7 @@ B68C915FE344171A3A1311EF /* Products */, 904674574352E72D5129271C /* Frameworks */, 7B53286AA9A58D5B6C0124F8 /* DevLogUI */, + 6C60332595233030EAFFE839 /* Projects */, ); sourceTree = ""; }; @@ -206,6 +255,8 @@ buildRules = ( ); dependencies = ( + 20304BBBBB4E5B09A653B1F4 /* PBXTargetDependency */, + 4F02ECB9EB26770F47EC2D36 /* PBXTargetDependency */, ); name = DevLogUI; productName = DevLogUI; @@ -234,6 +285,16 @@ preferredProjectObjectVersion = 77; productRefGroup = B68C915FE344171A3A1311EF /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = B68C915FE344171A3A1311EF /* Products */; + ProjectRef = 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */; + }, + { + ProductGroup = B68C915FE344171A3A1311EF /* Products */; + ProjectRef = 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */; + }, + ); projectRoot = ""; targets = ( D205F480E5CDACDE14BEF619 /* DevLogUI */, @@ -241,6 +302,23 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + 03163FCF510FAA69D772F466 /* DevLogDomain.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDomain.framework; + remoteRef = FA6ED833721ECB7CAC797902 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 2A7EFE823B69A90528963EA6 /* DevLogPresentation.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogPresentation.framework; + remoteRef = 4B34A432C50DB9586CA58C58 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ 770F98EDFF3E434D5AA9B2FF /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -299,6 +377,19 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 20304BBBBB4E5B09A653B1F4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = D408B4BC83C710F46F7B9E1B /* PBXContainerItemProxy */; + }; + 4F02ECB9EB26770F47EC2D36 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogPresentation; + targetProxy = F8D6CA488ADBE3311ABF0142 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ 0017B20412D6EAAA00596A5A /* Release */ = { isa = XCBuildConfiguration; diff --git a/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj b/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj index b5e89c82..96c6300f 100644 --- a/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj +++ b/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj @@ -7,30 +7,133 @@ objects = { /* Begin PBXBuildFile section */ + 0404C6CCF356EE25271EF71F /* DevLogDataProtocol.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7FBF3D9169BF38CAE0CEF09 /* DevLogDataProtocol.framework */; }; 13912C8BE3310B5BCCE71ED8 /* WidgetSharedDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */; }; + 1E316639D5B48E091F18C91D /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E46E84150C232E2525F648D1 /* DevLogWidgetShared.framework */; }; 3BF3B864B5A91686CFA17EDD /* WidgetSyncEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */; }; 5C7FE28461303EC8CE211B57 /* WidgetSyncEventBusImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 489FB48B79E61FF3332C9F3F /* WidgetSyncEventBusImpl.swift */; }; 641BA820F65E8F78F200EDCF /* HeatmapWidgetSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */; }; 75C99AB35C6DF930E824185E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBD260F923A87C1577DBFF0F /* Foundation.framework */; }; + A1DEB84CF3B18EC2005382C5 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B108898FD3650BE0C116BD3C /* DevLogDomain.framework */; }; A839995EF6B607DBECF11933 /* HeatmapWidgetSnapshotFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */; }; B2223843996C9D11E0193B16 /* WidgetSnapshotStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */; }; + B5136D8DCBDD2122668F36C5 /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EECF1D1D174C83D0E82EEC37 /* DevLogDataCommon.framework */; }; + C0FB13AD82E4EE78C5FCD66B /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 037D41D56652256DBDC2FC4B /* DevLogPresentation.framework */; }; CD7C54E749A6696CF92AEF71 /* WidgetSyncEventBus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */; }; F29C18438886406B532B926B /* TodayWidgetSnapshotFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */; }; F9D4F24C64D75DC51F89BBC5 /* TodayWidgetSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */; }; FF161CCB92AC2C2C754DDA8C /* WidgetSyncEventHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 02A96B900FAA51A0B74AD834 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 80A60CC195BD79C638F5B405; + remoteInfo = DevLogDataCommon; + }; + 2AF199A550338B69B3A014E5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 92502C9F074520D19CC451EF; + remoteInfo = Subproject; + }; + 2B43104001EB83FCD2A9652B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 5E7473315771B5D3030C5003; + remoteInfo = Subproject; + }; + 3021BF47C2FDC8E6FA84B229 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogWidgetShared; + }; + 406A7B367DEC67D4F9E38522 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3F08F6B94839E9021FCFC466; + remoteInfo = Subproject; + }; + 42BDD2F44A35E6964E4E3FF2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; + remoteInfo = Subproject; + }; + 4B20675D0FE2BD86C96476FB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 690289F520872AC78D6C95D3; + remoteInfo = Subproject; + }; + 56094523CC7D9BCC66E74586 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 44466B71BA6B67309210A7BB; + remoteInfo = Subproject; + }; + 61D01BA6685628EE0C85CC5F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = C063BD562070CA11C2AA4EDF; + remoteInfo = Subproject; + }; + 6B58A164E93F51C78CBAE314 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; + 8A950C8C84D89659104D9BE2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = A85D2D7D1D6DAAFBF86C9C34; + remoteInfo = DevLogPresentation; + }; + 9AD37FC80466FDCF48198BE8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; + remoteInfo = Subproject; + }; + 9DA942D7975F9DD9E204BA52 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 6D02EDBA887507AC7BA79658; + remoteInfo = DevLogDataProtocol; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ + 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventBus.swift; path = ../../DevLog/Widget/Sync/WidgetSyncEventBus.swift; sourceTree = ""; }; 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshotFactory.swift; path = ../../DevLog/Widget/Heatmap/HeatmapWidgetSnapshotFactory.swift; sourceTree = ""; }; 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshotFactory.swift; path = ../../DevLog/Widget/Today/TodayWidgetSnapshotFactory.swift; sourceTree = ""; }; 489FB48B79E61FF3332C9F3F /* WidgetSyncEventBusImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventBusImpl.swift; path = ../../DevLog/Widget/Sync/WidgetSyncEventBusImpl.swift; sourceTree = ""; }; 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEvent.swift; path = ../../DevLog/Widget/Common/WidgetSyncEvent.swift; sourceTree = ""; }; 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotStore.swift; path = ../../DevLog/Widget/Common/WidgetSnapshotStore.swift; sourceTree = ""; }; + 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshot.swift; path = ../../DevLog/Widget/Today/TodayWidgetSnapshot.swift; sourceTree = ""; }; 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogWidgetCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshot.swift; path = ../../DevLog/Widget/Heatmap/HeatmapWidgetSnapshot.swift; sourceTree = ""; }; 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSharedDefaultsStore.swift; path = ../../DevLog/Widget/Common/WidgetSharedDefaultsStore.swift; sourceTree = ""; }; + ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; + B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventHandler.swift; path = ../../DevLog/Widget/Sync/WidgetSyncEventHandler.swift; sourceTree = ""; }; FBD260F923A87C1577DBFF0F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; /* End PBXFileReference section */ @@ -41,6 +144,11 @@ buildActionMask = 2147483647; files = ( 75C99AB35C6DF930E824185E /* Foundation.framework in Frameworks */, + A1DEB84CF3B18EC2005382C5 /* DevLogDomain.framework in Frameworks */, + B5136D8DCBDD2122668F36C5 /* DevLogDataCommon.framework in Frameworks */, + 0404C6CCF356EE25271EF71F /* DevLogDataProtocol.framework in Frameworks */, + C0FB13AD82E4EE78C5FCD66B /* DevLogPresentation.framework in Frameworks */, + 1E316639D5B48E091F18C91D /* DevLogWidgetShared.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -55,10 +163,29 @@ name = Frameworks; sourceTree = ""; }; + 23F6B7BB30A8782BF2FB2D92 /* Projects */ = { + isa = PBXGroup; + children = ( + B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */, + ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */, + 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */, + 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */, + ); + name = Projects; + sourceTree = ""; + }; 573F3011EB6718B39FCF276F /* Products */ = { isa = PBXGroup; children = ( 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */, + B108898FD3650BE0C116BD3C /* DevLogDomain.framework */, + EECF1D1D174C83D0E82EEC37 /* DevLogDataCommon.framework */, + 55250D20C9A4B42D2FF1334C /* DevLogDataDTO.framework */, + B7FBF3D9169BF38CAE0CEF09 /* DevLogDataProtocol.framework */, + 6D0A229E66EFF934401E5C41 /* DevLogDataMapper.framework */, + E0C97D1D94352CA4F40DB4C9 /* DevLogDataRepository.framework */, + 037D41D56652256DBDC2FC4B /* DevLogPresentation.framework */, + E46E84150C232E2525F648D1 /* DevLogWidgetShared.framework */, ); name = Products; sourceTree = ""; @@ -69,6 +196,7 @@ 573F3011EB6718B39FCF276F /* Products */, 22B18020E715C5AFC73F00FA /* Frameworks */, B60F0C6B052E1EF8CC827AD9 /* DevLogWidgetCore */, + 23F6B7BB30A8782BF2FB2D92 /* Projects */, ); sourceTree = ""; }; @@ -122,6 +250,11 @@ buildRules = ( ); dependencies = ( + 504FAABF657F1D901A2B6BB9 /* PBXTargetDependency */, + 4036ECCB1366A3CEC681FEB9 /* PBXTargetDependency */, + FAB7CF08795995774C902DE1 /* PBXTargetDependency */, + D3B08393F3B485387A0BCDE2 /* PBXTargetDependency */, + 5A7DA83CEEE7600394C47846 /* PBXTargetDependency */, ); name = DevLogWidgetCore; productName = DevLogWidgetCore; @@ -150,6 +283,24 @@ preferredProjectObjectVersion = 77; productRefGroup = 573F3011EB6718B39FCF276F /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 573F3011EB6718B39FCF276F /* Products */; + ProjectRef = B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */; + }, + { + ProductGroup = 573F3011EB6718B39FCF276F /* Products */; + ProjectRef = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; + }, + { + ProductGroup = 573F3011EB6718B39FCF276F /* Products */; + ProjectRef = 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */; + }, + { + ProductGroup = 573F3011EB6718B39FCF276F /* Products */; + ProjectRef = 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */; + }, + ); projectRoot = ""; targets = ( 687DD42230CC25053ABB5FB8 /* DevLogWidgetCore */, @@ -157,6 +308,65 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + 037D41D56652256DBDC2FC4B /* DevLogPresentation.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogPresentation.framework; + remoteRef = 2B43104001EB83FCD2A9652B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 55250D20C9A4B42D2FF1334C /* DevLogDataDTO.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataDTO.framework; + remoteRef = 2AF199A550338B69B3A014E5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6D0A229E66EFF934401E5C41 /* DevLogDataMapper.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataMapper.framework; + remoteRef = 56094523CC7D9BCC66E74586 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B108898FD3650BE0C116BD3C /* DevLogDomain.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDomain.framework; + remoteRef = 406A7B367DEC67D4F9E38522 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + B7FBF3D9169BF38CAE0CEF09 /* DevLogDataProtocol.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataProtocol.framework; + remoteRef = 61D01BA6685628EE0C85CC5F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + E0C97D1D94352CA4F40DB4C9 /* DevLogDataRepository.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataRepository.framework; + remoteRef = 9AD37FC80466FDCF48198BE8 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + E46E84150C232E2525F648D1 /* DevLogWidgetShared.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogWidgetShared.framework; + remoteRef = 42BDD2F44A35E6964E4E3FF2 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + EECF1D1D174C83D0E82EEC37 /* DevLogDataCommon.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDataCommon.framework; + remoteRef = 4B20675D0FE2BD86C96476FB /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ 26D0E06B5E51FC49407674A2 /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -187,6 +397,34 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 4036ECCB1366A3CEC681FEB9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataCommon; + targetProxy = 02A96B900FAA51A0B74AD834 /* PBXContainerItemProxy */; + }; + 504FAABF657F1D901A2B6BB9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = 6B58A164E93F51C78CBAE314 /* PBXContainerItemProxy */; + }; + 5A7DA83CEEE7600394C47846 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogWidgetShared; + targetProxy = 3021BF47C2FDC8E6FA84B229 /* PBXContainerItemProxy */; + }; + D3B08393F3B485387A0BCDE2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogPresentation; + targetProxy = 8A950C8C84D89659104D9BE2 /* PBXContainerItemProxy */; + }; + FAB7CF08795995774C902DE1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDataProtocol; + targetProxy = 9DA942D7975F9DD9E204BA52 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ 8E2FD158204AEBB5D6B1CAA7 /* Release */ = { isa = XCBuildConfiguration; From 4e70f10450cd4a40b2dae379d79cac045df6fd5d Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 01:11:41 +0900 Subject: [PATCH 07/46] =?UTF-8?q?refactor:=20=EB=A0=88=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=EC=9D=98=20=EC=86=8C?= =?UTF-8?q?=EC=8A=A4=20=EA=B7=B8=EB=A3=B9=20=EA=B5=AC=EC=A1=B0=20=EB=B3=B5?= =?UTF-8?q?=EC=9B=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogData.xcodeproj/project.pbxproj | 98 ++-- .../DevLogDomain.xcodeproj/project.pbxproj | 506 ++++++++++++++---- .../DevLogInfra.xcodeproj/project.pbxproj | 62 ++- .../project.pbxproj | 98 +++- .../DevLogStorage.xcodeproj/project.pbxproj | 10 +- .../DevLogUI.xcodeproj/project.pbxproj | 146 ++++- .../project.pbxproj | 46 +- 7 files changed, 747 insertions(+), 219 deletions(-) diff --git a/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj b/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj index de343270..7399eace 100644 --- a/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj +++ b/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj @@ -267,20 +267,7 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 27CDFCFF9F1093391B8566A1 /* Products */ = { - isa = PBXGroup; - children = ( - 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */, - 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */, - C063BD562070CA11C2AA4EDF /* DevLogDataProtocol.framework */, - 44466B71BA6B67309210A7BB /* DevLogDataMapper.framework */, - 4AB6E00A38C37CDBF82B57FD /* DevLogDataRepository.framework */, - 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */, - ); - name = Products; - sourceTree = ""; - }; - 32F3EA46CD5E7F17AC449CB8 /* DevLogDataDTO */ = { + 1DECEF89B4893159CF3166B3 /* DTO */ = { isa = PBXGroup; children = ( EB4A7B045A63D5BC6A541D8E /* AppleAuthResponse.swift */, @@ -298,30 +285,27 @@ 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */, EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */, ); - name = DevLogDataDTO; + name = DTO; sourceTree = ""; }; - 3957A84DA44597517DA50BD3 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 8800BDCE685EF17A4BCB28C8 /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 42F9CB6B105B33619467DE78 /* Projects */ = { + 27CDFCFF9F1093391B8566A1 /* Products */ = { isa = PBXGroup; children = ( - F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */, + 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */, + 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */, + C063BD562070CA11C2AA4EDF /* DevLogDataProtocol.framework */, + 44466B71BA6B67309210A7BB /* DevLogDataMapper.framework */, + 4AB6E00A38C37CDBF82B57FD /* DevLogDataRepository.framework */, + 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */, ); - name = Projects; + name = Products; sourceTree = ""; }; - 7B245CFF089F6CEF60B4F6D2 /* DevLogDataProtocol */ = { + 28BA3BE754C65F0ABE0B18D3 /* Protocol */ = { isa = PBXGroup; children = ( - 7559825C27ED42F9F86EBAC1 /* AuthService.swift */, E7154773B586C2D41307CD49 /* AuthenticationService.swift */, + 7559825C27ED42F9F86EBAC1 /* AuthService.swift */, 3B67886F72C946CBC709AFCB /* NWPathConnectivityProvider.swift */, 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */, 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */, @@ -335,27 +319,47 @@ BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */, 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */, ); - name = DevLogDataProtocol; + name = Protocol; sourceTree = ""; }; - 8800BDCE685EF17A4BCB28C8 /* iOS */ = { + 2EF24323F391ADD8E2880BB1 /* Common */ = { isa = PBXGroup; children = ( - DD765636013B36A3BCCCF8B7 /* Foundation.framework */, + A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */, + 67FC3A5288FABA7441F4D6AA /* Logger.swift */, ); - name = iOS; + name = Common; sourceTree = ""; }; - 8C9988B575EE07030E07DEDE /* DevLogDataCommon */ = { + 3957A84DA44597517DA50BD3 /* Frameworks */ = { isa = PBXGroup; children = ( - A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */, - 67FC3A5288FABA7441F4D6AA /* Logger.swift */, + 8800BDCE685EF17A4BCB28C8 /* iOS */, ); - name = DevLogDataCommon; + name = Frameworks; sourceTree = ""; }; - AC74AEDF3E1FA188F66D5536 /* DevLogDataMapper */ = { + 42F9CB6B105B33619467DE78 /* Projects */ = { + isa = PBXGroup; + children = ( + F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */, + ); + name = Projects; + sourceTree = ""; + }; + 5A15B28E791BA16F53BAF94E /* DevLogData */ = { + isa = PBXGroup; + children = ( + 2EF24323F391ADD8E2880BB1 /* Common */, + 1DECEF89B4893159CF3166B3 /* DTO */, + 7FB2D81FB32074F3D7A657A3 /* Mapper */, + 28BA3BE754C65F0ABE0B18D3 /* Protocol */, + 934C5041615819F6B6124803 /* Repository */, + ); + name = DevLogData; + sourceTree = ""; + }; + 7FB2D81FB32074F3D7A657A3 /* Mapper */ = { isa = PBXGroup; children = ( 44C564559DBDF765945456FA /* PushNotificationMapping.swift */, @@ -363,10 +367,18 @@ 37830EA98EFABE66D2ADBCE9 /* UserProfileMapping.swift */, 3C2B7108CD63C65097876046 /* WebPageMapping.swift */, ); - name = DevLogDataMapper; + name = Mapper; sourceTree = ""; }; - E08CCD18836950C1AECD91DE /* DevLogDataRepository */ = { + 8800BDCE685EF17A4BCB28C8 /* iOS */ = { + isa = PBXGroup; + children = ( + DD765636013B36A3BCCCF8B7 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 934C5041615819F6B6124803 /* Repository */ = { isa = PBXGroup; children = ( 7B3ED1B2326966F84851DFDD /* AuthDataRepositoryImpl.swift */, @@ -381,7 +393,7 @@ 914EE1DC0A02968747B6B3A2 /* WebPageImageRepositoryImpl.swift */, 1AAF764A3F6E025A18E6A0BC /* WebPageRepositoryImpl.swift */, ); - name = DevLogDataRepository; + name = Repository; sourceTree = ""; }; FEAA5F036FEFF5A2BF2FD218 = { @@ -389,12 +401,8 @@ children = ( 27CDFCFF9F1093391B8566A1 /* Products */, 3957A84DA44597517DA50BD3 /* Frameworks */, - 8C9988B575EE07030E07DEDE /* DevLogDataCommon */, - 32F3EA46CD5E7F17AC449CB8 /* DevLogDataDTO */, - 7B245CFF089F6CEF60B4F6D2 /* DevLogDataProtocol */, - AC74AEDF3E1FA188F66D5536 /* DevLogDataMapper */, - E08CCD18836950C1AECD91DE /* DevLogDataRepository */, 42F9CB6B105B33619467DE78 /* Projects */, + 5A15B28E791BA16F53BAF94E /* DevLogData */, ); sourceTree = ""; }; diff --git a/Projects/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj b/Projects/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj index fa6a2310..2087545c 100644 --- a/Projects/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj +++ b/Projects/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj @@ -259,125 +259,166 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 40116A7CE17130969F51069D /* Frameworks */ = { + 06336E5F6A9C07507981A938 /* Fetch */ = { isa = PBXGroup; children = ( - 8FA83A83534627957C480771 /* iOS */, + E2AC2F400228CA6C5B5FCA33 /* PushNotification */, + B615A8EBC1607DD519DCCD30 /* UserProfile */, ); - name = Frameworks; + name = Fetch; sourceTree = ""; }; - 534E4B81FFFA3D0023139ACE /* DevLogDomain */ = { + 0AB4C554FD913FAB4BF9254D /* UseCase */ = { + isa = PBXGroup; + children = ( + 84CDC9921CF2D8DA239470F5 /* Auth */, + 80C57B5FA6161026812068DD /* Connectivity */, + 3996DCFE303C8495DC264683 /* PushNotification */, + F6876E20E55D968679BBC568 /* Todo */, + CB7D53372BE26ABDCF965442 /* TodoCategory */, + D9AF57A16253B7CD26A1B811 /* UserData */, + FCF6F8666B756E2E47044ED8 /* UserPreferences */, + C72910638DF912220397473A /* WebPage */, + ); + name = UseCase; + sourceTree = ""; + }; + 1457DBCD42F2BF1475EA19BE /* Theme */ = { + isa = PBXGroup; + children = ( + 8ADDC57ACEBB9CEB3FCD3F80 /* ObserveSystemThemeUseCase.swift */, + 01351069EBDFEFE9BEB4E26F /* ObserveSystemThemeUseCaseImpl.swift */, + 5E821078E0E30A646FFFC1F1 /* UpdateSystemThemeUseCase.swift */, + B306337D1C6C39407105B783 /* UpdateSystemThemeUseCaseImpl.swift */, + ); + name = Theme; + sourceTree = ""; + }; + 1598BEE4375C98BA8C7539D1 /* Fetch */ = { isa = PBXGroup; children = ( - D3C71ECDDDA08716A716D9B2 /* ActivityKind.swift */, - F9A9B5170723706520E75DC7 /* AuthProvider.swift */, - C482DCAC8527FFE9767388C8 /* PushNotification.swift */, - 741F53346E83DDAB8912B25C /* PushNotificationCursor.swift */, - 1DBC9D7FFF5FC58F5EE67A4E /* PushNotificationPage.swift */, - C46B06C77D7DB705ECED40A6 /* PushNotificationQuery.swift */, - A86771BA0A9014E81E93B8C0 /* PushNotificationSettings.swift */, - F6452B0B4E524F90595D77FD /* SystemTheme.swift */, - 372106128F8BE30DDE0D41E7 /* SystemTodoCategory.swift */, - 087434742ED1FAA4546120B9 /* TodayDisplayOptions.swift */, - 07865C391ACEC35BD969A730 /* Todo.swift */, - 7697A8469158261B1299B121 /* TodoCategory.swift */, - 06CE556F368F3FFB8F45D19B /* TodoCategoryPreference.swift */, - 42C7EE23A3F45CFA5C2F7ECE /* TodoCursor.swift */, - E8C9C99957DF94BCF349AEE8 /* TodoPage.swift */, - F528B902B4AC945DE2357AF4 /* TodoQuery.swift */, - C1914B9FD743F5AC5E82A431 /* TodoReference.swift */, - A32E327BE5F24582BDE808DE /* UserProfile.swift */, - F5AFD6F6E1DDE50BC837955F /* UserTodoCategory.swift */, - 1290A4B9F0ED6ABFABC5749D /* WebPage.swift */, - 83B40B6FE8272B804E1C7712 /* Array.swift */, - 05D14CAC89969BC5FB42B8D1 /* String.swift */, - 7CE5DDD90F87E43F27311D31 /* UIFont.swift */, - 1725CFBBBCE02A2C5412C24D /* AuthDataRepository.swift */, - 323A45003F23C91F09B2583C /* AuthSessionRepository.swift */, - 64F3941915699B8D1DC2631A /* AuthenticationRepository.swift */, - 090C424EC663DC420E210405 /* NetworkConnectivityRepository.swift */, - 1DE514CE1D81A91A79B3F483 /* PushNotificationRepository.swift */, - B843042D7E2BCD42C7DD3FE4 /* TodoCategoryRepository.swift */, - 7CCD260120C0B0358DA09105 /* TodoRepository.swift */, - 44D430F73E1C4A9F5EC65263 /* UserDataRepository.swift */, - C6606DC27F4AC1B348D9A499 /* UserPreferencesRepository.swift */, - 45439A52C6F35B7655776A07 /* WebPageImageRepository.swift */, - F28AC36CBBB716A8B3C6FDDD /* WebPageRepository.swift */, - 755AD7D03795F56790F1B378 /* DeleteAuthUseCase.swift */, - 4F7C774056C083FD3BDFEE92 /* DeleteAuthUseCaseImpl.swift */, - 975B88E82CD480E408410A60 /* FetchAuthProvidersUseCase.swift */, - 6357C21C07A2374530C5302B /* FetchAuthProvidersUseCaseImpl.swift */, - C766DC43AFC8A07B1E009FF1 /* LinkAuthProviderUseCase.swift */, - A22B34E1AF11D76CE7171CE7 /* LinkAuthProviderUseCaseImpl.swift */, - 4C2EA32A4DF93B6F77789409 /* UnlinkAuthProviderUseCase.swift */, - 7EBE5CCA6FD562D1FD4E3DC0 /* UnlinkAuthProviderUseCaseImpl.swift */, - 41B41F22B16C359A70312D77 /* ObserveAuthSessionUseCase.swift */, - 8B831790BFE85097FB9034BD /* ObserveAuthSessionUseCaseImpl.swift */, - 517E1CF92FE5C7461C24F2F2 /* SignInUseCase.swift */, - 2B41302357AD2793E8F75E88 /* SignInUseCaseImpl.swift */, - 1A4B3291A774346C97DDCA02 /* SignOutUseCase.swift */, - 8B7A3642B89C1CA241B6AADF /* SignOutUseCaseImpl.swift */, - 2E2D323E5EAF19D03C4BFAD0 /* ObserveNetworkConnectivityUseCase.swift */, - 12F96A31F7367B2BFA3F8226 /* ObserveNetworkConnectivityUseCaseImpl.swift */, - A10FD608ACEAFA303C7743BA /* DeletePushNotificationUseCase.swift */, - 4C1EF4E237E1F3BEDAB0B730 /* DeletePushNotificationUseCaseImpl.swift */, - 1ADECD2AC2EA5C3AF0567E21 /* UndoDeletePushNotificationUseCase.swift */, - 03910A114D3321A63F692113 /* UndoDeletePushNotificationUseCaseImpl.swift */, - 4B6A80CB4CD95B3FE2463F52 /* FetchPushNotificationsUseCase.swift */, - A275ADD90916E0CD19E658A1 /* FetchPushNotificationsUseCaseImpl.swift */, - 7255B9F0D6EA9A0D9C81F512 /* ObserveUnreadPushCountUseCase.swift */, - 68D7B585C369EADAEBE8A470 /* ObserveUnreadPushCountUseCaseImpl.swift */, - 658249EA021AFF8428B32FD0 /* TogglePushNotificationReadUseCase.swift */, - EFCB23F0E622C1872DA543DB /* TogglePushNotificationReadUseCaseImpl.swift */, - DD0C8F7B1FB7DE7DD17C99BE /* DeleteTodoUseCase.swift */, - AB02651AFF3D9DE27351DA7B /* DeleteTodoUseCaseImpl.swift */, - 0E6726827D53639E678488EE /* UndoDeleteTodoUseCase.swift */, - 522510AA4DD57769034B3A49 /* UndoDeleteTodoUseCaseImpl.swift */, A403DFBCDB028B255F8B9EC5 /* FetchReferenceItemsUseCase.swift */, DA4EC8FBD39E0AEF21117F7C /* FetchReferenceItemsUseCaseImpl.swift */, AD49CB792C5CCA040D99F1CD /* FetchTodoByIDUseCase.swift */, 0DD73A331A61A27A1A9BDFD0 /* FetchTodoByIDUseCaseImpl.swift */, 8FD502CE4EB95263D32AF23E /* FetchTodosUseCase.swift */, D01987DD2F38CF633D3C4162 /* FetchTodosUseCaseImpl.swift */, - 127C20813795B0B77A99F955 /* UpsertTodoUseCase.swift */, - 1B484D427B8653E772AB4156 /* UpsertTodoUseCaseImpl.swift */, + ); + name = Fetch; + sourceTree = ""; + }; + 184F08ABBFD4950C68506C6B /* Provider */ = { + isa = PBXGroup; + children = ( + 975B88E82CD480E408410A60 /* FetchAuthProvidersUseCase.swift */, + 6357C21C07A2374530C5302B /* FetchAuthProvidersUseCaseImpl.swift */, + C766DC43AFC8A07B1E009FF1 /* LinkAuthProviderUseCase.swift */, + A22B34E1AF11D76CE7171CE7 /* LinkAuthProviderUseCaseImpl.swift */, + 4C2EA32A4DF93B6F77789409 /* UnlinkAuthProviderUseCase.swift */, + 7EBE5CCA6FD562D1FD4E3DC0 /* UnlinkAuthProviderUseCaseImpl.swift */, + ); + name = Provider; + sourceTree = ""; + }; + 2F900B6B2CFB144D1BD0DC5E /* Delete */ = { + isa = PBXGroup; + children = ( + 755AD7D03795F56790F1B378 /* DeleteAuthUseCase.swift */, + 4F7C774056C083FD3BDFEE92 /* DeleteAuthUseCaseImpl.swift */, + ); + name = Delete; + sourceTree = ""; + }; + 317FCABCB97C8954415C0BA9 /* Fetch */ = { + isa = PBXGroup; + children = ( 11B14A760F12F75DD433E6E3 /* FetchTodoCategoryPreferencesUseCase.swift */, 0135F093DDF8F5DB4D320010 /* FetchTodoCategoryPreferencesUseCaseImpl.swift */, - E4ED6069D8B0C24A2C3E295C /* UpdateTodoCategoryPreferencesUseCase.swift */, - 759AFAA7929D8227152D0C09 /* UpdateTodoCategoryPreferencesUseCaseImpl.swift */, - 65FE1967BCA4B1FF8D517617 /* FetchPushNotificationSettingsUseCase.swift */, - 1CF1E8DC279C84BE986E2296 /* FetchPushNotificationSettingsUseCaseImpl.swift */, - 6C1F27652023B70495066F9E /* FetchUserDataUseCase.swift */, - DD23C531988288EA45977604 /* FetchUserDataUseCaseImpl.swift */, - A0FB230E9723243D9C16E1C3 /* UpdatePushSettingsUseCase.swift */, - 5EB6D6DDEED0E961F68CB3E3 /* UpdatePushSettingsUseCaseImpl.swift */, - 015FCD58DFE25D15A98767DD /* UpsertStatusMessageUseCase.swift */, - 328FC6A361021DBFC9C0FB3B /* UpsertStatusMessageUseCaseImpl.swift */, - E22EE946DD06C2BDA66070D5 /* FetchHeatmapActivityTypesUseCase.swift */, - 56F3A28A8CE602EF8A5A12F7 /* FetchHeatmapActivityTypesUseCaseImpl.swift */, - 49115FDA37F30A80D0756093 /* UpdateHeatmapActivityTypesUseCase.swift */, - DA4F782752735905BE93CD95 /* UpdateHeatmapActivityTypesUseCaseImpl.swift */, - 3D653CA5AFBA637461B27A7F /* FetchPushNotificationQueryUseCase.swift */, - B498CD874F5AE906BB27898F /* FetchPushNotificationQueryUseCaseImpl.swift */, - A2632BB4BB4A6F4FA74B2CC6 /* UpdatePushNotificationQueryUseCase.swift */, - A5CEE90FC2BA6B2E4F9B5B2E /* UpdatePushNotificationQueryUseCaseImpl.swift */, + ); + name = Fetch; + sourceTree = ""; + }; + 327E9B9DDDE4584E00736BF6 /* Search */ = { + isa = PBXGroup; + children = ( B3E4B6613C6FA82D6772ED06 /* FetchRecentSearchQueriesUseCase.swift */, 9161CF59F34F6666BDD773A8 /* FetchRecentSearchQueriesUseCaseImpl.swift */, 4721FC0DF30EE97CCFD8AEB2 /* UpdateRecentSearchQueriesUseCase.swift */, 9B2B36142EDE421CE4CAF82E /* UpdateRecentSearchQueriesUseCaseImpl.swift */, - 8ADDC57ACEBB9CEB3FCD3F80 /* ObserveSystemThemeUseCase.swift */, - 01351069EBDFEFE9BEB4E26F /* ObserveSystemThemeUseCaseImpl.swift */, - 5E821078E0E30A646FFFC1F1 /* UpdateSystemThemeUseCase.swift */, - B306337D1C6C39407105B783 /* UpdateSystemThemeUseCaseImpl.swift */, - 6D457ED2B8E1CA7C2E401DBB /* FetchTodayDisplayOptionsUseCase.swift */, - 746A826E7B24EF22A287ABC5 /* FetchTodayDisplayOptionsUseCaseImpl.swift */, - 0F9677D48BA38AB69BE26D3A /* UpdateTodayDisplayOptionsUseCase.swift */, - 6D13DBD497C26307CEDEF65E /* UpdateTodayDisplayOptionsUseCaseImpl.swift */, + ); + name = Search; + sourceTree = ""; + }; + 3996DCFE303C8495DC264683 /* PushNotification */ = { + isa = PBXGroup; + children = ( + 83FA2E9993A1F8268BE76269 /* Delete */, + A445ABF384869CACBDA0B49F /* Fetch */, + C5D0DDB4C845B51522E7AB89 /* Read */, + ); + name = PushNotification; + sourceTree = ""; + }; + 40116A7CE17130969F51069D /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8FA83A83534627957C480771 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 45BC2C7111BDE0C5F3091439 /* Fetch */ = { + isa = PBXGroup; + children = ( D9956BD2EFBA1679FF20ED65 /* FetchWebPageImageDirSizeUseCase.swift */, B663E911F22760A9B0C71DA6 /* FetchWebPageImageDirSizeUseCaseImpl.swift */, F0378EC4E10380BAE247185B /* FetchWebPagesUseCase.swift */, C18AFE080D0761AFF8D82FC5 /* FetchWebPagesUseCaseImpl.swift */, + ); + name = Fetch; + sourceTree = ""; + }; + 4F9F55F7D14CFF5FE12CAFCB /* Upsert */ = { + isa = PBXGroup; + children = ( + 127C20813795B0B77A99F955 /* UpsertTodoUseCase.swift */, + 1B484D427B8653E772AB4156 /* UpsertTodoUseCaseImpl.swift */, + ); + name = Upsert; + sourceTree = ""; + }; + 534E4B81FFFA3D0023139ACE /* DevLogDomain */ = { + isa = PBXGroup; + children = ( + F03D4FA66135D7389D0875CD /* Entity */, + 8B8F6BA8BF451E1CBC307D0C /* Extension */, + DE798AF67BA388CA15458757 /* Protocol */, + 0AB4C554FD913FAB4BF9254D /* UseCase */, + ); + name = DevLogDomain; + sourceTree = ""; + }; + 63B68BC59AF32C52B6CBF85B = { + isa = PBXGroup; + children = ( + B4BFBC14E31354BAE25BA2A4 /* Products */, + 40116A7CE17130969F51069D /* Frameworks */, + 534E4B81FFFA3D0023139ACE /* DevLogDomain */, + ); + sourceTree = ""; + }; + 688ADC34CD0FB088D172D8C7 /* Update */ = { + isa = PBXGroup; + children = ( + E4ED6069D8B0C24A2C3E295C /* UpdateTodoCategoryPreferencesUseCase.swift */, + 759AFAA7929D8227152D0C09 /* UpdateTodoCategoryPreferencesUseCaseImpl.swift */, + ); + name = Update; + sourceTree = ""; + }; + 6A84385E66B1D2C674DEDF0A /* Upsert */ = { + isa = PBXGroup; + children = ( F9F4C2B618DA0B796EC02CF4 /* AddWebPageUseCase.swift */, DB6B0536F975D3FE76D0B58F /* AddWebPageUseCaseImpl.swift */, 76BA71B47A419D205968A49D /* ClearWebPageImageDirectoryUseCase.swift */, @@ -387,16 +428,58 @@ 931E348B8445B611C6486B0D /* UndoDeleteWebPageUseCase.swift */, D310014E8ACFC3A55D3B83B3 /* UndoDeleteWebPageUseCaseImpl.swift */, ); - name = DevLogDomain; + name = Upsert; sourceTree = ""; }; - 63B68BC59AF32C52B6CBF85B = { + 6B96A1D80F1C793E7DA8C9CE /* Update */ = { isa = PBXGroup; children = ( - B4BFBC14E31354BAE25BA2A4 /* Products */, - 40116A7CE17130969F51069D /* Frameworks */, - 534E4B81FFFA3D0023139ACE /* DevLogDomain */, + 9115E808E16303728A3E757A /* PushNotification */, + B59C2CB181D693BE6B251584 /* StatusMessage */, ); + name = Update; + sourceTree = ""; + }; + 80C57B5FA6161026812068DD /* Connectivity */ = { + isa = PBXGroup; + children = ( + 2E2D323E5EAF19D03C4BFAD0 /* ObserveNetworkConnectivityUseCase.swift */, + 12F96A31F7367B2BFA3F8226 /* ObserveNetworkConnectivityUseCaseImpl.swift */, + ); + name = Connectivity; + sourceTree = ""; + }; + 83FA2E9993A1F8268BE76269 /* Delete */ = { + isa = PBXGroup; + children = ( + A10FD608ACEAFA303C7743BA /* DeletePushNotificationUseCase.swift */, + 4C1EF4E237E1F3BEDAB0B730 /* DeletePushNotificationUseCaseImpl.swift */, + 1ADECD2AC2EA5C3AF0567E21 /* UndoDeletePushNotificationUseCase.swift */, + 03910A114D3321A63F692113 /* UndoDeletePushNotificationUseCaseImpl.swift */, + ); + name = Delete; + sourceTree = ""; + }; + 84CDC9921CF2D8DA239470F5 /* Auth */ = { + isa = PBXGroup; + children = ( + 2F900B6B2CFB144D1BD0DC5E /* Delete */, + 184F08ABBFD4950C68506C6B /* Provider */, + BF13E260CE83484D507017FD /* Session */, + C710163E9E5D7BE012B2C715 /* SignIn */, + E7BE7C8FD6C4DF4FE11D7EB0 /* SignOut */, + ); + name = Auth; + sourceTree = ""; + }; + 8B8F6BA8BF451E1CBC307D0C /* Extension */ = { + isa = PBXGroup; + children = ( + 83B40B6FE8272B804E1C7712 /* Array.swift */, + 05D14CAC89969BC5FB42B8D1 /* String.swift */, + 7CE5DDD90F87E43F27311D31 /* UIFont.swift */, + ); + name = Extension; sourceTree = ""; }; 8FA83A83534627957C480771 /* iOS */ = { @@ -407,6 +490,37 @@ name = iOS; sourceTree = ""; }; + 9115E808E16303728A3E757A /* PushNotification */ = { + isa = PBXGroup; + children = ( + A0FB230E9723243D9C16E1C3 /* UpdatePushSettingsUseCase.swift */, + 5EB6D6DDEED0E961F68CB3E3 /* UpdatePushSettingsUseCaseImpl.swift */, + ); + name = PushNotification; + sourceTree = ""; + }; + A445ABF384869CACBDA0B49F /* Fetch */ = { + isa = PBXGroup; + children = ( + 4B6A80CB4CD95B3FE2463F52 /* FetchPushNotificationsUseCase.swift */, + A275ADD90916E0CD19E658A1 /* FetchPushNotificationsUseCaseImpl.swift */, + 7255B9F0D6EA9A0D9C81F512 /* ObserveUnreadPushCountUseCase.swift */, + 68D7B585C369EADAEBE8A470 /* ObserveUnreadPushCountUseCaseImpl.swift */, + ); + name = Fetch; + sourceTree = ""; + }; + AC00BDA05DCFD82B8F4151D0 /* Today */ = { + isa = PBXGroup; + children = ( + 6D457ED2B8E1CA7C2E401DBB /* FetchTodayDisplayOptionsUseCase.swift */, + 746A826E7B24EF22A287ABC5 /* FetchTodayDisplayOptionsUseCaseImpl.swift */, + 0F9677D48BA38AB69BE26D3A /* UpdateTodayDisplayOptionsUseCase.swift */, + 6D13DBD497C26307CEDEF65E /* UpdateTodayDisplayOptionsUseCaseImpl.swift */, + ); + name = Today; + sourceTree = ""; + }; B4BFBC14E31354BAE25BA2A4 /* Products */ = { isa = PBXGroup; children = ( @@ -415,6 +529,196 @@ name = Products; sourceTree = ""; }; + B59C2CB181D693BE6B251584 /* StatusMessage */ = { + isa = PBXGroup; + children = ( + 015FCD58DFE25D15A98767DD /* UpsertStatusMessageUseCase.swift */, + 328FC6A361021DBFC9C0FB3B /* UpsertStatusMessageUseCaseImpl.swift */, + ); + name = StatusMessage; + sourceTree = ""; + }; + B615A8EBC1607DD519DCCD30 /* UserProfile */ = { + isa = PBXGroup; + children = ( + 6C1F27652023B70495066F9E /* FetchUserDataUseCase.swift */, + DD23C531988288EA45977604 /* FetchUserDataUseCaseImpl.swift */, + ); + name = UserProfile; + sourceTree = ""; + }; + BF13E260CE83484D507017FD /* Session */ = { + isa = PBXGroup; + children = ( + 41B41F22B16C359A70312D77 /* ObserveAuthSessionUseCase.swift */, + 8B831790BFE85097FB9034BD /* ObserveAuthSessionUseCaseImpl.swift */, + ); + name = Session; + sourceTree = ""; + }; + BF6EF979972886A1BA8BFB15 /* PushNotification */ = { + isa = PBXGroup; + children = ( + 3D653CA5AFBA637461B27A7F /* FetchPushNotificationQueryUseCase.swift */, + B498CD874F5AE906BB27898F /* FetchPushNotificationQueryUseCaseImpl.swift */, + A2632BB4BB4A6F4FA74B2CC6 /* UpdatePushNotificationQueryUseCase.swift */, + A5CEE90FC2BA6B2E4F9B5B2E /* UpdatePushNotificationQueryUseCaseImpl.swift */, + ); + name = PushNotification; + sourceTree = ""; + }; + C1F15DC51854AAC446876339 /* Profile */ = { + isa = PBXGroup; + children = ( + E22EE946DD06C2BDA66070D5 /* FetchHeatmapActivityTypesUseCase.swift */, + 56F3A28A8CE602EF8A5A12F7 /* FetchHeatmapActivityTypesUseCaseImpl.swift */, + 49115FDA37F30A80D0756093 /* UpdateHeatmapActivityTypesUseCase.swift */, + DA4F782752735905BE93CD95 /* UpdateHeatmapActivityTypesUseCaseImpl.swift */, + ); + name = Profile; + sourceTree = ""; + }; + C5D0DDB4C845B51522E7AB89 /* Read */ = { + isa = PBXGroup; + children = ( + 658249EA021AFF8428B32FD0 /* TogglePushNotificationReadUseCase.swift */, + EFCB23F0E622C1872DA543DB /* TogglePushNotificationReadUseCaseImpl.swift */, + ); + name = Read; + sourceTree = ""; + }; + C710163E9E5D7BE012B2C715 /* SignIn */ = { + isa = PBXGroup; + children = ( + 517E1CF92FE5C7461C24F2F2 /* SignInUseCase.swift */, + 2B41302357AD2793E8F75E88 /* SignInUseCaseImpl.swift */, + ); + name = SignIn; + sourceTree = ""; + }; + C72910638DF912220397473A /* WebPage */ = { + isa = PBXGroup; + children = ( + 45BC2C7111BDE0C5F3091439 /* Fetch */, + 6A84385E66B1D2C674DEDF0A /* Upsert */, + ); + name = WebPage; + sourceTree = ""; + }; + CB7D53372BE26ABDCF965442 /* TodoCategory */ = { + isa = PBXGroup; + children = ( + 317FCABCB97C8954415C0BA9 /* Fetch */, + 688ADC34CD0FB088D172D8C7 /* Update */, + ); + name = TodoCategory; + sourceTree = ""; + }; + D9AF57A16253B7CD26A1B811 /* UserData */ = { + isa = PBXGroup; + children = ( + 06336E5F6A9C07507981A938 /* Fetch */, + 6B96A1D80F1C793E7DA8C9CE /* Update */, + ); + name = UserData; + sourceTree = ""; + }; + DE798AF67BA388CA15458757 /* Protocol */ = { + isa = PBXGroup; + children = ( + 1725CFBBBCE02A2C5412C24D /* AuthDataRepository.swift */, + 323A45003F23C91F09B2583C /* AuthSessionRepository.swift */, + 64F3941915699B8D1DC2631A /* AuthenticationRepository.swift */, + 090C424EC663DC420E210405 /* NetworkConnectivityRepository.swift */, + 1DE514CE1D81A91A79B3F483 /* PushNotificationRepository.swift */, + B843042D7E2BCD42C7DD3FE4 /* TodoCategoryRepository.swift */, + 7CCD260120C0B0358DA09105 /* TodoRepository.swift */, + 44D430F73E1C4A9F5EC65263 /* UserDataRepository.swift */, + C6606DC27F4AC1B348D9A499 /* UserPreferencesRepository.swift */, + 45439A52C6F35B7655776A07 /* WebPageImageRepository.swift */, + F28AC36CBBB716A8B3C6FDDD /* WebPageRepository.swift */, + ); + name = Protocol; + sourceTree = ""; + }; + E2AC2F400228CA6C5B5FCA33 /* PushNotification */ = { + isa = PBXGroup; + children = ( + 65FE1967BCA4B1FF8D517617 /* FetchPushNotificationSettingsUseCase.swift */, + 1CF1E8DC279C84BE986E2296 /* FetchPushNotificationSettingsUseCaseImpl.swift */, + ); + name = PushNotification; + sourceTree = ""; + }; + E7BE7C8FD6C4DF4FE11D7EB0 /* SignOut */ = { + isa = PBXGroup; + children = ( + 1A4B3291A774346C97DDCA02 /* SignOutUseCase.swift */, + 8B7A3642B89C1CA241B6AADF /* SignOutUseCaseImpl.swift */, + ); + name = SignOut; + sourceTree = ""; + }; + F03D4FA66135D7389D0875CD /* Entity */ = { + isa = PBXGroup; + children = ( + D3C71ECDDDA08716A716D9B2 /* ActivityKind.swift */, + F9A9B5170723706520E75DC7 /* AuthProvider.swift */, + C482DCAC8527FFE9767388C8 /* PushNotification.swift */, + 741F53346E83DDAB8912B25C /* PushNotificationCursor.swift */, + 1DBC9D7FFF5FC58F5EE67A4E /* PushNotificationPage.swift */, + C46B06C77D7DB705ECED40A6 /* PushNotificationQuery.swift */, + A86771BA0A9014E81E93B8C0 /* PushNotificationSettings.swift */, + 372106128F8BE30DDE0D41E7 /* SystemTodoCategory.swift */, + 087434742ED1FAA4546120B9 /* TodayDisplayOptions.swift */, + 07865C391ACEC35BD969A730 /* Todo.swift */, + 7697A8469158261B1299B121 /* TodoCategory.swift */, + 06CE556F368F3FFB8F45D19B /* TodoCategoryPreference.swift */, + 42C7EE23A3F45CFA5C2F7ECE /* TodoCursor.swift */, + E8C9C99957DF94BCF349AEE8 /* TodoPage.swift */, + F528B902B4AC945DE2357AF4 /* TodoQuery.swift */, + C1914B9FD743F5AC5E82A431 /* TodoReference.swift */, + A32E327BE5F24582BDE808DE /* UserProfile.swift */, + F5AFD6F6E1DDE50BC837955F /* UserTodoCategory.swift */, + 1290A4B9F0ED6ABFABC5749D /* WebPage.swift */, + F6452B0B4E524F90595D77FD /* SystemTheme.swift */, + ); + name = Entity; + sourceTree = ""; + }; + F6876E20E55D968679BBC568 /* Todo */ = { + isa = PBXGroup; + children = ( + F6EB0055967E0A20E49E1842 /* Delete */, + 1598BEE4375C98BA8C7539D1 /* Fetch */, + 4F9F55F7D14CFF5FE12CAFCB /* Upsert */, + ); + name = Todo; + sourceTree = ""; + }; + F6EB0055967E0A20E49E1842 /* Delete */ = { + isa = PBXGroup; + children = ( + DD0C8F7B1FB7DE7DD17C99BE /* DeleteTodoUseCase.swift */, + AB02651AFF3D9DE27351DA7B /* DeleteTodoUseCaseImpl.swift */, + 0E6726827D53639E678488EE /* UndoDeleteTodoUseCase.swift */, + 522510AA4DD57769034B3A49 /* UndoDeleteTodoUseCaseImpl.swift */, + ); + name = Delete; + sourceTree = ""; + }; + FCF6F8666B756E2E47044ED8 /* UserPreferences */ = { + isa = PBXGroup; + children = ( + C1F15DC51854AAC446876339 /* Profile */, + BF6EF979972886A1BA8BFB15 /* PushNotification */, + 327E9B9DDDE4584E00736BF6 /* Search */, + 1457DBCD42F2BF1475EA19BE /* Theme */, + AC00BDA05DCFD82B8F4151D0 /* Today */, + ); + name = UserPreferences; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ diff --git a/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj b/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj index 1580d4c8..65fe1a3f 100644 --- a/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj +++ b/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj @@ -138,44 +138,76 @@ name = Products; sourceTree = ""; }; - 78591B5535D993B16F897C7C = { + 091FD7B63F7A260D118E5905 /* SocialLogin */ = { isa = PBXGroup; children = ( - 0488BFD2A2F470EEE29679F1 /* Products */, - FBD6499620DAC9E2F9216AD5 /* Frameworks */, - 959D79D1263CC74E32B40D78 /* DevLogInfra */, - D47699189A73B8C6972C611A /* Projects */, + 3E56286B1275FC5BD988C94B /* AppleAuthenticationServiceImpl.swift */, + 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */, + 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */, ); + name = SocialLogin; sourceTree = ""; }; - 8FB7B6A102C789590DAA9FE4 /* iOS */ = { + 244A3B94B9BD4908079A38FB /* Common */ = { isa = PBXGroup; children = ( - 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */, + 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */, + F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */, + 4ED31F0EEEF764BB7538C585 /* TopViewControllerProvider.swift */, ); - name = iOS; + name = Common; sourceTree = ""; }; - 959D79D1263CC74E32B40D78 /* DevLogInfra */ = { + 3B9BF1B497E846541A8B6685 /* Extension */ = { isa = PBXGroup; children = ( - 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */, - F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */, - 4ED31F0EEEF764BB7538C585 /* TopViewControllerProvider.swift */, 59E81A47825142881793450F /* FirebaseAuthUser+.swift */, F9AFF9DAE09B8132A62D6DA8 /* FirebaseFunctions+.swift */, + ); + name = Extension; + sourceTree = ""; + }; + 66108C2B6459C7D70E0EF39E /* Service */ = { + isa = PBXGroup; + children = ( E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */, B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */, C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */, - 3E56286B1275FC5BD988C94B /* AppleAuthenticationServiceImpl.swift */, - 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */, - 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */, + 091FD7B63F7A260D118E5905 /* SocialLogin */, CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */, BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */, 383CD000472C3025FACB9EFF /* UserServiceImpl.swift */, 34EB8D1DB924582822B68442 /* WebPageMetadataServiceImpl.swift */, E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */, ); + name = Service; + sourceTree = ""; + }; + 78591B5535D993B16F897C7C = { + isa = PBXGroup; + children = ( + 0488BFD2A2F470EEE29679F1 /* Products */, + FBD6499620DAC9E2F9216AD5 /* Frameworks */, + 959D79D1263CC74E32B40D78 /* DevLogInfra */, + D47699189A73B8C6972C611A /* Projects */, + ); + sourceTree = ""; + }; + 8FB7B6A102C789590DAA9FE4 /* iOS */ = { + isa = PBXGroup; + children = ( + 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 959D79D1263CC74E32B40D78 /* DevLogInfra */ = { + isa = PBXGroup; + children = ( + 244A3B94B9BD4908079A38FB /* Common */, + 3B9BF1B497E846541A8B6685 /* Extension */, + 66108C2B6459C7D70E0EF39E /* Service */, + ); name = DevLogInfra; sourceTree = ""; }; diff --git a/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj b/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj index c454cb2f..d3c10640 100644 --- a/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj +++ b/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj @@ -172,6 +172,33 @@ name = Products; sourceTree = ""; }; + 1193621431B4F1245A560067 /* Extension */ = { + isa = PBXGroup; + children = ( + D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */, + ); + name = Extension; + sourceTree = ""; + }; + 13DA278FCF792713D53657D7 /* Structure */ = { + isa = PBXGroup; + children = ( + D9C1D736903B0AD12DA504BA /* Profile */, + BF28FCF602F6165DC67FE7D6 /* PushNotificationItem.swift */, + E4A0DAED0089A38F5494701B /* Todo */, + B19BFDE3E7FFD430D6DF2AA5 /* WebPageItem.swift */, + ); + name = Structure; + sourceTree = ""; + }; + 1DB192900CD86ED478FCDE79 /* Protocol */ = { + isa = PBXGroup; + children = ( + D26AF44FFBB251F34E8F80B5 /* Store.swift */, + ); + name = Protocol; + sourceTree = ""; + }; 253FAAC4504D4C5E1B11C833 = { isa = PBXGroup; children = ( @@ -191,6 +218,28 @@ name = Projects; sourceTree = ""; }; + 727E4EDC1C08E03AAA6FED64 /* ViewModel */ = { + isa = PBXGroup; + children = ( + 1B9804109E1FE95126DD869B /* AccountViewModel.swift */, + 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */, + C39861EE0C254CCC9A608201 /* LoginViewModel.swift */, + B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */, + 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */, + E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */, + A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */, + 1907637E4162396EEDF058C2 /* RootViewModel.swift */, + 0E844646CD1D172C92451FBE /* SearchViewModel.swift */, + 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */, + 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */, + A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */, + E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */, + BA522CF101F432B37F315C24 /* TodoListViewModel.swift */, + 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */, + ); + name = ViewModel; + sourceTree = ""; + }; 9A88EA8D5BC609F90B07B726 /* iOS */ = { isa = PBXGroup; children = ( @@ -207,18 +256,41 @@ name = Frameworks; sourceTree = ""; }; - A4A427D518004ED78EB659DE /* DevLogPresentation */ = { + 9DE70A3D1E020E5B69721DB1 /* Common */ = { isa = PBXGroup; children = ( E06ED9387372D891F65B1CAD /* LoadingState.swift */, - D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */, - D26AF44FFBB251F34E8F80B5 /* Store.swift */, + ); + name = Common; + sourceTree = ""; + }; + A4A427D518004ED78EB659DE /* DevLogPresentation */ = { + isa = PBXGroup; + children = ( + 9DE70A3D1E020E5B69721DB1 /* Common */, + 1193621431B4F1245A560067 /* Extension */, + 1DB192900CD86ED478FCDE79 /* Protocol */, + 13DA278FCF792713D53657D7 /* Structure */, + 727E4EDC1C08E03AAA6FED64 /* ViewModel */, + ); + name = DevLogPresentation; + sourceTree = ""; + }; + D9C1D736903B0AD12DA504BA /* Profile */ = { + isa = PBXGroup; + children = ( 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */, A04BEF390A74ECC5558A076F /* HeatmapActivityItem.swift */, B4D75E33B582B3347AC077B0 /* HeatmapDay.swift */, 70C952669C86B8EB042ED7CF /* HeatmapMonth.swift */, C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */, - BF28FCF602F6165DC67FE7D6 /* PushNotificationItem.swift */, + ); + name = Profile; + sourceTree = ""; + }; + E4A0DAED0089A38F5494701B /* Todo */ = { + isa = PBXGroup; + children = ( F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */, A117BE662EC3F9C96FF9AC61 /* SystemTodoCategoryItem.swift */, 2BCF82DE8DF3DDEAF78826B5 /* TodayTodoItem.swift */, @@ -227,24 +299,8 @@ D7258BA3748F0B1BDB1AFFD3 /* TodoListItem.swift */, 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */, F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */, - B19BFDE3E7FFD430D6DF2AA5 /* WebPageItem.swift */, - 1B9804109E1FE95126DD869B /* AccountViewModel.swift */, - 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */, - C39861EE0C254CCC9A608201 /* LoginViewModel.swift */, - B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */, - 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */, - E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */, - A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */, - 1907637E4162396EEDF058C2 /* RootViewModel.swift */, - 0E844646CD1D172C92451FBE /* SearchViewModel.swift */, - 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */, - 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */, - A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */, - E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */, - BA522CF101F432B37F315C24 /* TodoListViewModel.swift */, - 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */, ); - name = DevLogPresentation; + name = Todo; sourceTree = ""; }; /* End PBXGroup section */ diff --git a/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj b/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj index 816d290d..3b5b6e1d 100644 --- a/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj +++ b/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj @@ -179,6 +179,14 @@ sourceTree = ""; }; 63CE47D539EE6F9653C99773 /* DevLogStorage */ = { + isa = PBXGroup; + children = ( + 721064495EFC6DDBA559F465 /* Persistence */, + ); + name = DevLogStorage; + sourceTree = ""; + }; + 721064495EFC6DDBA559F465 /* Persistence */ = { isa = PBXGroup; children = ( 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */, @@ -187,7 +195,7 @@ 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */, 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */, ); - name = DevLogStorage; + name = Persistence; sourceTree = ""; }; 9DC6ED43838A6F065422AA8B = { diff --git a/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj b/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj index 8d0a2633..f5af248f 100644 --- a/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj +++ b/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj @@ -140,6 +140,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 023934D19218F9AFBD084378 /* Profile */ = { + isa = PBXGroup; + children = ( + 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */, + 7F04A173095F3737E4487EF7 /* ProfileView.swift */, + ); + name = Profile; + sourceTree = ""; + }; 1D5CC500CAF3AB573D582AC0 /* iOS */ = { isa = PBXGroup; children = ( @@ -148,16 +157,32 @@ name = iOS; sourceTree = ""; }; - 6C60332595233030EAFFE839 /* Projects */ = { + 391861E77D429E229BF28568 /* Common */ = { isa = PBXGroup; children = ( - 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */, - 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */, + 5983BAD9E9F606A63646EDCA /* Component */, + 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */, + 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */, + D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */, + B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */, + A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */, + 27BB99F804DD47B96FCCFDC0 /* WebView.swift */, ); - name = Projects; + name = Common; sourceTree = ""; }; - 7B53286AA9A58D5B6C0124F8 /* DevLogUI */ = { + 3E8BE5E7BA89E9C06CB4680E /* Setting */ = { + isa = PBXGroup; + children = ( + AC142E4A256288A6D73AEB3E /* AccountView.swift */, + 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */, + 9CB6D9970E4286BA9A17C47C /* SettingView.swift */, + FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */, + ); + name = Setting; + sourceTree = ""; + }; + 5983BAD9E9F606A63646EDCA /* Component */ = { isa = PBXGroup; children = ( 192A2827C2D676A1AE820FBA /* CacheableImage.swift */, @@ -171,34 +196,50 @@ 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */, 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */, F9A20E0402D598F5587EAFFE /* WebItemRow.swift */, - 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */, - 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */, - D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */, - B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */, - A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */, - 27BB99F804DD47B96FCCFDC0 /* WebView.swift */, - 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */, - 3DF0168AAD4373A780DC5A51 /* View+.swift */, - 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */, - 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */, - B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */, - 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */, - 2B45C610096E5AC2967606A6 /* TodoListView.swift */, - 9340555B2B620464698851A5 /* TodoManageView.swift */, + ); + name = Component; + sourceTree = ""; + }; + 6C60332595233030EAFFE839 /* Projects */ = { + isa = PBXGroup; + children = ( + 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */, + 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */, + ); + name = Projects; + sourceTree = ""; + }; + 6F07FA4C10334C49DB907A3E /* Login */ = { + isa = PBXGroup; + children = ( D2028F13D1316DD7D0229249 /* LoginView.swift */, - B01ACB5EB0ACD6D3233BA118 /* MainView.swift */, - 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */, - 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */, - 7F04A173095F3737E4487EF7 /* ProfileView.swift */, - B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */, - 4255A04E841570A664D15C72 /* SearchView.swift */, - AC142E4A256288A6D73AEB3E /* AccountView.swift */, - 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */, - 9CB6D9970E4286BA9A17C47C /* SettingView.swift */, - FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */, + ); + name = Login; + sourceTree = ""; + }; + 6F0FC545BB630F476F12C93F /* Today */ = { + isa = PBXGroup; + children = ( F51F902DA946EBFEEC4CD14B /* TodayView.swift */, 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */, ); + name = Today; + sourceTree = ""; + }; + 7B53286AA9A58D5B6C0124F8 /* DevLogUI */ = { + isa = PBXGroup; + children = ( + 391861E77D429E229BF28568 /* Common */, + A23CDC4BC6FDA11519571AC7 /* Extension */, + 9F3A0F708400485DC1E3E04C /* Home */, + 6F07FA4C10334C49DB907A3E /* Login */, + E9D0446D1E5AB2FEB1550B19 /* Main */, + 023934D19218F9AFBD084378 /* Profile */, + B180221771919A464EAE42F5 /* PushNotification */, + A034EAF6BC4F7B46C19357E5 /* Search */, + 3E8BE5E7BA89E9C06CB4680E /* Setting */, + 6F0FC545BB630F476F12C93F /* Today */, + ); name = DevLogUI; sourceTree = ""; }; @@ -210,6 +251,44 @@ name = Frameworks; sourceTree = ""; }; + 9F3A0F708400485DC1E3E04C /* Home */ = { + isa = PBXGroup; + children = ( + 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */, + 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */, + B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */, + 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */, + 2B45C610096E5AC2967606A6 /* TodoListView.swift */, + 9340555B2B620464698851A5 /* TodoManageView.swift */, + ); + name = Home; + sourceTree = ""; + }; + A034EAF6BC4F7B46C19357E5 /* Search */ = { + isa = PBXGroup; + children = ( + 4255A04E841570A664D15C72 /* SearchView.swift */, + ); + name = Search; + sourceTree = ""; + }; + A23CDC4BC6FDA11519571AC7 /* Extension */ = { + isa = PBXGroup; + children = ( + 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */, + 3DF0168AAD4373A780DC5A51 /* View+.swift */, + ); + name = Extension; + sourceTree = ""; + }; + B180221771919A464EAE42F5 /* PushNotification */ = { + isa = PBXGroup; + children = ( + B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */, + ); + name = PushNotification; + sourceTree = ""; + }; B68C915FE344171A3A1311EF /* Products */ = { isa = PBXGroup; children = ( @@ -230,6 +309,15 @@ ); sourceTree = ""; }; + E9D0446D1E5AB2FEB1550B19 /* Main */ = { + isa = PBXGroup; + children = ( + B01ACB5EB0ACD6D3233BA118 /* MainView.swift */, + 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */, + ); + name = Main; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ diff --git a/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj b/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj index 96c6300f..4f8db507 100644 --- a/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj +++ b/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj @@ -155,6 +155,16 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 0DF87932E361E05C3DF43062 /* Common */ = { + isa = PBXGroup; + children = ( + 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */, + 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */, + 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */, + ); + name = Common; + sourceTree = ""; + }; 22B18020E715C5AFC73F00FA /* Frameworks */ = { isa = PBXGroup; children = ( @@ -200,21 +210,34 @@ ); sourceTree = ""; }; - B60F0C6B052E1EF8CC827AD9 /* DevLogWidgetCore */ = { + 9EDB2111AA4B065C046573A1 /* Heatmap */ = { isa = PBXGroup; children = ( - 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */, - 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */, - 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */, 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */, 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */, + ); + name = Heatmap; + sourceTree = ""; + }; + B60F0C6B052E1EF8CC827AD9 /* DevLogWidgetCore */ = { + isa = PBXGroup; + children = ( + 0DF87932E361E05C3DF43062 /* Common */, + 9EDB2111AA4B065C046573A1 /* Heatmap */, + E41A9AF45640EBD9FA86BDB5 /* Sync */, + E5E553CFDDE987761CDB995F /* Today */, + ); + name = DevLogWidgetCore; + sourceTree = ""; + }; + E41A9AF45640EBD9FA86BDB5 /* Sync */ = { + isa = PBXGroup; + children = ( 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */, 489FB48B79E61FF3332C9F3F /* WidgetSyncEventBusImpl.swift */, DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */, - 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */, - 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */, ); - name = DevLogWidgetCore; + name = Sync; sourceTree = ""; }; E4683C4F36BFC412C75D164A /* iOS */ = { @@ -225,6 +248,15 @@ name = iOS; sourceTree = ""; }; + E5E553CFDDE987761CDB995F /* Today */ = { + isa = PBXGroup; + children = ( + 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */, + 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */, + ); + name = Today; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ From a8028707ef0fbe3bf15cb8ea9ef64df5b6507dc7 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 01:26:16 +0900 Subject: [PATCH 08/46] =?UTF-8?q?chore:=20Application=20=EB=94=94=EB=A0=89?= =?UTF-8?q?=ED=84=B0=EB=A6=AC=EB=A1=9C=20=EC=9B=8C=ED=81=AC=EC=8A=A4?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=8A=A4=EC=99=80=20=EC=95=B1=20=EC=86=8C?= =?UTF-8?q?=EC=8A=A4=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contents.xcworkspacedata | 31 +++ .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/swiftpm/Package.resolved | 0 .../App/Assembler/AppLayerAssembler.swift | 0 .../Sources}/App/Assembler/Assembler.swift | 0 .../App/Assembler/DataAssembler.swift | 0 .../App/Assembler/DomainAssembler.swift | 0 .../App/Assembler/InfraAssembler.swift | 0 .../App/Assembler/PersistenceAssembler.swift | 0 .../DevLogApp/Sources}/App/DIContainer.swift | 0 .../Sources}/App/DIContainerKey.swift | 0 .../Sources}/App/Delegate/AppDelegate.swift | 0 .../App/Delegate/AppleSignInDelegate.swift | 0 .../DevLogApp/Sources}/App/DevLogApp.swift | 0 .../App/Handler/FCMTokenSyncHandler.swift | 0 .../App/Handler/UserTimeZoneSyncHandler.swift | 0 .../App/Notification/NotificationName+.swift | 0 .../DevLogApp/Sources}/App/RootView.swift | 0 .../Sources}/App/Routing/MainTab.swift | 0 .../App/Routing/PushNotificationRoute.swift | 0 .../DevLogApp/Sources}/App/TempView.swift | 0 .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../AppIcon.appiconset/Primary_black.png | Bin .../AppIcon.appiconset/Primary_white.png | Bin .../Apple.imageset/Apple_black.png | Bin .../Apple.imageset/Apple_white.png | Bin .../Apple.imageset/Contents.json | 0 .../Resource/Assets.xcassets/Contents.json | 0 .../Github.imageset/Contents.json | 0 .../Github.imageset/Github_black.png | Bin .../Github.imageset/Github_white.png | Bin .../Google.imageset/Contents.json | 0 .../Google.imageset/Google.png | Bin .../Primary.imageset/Contents.json | 0 .../Primary.imageset/Primary_dark.png | Bin .../Sources}/Resource/DevLog.entitlements | 0 .../Sources}/Resource/Image/Apple_black.png | Bin .../Sources}/Resource/Image/Apple_white.png | Bin .../Sources}/Resource/Image/Github_black.png | Bin .../Sources}/Resource/Image/Github_white.png | Bin .../Sources}/Resource/Image/Google.png | Bin .../Resource/Image/Logo/Primary_black.png | Bin .../Resource/Image/Logo/Primary_white.png | Bin .../DevLogApp/Sources}/Resource/Info.plist | 0 .../Sources}/Resource/Localizable.xcstrings | 0 .../Common/WidgetPlaceholderCard.swift | 0 .../Common/WidgetSharedDefaultsStore.swift | 0 .../Common/WidgetSnapshotStore.swift | 0 .../WidgetExtension}/DevLogWidgetBundle.swift | 0 .../Heatmap/HeatmapWidget.swift | 0 .../HeatmapWidgetConfigurationIntent.swift | 0 .../Heatmap/HeatmapWidgetEntry.swift | 0 .../Heatmap/HeatmapWidgetEntryView.swift | 0 .../Heatmap/HeatmapWidgetProvider.swift | 0 .../Heatmap/HeatmapWidgetSnapshot.swift | 0 .../Heatmap/WidgetHeatmapGrid.swift | 0 .../Heatmap/WidgetHeatmapLayout.swift | 0 .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../Resource/Assets.xcassets/Contents.json | 0 .../WidgetBackground.colorset/Contents.json | 0 .../Resource/DevLogWidget.entitlements | 0 .../WidgetExtension}/Resource/Info.plist | 0 .../Resource/Localizable.xcstrings | 0 .../Today/TodayTodoWidget.swift | 0 .../TodayTodoWidgetConfigurationIntent.swift | 0 .../Today/TodayTodoWidgetEntry.swift | 0 .../Today/TodayTodoWidgetEntryView.swift | 0 .../Today/TodayTodoWidgetProvider.swift | 0 .../Today/TodayWidgetSnapshot.swift | 0 .../DevLogData.xcodeproj/project.pbxproj | 90 +++---- .../xcschemes/DevLogDataCommon.xcscheme | 0 .../xcschemes/DevLogDataDTO.xcscheme | 0 .../xcschemes/DevLogDataMapper.xcscheme | 0 .../xcschemes/DevLogDataProtocol.xcscheme | 0 .../xcschemes/DevLogDataRepository.xcscheme | 0 .../Sources}/Common/DataLayerError.swift | 0 .../DevLogData/Sources}/Common/Logger.swift | 0 .../Sources}/DTO/AppleAuthResponse.swift | 0 .../Sources}/DTO/AuthDataResponse.swift | 0 .../Sources}/DTO/NotificationKind.swift | 0 .../DTO/PushNotificationCursorDTO.swift | 0 .../DTO/PushNotificationPageResponse.swift | 0 .../DTO/PushNotificationResponse.swift | 0 .../Sources}/DTO/TodoCategoryResponse.swift | 0 .../Sources}/DTO/TodoCursorDTO.swift | 0 .../DevLogData/Sources}/DTO/TodoDTO.swift | 0 .../Sources}/DTO/TodoPageResponse.swift | 0 .../Sources}/DTO/TodoReferenceResponse.swift | 0 .../Sources}/DTO/UserProfileResponse.swift | 0 .../DevLogData/Sources}/DTO/WebPageDTO.swift | 0 .../DTO/WebPageMetadataResponse.swift | 0 .../Mapper/PushNotificationMapping.swift | 0 .../Sources}/Mapper/TodoMapping.swift | 0 .../Sources}/Mapper/UserProfileMapping.swift | 0 .../Sources}/Mapper/WebPageMapping.swift | 0 .../Sources}/Protocol/AuthService.swift | 0 .../Protocol/AuthenticationService.swift | 0 .../Protocol/NWPathConnectivityProvider.swift | 0 .../Protocol/PushNotificationService.swift | 0 .../Sources}/Protocol/ThemeStore.swift | 0 .../Protocol/TodoCategoryService.swift | 0 .../Sources}/Protocol/TodoService.swift | 0 .../Sources}/Protocol/UserDefaultsStore.swift | 0 .../Sources}/Protocol/UserService.swift | 0 .../Sources}/Protocol/WebPageImageStore.swift | 0 .../Protocol/WebPageMetadataService.swift | 0 .../Sources}/Protocol/WebPageService.swift | 0 .../WidgetSnapshotPreferenceStore.swift | 0 .../Protocol/WidgetSnapshotUpdater.swift | 0 .../Repository/AuthDataRepositoryImpl.swift | 0 .../AuthSessionRepositoryImpl.swift | 0 .../AuthenticationRepositoryImpl.swift | 0 .../NetworkConnectivityRepositoryImpl.swift | 0 .../PushNotificationRepositoryImpl.swift | 0 .../TodoCategoryRepositoryImpl.swift | 0 .../Repository/TodoRepositoryImpl.swift | 0 .../Repository/UserDataRepositoryImpl.swift | 0 .../UserPreferencesRepositoryImpl.swift | 0 .../WebPageImageRepositoryImpl.swift | 0 .../Repository/WebPageRepositoryImpl.swift | 0 .../DevLogDomain.xcodeproj/project.pbxproj | 232 +++++++++--------- .../xcschemes/DevLogDomain.xcscheme | 0 .../Sources}/Entity/ActivityKind.swift | 0 .../Sources}/Entity/AuthProvider.swift | 0 .../Sources}/Entity/PushNotification.swift | 0 .../Entity/PushNotificationCursor.swift | 0 .../Entity/PushNotificationPage.swift | 0 .../Entity/PushNotificationQuery.swift | 0 .../Entity/PushNotificationSettings.swift | 0 .../Sources}/Entity/SystemTheme.swift | 0 .../Sources}/Entity/SystemTodoCategory.swift | 0 .../Sources}/Entity/TodayDisplayOptions.swift | 0 .../DevLogDomain/Sources}/Entity/Todo.swift | 0 .../Sources}/Entity/TodoCategory.swift | 0 .../Entity/TodoCategoryPreference.swift | 0 .../Sources}/Entity/TodoCursor.swift | 0 .../Sources}/Entity/TodoPage.swift | 0 .../Sources}/Entity/TodoQuery.swift | 0 .../Sources}/Entity/TodoReference.swift | 0 .../Sources}/Entity/UserProfile.swift | 0 .../Sources}/Entity/UserTodoCategory.swift | 0 .../Sources}/Entity/WebPage.swift | 0 .../Sources}/Extension/Array.swift | 0 .../Sources}/Extension/String.swift | 0 .../Sources}/Extension/UIFont.swift | 0 .../Protocol/AuthDataRepository.swift | 0 .../Protocol/AuthSessionRepository.swift | 0 .../Protocol/AuthenticationRepository.swift | 0 .../NetworkConnectivityRepository.swift | 0 .../Protocol/PushNotificationRepository.swift | 0 .../Protocol/TodoCategoryRepository.swift | 0 .../Sources}/Protocol/TodoRepository.swift | 0 .../Protocol/UserDataRepository.swift | 0 .../Protocol/UserPreferencesRepository.swift | 0 .../Protocol/WebPageImageRepository.swift | 0 .../Sources}/Protocol/WebPageRepository.swift | 0 .../Auth/Delete/DeleteAuthUseCase.swift | 0 .../Auth/Delete/DeleteAuthUseCaseImpl.swift | 0 .../Provider/FetchAuthProvidersUseCase.swift | 0 .../FetchAuthProvidersUseCaseImpl.swift | 0 .../Provider/LinkAuthProviderUseCase.swift | 0 .../LinkAuthProviderUseCaseImpl.swift | 0 .../Provider/UnlinkAuthProviderUseCase.swift | 0 .../UnlinkAuthProviderUseCaseImpl.swift | 0 .../Session/ObserveAuthSessionUseCase.swift | 0 .../ObserveAuthSessionUseCaseImpl.swift | 0 .../UseCase/Auth/SignIn/SignInUseCase.swift | 0 .../Auth/SignIn/SignInUseCaseImpl.swift | 0 .../UseCase/Auth/SignOut/SignOutUseCase.swift | 0 .../Auth/SignOut/SignOutUseCaseImpl.swift | 0 .../ObserveNetworkConnectivityUseCase.swift | 0 ...bserveNetworkConnectivityUseCaseImpl.swift | 0 .../DeletePushNotificationUseCase.swift | 0 .../DeletePushNotificationUseCaseImpl.swift | 0 .../UndoDeletePushNotificationUseCase.swift | 0 ...ndoDeletePushNotificationUseCaseImpl.swift | 0 .../Fetch/FetchPushNotificationsUseCase.swift | 0 .../FetchPushNotificationsUseCaseImpl.swift | 0 .../Fetch/ObserveUnreadPushCountUseCase.swift | 0 .../ObserveUnreadPushCountUseCaseImpl.swift | 0 .../TogglePushNotificationReadUseCase.swift | 0 ...ogglePushNotificationReadUseCaseImpl.swift | 0 .../Todo/Delete/DeleteTodoUseCase.swift | 0 .../Todo/Delete/DeleteTodoUseCaseImpl.swift | 0 .../Todo/Delete/UndoDeleteTodoUseCase.swift | 0 .../Delete/UndoDeleteTodoUseCaseImpl.swift | 0 .../Fetch/FetchReferenceItemsUseCase.swift | 0 .../FetchReferenceItemsUseCaseImpl.swift | 0 .../Todo/Fetch/FetchTodoByIDUseCase.swift | 0 .../Todo/Fetch/FetchTodoByIDUseCaseImpl.swift | 0 .../Todo/Fetch/FetchTodosUseCase.swift | 0 .../Todo/Fetch/FetchTodosUseCaseImpl.swift | 0 .../Todo/Upsert/UpsertTodoUseCase.swift | 0 .../Todo/Upsert/UpsertTodoUseCaseImpl.swift | 0 .../FetchTodoCategoryPreferencesUseCase.swift | 0 ...chTodoCategoryPreferencesUseCaseImpl.swift | 0 ...UpdateTodoCategoryPreferencesUseCase.swift | 0 ...teTodoCategoryPreferencesUseCaseImpl.swift | 0 ...FetchPushNotificationSettingsUseCase.swift | 0 ...hPushNotificationSettingsUseCaseImpl.swift | 0 .../UserProfile/FetchUserDataUseCase.swift | 0 .../FetchUserDataUseCaseImpl.swift | 0 .../UpdatePushSettingsUseCase.swift | 0 .../UpdatePushSettingsUseCaseImpl.swift | 0 .../UpsertStatusMessageUseCase.swift | 0 .../UpsertStatusMessageUseCaseImpl.swift | 0 .../FetchHeatmapActivityTypesUseCase.swift | 0 ...FetchHeatmapActivityTypesUseCaseImpl.swift | 0 .../UpdateHeatmapActivityTypesUseCase.swift | 0 ...pdateHeatmapActivityTypesUseCaseImpl.swift | 0 .../FetchPushNotificationQueryUseCase.swift | 0 ...etchPushNotificationQueryUseCaseImpl.swift | 0 .../UpdatePushNotificationQueryUseCase.swift | 0 ...datePushNotificationQueryUseCaseImpl.swift | 0 .../FetchRecentSearchQueriesUseCase.swift | 0 .../FetchRecentSearchQueriesUseCaseImpl.swift | 0 .../UpdateRecentSearchQueriesUseCase.swift | 0 ...UpdateRecentSearchQueriesUseCaseImpl.swift | 0 .../Theme/ObserveSystemThemeUseCase.swift | 0 .../Theme/ObserveSystemThemeUseCaseImpl.swift | 0 .../Theme/UpdateSystemThemeUseCase.swift | 0 .../Theme/UpdateSystemThemeUseCaseImpl.swift | 0 .../FetchTodayDisplayOptionsUseCase.swift | 0 .../FetchTodayDisplayOptionsUseCaseImpl.swift | 0 .../UpdateTodayDisplayOptionsUseCase.swift | 0 ...UpdateTodayDisplayOptionsUseCaseImpl.swift | 0 .../FetchWebPageImageDirSizeUseCase.swift | 0 .../FetchWebPageImageDirSizeUseCaseImpl.swift | 0 .../WebPage/Fetch/FetchWebPagesUseCase.swift | 0 .../Fetch/FetchWebPagesUseCaseImpl.swift | 0 .../WebPage/Upsert/AddWebPageUseCase.swift | 0 .../Upsert/AddWebPageUseCaseImpl.swift | 0 .../ClearWebPageImageDirectoryUseCase.swift | 0 ...learWebPageImageDirectoryUseCaseImpl.swift | 0 .../WebPage/Upsert/DeleteWebPageUseCase.swift | 0 .../Upsert/DeleteWebPageUseCaseImpl.swift | 0 .../Upsert/UndoDeleteWebPageUseCase.swift | 0 .../Upsert/UndoDeleteWebPageUseCaseImpl.swift | 0 .../DevLogInfra.xcodeproj/project.pbxproj | 32 +-- .../xcschemes/DevLogInfra.xcscheme | 0 .../Sources}/Common/FirestorePath.swift | 0 .../Sources}/Common/InfraLayerError.swift | 0 .../Common/TopViewControllerProvider.swift | 0 .../Extension/FirebaseAuthUser+.swift | 0 .../Extension/FirebaseFunctions+.swift | 0 .../Sources}/Service/AuthServiceImpl.swift | 0 .../NWPathConnectivityProviderImpl.swift | 0 .../Service/PushNotificationServiceImpl.swift | 0 .../AppleAuthenticationServiceImpl.swift | 0 .../GithubAuthenticationServiceImpl.swift | 0 .../GoogleAuthenticationServiceImpl.swift | 0 .../Service/TodoCategoryServiceImpl.swift | 0 .../Sources}/Service/TodoServiceImpl.swift | 0 .../Sources}/Service/UserServiceImpl.swift | 0 .../Service/WebPageMetadataServiceImpl.swift | 0 .../Sources}/Service/WebPageServiceImpl.swift | 0 .../project.pbxproj | 66 ++--- .../xcschemes/DevLogPresentation.xcscheme | 0 .../Sources}/Common/LoadingState.swift | 0 .../Sources}/Extension/Color+Hex.swift | 0 .../Sources}/Protocol/Store.swift | 0 .../Structure/Profile/ActivityKindItem.swift | 0 .../Profile/HeatmapActivityItem.swift | 0 .../Structure/Profile/HeatmapDay.swift | 0 .../Structure/Profile/HeatmapMonth.swift | 0 .../Structure/Profile/HeatmapQuarter.swift | 0 .../Structure/PushNotificationItem.swift | 0 .../Structure/Todo/RecentTodoItem.swift | 0 .../Todo/SystemTodoCategoryItem.swift | 0 .../Structure/Todo/TodayTodoItem.swift | 0 .../Structure/Todo/TodoCategoryItem.swift | 0 .../Sources}/Structure/Todo/TodoIDItem.swift | 0 .../Structure/Todo/TodoListItem.swift | 0 .../Structure/Todo/TodoReferenceItem.swift | 0 .../Structure/Todo/UserTodoCategoryItem.swift | 0 .../Sources}/Structure/WebPageItem.swift | 0 .../Sources}/ViewModel/AccountViewModel.swift | 0 .../Sources}/ViewModel/HomeViewModel.swift | 0 .../Sources}/ViewModel/LoginViewModel.swift | 0 .../Sources}/ViewModel/MainViewModel.swift | 0 .../Sources}/ViewModel/ProfileViewModel.swift | 0 .../PushNotificationListViewModel.swift | 0 .../PushNotificationSettingsViewModel.swift | 0 .../Sources}/ViewModel/RootViewModel.swift | 0 .../Sources}/ViewModel/SearchViewModel.swift | 0 .../Sources}/ViewModel/SettingViewModel.swift | 0 .../Sources}/ViewModel/TodayViewModel.swift | 0 .../ViewModel/TodoDetailViewModel.swift | 0 .../ViewModel/TodoEditorViewModel.swift | 0 .../ViewModel/TodoListViewModel.swift | 0 .../ViewModel/TodoManageViewModel.swift | 0 .../DevLogStorage.xcodeproj/project.pbxproj | 10 +- .../xcschemes/DevLogStorage.xcscheme | 0 .../Sources}/Persistence/ThemeStoreImpl.swift | 0 .../Persistence/UserDefaultsStoreImpl.swift | 0 .../Persistence/WebPageImageStoreImpl.swift | 0 .../WidgetSnapshotPreferenceStoreImpl.swift | 0 .../WidgetSnapshotUpdaterImpl.swift | 0 .../DevLogUI.xcodeproj/project.pbxproj | 76 +++--- .../xcshareddata/xcschemes/DevLogUI.xcscheme | 0 .../Common/Component/CacheableImage.swift | 0 .../Sources}/Common/Component/CheckBox.swift | 0 .../Common/Component/LoadingView.swift | 0 .../Common/Component/LoginButton.swift | 0 .../Common/Component/RelativeTimeText.swift | 0 .../Sources}/Common/Component/Tag+.swift | 0 .../Sources}/Common/Component/Toast.swift | 0 .../Common/Component/TodoItemRow.swift | 0 .../Common/Component/ToolbarButton+.swift | 0 .../Common/Component/UIKitTextEditor.swift | 0 .../Common/Component/WebItemRow.swift | 0 .../Common/NavigationBarConfigurator.swift | 0 .../Sources}/Common/NavigationRouter.swift | 0 .../Common/TodoDetailContentView.swift | 0 .../Sources}/Common/TodoInfoSheetView.swift | 0 .../Common/TodoMarkdownContentView.swift | 0 .../DevLogUI/Sources}/Common/WebView.swift | 0 .../Extension/EnvironmentValues+.swift | 0 .../DevLogUI/Sources}/Extension/View+.swift | 0 .../DevLogUI/Sources}/Home/HomeView.swift | 0 .../Sources}/Home/HomeViewCoordinator.swift | 0 .../Sources}/Home/TodoDetailView.swift | 0 .../Sources}/Home/TodoEditorView.swift | 0 .../DevLogUI/Sources}/Home/TodoListView.swift | 0 .../Sources}/Home/TodoManageView.swift | 0 .../DevLogUI/Sources}/Login/LoginView.swift | 0 .../DevLogUI/Sources}/Main/MainView.swift | 0 .../Sources}/Main/MainViewCoordinator.swift | 0 .../Sources}/Profile/HeatmapView.swift | 0 .../Sources}/Profile/ProfileView.swift | 0 .../PushNotificationListView.swift | 0 .../DevLogUI/Sources}/Search/SearchView.swift | 0 .../Sources}/Setting/AccountView.swift | 0 .../PushNotificationSettingsView.swift | 0 .../Sources}/Setting/SettingView.swift | 0 .../DevLogUI/Sources}/Setting/ThemeView.swift | 0 .../DevLogUI/Sources}/Today/TodayView.swift | 0 .../Sources}/Today/TodayViewCoordinator.swift | 0 .../project.pbxproj | 20 +- .../xcschemes/DevLogWidgetCore.xcscheme | 0 .../Common/WidgetSharedDefaultsStore.swift | 0 .../Sources}/Common/WidgetSnapshotStore.swift | 0 .../Sources}/Common/WidgetSyncEvent.swift | 0 .../Heatmap/HeatmapWidgetSnapshot.swift | 0 .../HeatmapWidgetSnapshotFactory.swift | 0 .../Sources}/Sync/WidgetSyncEventBus.swift | 0 .../Sync/WidgetSyncEventBusImpl.swift | 0 .../Sync/WidgetSyncEventHandler.swift | 0 .../Sources}/Today/TodayWidgetSnapshot.swift | 0 .../Today/TodayWidgetSnapshotFactory.swift | 0 .../project.pbxproj | 12 +- .../xcschemes/DevLogWidgetShared.xcscheme | 0 .../Sources}/Calendar.swift | 0 .../Sources}/WidgetAppGroup.swift | 0 .../Sources}/WidgetDeepLink.swift | 0 .../WidgetHeatmapPlaceholderShape.swift | 0 .../Sources}/WidgetKind.swift | 0 .../Sources}/WidgetSnapshotKey.swift | 0 DevLog.xcodeproj/project.pbxproj | 110 +++------ DevLog.xcworkspace/contents.xcworkspacedata | 31 --- 362 files changed, 334 insertions(+), 376 deletions(-) create mode 100644 Application/DevLog.xcworkspace/contents.xcworkspacedata rename {DevLog.xcworkspace => Application/DevLog.xcworkspace}/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {DevLog.xcworkspace => Application/DevLog.xcworkspace}/xcshareddata/swiftpm/Package.resolved (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Assembler/AppLayerAssembler.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Assembler/Assembler.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Assembler/DataAssembler.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Assembler/DomainAssembler.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Assembler/InfraAssembler.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Assembler/PersistenceAssembler.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/DIContainer.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/DIContainerKey.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Delegate/AppDelegate.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Delegate/AppleSignInDelegate.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/DevLogApp.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Handler/FCMTokenSyncHandler.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Handler/UserTimeZoneSyncHandler.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Notification/NotificationName+.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/RootView.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Routing/MainTab.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/Routing/PushNotificationRoute.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/App/TempView.swift (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/AppIcon.appiconset/Primary_black.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/AppIcon.appiconset/Primary_white.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/Apple.imageset/Apple_black.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/Apple.imageset/Apple_white.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/Apple.imageset/Contents.json (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/Contents.json (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/Github.imageset/Contents.json (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/Github.imageset/Github_black.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/Github.imageset/Github_white.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/Google.imageset/Contents.json (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/Google.imageset/Google.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/Primary.imageset/Contents.json (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Assets.xcassets/Primary.imageset/Primary_dark.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/DevLog.entitlements (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Image/Apple_black.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Image/Apple_white.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Image/Github_black.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Image/Github_white.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Image/Google.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Image/Logo/Primary_black.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Image/Logo/Primary_white.png (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Info.plist (100%) rename {DevLog => Application/DevLogApp/Sources}/Resource/Localizable.xcstrings (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Common/WidgetPlaceholderCard.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Common/WidgetSharedDefaultsStore.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Common/WidgetSnapshotStore.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/DevLogWidgetBundle.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Heatmap/HeatmapWidget.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Heatmap/HeatmapWidgetConfigurationIntent.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Heatmap/HeatmapWidgetEntry.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Heatmap/HeatmapWidgetEntryView.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Heatmap/HeatmapWidgetProvider.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Heatmap/HeatmapWidgetSnapshot.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Heatmap/WidgetHeatmapGrid.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Heatmap/WidgetHeatmapLayout.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Resource/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Resource/Assets.xcassets/Contents.json (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Resource/DevLogWidget.entitlements (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Resource/Info.plist (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Resource/Localizable.xcstrings (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Today/TodayTodoWidget.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Today/TodayTodoWidgetConfigurationIntent.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Today/TodayTodoWidgetEntry.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Today/TodayTodoWidgetEntryView.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Today/TodayTodoWidgetProvider.swift (100%) rename {DevLogWidget => Application/DevLogApp/WidgetExtension}/Today/TodayWidgetSnapshot.swift (100%) rename {Projects => Application}/DevLogData/DevLogData.xcodeproj/project.pbxproj (92%) rename {Projects => Application}/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme (100%) rename {Projects => Application}/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme (100%) rename {Projects => Application}/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme (100%) rename {Projects => Application}/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme (100%) rename {Projects => Application}/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataRepository.xcscheme (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Common/DataLayerError.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Common/Logger.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/AppleAuthResponse.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/AuthDataResponse.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/NotificationKind.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/PushNotificationCursorDTO.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/PushNotificationPageResponse.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/PushNotificationResponse.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/TodoCategoryResponse.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/TodoCursorDTO.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/TodoDTO.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/TodoPageResponse.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/TodoReferenceResponse.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/UserProfileResponse.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/WebPageDTO.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/DTO/WebPageMetadataResponse.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Mapper/PushNotificationMapping.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Mapper/TodoMapping.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Mapper/UserProfileMapping.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Mapper/WebPageMapping.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/AuthService.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/AuthenticationService.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/NWPathConnectivityProvider.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/PushNotificationService.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/ThemeStore.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/TodoCategoryService.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/TodoService.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/UserDefaultsStore.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/UserService.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/WebPageImageStore.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/WebPageMetadataService.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/WebPageService.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/WidgetSnapshotPreferenceStore.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Protocol/WidgetSnapshotUpdater.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Repository/AuthDataRepositoryImpl.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Repository/AuthSessionRepositoryImpl.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Repository/AuthenticationRepositoryImpl.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Repository/NetworkConnectivityRepositoryImpl.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Repository/PushNotificationRepositoryImpl.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Repository/TodoCategoryRepositoryImpl.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Repository/TodoRepositoryImpl.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Repository/UserDataRepositoryImpl.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Repository/UserPreferencesRepositoryImpl.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Repository/WebPageImageRepositoryImpl.swift (100%) rename {DevLog/Data => Application/DevLogData/Sources}/Repository/WebPageRepositoryImpl.swift (100%) rename {Projects => Application}/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj (84%) rename {Projects => Application}/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomain.xcscheme (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/ActivityKind.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/AuthProvider.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/PushNotification.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/PushNotificationCursor.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/PushNotificationPage.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/PushNotificationQuery.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/PushNotificationSettings.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/SystemTheme.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/SystemTodoCategory.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/TodayDisplayOptions.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/Todo.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/TodoCategory.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/TodoCategoryPreference.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/TodoCursor.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/TodoPage.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/TodoQuery.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/TodoReference.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/UserProfile.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/UserTodoCategory.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Entity/WebPage.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Extension/Array.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Extension/String.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Extension/UIFont.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Protocol/AuthDataRepository.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Protocol/AuthSessionRepository.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Protocol/AuthenticationRepository.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Protocol/NetworkConnectivityRepository.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Protocol/PushNotificationRepository.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Protocol/TodoCategoryRepository.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Protocol/TodoRepository.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Protocol/UserDataRepository.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Protocol/UserPreferencesRepository.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Protocol/WebPageImageRepository.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/Protocol/WebPageRepository.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/Delete/DeleteAuthUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/Delete/DeleteAuthUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/Provider/FetchAuthProvidersUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/Provider/LinkAuthProviderUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/Provider/LinkAuthProviderUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/Provider/UnlinkAuthProviderUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/Provider/UnlinkAuthProviderUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/Session/ObserveAuthSessionUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/SignIn/SignInUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/SignIn/SignInUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/SignOut/SignOutUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Auth/SignOut/SignOutUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Connectivity/ObserveNetworkConnectivityUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/PushNotification/Delete/DeletePushNotificationUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/PushNotification/Read/TogglePushNotificationReadUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Todo/Delete/DeleteTodoUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Todo/Delete/DeleteTodoUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Todo/Delete/UndoDeleteTodoUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Todo/Delete/UndoDeleteTodoUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Todo/Fetch/FetchReferenceItemsUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Todo/Fetch/FetchReferenceItemsUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Todo/Fetch/FetchTodoByIDUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Todo/Fetch/FetchTodoByIDUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Todo/Fetch/FetchTodosUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Todo/Fetch/FetchTodosUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Todo/Upsert/UpsertTodoUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/Todo/Upsert/UpsertTodoUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/WebPage/Fetch/FetchWebPagesUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/WebPage/Upsert/AddWebPageUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/WebPage/Upsert/AddWebPageUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift (100%) rename {DevLog/Domain => Application/DevLogDomain/Sources}/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCaseImpl.swift (100%) rename {Projects => Application}/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj (93%) rename {Projects => Application}/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfra.xcscheme (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Common/FirestorePath.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Common/InfraLayerError.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Common/TopViewControllerProvider.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Extension/FirebaseAuthUser+.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Extension/FirebaseFunctions+.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Service/AuthServiceImpl.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Service/NWPathConnectivityProviderImpl.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Service/PushNotificationServiceImpl.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Service/SocialLogin/AppleAuthenticationServiceImpl.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Service/SocialLogin/GithubAuthenticationServiceImpl.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Service/TodoCategoryServiceImpl.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Service/TodoServiceImpl.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Service/UserServiceImpl.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Service/WebPageMetadataServiceImpl.swift (100%) rename {DevLog/Infra => Application/DevLogInfra/Sources}/Service/WebPageServiceImpl.swift (100%) rename {Projects => Application}/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj (88%) rename {Projects => Application}/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentation.xcscheme (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Common/LoadingState.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Extension/Color+Hex.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Protocol/Store.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Profile/ActivityKindItem.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Profile/HeatmapActivityItem.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Profile/HeatmapDay.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Profile/HeatmapMonth.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Profile/HeatmapQuarter.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/PushNotificationItem.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Todo/RecentTodoItem.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Todo/SystemTodoCategoryItem.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Todo/TodayTodoItem.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Todo/TodoCategoryItem.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Todo/TodoIDItem.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Todo/TodoListItem.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Todo/TodoReferenceItem.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/Todo/UserTodoCategoryItem.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/Structure/WebPageItem.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/AccountViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/HomeViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/LoginViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/MainViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/ProfileViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/PushNotificationListViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/PushNotificationSettingsViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/RootViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/SearchViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/SettingViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/TodayViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/TodoDetailViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/TodoEditorViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/TodoListViewModel.swift (100%) rename {DevLog/Presentation => Application/DevLogPresentation/Sources}/ViewModel/TodoManageViewModel.swift (100%) rename {Projects => Application}/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj (97%) rename {Projects => Application}/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme (100%) rename {DevLog/Storage => Application/DevLogStorage/Sources}/Persistence/ThemeStoreImpl.swift (100%) rename {DevLog/Storage => Application/DevLogStorage/Sources}/Persistence/UserDefaultsStoreImpl.swift (100%) rename {DevLog/Storage => Application/DevLogStorage/Sources}/Persistence/WebPageImageStoreImpl.swift (100%) rename {DevLog/Storage => Application/DevLogStorage/Sources}/Persistence/WidgetSnapshotPreferenceStoreImpl.swift (100%) rename {DevLog/Storage => Application/DevLogStorage/Sources}/Persistence/WidgetSnapshotUpdaterImpl.swift (100%) rename {Projects => Application}/DevLogUI/DevLogUI.xcodeproj/project.pbxproj (88%) rename {Projects => Application}/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/Component/CacheableImage.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/Component/CheckBox.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/Component/LoadingView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/Component/LoginButton.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/Component/RelativeTimeText.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/Component/Tag+.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/Component/Toast.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/Component/TodoItemRow.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/Component/ToolbarButton+.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/Component/UIKitTextEditor.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/Component/WebItemRow.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/NavigationBarConfigurator.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/NavigationRouter.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/TodoDetailContentView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/TodoInfoSheetView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/TodoMarkdownContentView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Common/WebView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Extension/EnvironmentValues+.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Extension/View+.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Home/HomeView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Home/HomeViewCoordinator.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Home/TodoDetailView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Home/TodoEditorView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Home/TodoListView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Home/TodoManageView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Login/LoginView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Main/MainView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Main/MainViewCoordinator.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Profile/HeatmapView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Profile/ProfileView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/PushNotification/PushNotificationListView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Search/SearchView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Setting/AccountView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Setting/PushNotificationSettingsView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Setting/SettingView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Setting/ThemeView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Today/TodayView.swift (100%) rename {DevLog/UI => Application/DevLogUI/Sources}/Today/TodayViewCoordinator.swift (100%) rename {Projects => Application}/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj (95%) rename {Projects => Application}/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme (100%) rename {DevLog/Widget => Application/DevLogWidgetCore/Sources}/Common/WidgetSharedDefaultsStore.swift (100%) rename {DevLog/Widget => Application/DevLogWidgetCore/Sources}/Common/WidgetSnapshotStore.swift (100%) rename {DevLog/Widget => Application/DevLogWidgetCore/Sources}/Common/WidgetSyncEvent.swift (100%) rename {DevLog/Widget => Application/DevLogWidgetCore/Sources}/Heatmap/HeatmapWidgetSnapshot.swift (100%) rename {DevLog/Widget => Application/DevLogWidgetCore/Sources}/Heatmap/HeatmapWidgetSnapshotFactory.swift (100%) rename {DevLog/Widget => Application/DevLogWidgetCore/Sources}/Sync/WidgetSyncEventBus.swift (100%) rename {DevLog/Widget => Application/DevLogWidgetCore/Sources}/Sync/WidgetSyncEventBusImpl.swift (100%) rename {DevLog/Widget => Application/DevLogWidgetCore/Sources}/Sync/WidgetSyncEventHandler.swift (100%) rename {DevLog/Widget => Application/DevLogWidgetCore/Sources}/Today/TodayWidgetSnapshot.swift (100%) rename {DevLog/Widget => Application/DevLogWidgetCore/Sources}/Today/TodayWidgetSnapshotFactory.swift (100%) rename {Projects => Application}/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj (95%) rename {Projects => Application}/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme (100%) rename {WidgetShared => Application/DevLogWidgetShared/Sources}/Calendar.swift (100%) rename {WidgetShared => Application/DevLogWidgetShared/Sources}/WidgetAppGroup.swift (100%) rename {WidgetShared => Application/DevLogWidgetShared/Sources}/WidgetDeepLink.swift (100%) rename {WidgetShared => Application/DevLogWidgetShared/Sources}/WidgetHeatmapPlaceholderShape.swift (100%) rename {WidgetShared => Application/DevLogWidgetShared/Sources}/WidgetKind.swift (100%) rename {WidgetShared => Application/DevLogWidgetShared/Sources}/WidgetSnapshotKey.swift (100%) delete mode 100644 DevLog.xcworkspace/contents.xcworkspacedata diff --git a/Application/DevLog.xcworkspace/contents.xcworkspacedata b/Application/DevLog.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..819a1c04 --- /dev/null +++ b/Application/DevLog.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/DevLog.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Application/DevLog.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from DevLog.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to Application/DevLog.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Application/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to Application/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/DevLog/App/Assembler/AppLayerAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift similarity index 100% rename from DevLog/App/Assembler/AppLayerAssembler.swift rename to Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift diff --git a/DevLog/App/Assembler/Assembler.swift b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift similarity index 100% rename from DevLog/App/Assembler/Assembler.swift rename to Application/DevLogApp/Sources/App/Assembler/Assembler.swift diff --git a/DevLog/App/Assembler/DataAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift similarity index 100% rename from DevLog/App/Assembler/DataAssembler.swift rename to Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift diff --git a/DevLog/App/Assembler/DomainAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift similarity index 100% rename from DevLog/App/Assembler/DomainAssembler.swift rename to Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift diff --git a/DevLog/App/Assembler/InfraAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift similarity index 100% rename from DevLog/App/Assembler/InfraAssembler.swift rename to Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift diff --git a/DevLog/App/Assembler/PersistenceAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift similarity index 100% rename from DevLog/App/Assembler/PersistenceAssembler.swift rename to Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift diff --git a/DevLog/App/DIContainer.swift b/Application/DevLogApp/Sources/App/DIContainer.swift similarity index 100% rename from DevLog/App/DIContainer.swift rename to Application/DevLogApp/Sources/App/DIContainer.swift diff --git a/DevLog/App/DIContainerKey.swift b/Application/DevLogApp/Sources/App/DIContainerKey.swift similarity index 100% rename from DevLog/App/DIContainerKey.swift rename to Application/DevLogApp/Sources/App/DIContainerKey.swift diff --git a/DevLog/App/Delegate/AppDelegate.swift b/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift similarity index 100% rename from DevLog/App/Delegate/AppDelegate.swift rename to Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift diff --git a/DevLog/App/Delegate/AppleSignInDelegate.swift b/Application/DevLogApp/Sources/App/Delegate/AppleSignInDelegate.swift similarity index 100% rename from DevLog/App/Delegate/AppleSignInDelegate.swift rename to Application/DevLogApp/Sources/App/Delegate/AppleSignInDelegate.swift diff --git a/DevLog/App/DevLogApp.swift b/Application/DevLogApp/Sources/App/DevLogApp.swift similarity index 100% rename from DevLog/App/DevLogApp.swift rename to Application/DevLogApp/Sources/App/DevLogApp.swift diff --git a/DevLog/App/Handler/FCMTokenSyncHandler.swift b/Application/DevLogApp/Sources/App/Handler/FCMTokenSyncHandler.swift similarity index 100% rename from DevLog/App/Handler/FCMTokenSyncHandler.swift rename to Application/DevLogApp/Sources/App/Handler/FCMTokenSyncHandler.swift diff --git a/DevLog/App/Handler/UserTimeZoneSyncHandler.swift b/Application/DevLogApp/Sources/App/Handler/UserTimeZoneSyncHandler.swift similarity index 100% rename from DevLog/App/Handler/UserTimeZoneSyncHandler.swift rename to Application/DevLogApp/Sources/App/Handler/UserTimeZoneSyncHandler.swift diff --git a/DevLog/App/Notification/NotificationName+.swift b/Application/DevLogApp/Sources/App/Notification/NotificationName+.swift similarity index 100% rename from DevLog/App/Notification/NotificationName+.swift rename to Application/DevLogApp/Sources/App/Notification/NotificationName+.swift diff --git a/DevLog/App/RootView.swift b/Application/DevLogApp/Sources/App/RootView.swift similarity index 100% rename from DevLog/App/RootView.swift rename to Application/DevLogApp/Sources/App/RootView.swift diff --git a/DevLog/App/Routing/MainTab.swift b/Application/DevLogApp/Sources/App/Routing/MainTab.swift similarity index 100% rename from DevLog/App/Routing/MainTab.swift rename to Application/DevLogApp/Sources/App/Routing/MainTab.swift diff --git a/DevLog/App/Routing/PushNotificationRoute.swift b/Application/DevLogApp/Sources/App/Routing/PushNotificationRoute.swift similarity index 100% rename from DevLog/App/Routing/PushNotificationRoute.swift rename to Application/DevLogApp/Sources/App/Routing/PushNotificationRoute.swift diff --git a/DevLog/App/TempView.swift b/Application/DevLogApp/Sources/App/TempView.swift similarity index 100% rename from DevLog/App/TempView.swift rename to Application/DevLogApp/Sources/App/TempView.swift diff --git a/DevLog/Resource/Assets.xcassets/AccentColor.colorset/Contents.json b/Application/DevLogApp/Sources/Resource/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from DevLog/Resource/Assets.xcassets/AccentColor.colorset/Contents.json rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/DevLog/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json b/Application/DevLogApp/Sources/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from DevLog/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/DevLog/Resource/Assets.xcassets/AppIcon.appiconset/Primary_black.png b/Application/DevLogApp/Sources/Resource/Assets.xcassets/AppIcon.appiconset/Primary_black.png similarity index 100% rename from DevLog/Resource/Assets.xcassets/AppIcon.appiconset/Primary_black.png rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/AppIcon.appiconset/Primary_black.png diff --git a/DevLog/Resource/Assets.xcassets/AppIcon.appiconset/Primary_white.png b/Application/DevLogApp/Sources/Resource/Assets.xcassets/AppIcon.appiconset/Primary_white.png similarity index 100% rename from DevLog/Resource/Assets.xcassets/AppIcon.appiconset/Primary_white.png rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/AppIcon.appiconset/Primary_white.png diff --git a/DevLog/Resource/Assets.xcassets/Apple.imageset/Apple_black.png b/Application/DevLogApp/Sources/Resource/Assets.xcassets/Apple.imageset/Apple_black.png similarity index 100% rename from DevLog/Resource/Assets.xcassets/Apple.imageset/Apple_black.png rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/Apple.imageset/Apple_black.png diff --git a/DevLog/Resource/Assets.xcassets/Apple.imageset/Apple_white.png b/Application/DevLogApp/Sources/Resource/Assets.xcassets/Apple.imageset/Apple_white.png similarity index 100% rename from DevLog/Resource/Assets.xcassets/Apple.imageset/Apple_white.png rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/Apple.imageset/Apple_white.png diff --git a/DevLog/Resource/Assets.xcassets/Apple.imageset/Contents.json b/Application/DevLogApp/Sources/Resource/Assets.xcassets/Apple.imageset/Contents.json similarity index 100% rename from DevLog/Resource/Assets.xcassets/Apple.imageset/Contents.json rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/Apple.imageset/Contents.json diff --git a/DevLog/Resource/Assets.xcassets/Contents.json b/Application/DevLogApp/Sources/Resource/Assets.xcassets/Contents.json similarity index 100% rename from DevLog/Resource/Assets.xcassets/Contents.json rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/Contents.json diff --git a/DevLog/Resource/Assets.xcassets/Github.imageset/Contents.json b/Application/DevLogApp/Sources/Resource/Assets.xcassets/Github.imageset/Contents.json similarity index 100% rename from DevLog/Resource/Assets.xcassets/Github.imageset/Contents.json rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/Github.imageset/Contents.json diff --git a/DevLog/Resource/Assets.xcassets/Github.imageset/Github_black.png b/Application/DevLogApp/Sources/Resource/Assets.xcassets/Github.imageset/Github_black.png similarity index 100% rename from DevLog/Resource/Assets.xcassets/Github.imageset/Github_black.png rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/Github.imageset/Github_black.png diff --git a/DevLog/Resource/Assets.xcassets/Github.imageset/Github_white.png b/Application/DevLogApp/Sources/Resource/Assets.xcassets/Github.imageset/Github_white.png similarity index 100% rename from DevLog/Resource/Assets.xcassets/Github.imageset/Github_white.png rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/Github.imageset/Github_white.png diff --git a/DevLog/Resource/Assets.xcassets/Google.imageset/Contents.json b/Application/DevLogApp/Sources/Resource/Assets.xcassets/Google.imageset/Contents.json similarity index 100% rename from DevLog/Resource/Assets.xcassets/Google.imageset/Contents.json rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/Google.imageset/Contents.json diff --git a/DevLog/Resource/Assets.xcassets/Google.imageset/Google.png b/Application/DevLogApp/Sources/Resource/Assets.xcassets/Google.imageset/Google.png similarity index 100% rename from DevLog/Resource/Assets.xcassets/Google.imageset/Google.png rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/Google.imageset/Google.png diff --git a/DevLog/Resource/Assets.xcassets/Primary.imageset/Contents.json b/Application/DevLogApp/Sources/Resource/Assets.xcassets/Primary.imageset/Contents.json similarity index 100% rename from DevLog/Resource/Assets.xcassets/Primary.imageset/Contents.json rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/Primary.imageset/Contents.json diff --git a/DevLog/Resource/Assets.xcassets/Primary.imageset/Primary_dark.png b/Application/DevLogApp/Sources/Resource/Assets.xcassets/Primary.imageset/Primary_dark.png similarity index 100% rename from DevLog/Resource/Assets.xcassets/Primary.imageset/Primary_dark.png rename to Application/DevLogApp/Sources/Resource/Assets.xcassets/Primary.imageset/Primary_dark.png diff --git a/DevLog/Resource/DevLog.entitlements b/Application/DevLogApp/Sources/Resource/DevLog.entitlements similarity index 100% rename from DevLog/Resource/DevLog.entitlements rename to Application/DevLogApp/Sources/Resource/DevLog.entitlements diff --git a/DevLog/Resource/Image/Apple_black.png b/Application/DevLogApp/Sources/Resource/Image/Apple_black.png similarity index 100% rename from DevLog/Resource/Image/Apple_black.png rename to Application/DevLogApp/Sources/Resource/Image/Apple_black.png diff --git a/DevLog/Resource/Image/Apple_white.png b/Application/DevLogApp/Sources/Resource/Image/Apple_white.png similarity index 100% rename from DevLog/Resource/Image/Apple_white.png rename to Application/DevLogApp/Sources/Resource/Image/Apple_white.png diff --git a/DevLog/Resource/Image/Github_black.png b/Application/DevLogApp/Sources/Resource/Image/Github_black.png similarity index 100% rename from DevLog/Resource/Image/Github_black.png rename to Application/DevLogApp/Sources/Resource/Image/Github_black.png diff --git a/DevLog/Resource/Image/Github_white.png b/Application/DevLogApp/Sources/Resource/Image/Github_white.png similarity index 100% rename from DevLog/Resource/Image/Github_white.png rename to Application/DevLogApp/Sources/Resource/Image/Github_white.png diff --git a/DevLog/Resource/Image/Google.png b/Application/DevLogApp/Sources/Resource/Image/Google.png similarity index 100% rename from DevLog/Resource/Image/Google.png rename to Application/DevLogApp/Sources/Resource/Image/Google.png diff --git a/DevLog/Resource/Image/Logo/Primary_black.png b/Application/DevLogApp/Sources/Resource/Image/Logo/Primary_black.png similarity index 100% rename from DevLog/Resource/Image/Logo/Primary_black.png rename to Application/DevLogApp/Sources/Resource/Image/Logo/Primary_black.png diff --git a/DevLog/Resource/Image/Logo/Primary_white.png b/Application/DevLogApp/Sources/Resource/Image/Logo/Primary_white.png similarity index 100% rename from DevLog/Resource/Image/Logo/Primary_white.png rename to Application/DevLogApp/Sources/Resource/Image/Logo/Primary_white.png diff --git a/DevLog/Resource/Info.plist b/Application/DevLogApp/Sources/Resource/Info.plist similarity index 100% rename from DevLog/Resource/Info.plist rename to Application/DevLogApp/Sources/Resource/Info.plist diff --git a/DevLog/Resource/Localizable.xcstrings b/Application/DevLogApp/Sources/Resource/Localizable.xcstrings similarity index 100% rename from DevLog/Resource/Localizable.xcstrings rename to Application/DevLogApp/Sources/Resource/Localizable.xcstrings diff --git a/DevLogWidget/Common/WidgetPlaceholderCard.swift b/Application/DevLogApp/WidgetExtension/Common/WidgetPlaceholderCard.swift similarity index 100% rename from DevLogWidget/Common/WidgetPlaceholderCard.swift rename to Application/DevLogApp/WidgetExtension/Common/WidgetPlaceholderCard.swift diff --git a/DevLogWidget/Common/WidgetSharedDefaultsStore.swift b/Application/DevLogApp/WidgetExtension/Common/WidgetSharedDefaultsStore.swift similarity index 100% rename from DevLogWidget/Common/WidgetSharedDefaultsStore.swift rename to Application/DevLogApp/WidgetExtension/Common/WidgetSharedDefaultsStore.swift diff --git a/DevLogWidget/Common/WidgetSnapshotStore.swift b/Application/DevLogApp/WidgetExtension/Common/WidgetSnapshotStore.swift similarity index 100% rename from DevLogWidget/Common/WidgetSnapshotStore.swift rename to Application/DevLogApp/WidgetExtension/Common/WidgetSnapshotStore.swift diff --git a/DevLogWidget/DevLogWidgetBundle.swift b/Application/DevLogApp/WidgetExtension/DevLogWidgetBundle.swift similarity index 100% rename from DevLogWidget/DevLogWidgetBundle.swift rename to Application/DevLogApp/WidgetExtension/DevLogWidgetBundle.swift diff --git a/DevLogWidget/Heatmap/HeatmapWidget.swift b/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidget.swift similarity index 100% rename from DevLogWidget/Heatmap/HeatmapWidget.swift rename to Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidget.swift diff --git a/DevLogWidget/Heatmap/HeatmapWidgetConfigurationIntent.swift b/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetConfigurationIntent.swift similarity index 100% rename from DevLogWidget/Heatmap/HeatmapWidgetConfigurationIntent.swift rename to Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetConfigurationIntent.swift diff --git a/DevLogWidget/Heatmap/HeatmapWidgetEntry.swift b/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetEntry.swift similarity index 100% rename from DevLogWidget/Heatmap/HeatmapWidgetEntry.swift rename to Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetEntry.swift diff --git a/DevLogWidget/Heatmap/HeatmapWidgetEntryView.swift b/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetEntryView.swift similarity index 100% rename from DevLogWidget/Heatmap/HeatmapWidgetEntryView.swift rename to Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetEntryView.swift diff --git a/DevLogWidget/Heatmap/HeatmapWidgetProvider.swift b/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetProvider.swift similarity index 100% rename from DevLogWidget/Heatmap/HeatmapWidgetProvider.swift rename to Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetProvider.swift diff --git a/DevLogWidget/Heatmap/HeatmapWidgetSnapshot.swift b/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetSnapshot.swift similarity index 100% rename from DevLogWidget/Heatmap/HeatmapWidgetSnapshot.swift rename to Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetSnapshot.swift diff --git a/DevLogWidget/Heatmap/WidgetHeatmapGrid.swift b/Application/DevLogApp/WidgetExtension/Heatmap/WidgetHeatmapGrid.swift similarity index 100% rename from DevLogWidget/Heatmap/WidgetHeatmapGrid.swift rename to Application/DevLogApp/WidgetExtension/Heatmap/WidgetHeatmapGrid.swift diff --git a/DevLogWidget/Heatmap/WidgetHeatmapLayout.swift b/Application/DevLogApp/WidgetExtension/Heatmap/WidgetHeatmapLayout.swift similarity index 100% rename from DevLogWidget/Heatmap/WidgetHeatmapLayout.swift rename to Application/DevLogApp/WidgetExtension/Heatmap/WidgetHeatmapLayout.swift diff --git a/DevLogWidget/Resource/Assets.xcassets/AccentColor.colorset/Contents.json b/Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from DevLogWidget/Resource/Assets.xcassets/AccentColor.colorset/Contents.json rename to Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/DevLogWidget/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json b/Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from DevLogWidget/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/DevLogWidget/Resource/Assets.xcassets/Contents.json b/Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/Contents.json similarity index 100% rename from DevLogWidget/Resource/Assets.xcassets/Contents.json rename to Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/Contents.json diff --git a/DevLogWidget/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json b/Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json similarity index 100% rename from DevLogWidget/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json rename to Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json diff --git a/DevLogWidget/Resource/DevLogWidget.entitlements b/Application/DevLogApp/WidgetExtension/Resource/DevLogWidget.entitlements similarity index 100% rename from DevLogWidget/Resource/DevLogWidget.entitlements rename to Application/DevLogApp/WidgetExtension/Resource/DevLogWidget.entitlements diff --git a/DevLogWidget/Resource/Info.plist b/Application/DevLogApp/WidgetExtension/Resource/Info.plist similarity index 100% rename from DevLogWidget/Resource/Info.plist rename to Application/DevLogApp/WidgetExtension/Resource/Info.plist diff --git a/DevLogWidget/Resource/Localizable.xcstrings b/Application/DevLogApp/WidgetExtension/Resource/Localizable.xcstrings similarity index 100% rename from DevLogWidget/Resource/Localizable.xcstrings rename to Application/DevLogApp/WidgetExtension/Resource/Localizable.xcstrings diff --git a/DevLogWidget/Today/TodayTodoWidget.swift b/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidget.swift similarity index 100% rename from DevLogWidget/Today/TodayTodoWidget.swift rename to Application/DevLogApp/WidgetExtension/Today/TodayTodoWidget.swift diff --git a/DevLogWidget/Today/TodayTodoWidgetConfigurationIntent.swift b/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetConfigurationIntent.swift similarity index 100% rename from DevLogWidget/Today/TodayTodoWidgetConfigurationIntent.swift rename to Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetConfigurationIntent.swift diff --git a/DevLogWidget/Today/TodayTodoWidgetEntry.swift b/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetEntry.swift similarity index 100% rename from DevLogWidget/Today/TodayTodoWidgetEntry.swift rename to Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetEntry.swift diff --git a/DevLogWidget/Today/TodayTodoWidgetEntryView.swift b/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetEntryView.swift similarity index 100% rename from DevLogWidget/Today/TodayTodoWidgetEntryView.swift rename to Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetEntryView.swift diff --git a/DevLogWidget/Today/TodayTodoWidgetProvider.swift b/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetProvider.swift similarity index 100% rename from DevLogWidget/Today/TodayTodoWidgetProvider.swift rename to Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetProvider.swift diff --git a/DevLogWidget/Today/TodayWidgetSnapshot.swift b/Application/DevLogApp/WidgetExtension/Today/TodayWidgetSnapshot.swift similarity index 100% rename from DevLogWidget/Today/TodayWidgetSnapshot.swift rename to Application/DevLogApp/WidgetExtension/Today/TodayWidgetSnapshot.swift diff --git a/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj similarity index 92% rename from Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj rename to Application/DevLogData/DevLogData.xcodeproj/project.pbxproj index 7399eace..a6ed0d97 100644 --- a/Projects/DevLogData/DevLogData.xcodeproj/project.pbxproj +++ b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj @@ -158,57 +158,57 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0202E26A972D5D274AF77C67 /* UserPreferencesRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserPreferencesRepositoryImpl.swift; path = ../../DevLog/Data/Repository/UserPreferencesRepositoryImpl.swift; sourceTree = ""; }; - 082E30ECD7061C9E401FF2D0 /* TodoCategoryService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryService.swift; path = ../../DevLog/Data/Protocol/TodoCategoryService.swift; sourceTree = ""; }; - 09310E1D16103C0E6E96C7C7 /* AuthenticationRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationRepositoryImpl.swift; path = ../../DevLog/Data/Repository/AuthenticationRepositoryImpl.swift; sourceTree = ""; }; - 13680A4153A719F15E7DFDF6 /* NotificationKind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NotificationKind.swift; path = ../../DevLog/Data/DTO/NotificationKind.swift; sourceTree = ""; }; - 17CB1CEA7122BFEDED0F4370 /* TodoMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoMapping.swift; path = ../../DevLog/Data/Mapper/TodoMapping.swift; sourceTree = ""; }; - 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStore.swift; path = ../../DevLog/Data/Protocol/UserDefaultsStore.swift; sourceTree = ""; }; - 1AAF764A3F6E025A18E6A0BC /* WebPageRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageRepositoryImpl.swift; path = ../../DevLog/Data/Repository/WebPageRepositoryImpl.swift; sourceTree = ""; }; - 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStore.swift; path = ../../DevLog/Data/Protocol/ThemeStore.swift; sourceTree = ""; }; - 2DF12B44E80793EF948B211B /* PushNotificationCursorDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationCursorDTO.swift; path = ../../DevLog/Data/DTO/PushNotificationCursorDTO.swift; sourceTree = ""; }; - 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationService.swift; path = ../../DevLog/Data/Protocol/PushNotificationService.swift; sourceTree = ""; }; - 36E09221F6FBF67359105995 /* TodoCategoryRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryRepositoryImpl.swift; path = ../../DevLog/Data/Repository/TodoCategoryRepositoryImpl.swift; sourceTree = ""; }; - 37830EA98EFABE66D2ADBCE9 /* UserProfileMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserProfileMapping.swift; path = ../../DevLog/Data/Mapper/UserProfileMapping.swift; sourceTree = ""; }; - 387E711B7A3BA319D3E7C2AB /* UserProfileResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserProfileResponse.swift; path = ../../DevLog/Data/DTO/UserProfileResponse.swift; sourceTree = ""; }; - 3B67886F72C946CBC709AFCB /* NWPathConnectivityProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NWPathConnectivityProvider.swift; path = ../../DevLog/Data/Protocol/NWPathConnectivityProvider.swift; sourceTree = ""; }; - 3C2B7108CD63C65097876046 /* WebPageMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMapping.swift; path = ../../DevLog/Data/Mapper/WebPageMapping.swift; sourceTree = ""; }; - 3CEB1EE245302780E69EC631 /* PushNotificationRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationRepositoryImpl.swift; path = ../../DevLog/Data/Repository/PushNotificationRepositoryImpl.swift; sourceTree = ""; }; - 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdater.swift; path = ../../DevLog/Data/Protocol/WidgetSnapshotUpdater.swift; sourceTree = ""; }; - 3F6961039F12AFD8B33F25DF /* TodoReferenceResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReferenceResponse.swift; path = ../../DevLog/Data/DTO/TodoReferenceResponse.swift; sourceTree = ""; }; + 0202E26A972D5D274AF77C67 /* UserPreferencesRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserPreferencesRepositoryImpl.swift; path = Sources/Repository/UserPreferencesRepositoryImpl.swift; sourceTree = ""; }; + 082E30ECD7061C9E401FF2D0 /* TodoCategoryService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryService.swift; path = Sources/Protocol/TodoCategoryService.swift; sourceTree = ""; }; + 09310E1D16103C0E6E96C7C7 /* AuthenticationRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationRepositoryImpl.swift; path = Sources/Repository/AuthenticationRepositoryImpl.swift; sourceTree = ""; }; + 13680A4153A719F15E7DFDF6 /* NotificationKind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NotificationKind.swift; path = Sources/DTO/NotificationKind.swift; sourceTree = ""; }; + 17CB1CEA7122BFEDED0F4370 /* TodoMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoMapping.swift; path = Sources/Mapper/TodoMapping.swift; sourceTree = ""; }; + 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStore.swift; path = Sources/Protocol/UserDefaultsStore.swift; sourceTree = ""; }; + 1AAF764A3F6E025A18E6A0BC /* WebPageRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageRepositoryImpl.swift; path = Sources/Repository/WebPageRepositoryImpl.swift; sourceTree = ""; }; + 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStore.swift; path = Sources/Protocol/ThemeStore.swift; sourceTree = ""; }; + 2DF12B44E80793EF948B211B /* PushNotificationCursorDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationCursorDTO.swift; path = Sources/DTO/PushNotificationCursorDTO.swift; sourceTree = ""; }; + 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationService.swift; path = Sources/Protocol/PushNotificationService.swift; sourceTree = ""; }; + 36E09221F6FBF67359105995 /* TodoCategoryRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryRepositoryImpl.swift; path = Sources/Repository/TodoCategoryRepositoryImpl.swift; sourceTree = ""; }; + 37830EA98EFABE66D2ADBCE9 /* UserProfileMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserProfileMapping.swift; path = Sources/Mapper/UserProfileMapping.swift; sourceTree = ""; }; + 387E711B7A3BA319D3E7C2AB /* UserProfileResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserProfileResponse.swift; path = Sources/DTO/UserProfileResponse.swift; sourceTree = ""; }; + 3B67886F72C946CBC709AFCB /* NWPathConnectivityProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NWPathConnectivityProvider.swift; path = Sources/Protocol/NWPathConnectivityProvider.swift; sourceTree = ""; }; + 3C2B7108CD63C65097876046 /* WebPageMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMapping.swift; path = Sources/Mapper/WebPageMapping.swift; sourceTree = ""; }; + 3CEB1EE245302780E69EC631 /* PushNotificationRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationRepositoryImpl.swift; path = Sources/Repository/PushNotificationRepositoryImpl.swift; sourceTree = ""; }; + 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdater.swift; path = Sources/Protocol/WidgetSnapshotUpdater.swift; sourceTree = ""; }; + 3F6961039F12AFD8B33F25DF /* TodoReferenceResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReferenceResponse.swift; path = Sources/DTO/TodoReferenceResponse.swift; sourceTree = ""; }; 44466B71BA6B67309210A7BB /* DevLogDataMapper.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataMapper.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 44C564559DBDF765945456FA /* PushNotificationMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationMapping.swift; path = ../../DevLog/Data/Mapper/PushNotificationMapping.swift; sourceTree = ""; }; - 454F04A5E5887B163DD7E5A9 /* WebPageImageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStore.swift; path = ../../DevLog/Data/Protocol/WebPageImageStore.swift; sourceTree = ""; }; - 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataResponse.swift; path = ../../DevLog/Data/DTO/AuthDataResponse.swift; sourceTree = ""; }; + 44C564559DBDF765945456FA /* PushNotificationMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationMapping.swift; path = Sources/Mapper/PushNotificationMapping.swift; sourceTree = ""; }; + 454F04A5E5887B163DD7E5A9 /* WebPageImageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStore.swift; path = Sources/Protocol/WebPageImageStore.swift; sourceTree = ""; }; + 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataResponse.swift; path = Sources/DTO/AuthDataResponse.swift; sourceTree = ""; }; 4AB6E00A38C37CDBF82B57FD /* DevLogDataRepository.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataRepository.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageDTO.swift; path = ../../DevLog/Data/DTO/WebPageDTO.swift; sourceTree = ""; }; - 60E716EC015A5805DD7C949B /* TodoService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoService.swift; path = ../../DevLog/Data/Protocol/TodoService.swift; sourceTree = ""; }; - 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationResponse.swift; path = ../../DevLog/Data/DTO/PushNotificationResponse.swift; sourceTree = ""; }; - 67FC3A5288FABA7441F4D6AA /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Logger.swift; path = ../../DevLog/Data/Common/Logger.swift; sourceTree = ""; }; + 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageDTO.swift; path = Sources/DTO/WebPageDTO.swift; sourceTree = ""; }; + 60E716EC015A5805DD7C949B /* TodoService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoService.swift; path = Sources/Protocol/TodoService.swift; sourceTree = ""; }; + 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationResponse.swift; path = Sources/DTO/PushNotificationResponse.swift; sourceTree = ""; }; + 67FC3A5288FABA7441F4D6AA /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Logger.swift; path = Sources/Common/Logger.swift; sourceTree = ""; }; 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataCommon.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7559825C27ED42F9F86EBAC1 /* AuthService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthService.swift; path = ../../DevLog/Data/Protocol/AuthService.swift; sourceTree = ""; }; - 78DB5B22BE2E31B18173E89E /* NetworkConnectivityRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkConnectivityRepositoryImpl.swift; path = ../../DevLog/Data/Repository/NetworkConnectivityRepositoryImpl.swift; sourceTree = ""; }; - 7B3ED1B2326966F84851DFDD /* AuthDataRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataRepositoryImpl.swift; path = ../../DevLog/Data/Repository/AuthDataRepositoryImpl.swift; sourceTree = ""; }; - 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataService.swift; path = ../../DevLog/Data/Protocol/WebPageMetadataService.swift; sourceTree = ""; }; - 80CBBE2B99B80E70DCD800ED /* AuthSessionRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthSessionRepositoryImpl.swift; path = ../../DevLog/Data/Repository/AuthSessionRepositoryImpl.swift; sourceTree = ""; }; - 8B167270C81CB76E8F5ED9CA /* UserDataRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDataRepositoryImpl.swift; path = ../../DevLog/Data/Repository/UserDataRepositoryImpl.swift; sourceTree = ""; }; - 914EE1DC0A02968747B6B3A2 /* WebPageImageRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageRepositoryImpl.swift; path = ../../DevLog/Data/Repository/WebPageImageRepositoryImpl.swift; sourceTree = ""; }; + 7559825C27ED42F9F86EBAC1 /* AuthService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthService.swift; path = Sources/Protocol/AuthService.swift; sourceTree = ""; }; + 78DB5B22BE2E31B18173E89E /* NetworkConnectivityRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkConnectivityRepositoryImpl.swift; path = Sources/Repository/NetworkConnectivityRepositoryImpl.swift; sourceTree = ""; }; + 7B3ED1B2326966F84851DFDD /* AuthDataRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataRepositoryImpl.swift; path = Sources/Repository/AuthDataRepositoryImpl.swift; sourceTree = ""; }; + 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataService.swift; path = Sources/Protocol/WebPageMetadataService.swift; sourceTree = ""; }; + 80CBBE2B99B80E70DCD800ED /* AuthSessionRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthSessionRepositoryImpl.swift; path = Sources/Repository/AuthSessionRepositoryImpl.swift; sourceTree = ""; }; + 8B167270C81CB76E8F5ED9CA /* UserDataRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDataRepositoryImpl.swift; path = Sources/Repository/UserDataRepositoryImpl.swift; sourceTree = ""; }; + 914EE1DC0A02968747B6B3A2 /* WebPageImageRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageRepositoryImpl.swift; path = Sources/Repository/WebPageImageRepositoryImpl.swift; sourceTree = ""; }; 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataDTO.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataLayerError.swift; path = ../../DevLog/Data/Common/DataLayerError.swift; sourceTree = ""; }; - ADE1FE53786D11AC7B192698 /* WebPageService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageService.swift; path = ../../DevLog/Data/Protocol/WebPageService.swift; sourceTree = ""; }; - B1ABB0ED51067433D3C90F02 /* TodoPageResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoPageResponse.swift; path = ../../DevLog/Data/DTO/TodoPageResponse.swift; sourceTree = ""; }; - B28D4F60262075223EC096E0 /* TodoDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDTO.swift; path = ../../DevLog/Data/DTO/TodoDTO.swift; sourceTree = ""; }; - B5F8C39E4E51A7A62D716612 /* TodoRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoRepositoryImpl.swift; path = ../../DevLog/Data/Repository/TodoRepositoryImpl.swift; sourceTree = ""; }; - BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStore.swift; path = ../../DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift; sourceTree = ""; }; + A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataLayerError.swift; path = Sources/Common/DataLayerError.swift; sourceTree = ""; }; + ADE1FE53786D11AC7B192698 /* WebPageService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageService.swift; path = Sources/Protocol/WebPageService.swift; sourceTree = ""; }; + B1ABB0ED51067433D3C90F02 /* TodoPageResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoPageResponse.swift; path = Sources/DTO/TodoPageResponse.swift; sourceTree = ""; }; + B28D4F60262075223EC096E0 /* TodoDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDTO.swift; path = Sources/DTO/TodoDTO.swift; sourceTree = ""; }; + B5F8C39E4E51A7A62D716612 /* TodoRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoRepositoryImpl.swift; path = Sources/Repository/TodoRepositoryImpl.swift; sourceTree = ""; }; + BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStore.swift; path = Sources/Protocol/WidgetSnapshotPreferenceStore.swift; sourceTree = ""; }; C063BD562070CA11C2AA4EDF /* DevLogDataProtocol.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataProtocol.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C42BC563A225597B3D761253 /* UserService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserService.swift; path = ../../DevLog/Data/Protocol/UserService.swift; sourceTree = ""; }; - D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryResponse.swift; path = ../../DevLog/Data/DTO/TodoCategoryResponse.swift; sourceTree = ""; }; + C42BC563A225597B3D761253 /* UserService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserService.swift; path = Sources/Protocol/UserService.swift; sourceTree = ""; }; + D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryResponse.swift; path = Sources/DTO/TodoCategoryResponse.swift; sourceTree = ""; }; DD765636013B36A3BCCCF8B7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - E7154773B586C2D41307CD49 /* AuthenticationService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationService.swift; path = ../../DevLog/Data/Protocol/AuthenticationService.swift; sourceTree = ""; }; - EB4A7B045A63D5BC6A541D8E /* AppleAuthResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppleAuthResponse.swift; path = ../../DevLog/Data/DTO/AppleAuthResponse.swift; sourceTree = ""; }; - EE96D070821D1FB62A155AB5 /* PushNotificationPageResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationPageResponse.swift; path = ../../DevLog/Data/DTO/PushNotificationPageResponse.swift; sourceTree = ""; }; - EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCursorDTO.swift; path = ../../DevLog/Data/DTO/TodoCursorDTO.swift; sourceTree = ""; }; - EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataResponse.swift; path = ../../DevLog/Data/DTO/WebPageMetadataResponse.swift; sourceTree = ""; }; + E7154773B586C2D41307CD49 /* AuthenticationService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationService.swift; path = Sources/Protocol/AuthenticationService.swift; sourceTree = ""; }; + EB4A7B045A63D5BC6A541D8E /* AppleAuthResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppleAuthResponse.swift; path = Sources/DTO/AppleAuthResponse.swift; sourceTree = ""; }; + EE96D070821D1FB62A155AB5 /* PushNotificationPageResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationPageResponse.swift; path = Sources/DTO/PushNotificationPageResponse.swift; sourceTree = ""; }; + EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCursorDTO.swift; path = Sources/DTO/TodoCursorDTO.swift; sourceTree = ""; }; + EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataResponse.swift; path = Sources/DTO/WebPageMetadataResponse.swift; sourceTree = ""; }; F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ diff --git a/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme similarity index 100% rename from Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme rename to Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme diff --git a/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme similarity index 100% rename from Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme rename to Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme diff --git a/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme similarity index 100% rename from Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme rename to Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme diff --git a/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme similarity index 100% rename from Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme rename to Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme diff --git a/Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataRepository.xcscheme b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataRepository.xcscheme similarity index 100% rename from Projects/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataRepository.xcscheme rename to Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataRepository.xcscheme diff --git a/DevLog/Data/Common/DataLayerError.swift b/Application/DevLogData/Sources/Common/DataLayerError.swift similarity index 100% rename from DevLog/Data/Common/DataLayerError.swift rename to Application/DevLogData/Sources/Common/DataLayerError.swift diff --git a/DevLog/Data/Common/Logger.swift b/Application/DevLogData/Sources/Common/Logger.swift similarity index 100% rename from DevLog/Data/Common/Logger.swift rename to Application/DevLogData/Sources/Common/Logger.swift diff --git a/DevLog/Data/DTO/AppleAuthResponse.swift b/Application/DevLogData/Sources/DTO/AppleAuthResponse.swift similarity index 100% rename from DevLog/Data/DTO/AppleAuthResponse.swift rename to Application/DevLogData/Sources/DTO/AppleAuthResponse.swift diff --git a/DevLog/Data/DTO/AuthDataResponse.swift b/Application/DevLogData/Sources/DTO/AuthDataResponse.swift similarity index 100% rename from DevLog/Data/DTO/AuthDataResponse.swift rename to Application/DevLogData/Sources/DTO/AuthDataResponse.swift diff --git a/DevLog/Data/DTO/NotificationKind.swift b/Application/DevLogData/Sources/DTO/NotificationKind.swift similarity index 100% rename from DevLog/Data/DTO/NotificationKind.swift rename to Application/DevLogData/Sources/DTO/NotificationKind.swift diff --git a/DevLog/Data/DTO/PushNotificationCursorDTO.swift b/Application/DevLogData/Sources/DTO/PushNotificationCursorDTO.swift similarity index 100% rename from DevLog/Data/DTO/PushNotificationCursorDTO.swift rename to Application/DevLogData/Sources/DTO/PushNotificationCursorDTO.swift diff --git a/DevLog/Data/DTO/PushNotificationPageResponse.swift b/Application/DevLogData/Sources/DTO/PushNotificationPageResponse.swift similarity index 100% rename from DevLog/Data/DTO/PushNotificationPageResponse.swift rename to Application/DevLogData/Sources/DTO/PushNotificationPageResponse.swift diff --git a/DevLog/Data/DTO/PushNotificationResponse.swift b/Application/DevLogData/Sources/DTO/PushNotificationResponse.swift similarity index 100% rename from DevLog/Data/DTO/PushNotificationResponse.swift rename to Application/DevLogData/Sources/DTO/PushNotificationResponse.swift diff --git a/DevLog/Data/DTO/TodoCategoryResponse.swift b/Application/DevLogData/Sources/DTO/TodoCategoryResponse.swift similarity index 100% rename from DevLog/Data/DTO/TodoCategoryResponse.swift rename to Application/DevLogData/Sources/DTO/TodoCategoryResponse.swift diff --git a/DevLog/Data/DTO/TodoCursorDTO.swift b/Application/DevLogData/Sources/DTO/TodoCursorDTO.swift similarity index 100% rename from DevLog/Data/DTO/TodoCursorDTO.swift rename to Application/DevLogData/Sources/DTO/TodoCursorDTO.swift diff --git a/DevLog/Data/DTO/TodoDTO.swift b/Application/DevLogData/Sources/DTO/TodoDTO.swift similarity index 100% rename from DevLog/Data/DTO/TodoDTO.swift rename to Application/DevLogData/Sources/DTO/TodoDTO.swift diff --git a/DevLog/Data/DTO/TodoPageResponse.swift b/Application/DevLogData/Sources/DTO/TodoPageResponse.swift similarity index 100% rename from DevLog/Data/DTO/TodoPageResponse.swift rename to Application/DevLogData/Sources/DTO/TodoPageResponse.swift diff --git a/DevLog/Data/DTO/TodoReferenceResponse.swift b/Application/DevLogData/Sources/DTO/TodoReferenceResponse.swift similarity index 100% rename from DevLog/Data/DTO/TodoReferenceResponse.swift rename to Application/DevLogData/Sources/DTO/TodoReferenceResponse.swift diff --git a/DevLog/Data/DTO/UserProfileResponse.swift b/Application/DevLogData/Sources/DTO/UserProfileResponse.swift similarity index 100% rename from DevLog/Data/DTO/UserProfileResponse.swift rename to Application/DevLogData/Sources/DTO/UserProfileResponse.swift diff --git a/DevLog/Data/DTO/WebPageDTO.swift b/Application/DevLogData/Sources/DTO/WebPageDTO.swift similarity index 100% rename from DevLog/Data/DTO/WebPageDTO.swift rename to Application/DevLogData/Sources/DTO/WebPageDTO.swift diff --git a/DevLog/Data/DTO/WebPageMetadataResponse.swift b/Application/DevLogData/Sources/DTO/WebPageMetadataResponse.swift similarity index 100% rename from DevLog/Data/DTO/WebPageMetadataResponse.swift rename to Application/DevLogData/Sources/DTO/WebPageMetadataResponse.swift diff --git a/DevLog/Data/Mapper/PushNotificationMapping.swift b/Application/DevLogData/Sources/Mapper/PushNotificationMapping.swift similarity index 100% rename from DevLog/Data/Mapper/PushNotificationMapping.swift rename to Application/DevLogData/Sources/Mapper/PushNotificationMapping.swift diff --git a/DevLog/Data/Mapper/TodoMapping.swift b/Application/DevLogData/Sources/Mapper/TodoMapping.swift similarity index 100% rename from DevLog/Data/Mapper/TodoMapping.swift rename to Application/DevLogData/Sources/Mapper/TodoMapping.swift diff --git a/DevLog/Data/Mapper/UserProfileMapping.swift b/Application/DevLogData/Sources/Mapper/UserProfileMapping.swift similarity index 100% rename from DevLog/Data/Mapper/UserProfileMapping.swift rename to Application/DevLogData/Sources/Mapper/UserProfileMapping.swift diff --git a/DevLog/Data/Mapper/WebPageMapping.swift b/Application/DevLogData/Sources/Mapper/WebPageMapping.swift similarity index 100% rename from DevLog/Data/Mapper/WebPageMapping.swift rename to Application/DevLogData/Sources/Mapper/WebPageMapping.swift diff --git a/DevLog/Data/Protocol/AuthService.swift b/Application/DevLogData/Sources/Protocol/AuthService.swift similarity index 100% rename from DevLog/Data/Protocol/AuthService.swift rename to Application/DevLogData/Sources/Protocol/AuthService.swift diff --git a/DevLog/Data/Protocol/AuthenticationService.swift b/Application/DevLogData/Sources/Protocol/AuthenticationService.swift similarity index 100% rename from DevLog/Data/Protocol/AuthenticationService.swift rename to Application/DevLogData/Sources/Protocol/AuthenticationService.swift diff --git a/DevLog/Data/Protocol/NWPathConnectivityProvider.swift b/Application/DevLogData/Sources/Protocol/NWPathConnectivityProvider.swift similarity index 100% rename from DevLog/Data/Protocol/NWPathConnectivityProvider.swift rename to Application/DevLogData/Sources/Protocol/NWPathConnectivityProvider.swift diff --git a/DevLog/Data/Protocol/PushNotificationService.swift b/Application/DevLogData/Sources/Protocol/PushNotificationService.swift similarity index 100% rename from DevLog/Data/Protocol/PushNotificationService.swift rename to Application/DevLogData/Sources/Protocol/PushNotificationService.swift diff --git a/DevLog/Data/Protocol/ThemeStore.swift b/Application/DevLogData/Sources/Protocol/ThemeStore.swift similarity index 100% rename from DevLog/Data/Protocol/ThemeStore.swift rename to Application/DevLogData/Sources/Protocol/ThemeStore.swift diff --git a/DevLog/Data/Protocol/TodoCategoryService.swift b/Application/DevLogData/Sources/Protocol/TodoCategoryService.swift similarity index 100% rename from DevLog/Data/Protocol/TodoCategoryService.swift rename to Application/DevLogData/Sources/Protocol/TodoCategoryService.swift diff --git a/DevLog/Data/Protocol/TodoService.swift b/Application/DevLogData/Sources/Protocol/TodoService.swift similarity index 100% rename from DevLog/Data/Protocol/TodoService.swift rename to Application/DevLogData/Sources/Protocol/TodoService.swift diff --git a/DevLog/Data/Protocol/UserDefaultsStore.swift b/Application/DevLogData/Sources/Protocol/UserDefaultsStore.swift similarity index 100% rename from DevLog/Data/Protocol/UserDefaultsStore.swift rename to Application/DevLogData/Sources/Protocol/UserDefaultsStore.swift diff --git a/DevLog/Data/Protocol/UserService.swift b/Application/DevLogData/Sources/Protocol/UserService.swift similarity index 100% rename from DevLog/Data/Protocol/UserService.swift rename to Application/DevLogData/Sources/Protocol/UserService.swift diff --git a/DevLog/Data/Protocol/WebPageImageStore.swift b/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift similarity index 100% rename from DevLog/Data/Protocol/WebPageImageStore.swift rename to Application/DevLogData/Sources/Protocol/WebPageImageStore.swift diff --git a/DevLog/Data/Protocol/WebPageMetadataService.swift b/Application/DevLogData/Sources/Protocol/WebPageMetadataService.swift similarity index 100% rename from DevLog/Data/Protocol/WebPageMetadataService.swift rename to Application/DevLogData/Sources/Protocol/WebPageMetadataService.swift diff --git a/DevLog/Data/Protocol/WebPageService.swift b/Application/DevLogData/Sources/Protocol/WebPageService.swift similarity index 100% rename from DevLog/Data/Protocol/WebPageService.swift rename to Application/DevLogData/Sources/Protocol/WebPageService.swift diff --git a/DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift b/Application/DevLogData/Sources/Protocol/WidgetSnapshotPreferenceStore.swift similarity index 100% rename from DevLog/Data/Protocol/WidgetSnapshotPreferenceStore.swift rename to Application/DevLogData/Sources/Protocol/WidgetSnapshotPreferenceStore.swift diff --git a/DevLog/Data/Protocol/WidgetSnapshotUpdater.swift b/Application/DevLogData/Sources/Protocol/WidgetSnapshotUpdater.swift similarity index 100% rename from DevLog/Data/Protocol/WidgetSnapshotUpdater.swift rename to Application/DevLogData/Sources/Protocol/WidgetSnapshotUpdater.swift diff --git a/DevLog/Data/Repository/AuthDataRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/AuthDataRepositoryImpl.swift similarity index 100% rename from DevLog/Data/Repository/AuthDataRepositoryImpl.swift rename to Application/DevLogData/Sources/Repository/AuthDataRepositoryImpl.swift diff --git a/DevLog/Data/Repository/AuthSessionRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/AuthSessionRepositoryImpl.swift similarity index 100% rename from DevLog/Data/Repository/AuthSessionRepositoryImpl.swift rename to Application/DevLogData/Sources/Repository/AuthSessionRepositoryImpl.swift diff --git a/DevLog/Data/Repository/AuthenticationRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/AuthenticationRepositoryImpl.swift similarity index 100% rename from DevLog/Data/Repository/AuthenticationRepositoryImpl.swift rename to Application/DevLogData/Sources/Repository/AuthenticationRepositoryImpl.swift diff --git a/DevLog/Data/Repository/NetworkConnectivityRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/NetworkConnectivityRepositoryImpl.swift similarity index 100% rename from DevLog/Data/Repository/NetworkConnectivityRepositoryImpl.swift rename to Application/DevLogData/Sources/Repository/NetworkConnectivityRepositoryImpl.swift diff --git a/DevLog/Data/Repository/PushNotificationRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/PushNotificationRepositoryImpl.swift similarity index 100% rename from DevLog/Data/Repository/PushNotificationRepositoryImpl.swift rename to Application/DevLogData/Sources/Repository/PushNotificationRepositoryImpl.swift diff --git a/DevLog/Data/Repository/TodoCategoryRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/TodoCategoryRepositoryImpl.swift similarity index 100% rename from DevLog/Data/Repository/TodoCategoryRepositoryImpl.swift rename to Application/DevLogData/Sources/Repository/TodoCategoryRepositoryImpl.swift diff --git a/DevLog/Data/Repository/TodoRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/TodoRepositoryImpl.swift similarity index 100% rename from DevLog/Data/Repository/TodoRepositoryImpl.swift rename to Application/DevLogData/Sources/Repository/TodoRepositoryImpl.swift diff --git a/DevLog/Data/Repository/UserDataRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/UserDataRepositoryImpl.swift similarity index 100% rename from DevLog/Data/Repository/UserDataRepositoryImpl.swift rename to Application/DevLogData/Sources/Repository/UserDataRepositoryImpl.swift diff --git a/DevLog/Data/Repository/UserPreferencesRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/UserPreferencesRepositoryImpl.swift similarity index 100% rename from DevLog/Data/Repository/UserPreferencesRepositoryImpl.swift rename to Application/DevLogData/Sources/Repository/UserPreferencesRepositoryImpl.swift diff --git a/DevLog/Data/Repository/WebPageImageRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/WebPageImageRepositoryImpl.swift similarity index 100% rename from DevLog/Data/Repository/WebPageImageRepositoryImpl.swift rename to Application/DevLogData/Sources/Repository/WebPageImageRepositoryImpl.swift diff --git a/DevLog/Data/Repository/WebPageRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/WebPageRepositoryImpl.swift similarity index 100% rename from DevLog/Data/Repository/WebPageRepositoryImpl.swift rename to Application/DevLogData/Sources/Repository/WebPageRepositoryImpl.swift diff --git a/Projects/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj b/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj similarity index 84% rename from Projects/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj rename to Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj index 2087545c..03758da8 100644 --- a/Projects/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj +++ b/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj @@ -127,124 +127,124 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 01351069EBDFEFE9BEB4E26F /* ObserveSystemThemeUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveSystemThemeUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift; sourceTree = ""; }; - 0135F093DDF8F5DB4D320010 /* FetchTodoCategoryPreferencesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoCategoryPreferencesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift; sourceTree = ""; }; - 015FCD58DFE25D15A98767DD /* UpsertStatusMessageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertStatusMessageUseCase.swift; path = ../../DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift; sourceTree = ""; }; - 01DC43DAB9ACFA7C5A237F91 /* ClearWebPageImageDirectoryUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ClearWebPageImageDirectoryUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift; sourceTree = ""; }; - 03910A114D3321A63F692113 /* UndoDeletePushNotificationUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeletePushNotificationUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift; sourceTree = ""; }; - 05D14CAC89969BC5FB42B8D1 /* String.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = String.swift; path = ../../DevLog/Domain/Extension/String.swift; sourceTree = ""; }; - 06CE556F368F3FFB8F45D19B /* TodoCategoryPreference.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryPreference.swift; path = ../../DevLog/Domain/Entity/TodoCategoryPreference.swift; sourceTree = ""; }; - 07865C391ACEC35BD969A730 /* Todo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Todo.swift; path = ../../DevLog/Domain/Entity/Todo.swift; sourceTree = ""; }; - 087434742ED1FAA4546120B9 /* TodayDisplayOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayDisplayOptions.swift; path = ../../DevLog/Domain/Entity/TodayDisplayOptions.swift; sourceTree = ""; }; - 090C424EC663DC420E210405 /* NetworkConnectivityRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkConnectivityRepository.swift; path = ../../DevLog/Domain/Protocol/NetworkConnectivityRepository.swift; sourceTree = ""; }; - 0DD73A331A61A27A1A9BDFD0 /* FetchTodoByIDUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoByIDUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCaseImpl.swift; sourceTree = ""; }; - 0E6726827D53639E678488EE /* UndoDeleteTodoUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteTodoUseCase.swift; path = ../../DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCase.swift; sourceTree = ""; }; - 0F9677D48BA38AB69BE26D3A /* UpdateTodayDisplayOptionsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodayDisplayOptionsUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCase.swift; sourceTree = ""; }; - 11B14A760F12F75DD433E6E3 /* FetchTodoCategoryPreferencesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoCategoryPreferencesUseCase.swift; path = ../../DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCase.swift; sourceTree = ""; }; - 127C20813795B0B77A99F955 /* UpsertTodoUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertTodoUseCase.swift; path = ../../DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCase.swift; sourceTree = ""; }; - 1290A4B9F0ED6ABFABC5749D /* WebPage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPage.swift; path = ../../DevLog/Domain/Entity/WebPage.swift; sourceTree = ""; }; - 12F96A31F7367B2BFA3F8226 /* ObserveNetworkConnectivityUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveNetworkConnectivityUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift; sourceTree = ""; }; - 1725CFBBBCE02A2C5412C24D /* AuthDataRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataRepository.swift; path = ../../DevLog/Domain/Protocol/AuthDataRepository.swift; sourceTree = ""; }; - 1A4B3291A774346C97DDCA02 /* SignOutUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignOutUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCase.swift; sourceTree = ""; }; - 1ADECD2AC2EA5C3AF0567E21 /* UndoDeletePushNotificationUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeletePushNotificationUseCase.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCase.swift; sourceTree = ""; }; - 1B484D427B8653E772AB4156 /* UpsertTodoUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertTodoUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCaseImpl.swift; sourceTree = ""; }; - 1CF1E8DC279C84BE986E2296 /* FetchPushNotificationSettingsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationSettingsUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCaseImpl.swift; sourceTree = ""; }; - 1DBC9D7FFF5FC58F5EE67A4E /* PushNotificationPage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationPage.swift; path = ../../DevLog/Domain/Entity/PushNotificationPage.swift; sourceTree = ""; }; - 1DE514CE1D81A91A79B3F483 /* PushNotificationRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationRepository.swift; path = ../../DevLog/Domain/Protocol/PushNotificationRepository.swift; sourceTree = ""; }; - 2B41302357AD2793E8F75E88 /* SignInUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignInUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/SignIn/SignInUseCaseImpl.swift; sourceTree = ""; }; - 2E2D323E5EAF19D03C4BFAD0 /* ObserveNetworkConnectivityUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveNetworkConnectivityUseCase.swift; path = ../../DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCase.swift; sourceTree = ""; }; - 323A45003F23C91F09B2583C /* AuthSessionRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthSessionRepository.swift; path = ../../DevLog/Domain/Protocol/AuthSessionRepository.swift; sourceTree = ""; }; - 328FC6A361021DBFC9C0FB3B /* UpsertStatusMessageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertStatusMessageUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCaseImpl.swift; sourceTree = ""; }; - 372106128F8BE30DDE0D41E7 /* SystemTodoCategory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SystemTodoCategory.swift; path = ../../DevLog/Domain/Entity/SystemTodoCategory.swift; sourceTree = ""; }; - 3D653CA5AFBA637461B27A7F /* FetchPushNotificationQueryUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationQueryUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift; sourceTree = ""; }; + 01351069EBDFEFE9BEB4E26F /* ObserveSystemThemeUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveSystemThemeUseCaseImpl.swift; path = Sources/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift; sourceTree = ""; }; + 0135F093DDF8F5DB4D320010 /* FetchTodoCategoryPreferencesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoCategoryPreferencesUseCaseImpl.swift; path = Sources/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift; sourceTree = ""; }; + 015FCD58DFE25D15A98767DD /* UpsertStatusMessageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertStatusMessageUseCase.swift; path = Sources/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift; sourceTree = ""; }; + 01DC43DAB9ACFA7C5A237F91 /* ClearWebPageImageDirectoryUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ClearWebPageImageDirectoryUseCaseImpl.swift; path = Sources/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift; sourceTree = ""; }; + 03910A114D3321A63F692113 /* UndoDeletePushNotificationUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeletePushNotificationUseCaseImpl.swift; path = Sources/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift; sourceTree = ""; }; + 05D14CAC89969BC5FB42B8D1 /* String.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = String.swift; path = Sources/Extension/String.swift; sourceTree = ""; }; + 06CE556F368F3FFB8F45D19B /* TodoCategoryPreference.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryPreference.swift; path = Sources/Entity/TodoCategoryPreference.swift; sourceTree = ""; }; + 07865C391ACEC35BD969A730 /* Todo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Todo.swift; path = Sources/Entity/Todo.swift; sourceTree = ""; }; + 087434742ED1FAA4546120B9 /* TodayDisplayOptions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayDisplayOptions.swift; path = Sources/Entity/TodayDisplayOptions.swift; sourceTree = ""; }; + 090C424EC663DC420E210405 /* NetworkConnectivityRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkConnectivityRepository.swift; path = Sources/Protocol/NetworkConnectivityRepository.swift; sourceTree = ""; }; + 0DD73A331A61A27A1A9BDFD0 /* FetchTodoByIDUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoByIDUseCaseImpl.swift; path = Sources/UseCase/Todo/Fetch/FetchTodoByIDUseCaseImpl.swift; sourceTree = ""; }; + 0E6726827D53639E678488EE /* UndoDeleteTodoUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteTodoUseCase.swift; path = Sources/UseCase/Todo/Delete/UndoDeleteTodoUseCase.swift; sourceTree = ""; }; + 0F9677D48BA38AB69BE26D3A /* UpdateTodayDisplayOptionsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodayDisplayOptionsUseCase.swift; path = Sources/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCase.swift; sourceTree = ""; }; + 11B14A760F12F75DD433E6E3 /* FetchTodoCategoryPreferencesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoCategoryPreferencesUseCase.swift; path = Sources/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCase.swift; sourceTree = ""; }; + 127C20813795B0B77A99F955 /* UpsertTodoUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertTodoUseCase.swift; path = Sources/UseCase/Todo/Upsert/UpsertTodoUseCase.swift; sourceTree = ""; }; + 1290A4B9F0ED6ABFABC5749D /* WebPage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPage.swift; path = Sources/Entity/WebPage.swift; sourceTree = ""; }; + 12F96A31F7367B2BFA3F8226 /* ObserveNetworkConnectivityUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveNetworkConnectivityUseCaseImpl.swift; path = Sources/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift; sourceTree = ""; }; + 1725CFBBBCE02A2C5412C24D /* AuthDataRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataRepository.swift; path = Sources/Protocol/AuthDataRepository.swift; sourceTree = ""; }; + 1A4B3291A774346C97DDCA02 /* SignOutUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignOutUseCase.swift; path = Sources/UseCase/Auth/SignOut/SignOutUseCase.swift; sourceTree = ""; }; + 1ADECD2AC2EA5C3AF0567E21 /* UndoDeletePushNotificationUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeletePushNotificationUseCase.swift; path = Sources/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCase.swift; sourceTree = ""; }; + 1B484D427B8653E772AB4156 /* UpsertTodoUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertTodoUseCaseImpl.swift; path = Sources/UseCase/Todo/Upsert/UpsertTodoUseCaseImpl.swift; sourceTree = ""; }; + 1CF1E8DC279C84BE986E2296 /* FetchPushNotificationSettingsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationSettingsUseCaseImpl.swift; path = Sources/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCaseImpl.swift; sourceTree = ""; }; + 1DBC9D7FFF5FC58F5EE67A4E /* PushNotificationPage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationPage.swift; path = Sources/Entity/PushNotificationPage.swift; sourceTree = ""; }; + 1DE514CE1D81A91A79B3F483 /* PushNotificationRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationRepository.swift; path = Sources/Protocol/PushNotificationRepository.swift; sourceTree = ""; }; + 2B41302357AD2793E8F75E88 /* SignInUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignInUseCaseImpl.swift; path = Sources/UseCase/Auth/SignIn/SignInUseCaseImpl.swift; sourceTree = ""; }; + 2E2D323E5EAF19D03C4BFAD0 /* ObserveNetworkConnectivityUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveNetworkConnectivityUseCase.swift; path = Sources/UseCase/Connectivity/ObserveNetworkConnectivityUseCase.swift; sourceTree = ""; }; + 323A45003F23C91F09B2583C /* AuthSessionRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthSessionRepository.swift; path = Sources/Protocol/AuthSessionRepository.swift; sourceTree = ""; }; + 328FC6A361021DBFC9C0FB3B /* UpsertStatusMessageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertStatusMessageUseCaseImpl.swift; path = Sources/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCaseImpl.swift; sourceTree = ""; }; + 372106128F8BE30DDE0D41E7 /* SystemTodoCategory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SystemTodoCategory.swift; path = Sources/Entity/SystemTodoCategory.swift; sourceTree = ""; }; + 3D653CA5AFBA637461B27A7F /* FetchPushNotificationQueryUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationQueryUseCase.swift; path = Sources/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift; sourceTree = ""; }; 3F08F6B94839E9021FCFC466 /* DevLogDomain.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDomain.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 41B41F22B16C359A70312D77 /* ObserveAuthSessionUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveAuthSessionUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift; sourceTree = ""; }; - 42C7EE23A3F45CFA5C2F7ECE /* TodoCursor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCursor.swift; path = ../../DevLog/Domain/Entity/TodoCursor.swift; sourceTree = ""; }; - 44D430F73E1C4A9F5EC65263 /* UserDataRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDataRepository.swift; path = ../../DevLog/Domain/Protocol/UserDataRepository.swift; sourceTree = ""; }; - 45439A52C6F35B7655776A07 /* WebPageImageRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageRepository.swift; path = ../../DevLog/Domain/Protocol/WebPageImageRepository.swift; sourceTree = ""; }; - 4721FC0DF30EE97CCFD8AEB2 /* UpdateRecentSearchQueriesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateRecentSearchQueriesUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCase.swift; sourceTree = ""; }; - 49115FDA37F30A80D0756093 /* UpdateHeatmapActivityTypesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateHeatmapActivityTypesUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCase.swift; sourceTree = ""; }; - 4B6A80CB4CD95B3FE2463F52 /* FetchPushNotificationsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationsUseCase.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCase.swift; sourceTree = ""; }; - 4C1EF4E237E1F3BEDAB0B730 /* DeletePushNotificationUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeletePushNotificationUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCaseImpl.swift; sourceTree = ""; }; - 4C2EA32A4DF93B6F77789409 /* UnlinkAuthProviderUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UnlinkAuthProviderUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCase.swift; sourceTree = ""; }; - 4F7C774056C083FD3BDFEE92 /* DeleteAuthUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteAuthUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCaseImpl.swift; sourceTree = ""; }; - 517E1CF92FE5C7461C24F2F2 /* SignInUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignInUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/SignIn/SignInUseCase.swift; sourceTree = ""; }; - 522510AA4DD57769034B3A49 /* UndoDeleteTodoUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteTodoUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCaseImpl.swift; sourceTree = ""; }; - 56F3A28A8CE602EF8A5A12F7 /* FetchHeatmapActivityTypesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchHeatmapActivityTypesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCaseImpl.swift; sourceTree = ""; }; - 5E821078E0E30A646FFFC1F1 /* UpdateSystemThemeUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateSystemThemeUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCase.swift; sourceTree = ""; }; - 5EB6D6DDEED0E961F68CB3E3 /* UpdatePushSettingsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushSettingsUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCaseImpl.swift; sourceTree = ""; }; - 6357C21C07A2374530C5302B /* FetchAuthProvidersUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchAuthProvidersUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCaseImpl.swift; sourceTree = ""; }; - 64F3941915699B8D1DC2631A /* AuthenticationRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationRepository.swift; path = ../../DevLog/Domain/Protocol/AuthenticationRepository.swift; sourceTree = ""; }; - 658249EA021AFF8428B32FD0 /* TogglePushNotificationReadUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TogglePushNotificationReadUseCase.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCase.swift; sourceTree = ""; }; - 65FE1967BCA4B1FF8D517617 /* FetchPushNotificationSettingsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationSettingsUseCase.swift; path = ../../DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCase.swift; sourceTree = ""; }; - 68D7B585C369EADAEBE8A470 /* ObserveUnreadPushCountUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveUnreadPushCountUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCaseImpl.swift; sourceTree = ""; }; - 6C1F27652023B70495066F9E /* FetchUserDataUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchUserDataUseCase.swift; path = ../../DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCase.swift; sourceTree = ""; }; - 6D13DBD497C26307CEDEF65E /* UpdateTodayDisplayOptionsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodayDisplayOptionsUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCaseImpl.swift; sourceTree = ""; }; - 6D457ED2B8E1CA7C2E401DBB /* FetchTodayDisplayOptionsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodayDisplayOptionsUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCase.swift; sourceTree = ""; }; - 7255B9F0D6EA9A0D9C81F512 /* ObserveUnreadPushCountUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveUnreadPushCountUseCase.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCase.swift; sourceTree = ""; }; - 741F53346E83DDAB8912B25C /* PushNotificationCursor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationCursor.swift; path = ../../DevLog/Domain/Entity/PushNotificationCursor.swift; sourceTree = ""; }; - 746A826E7B24EF22A287ABC5 /* FetchTodayDisplayOptionsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodayDisplayOptionsUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCaseImpl.swift; sourceTree = ""; }; - 755AD7D03795F56790F1B378 /* DeleteAuthUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteAuthUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCase.swift; sourceTree = ""; }; - 759AFAA7929D8227152D0C09 /* UpdateTodoCategoryPreferencesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodoCategoryPreferencesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCaseImpl.swift; sourceTree = ""; }; - 7697A8469158261B1299B121 /* TodoCategory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategory.swift; path = ../../DevLog/Domain/Entity/TodoCategory.swift; sourceTree = ""; }; - 76BA71B47A419D205968A49D /* ClearWebPageImageDirectoryUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ClearWebPageImageDirectoryUseCase.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCase.swift; sourceTree = ""; }; - 7CCD260120C0B0358DA09105 /* TodoRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoRepository.swift; path = ../../DevLog/Domain/Protocol/TodoRepository.swift; sourceTree = ""; }; - 7CE5DDD90F87E43F27311D31 /* UIFont.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIFont.swift; path = ../../DevLog/Domain/Extension/UIFont.swift; sourceTree = ""; }; - 7EBE5CCA6FD562D1FD4E3DC0 /* UnlinkAuthProviderUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UnlinkAuthProviderUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCaseImpl.swift; sourceTree = ""; }; - 83B40B6FE8272B804E1C7712 /* Array.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Array.swift; path = ../../DevLog/Domain/Extension/Array.swift; sourceTree = ""; }; - 8ADDC57ACEBB9CEB3FCD3F80 /* ObserveSystemThemeUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveSystemThemeUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCase.swift; sourceTree = ""; }; - 8B7A3642B89C1CA241B6AADF /* SignOutUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignOutUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCaseImpl.swift; sourceTree = ""; }; - 8B831790BFE85097FB9034BD /* ObserveAuthSessionUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveAuthSessionUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCaseImpl.swift; sourceTree = ""; }; - 8FD502CE4EB95263D32AF23E /* FetchTodosUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodosUseCase.swift; path = ../../DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCase.swift; sourceTree = ""; }; - 9161CF59F34F6666BDD773A8 /* FetchRecentSearchQueriesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchRecentSearchQueriesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCaseImpl.swift; sourceTree = ""; }; - 931E348B8445B611C6486B0D /* UndoDeleteWebPageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteWebPageUseCase.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift; sourceTree = ""; }; - 9594B66FCEF77D951B887634 /* DeleteWebPageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteWebPageUseCase.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift; sourceTree = ""; }; - 975B88E82CD480E408410A60 /* FetchAuthProvidersUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchAuthProvidersUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift; sourceTree = ""; }; - 9B2B36142EDE421CE4CAF82E /* UpdateRecentSearchQueriesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateRecentSearchQueriesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift; sourceTree = ""; }; - A0FB230E9723243D9C16E1C3 /* UpdatePushSettingsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushSettingsUseCase.swift; path = ../../DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift; sourceTree = ""; }; - A10FD608ACEAFA303C7743BA /* DeletePushNotificationUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeletePushNotificationUseCase.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift; sourceTree = ""; }; - A22B34E1AF11D76CE7171CE7 /* LinkAuthProviderUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinkAuthProviderUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCaseImpl.swift; sourceTree = ""; }; - A2632BB4BB4A6F4FA74B2CC6 /* UpdatePushNotificationQueryUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushNotificationQueryUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCase.swift; sourceTree = ""; }; - A275ADD90916E0CD19E658A1 /* FetchPushNotificationsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationsUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCaseImpl.swift; sourceTree = ""; }; - A32E327BE5F24582BDE808DE /* UserProfile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserProfile.swift; path = ../../DevLog/Domain/Entity/UserProfile.swift; sourceTree = ""; }; - A403DFBCDB028B255F8B9EC5 /* FetchReferenceItemsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchReferenceItemsUseCase.swift; path = ../../DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCase.swift; sourceTree = ""; }; - A5CEE90FC2BA6B2E4F9B5B2E /* UpdatePushNotificationQueryUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushNotificationQueryUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCaseImpl.swift; sourceTree = ""; }; - A86771BA0A9014E81E93B8C0 /* PushNotificationSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettings.swift; path = ../../DevLog/Domain/Entity/PushNotificationSettings.swift; sourceTree = ""; }; - AB02651AFF3D9DE27351DA7B /* DeleteTodoUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteTodoUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCaseImpl.swift; sourceTree = ""; }; - AD49CB792C5CCA040D99F1CD /* FetchTodoByIDUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoByIDUseCase.swift; path = ../../DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCase.swift; sourceTree = ""; }; - B306337D1C6C39407105B783 /* UpdateSystemThemeUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateSystemThemeUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCaseImpl.swift; sourceTree = ""; }; - B3E4B6613C6FA82D6772ED06 /* FetchRecentSearchQueriesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchRecentSearchQueriesUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCase.swift; sourceTree = ""; }; - B498CD874F5AE906BB27898F /* FetchPushNotificationQueryUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationQueryUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCaseImpl.swift; sourceTree = ""; }; - B663E911F22760A9B0C71DA6 /* FetchWebPageImageDirSizeUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPageImageDirSizeUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCaseImpl.swift; sourceTree = ""; }; - B843042D7E2BCD42C7DD3FE4 /* TodoCategoryRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryRepository.swift; path = ../../DevLog/Domain/Protocol/TodoCategoryRepository.swift; sourceTree = ""; }; - C18AFE080D0761AFF8D82FC5 /* FetchWebPagesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPagesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCaseImpl.swift; sourceTree = ""; }; - C1914B9FD743F5AC5E82A431 /* TodoReference.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReference.swift; path = ../../DevLog/Domain/Entity/TodoReference.swift; sourceTree = ""; }; - C46B06C77D7DB705ECED40A6 /* PushNotificationQuery.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationQuery.swift; path = ../../DevLog/Domain/Entity/PushNotificationQuery.swift; sourceTree = ""; }; - C482DCAC8527FFE9767388C8 /* PushNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotification.swift; path = ../../DevLog/Domain/Entity/PushNotification.swift; sourceTree = ""; }; - C6606DC27F4AC1B348D9A499 /* UserPreferencesRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserPreferencesRepository.swift; path = ../../DevLog/Domain/Protocol/UserPreferencesRepository.swift; sourceTree = ""; }; - C766DC43AFC8A07B1E009FF1 /* LinkAuthProviderUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinkAuthProviderUseCase.swift; path = ../../DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCase.swift; sourceTree = ""; }; + 41B41F22B16C359A70312D77 /* ObserveAuthSessionUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveAuthSessionUseCase.swift; path = Sources/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift; sourceTree = ""; }; + 42C7EE23A3F45CFA5C2F7ECE /* TodoCursor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCursor.swift; path = Sources/Entity/TodoCursor.swift; sourceTree = ""; }; + 44D430F73E1C4A9F5EC65263 /* UserDataRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDataRepository.swift; path = Sources/Protocol/UserDataRepository.swift; sourceTree = ""; }; + 45439A52C6F35B7655776A07 /* WebPageImageRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageRepository.swift; path = Sources/Protocol/WebPageImageRepository.swift; sourceTree = ""; }; + 4721FC0DF30EE97CCFD8AEB2 /* UpdateRecentSearchQueriesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateRecentSearchQueriesUseCase.swift; path = Sources/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCase.swift; sourceTree = ""; }; + 49115FDA37F30A80D0756093 /* UpdateHeatmapActivityTypesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateHeatmapActivityTypesUseCase.swift; path = Sources/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCase.swift; sourceTree = ""; }; + 4B6A80CB4CD95B3FE2463F52 /* FetchPushNotificationsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationsUseCase.swift; path = Sources/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCase.swift; sourceTree = ""; }; + 4C1EF4E237E1F3BEDAB0B730 /* DeletePushNotificationUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeletePushNotificationUseCaseImpl.swift; path = Sources/UseCase/PushNotification/Delete/DeletePushNotificationUseCaseImpl.swift; sourceTree = ""; }; + 4C2EA32A4DF93B6F77789409 /* UnlinkAuthProviderUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UnlinkAuthProviderUseCase.swift; path = Sources/UseCase/Auth/Provider/UnlinkAuthProviderUseCase.swift; sourceTree = ""; }; + 4F7C774056C083FD3BDFEE92 /* DeleteAuthUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteAuthUseCaseImpl.swift; path = Sources/UseCase/Auth/Delete/DeleteAuthUseCaseImpl.swift; sourceTree = ""; }; + 517E1CF92FE5C7461C24F2F2 /* SignInUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignInUseCase.swift; path = Sources/UseCase/Auth/SignIn/SignInUseCase.swift; sourceTree = ""; }; + 522510AA4DD57769034B3A49 /* UndoDeleteTodoUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteTodoUseCaseImpl.swift; path = Sources/UseCase/Todo/Delete/UndoDeleteTodoUseCaseImpl.swift; sourceTree = ""; }; + 56F3A28A8CE602EF8A5A12F7 /* FetchHeatmapActivityTypesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchHeatmapActivityTypesUseCaseImpl.swift; path = Sources/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCaseImpl.swift; sourceTree = ""; }; + 5E821078E0E30A646FFFC1F1 /* UpdateSystemThemeUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateSystemThemeUseCase.swift; path = Sources/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCase.swift; sourceTree = ""; }; + 5EB6D6DDEED0E961F68CB3E3 /* UpdatePushSettingsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushSettingsUseCaseImpl.swift; path = Sources/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCaseImpl.swift; sourceTree = ""; }; + 6357C21C07A2374530C5302B /* FetchAuthProvidersUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchAuthProvidersUseCaseImpl.swift; path = Sources/UseCase/Auth/Provider/FetchAuthProvidersUseCaseImpl.swift; sourceTree = ""; }; + 64F3941915699B8D1DC2631A /* AuthenticationRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationRepository.swift; path = Sources/Protocol/AuthenticationRepository.swift; sourceTree = ""; }; + 658249EA021AFF8428B32FD0 /* TogglePushNotificationReadUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TogglePushNotificationReadUseCase.swift; path = Sources/UseCase/PushNotification/Read/TogglePushNotificationReadUseCase.swift; sourceTree = ""; }; + 65FE1967BCA4B1FF8D517617 /* FetchPushNotificationSettingsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationSettingsUseCase.swift; path = Sources/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCase.swift; sourceTree = ""; }; + 68D7B585C369EADAEBE8A470 /* ObserveUnreadPushCountUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveUnreadPushCountUseCaseImpl.swift; path = Sources/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCaseImpl.swift; sourceTree = ""; }; + 6C1F27652023B70495066F9E /* FetchUserDataUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchUserDataUseCase.swift; path = Sources/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCase.swift; sourceTree = ""; }; + 6D13DBD497C26307CEDEF65E /* UpdateTodayDisplayOptionsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodayDisplayOptionsUseCaseImpl.swift; path = Sources/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCaseImpl.swift; sourceTree = ""; }; + 6D457ED2B8E1CA7C2E401DBB /* FetchTodayDisplayOptionsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodayDisplayOptionsUseCase.swift; path = Sources/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCase.swift; sourceTree = ""; }; + 7255B9F0D6EA9A0D9C81F512 /* ObserveUnreadPushCountUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveUnreadPushCountUseCase.swift; path = Sources/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCase.swift; sourceTree = ""; }; + 741F53346E83DDAB8912B25C /* PushNotificationCursor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationCursor.swift; path = Sources/Entity/PushNotificationCursor.swift; sourceTree = ""; }; + 746A826E7B24EF22A287ABC5 /* FetchTodayDisplayOptionsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodayDisplayOptionsUseCaseImpl.swift; path = Sources/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCaseImpl.swift; sourceTree = ""; }; + 755AD7D03795F56790F1B378 /* DeleteAuthUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteAuthUseCase.swift; path = Sources/UseCase/Auth/Delete/DeleteAuthUseCase.swift; sourceTree = ""; }; + 759AFAA7929D8227152D0C09 /* UpdateTodoCategoryPreferencesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodoCategoryPreferencesUseCaseImpl.swift; path = Sources/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCaseImpl.swift; sourceTree = ""; }; + 7697A8469158261B1299B121 /* TodoCategory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategory.swift; path = Sources/Entity/TodoCategory.swift; sourceTree = ""; }; + 76BA71B47A419D205968A49D /* ClearWebPageImageDirectoryUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ClearWebPageImageDirectoryUseCase.swift; path = Sources/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCase.swift; sourceTree = ""; }; + 7CCD260120C0B0358DA09105 /* TodoRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoRepository.swift; path = Sources/Protocol/TodoRepository.swift; sourceTree = ""; }; + 7CE5DDD90F87E43F27311D31 /* UIFont.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIFont.swift; path = Sources/Extension/UIFont.swift; sourceTree = ""; }; + 7EBE5CCA6FD562D1FD4E3DC0 /* UnlinkAuthProviderUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UnlinkAuthProviderUseCaseImpl.swift; path = Sources/UseCase/Auth/Provider/UnlinkAuthProviderUseCaseImpl.swift; sourceTree = ""; }; + 83B40B6FE8272B804E1C7712 /* Array.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Array.swift; path = Sources/Extension/Array.swift; sourceTree = ""; }; + 8ADDC57ACEBB9CEB3FCD3F80 /* ObserveSystemThemeUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveSystemThemeUseCase.swift; path = Sources/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCase.swift; sourceTree = ""; }; + 8B7A3642B89C1CA241B6AADF /* SignOutUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SignOutUseCaseImpl.swift; path = Sources/UseCase/Auth/SignOut/SignOutUseCaseImpl.swift; sourceTree = ""; }; + 8B831790BFE85097FB9034BD /* ObserveAuthSessionUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveAuthSessionUseCaseImpl.swift; path = Sources/UseCase/Auth/Session/ObserveAuthSessionUseCaseImpl.swift; sourceTree = ""; }; + 8FD502CE4EB95263D32AF23E /* FetchTodosUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodosUseCase.swift; path = Sources/UseCase/Todo/Fetch/FetchTodosUseCase.swift; sourceTree = ""; }; + 9161CF59F34F6666BDD773A8 /* FetchRecentSearchQueriesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchRecentSearchQueriesUseCaseImpl.swift; path = Sources/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCaseImpl.swift; sourceTree = ""; }; + 931E348B8445B611C6486B0D /* UndoDeleteWebPageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteWebPageUseCase.swift; path = Sources/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift; sourceTree = ""; }; + 9594B66FCEF77D951B887634 /* DeleteWebPageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteWebPageUseCase.swift; path = Sources/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift; sourceTree = ""; }; + 975B88E82CD480E408410A60 /* FetchAuthProvidersUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchAuthProvidersUseCase.swift; path = Sources/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift; sourceTree = ""; }; + 9B2B36142EDE421CE4CAF82E /* UpdateRecentSearchQueriesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateRecentSearchQueriesUseCaseImpl.swift; path = Sources/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift; sourceTree = ""; }; + A0FB230E9723243D9C16E1C3 /* UpdatePushSettingsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushSettingsUseCase.swift; path = Sources/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift; sourceTree = ""; }; + A10FD608ACEAFA303C7743BA /* DeletePushNotificationUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeletePushNotificationUseCase.swift; path = Sources/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift; sourceTree = ""; }; + A22B34E1AF11D76CE7171CE7 /* LinkAuthProviderUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinkAuthProviderUseCaseImpl.swift; path = Sources/UseCase/Auth/Provider/LinkAuthProviderUseCaseImpl.swift; sourceTree = ""; }; + A2632BB4BB4A6F4FA74B2CC6 /* UpdatePushNotificationQueryUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushNotificationQueryUseCase.swift; path = Sources/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCase.swift; sourceTree = ""; }; + A275ADD90916E0CD19E658A1 /* FetchPushNotificationsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationsUseCaseImpl.swift; path = Sources/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCaseImpl.swift; sourceTree = ""; }; + A32E327BE5F24582BDE808DE /* UserProfile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserProfile.swift; path = Sources/Entity/UserProfile.swift; sourceTree = ""; }; + A403DFBCDB028B255F8B9EC5 /* FetchReferenceItemsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchReferenceItemsUseCase.swift; path = Sources/UseCase/Todo/Fetch/FetchReferenceItemsUseCase.swift; sourceTree = ""; }; + A5CEE90FC2BA6B2E4F9B5B2E /* UpdatePushNotificationQueryUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushNotificationQueryUseCaseImpl.swift; path = Sources/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCaseImpl.swift; sourceTree = ""; }; + A86771BA0A9014E81E93B8C0 /* PushNotificationSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettings.swift; path = Sources/Entity/PushNotificationSettings.swift; sourceTree = ""; }; + AB02651AFF3D9DE27351DA7B /* DeleteTodoUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteTodoUseCaseImpl.swift; path = Sources/UseCase/Todo/Delete/DeleteTodoUseCaseImpl.swift; sourceTree = ""; }; + AD49CB792C5CCA040D99F1CD /* FetchTodoByIDUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoByIDUseCase.swift; path = Sources/UseCase/Todo/Fetch/FetchTodoByIDUseCase.swift; sourceTree = ""; }; + B306337D1C6C39407105B783 /* UpdateSystemThemeUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateSystemThemeUseCaseImpl.swift; path = Sources/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCaseImpl.swift; sourceTree = ""; }; + B3E4B6613C6FA82D6772ED06 /* FetchRecentSearchQueriesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchRecentSearchQueriesUseCase.swift; path = Sources/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCase.swift; sourceTree = ""; }; + B498CD874F5AE906BB27898F /* FetchPushNotificationQueryUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationQueryUseCaseImpl.swift; path = Sources/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCaseImpl.swift; sourceTree = ""; }; + B663E911F22760A9B0C71DA6 /* FetchWebPageImageDirSizeUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPageImageDirSizeUseCaseImpl.swift; path = Sources/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCaseImpl.swift; sourceTree = ""; }; + B843042D7E2BCD42C7DD3FE4 /* TodoCategoryRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryRepository.swift; path = Sources/Protocol/TodoCategoryRepository.swift; sourceTree = ""; }; + C18AFE080D0761AFF8D82FC5 /* FetchWebPagesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPagesUseCaseImpl.swift; path = Sources/UseCase/WebPage/Fetch/FetchWebPagesUseCaseImpl.swift; sourceTree = ""; }; + C1914B9FD743F5AC5E82A431 /* TodoReference.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReference.swift; path = Sources/Entity/TodoReference.swift; sourceTree = ""; }; + C46B06C77D7DB705ECED40A6 /* PushNotificationQuery.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationQuery.swift; path = Sources/Entity/PushNotificationQuery.swift; sourceTree = ""; }; + C482DCAC8527FFE9767388C8 /* PushNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotification.swift; path = Sources/Entity/PushNotification.swift; sourceTree = ""; }; + C6606DC27F4AC1B348D9A499 /* UserPreferencesRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserPreferencesRepository.swift; path = Sources/Protocol/UserPreferencesRepository.swift; sourceTree = ""; }; + C766DC43AFC8A07B1E009FF1 /* LinkAuthProviderUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LinkAuthProviderUseCase.swift; path = Sources/UseCase/Auth/Provider/LinkAuthProviderUseCase.swift; sourceTree = ""; }; CCF9FBE3E5B1E3AF0A65F342 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - D01987DD2F38CF633D3C4162 /* FetchTodosUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodosUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCaseImpl.swift; sourceTree = ""; }; - D310014E8ACFC3A55D3B83B3 /* UndoDeleteWebPageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteWebPageUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCaseImpl.swift; sourceTree = ""; }; - D3C71ECDDDA08716A716D9B2 /* ActivityKind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ActivityKind.swift; path = ../../DevLog/Domain/Entity/ActivityKind.swift; sourceTree = ""; }; - D9956BD2EFBA1679FF20ED65 /* FetchWebPageImageDirSizeUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPageImageDirSizeUseCase.swift; path = ../../DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCase.swift; sourceTree = ""; }; - DA4EC8FBD39E0AEF21117F7C /* FetchReferenceItemsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchReferenceItemsUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCaseImpl.swift; sourceTree = ""; }; - DA4F782752735905BE93CD95 /* UpdateHeatmapActivityTypesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateHeatmapActivityTypesUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCaseImpl.swift; sourceTree = ""; }; - DB6B0536F975D3FE76D0B58F /* AddWebPageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AddWebPageUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCaseImpl.swift; sourceTree = ""; }; - DD0C8F7B1FB7DE7DD17C99BE /* DeleteTodoUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteTodoUseCase.swift; path = ../../DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCase.swift; sourceTree = ""; }; - DD23C531988288EA45977604 /* FetchUserDataUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchUserDataUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCaseImpl.swift; sourceTree = ""; }; - E22EE946DD06C2BDA66070D5 /* FetchHeatmapActivityTypesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchHeatmapActivityTypesUseCase.swift; path = ../../DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCase.swift; sourceTree = ""; }; - E4ED6069D8B0C24A2C3E295C /* UpdateTodoCategoryPreferencesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodoCategoryPreferencesUseCase.swift; path = ../../DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift; sourceTree = ""; }; - E8C9C99957DF94BCF349AEE8 /* TodoPage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoPage.swift; path = ../../DevLog/Domain/Entity/TodoPage.swift; sourceTree = ""; }; - EFCB23F0E622C1872DA543DB /* TogglePushNotificationReadUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TogglePushNotificationReadUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift; sourceTree = ""; }; - F0378EC4E10380BAE247185B /* FetchWebPagesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPagesUseCase.swift; path = ../../DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift; sourceTree = ""; }; - F276F5D3E9AD8963189E58AC /* DeleteWebPageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteWebPageUseCaseImpl.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift; sourceTree = ""; }; - F28AC36CBBB716A8B3C6FDDD /* WebPageRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageRepository.swift; path = ../../DevLog/Domain/Protocol/WebPageRepository.swift; sourceTree = ""; }; - F528B902B4AC945DE2357AF4 /* TodoQuery.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoQuery.swift; path = ../../DevLog/Domain/Entity/TodoQuery.swift; sourceTree = ""; }; - F5AFD6F6E1DDE50BC837955F /* UserTodoCategory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserTodoCategory.swift; path = ../../DevLog/Domain/Entity/UserTodoCategory.swift; sourceTree = ""; }; - F6452B0B4E524F90595D77FD /* SystemTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SystemTheme.swift; path = ../../DevLog/Domain/Entity/SystemTheme.swift; sourceTree = ""; }; - F9A9B5170723706520E75DC7 /* AuthProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthProvider.swift; path = ../../DevLog/Domain/Entity/AuthProvider.swift; sourceTree = ""; }; - F9F4C2B618DA0B796EC02CF4 /* AddWebPageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AddWebPageUseCase.swift; path = ../../DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCase.swift; sourceTree = ""; }; + D01987DD2F38CF633D3C4162 /* FetchTodosUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodosUseCaseImpl.swift; path = Sources/UseCase/Todo/Fetch/FetchTodosUseCaseImpl.swift; sourceTree = ""; }; + D310014E8ACFC3A55D3B83B3 /* UndoDeleteWebPageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteWebPageUseCaseImpl.swift; path = Sources/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCaseImpl.swift; sourceTree = ""; }; + D3C71ECDDDA08716A716D9B2 /* ActivityKind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ActivityKind.swift; path = Sources/Entity/ActivityKind.swift; sourceTree = ""; }; + D9956BD2EFBA1679FF20ED65 /* FetchWebPageImageDirSizeUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPageImageDirSizeUseCase.swift; path = Sources/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCase.swift; sourceTree = ""; }; + DA4EC8FBD39E0AEF21117F7C /* FetchReferenceItemsUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchReferenceItemsUseCaseImpl.swift; path = Sources/UseCase/Todo/Fetch/FetchReferenceItemsUseCaseImpl.swift; sourceTree = ""; }; + DA4F782752735905BE93CD95 /* UpdateHeatmapActivityTypesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateHeatmapActivityTypesUseCaseImpl.swift; path = Sources/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCaseImpl.swift; sourceTree = ""; }; + DB6B0536F975D3FE76D0B58F /* AddWebPageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AddWebPageUseCaseImpl.swift; path = Sources/UseCase/WebPage/Upsert/AddWebPageUseCaseImpl.swift; sourceTree = ""; }; + DD0C8F7B1FB7DE7DD17C99BE /* DeleteTodoUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteTodoUseCase.swift; path = Sources/UseCase/Todo/Delete/DeleteTodoUseCase.swift; sourceTree = ""; }; + DD23C531988288EA45977604 /* FetchUserDataUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchUserDataUseCaseImpl.swift; path = Sources/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCaseImpl.swift; sourceTree = ""; }; + E22EE946DD06C2BDA66070D5 /* FetchHeatmapActivityTypesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchHeatmapActivityTypesUseCase.swift; path = Sources/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCase.swift; sourceTree = ""; }; + E4ED6069D8B0C24A2C3E295C /* UpdateTodoCategoryPreferencesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodoCategoryPreferencesUseCase.swift; path = Sources/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift; sourceTree = ""; }; + E8C9C99957DF94BCF349AEE8 /* TodoPage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoPage.swift; path = Sources/Entity/TodoPage.swift; sourceTree = ""; }; + EFCB23F0E622C1872DA543DB /* TogglePushNotificationReadUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TogglePushNotificationReadUseCaseImpl.swift; path = Sources/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift; sourceTree = ""; }; + F0378EC4E10380BAE247185B /* FetchWebPagesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPagesUseCase.swift; path = Sources/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift; sourceTree = ""; }; + F276F5D3E9AD8963189E58AC /* DeleteWebPageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteWebPageUseCaseImpl.swift; path = Sources/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift; sourceTree = ""; }; + F28AC36CBBB716A8B3C6FDDD /* WebPageRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageRepository.swift; path = Sources/Protocol/WebPageRepository.swift; sourceTree = ""; }; + F528B902B4AC945DE2357AF4 /* TodoQuery.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoQuery.swift; path = Sources/Entity/TodoQuery.swift; sourceTree = ""; }; + F5AFD6F6E1DDE50BC837955F /* UserTodoCategory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserTodoCategory.swift; path = Sources/Entity/UserTodoCategory.swift; sourceTree = ""; }; + F6452B0B4E524F90595D77FD /* SystemTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SystemTheme.swift; path = Sources/Entity/SystemTheme.swift; sourceTree = ""; }; + F9A9B5170723706520E75DC7 /* AuthProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthProvider.swift; path = Sources/Entity/AuthProvider.swift; sourceTree = ""; }; + F9F4C2B618DA0B796EC02CF4 /* AddWebPageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AddWebPageUseCase.swift; path = Sources/UseCase/WebPage/Upsert/AddWebPageUseCase.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ diff --git a/Projects/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomain.xcscheme b/Application/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomain.xcscheme similarity index 100% rename from Projects/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomain.xcscheme rename to Application/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomain.xcscheme diff --git a/DevLog/Domain/Entity/ActivityKind.swift b/Application/DevLogDomain/Sources/Entity/ActivityKind.swift similarity index 100% rename from DevLog/Domain/Entity/ActivityKind.swift rename to Application/DevLogDomain/Sources/Entity/ActivityKind.swift diff --git a/DevLog/Domain/Entity/AuthProvider.swift b/Application/DevLogDomain/Sources/Entity/AuthProvider.swift similarity index 100% rename from DevLog/Domain/Entity/AuthProvider.swift rename to Application/DevLogDomain/Sources/Entity/AuthProvider.swift diff --git a/DevLog/Domain/Entity/PushNotification.swift b/Application/DevLogDomain/Sources/Entity/PushNotification.swift similarity index 100% rename from DevLog/Domain/Entity/PushNotification.swift rename to Application/DevLogDomain/Sources/Entity/PushNotification.swift diff --git a/DevLog/Domain/Entity/PushNotificationCursor.swift b/Application/DevLogDomain/Sources/Entity/PushNotificationCursor.swift similarity index 100% rename from DevLog/Domain/Entity/PushNotificationCursor.swift rename to Application/DevLogDomain/Sources/Entity/PushNotificationCursor.swift diff --git a/DevLog/Domain/Entity/PushNotificationPage.swift b/Application/DevLogDomain/Sources/Entity/PushNotificationPage.swift similarity index 100% rename from DevLog/Domain/Entity/PushNotificationPage.swift rename to Application/DevLogDomain/Sources/Entity/PushNotificationPage.swift diff --git a/DevLog/Domain/Entity/PushNotificationQuery.swift b/Application/DevLogDomain/Sources/Entity/PushNotificationQuery.swift similarity index 100% rename from DevLog/Domain/Entity/PushNotificationQuery.swift rename to Application/DevLogDomain/Sources/Entity/PushNotificationQuery.swift diff --git a/DevLog/Domain/Entity/PushNotificationSettings.swift b/Application/DevLogDomain/Sources/Entity/PushNotificationSettings.swift similarity index 100% rename from DevLog/Domain/Entity/PushNotificationSettings.swift rename to Application/DevLogDomain/Sources/Entity/PushNotificationSettings.swift diff --git a/DevLog/Domain/Entity/SystemTheme.swift b/Application/DevLogDomain/Sources/Entity/SystemTheme.swift similarity index 100% rename from DevLog/Domain/Entity/SystemTheme.swift rename to Application/DevLogDomain/Sources/Entity/SystemTheme.swift diff --git a/DevLog/Domain/Entity/SystemTodoCategory.swift b/Application/DevLogDomain/Sources/Entity/SystemTodoCategory.swift similarity index 100% rename from DevLog/Domain/Entity/SystemTodoCategory.swift rename to Application/DevLogDomain/Sources/Entity/SystemTodoCategory.swift diff --git a/DevLog/Domain/Entity/TodayDisplayOptions.swift b/Application/DevLogDomain/Sources/Entity/TodayDisplayOptions.swift similarity index 100% rename from DevLog/Domain/Entity/TodayDisplayOptions.swift rename to Application/DevLogDomain/Sources/Entity/TodayDisplayOptions.swift diff --git a/DevLog/Domain/Entity/Todo.swift b/Application/DevLogDomain/Sources/Entity/Todo.swift similarity index 100% rename from DevLog/Domain/Entity/Todo.swift rename to Application/DevLogDomain/Sources/Entity/Todo.swift diff --git a/DevLog/Domain/Entity/TodoCategory.swift b/Application/DevLogDomain/Sources/Entity/TodoCategory.swift similarity index 100% rename from DevLog/Domain/Entity/TodoCategory.swift rename to Application/DevLogDomain/Sources/Entity/TodoCategory.swift diff --git a/DevLog/Domain/Entity/TodoCategoryPreference.swift b/Application/DevLogDomain/Sources/Entity/TodoCategoryPreference.swift similarity index 100% rename from DevLog/Domain/Entity/TodoCategoryPreference.swift rename to Application/DevLogDomain/Sources/Entity/TodoCategoryPreference.swift diff --git a/DevLog/Domain/Entity/TodoCursor.swift b/Application/DevLogDomain/Sources/Entity/TodoCursor.swift similarity index 100% rename from DevLog/Domain/Entity/TodoCursor.swift rename to Application/DevLogDomain/Sources/Entity/TodoCursor.swift diff --git a/DevLog/Domain/Entity/TodoPage.swift b/Application/DevLogDomain/Sources/Entity/TodoPage.swift similarity index 100% rename from DevLog/Domain/Entity/TodoPage.swift rename to Application/DevLogDomain/Sources/Entity/TodoPage.swift diff --git a/DevLog/Domain/Entity/TodoQuery.swift b/Application/DevLogDomain/Sources/Entity/TodoQuery.swift similarity index 100% rename from DevLog/Domain/Entity/TodoQuery.swift rename to Application/DevLogDomain/Sources/Entity/TodoQuery.swift diff --git a/DevLog/Domain/Entity/TodoReference.swift b/Application/DevLogDomain/Sources/Entity/TodoReference.swift similarity index 100% rename from DevLog/Domain/Entity/TodoReference.swift rename to Application/DevLogDomain/Sources/Entity/TodoReference.swift diff --git a/DevLog/Domain/Entity/UserProfile.swift b/Application/DevLogDomain/Sources/Entity/UserProfile.swift similarity index 100% rename from DevLog/Domain/Entity/UserProfile.swift rename to Application/DevLogDomain/Sources/Entity/UserProfile.swift diff --git a/DevLog/Domain/Entity/UserTodoCategory.swift b/Application/DevLogDomain/Sources/Entity/UserTodoCategory.swift similarity index 100% rename from DevLog/Domain/Entity/UserTodoCategory.swift rename to Application/DevLogDomain/Sources/Entity/UserTodoCategory.swift diff --git a/DevLog/Domain/Entity/WebPage.swift b/Application/DevLogDomain/Sources/Entity/WebPage.swift similarity index 100% rename from DevLog/Domain/Entity/WebPage.swift rename to Application/DevLogDomain/Sources/Entity/WebPage.swift diff --git a/DevLog/Domain/Extension/Array.swift b/Application/DevLogDomain/Sources/Extension/Array.swift similarity index 100% rename from DevLog/Domain/Extension/Array.swift rename to Application/DevLogDomain/Sources/Extension/Array.swift diff --git a/DevLog/Domain/Extension/String.swift b/Application/DevLogDomain/Sources/Extension/String.swift similarity index 100% rename from DevLog/Domain/Extension/String.swift rename to Application/DevLogDomain/Sources/Extension/String.swift diff --git a/DevLog/Domain/Extension/UIFont.swift b/Application/DevLogDomain/Sources/Extension/UIFont.swift similarity index 100% rename from DevLog/Domain/Extension/UIFont.swift rename to Application/DevLogDomain/Sources/Extension/UIFont.swift diff --git a/DevLog/Domain/Protocol/AuthDataRepository.swift b/Application/DevLogDomain/Sources/Protocol/AuthDataRepository.swift similarity index 100% rename from DevLog/Domain/Protocol/AuthDataRepository.swift rename to Application/DevLogDomain/Sources/Protocol/AuthDataRepository.swift diff --git a/DevLog/Domain/Protocol/AuthSessionRepository.swift b/Application/DevLogDomain/Sources/Protocol/AuthSessionRepository.swift similarity index 100% rename from DevLog/Domain/Protocol/AuthSessionRepository.swift rename to Application/DevLogDomain/Sources/Protocol/AuthSessionRepository.swift diff --git a/DevLog/Domain/Protocol/AuthenticationRepository.swift b/Application/DevLogDomain/Sources/Protocol/AuthenticationRepository.swift similarity index 100% rename from DevLog/Domain/Protocol/AuthenticationRepository.swift rename to Application/DevLogDomain/Sources/Protocol/AuthenticationRepository.swift diff --git a/DevLog/Domain/Protocol/NetworkConnectivityRepository.swift b/Application/DevLogDomain/Sources/Protocol/NetworkConnectivityRepository.swift similarity index 100% rename from DevLog/Domain/Protocol/NetworkConnectivityRepository.swift rename to Application/DevLogDomain/Sources/Protocol/NetworkConnectivityRepository.swift diff --git a/DevLog/Domain/Protocol/PushNotificationRepository.swift b/Application/DevLogDomain/Sources/Protocol/PushNotificationRepository.swift similarity index 100% rename from DevLog/Domain/Protocol/PushNotificationRepository.swift rename to Application/DevLogDomain/Sources/Protocol/PushNotificationRepository.swift diff --git a/DevLog/Domain/Protocol/TodoCategoryRepository.swift b/Application/DevLogDomain/Sources/Protocol/TodoCategoryRepository.swift similarity index 100% rename from DevLog/Domain/Protocol/TodoCategoryRepository.swift rename to Application/DevLogDomain/Sources/Protocol/TodoCategoryRepository.swift diff --git a/DevLog/Domain/Protocol/TodoRepository.swift b/Application/DevLogDomain/Sources/Protocol/TodoRepository.swift similarity index 100% rename from DevLog/Domain/Protocol/TodoRepository.swift rename to Application/DevLogDomain/Sources/Protocol/TodoRepository.swift diff --git a/DevLog/Domain/Protocol/UserDataRepository.swift b/Application/DevLogDomain/Sources/Protocol/UserDataRepository.swift similarity index 100% rename from DevLog/Domain/Protocol/UserDataRepository.swift rename to Application/DevLogDomain/Sources/Protocol/UserDataRepository.swift diff --git a/DevLog/Domain/Protocol/UserPreferencesRepository.swift b/Application/DevLogDomain/Sources/Protocol/UserPreferencesRepository.swift similarity index 100% rename from DevLog/Domain/Protocol/UserPreferencesRepository.swift rename to Application/DevLogDomain/Sources/Protocol/UserPreferencesRepository.swift diff --git a/DevLog/Domain/Protocol/WebPageImageRepository.swift b/Application/DevLogDomain/Sources/Protocol/WebPageImageRepository.swift similarity index 100% rename from DevLog/Domain/Protocol/WebPageImageRepository.swift rename to Application/DevLogDomain/Sources/Protocol/WebPageImageRepository.swift diff --git a/DevLog/Domain/Protocol/WebPageRepository.swift b/Application/DevLogDomain/Sources/Protocol/WebPageRepository.swift similarity index 100% rename from DevLog/Domain/Protocol/WebPageRepository.swift rename to Application/DevLogDomain/Sources/Protocol/WebPageRepository.swift diff --git a/DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Auth/Delete/DeleteAuthUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/Delete/DeleteAuthUseCase.swift diff --git a/DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Auth/Delete/DeleteAuthUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/Delete/DeleteAuthUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/Delete/DeleteAuthUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift diff --git a/DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Auth/Provider/FetchAuthProvidersUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/Provider/FetchAuthProvidersUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/Provider/FetchAuthProvidersUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Auth/Provider/LinkAuthProviderUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/Provider/LinkAuthProviderUseCase.swift diff --git a/DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Auth/Provider/LinkAuthProviderUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/Provider/LinkAuthProviderUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/Provider/LinkAuthProviderUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Auth/Provider/UnlinkAuthProviderUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/Provider/UnlinkAuthProviderUseCase.swift diff --git a/DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Auth/Provider/UnlinkAuthProviderUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/Provider/UnlinkAuthProviderUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/Provider/UnlinkAuthProviderUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift diff --git a/DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Auth/Session/ObserveAuthSessionUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/Session/ObserveAuthSessionUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/Session/ObserveAuthSessionUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Auth/SignIn/SignInUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Auth/SignIn/SignInUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/SignIn/SignInUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/SignIn/SignInUseCase.swift diff --git a/DevLog/Domain/UseCase/Auth/SignIn/SignInUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Auth/SignIn/SignInUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/SignIn/SignInUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/SignIn/SignInUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Auth/SignOut/SignOutUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/SignOut/SignOutUseCase.swift diff --git a/DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Auth/SignOut/SignOutUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Auth/SignOut/SignOutUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Auth/SignOut/SignOutUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Connectivity/ObserveNetworkConnectivityUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Connectivity/ObserveNetworkConnectivityUseCase.swift diff --git a/DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Connectivity/ObserveNetworkConnectivityUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift b/Application/DevLogDomain/Sources/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift diff --git a/DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/PushNotification/Delete/DeletePushNotificationUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/PushNotification/Delete/DeletePushNotificationUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/PushNotification/Delete/DeletePushNotificationUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCase.swift b/Application/DevLogDomain/Sources/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCase.swift diff --git a/DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCase.swift b/Application/DevLogDomain/Sources/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCase.swift diff --git a/DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/PushNotification/Fetch/FetchPushNotificationsUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCase.swift b/Application/DevLogDomain/Sources/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCase.swift diff --git a/DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/PushNotification/Fetch/ObserveUnreadPushCountUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCase.swift b/Application/DevLogDomain/Sources/UseCase/PushNotification/Read/TogglePushNotificationReadUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/PushNotification/Read/TogglePushNotificationReadUseCase.swift diff --git a/DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Todo/Delete/DeleteTodoUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Todo/Delete/DeleteTodoUseCase.swift diff --git a/DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Todo/Delete/DeleteTodoUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Todo/Delete/DeleteTodoUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Todo/Delete/DeleteTodoUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Todo/Delete/UndoDeleteTodoUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Todo/Delete/UndoDeleteTodoUseCase.swift diff --git a/DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Todo/Delete/UndoDeleteTodoUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Todo/Delete/UndoDeleteTodoUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Todo/Delete/UndoDeleteTodoUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Todo/Fetch/FetchReferenceItemsUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Todo/Fetch/FetchReferenceItemsUseCase.swift diff --git a/DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Todo/Fetch/FetchReferenceItemsUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Todo/Fetch/FetchReferenceItemsUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Todo/Fetch/FetchReferenceItemsUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Todo/Fetch/FetchTodoByIDUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Todo/Fetch/FetchTodoByIDUseCase.swift diff --git a/DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Todo/Fetch/FetchTodoByIDUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Todo/Fetch/FetchTodoByIDUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Todo/Fetch/FetchTodoByIDUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Todo/Fetch/FetchTodosUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Todo/Fetch/FetchTodosUseCase.swift diff --git a/DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Todo/Fetch/FetchTodosUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Todo/Fetch/FetchTodosUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Todo/Fetch/FetchTodosUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Todo/Upsert/UpsertTodoUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/Todo/Upsert/UpsertTodoUseCase.swift diff --git a/DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/Todo/Upsert/UpsertTodoUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/Todo/Upsert/UpsertTodoUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/Todo/Upsert/UpsertTodoUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCase.swift b/Application/DevLogDomain/Sources/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCase.swift diff --git a/DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift b/Application/DevLogDomain/Sources/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift diff --git a/DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCase.swift diff --git a/DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserData/Fetch/PushNotification/FetchPushNotificationSettingsUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCase.swift diff --git a/DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserData/Fetch/UserProfile/FetchUserDataUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift diff --git a/DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift diff --git a/DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCase.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Profile/FetchHeatmapActivityTypesUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCase.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Profile/UpdateHeatmapActivityTypesUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCase.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/PushNotification/UpdatePushNotificationQueryUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCase.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Search/FetchRecentSearchQueriesUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCase.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCase.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCase.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Theme/UpdateSystemThemeUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCase.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Today/FetchTodayDisplayOptionsUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCase.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCase.swift diff --git a/DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/UserPreferences/Today/UpdateTodayDisplayOptionsUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCase.swift b/Application/DevLogDomain/Sources/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCase.swift diff --git a/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/WebPage/Fetch/FetchWebPageImageDirSizeUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift b/Application/DevLogDomain/Sources/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift diff --git a/DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/WebPage/Fetch/FetchWebPagesUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/WebPage/Fetch/FetchWebPagesUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/WebPage/Fetch/FetchWebPagesUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCase.swift b/Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/AddWebPageUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/AddWebPageUseCase.swift diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/AddWebPageUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/WebPage/Upsert/AddWebPageUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/AddWebPageUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCase.swift b/Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCase.swift diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift b/Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift b/Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift similarity index 100% rename from DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift rename to Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift diff --git a/DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCaseImpl.swift b/Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCaseImpl.swift similarity index 100% rename from DevLog/Domain/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCaseImpl.swift rename to Application/DevLogDomain/Sources/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCaseImpl.swift diff --git a/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj similarity index 93% rename from Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj rename to Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj index 65fe1a3f..f79e1221 100644 --- a/Projects/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj +++ b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj @@ -89,25 +89,25 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GithubAuthenticationServiceImpl.swift; path = ../../DevLog/Infra/Service/SocialLogin/GithubAuthenticationServiceImpl.swift; sourceTree = ""; }; - 34EB8D1DB924582822B68442 /* WebPageMetadataServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataServiceImpl.swift; path = ../../DevLog/Infra/Service/WebPageMetadataServiceImpl.swift; sourceTree = ""; }; - 383CD000472C3025FACB9EFF /* UserServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserServiceImpl.swift; path = ../../DevLog/Infra/Service/UserServiceImpl.swift; sourceTree = ""; }; - 3E56286B1275FC5BD988C94B /* AppleAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppleAuthenticationServiceImpl.swift; path = ../../DevLog/Infra/Service/SocialLogin/AppleAuthenticationServiceImpl.swift; sourceTree = ""; }; - 4ED31F0EEEF764BB7538C585 /* TopViewControllerProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TopViewControllerProvider.swift; path = ../../DevLog/Infra/Common/TopViewControllerProvider.swift; sourceTree = ""; }; - 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GoogleAuthenticationServiceImpl.swift; path = ../../DevLog/Infra/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift; sourceTree = ""; }; + 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GithubAuthenticationServiceImpl.swift; path = Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift; sourceTree = ""; }; + 34EB8D1DB924582822B68442 /* WebPageMetadataServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataServiceImpl.swift; path = Sources/Service/WebPageMetadataServiceImpl.swift; sourceTree = ""; }; + 383CD000472C3025FACB9EFF /* UserServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserServiceImpl.swift; path = Sources/Service/UserServiceImpl.swift; sourceTree = ""; }; + 3E56286B1275FC5BD988C94B /* AppleAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppleAuthenticationServiceImpl.swift; path = Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift; sourceTree = ""; }; + 4ED31F0EEEF764BB7538C585 /* TopViewControllerProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TopViewControllerProvider.swift; path = Sources/Common/TopViewControllerProvider.swift; sourceTree = ""; }; + 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GoogleAuthenticationServiceImpl.swift; path = Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift; sourceTree = ""; }; 592C8B7B099933759AB316A5 /* DevLogInfra.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogInfra.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 59E81A47825142881793450F /* FirebaseAuthUser+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FirebaseAuthUser+.swift"; path = "../../DevLog/Infra/Extension/FirebaseAuthUser+.swift"; sourceTree = ""; }; - 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FirestorePath.swift; path = ../../DevLog/Infra/Common/FirestorePath.swift; sourceTree = ""; }; + 59E81A47825142881793450F /* FirebaseAuthUser+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FirebaseAuthUser+.swift"; path = "Sources/Extension/FirebaseAuthUser+.swift"; sourceTree = ""; }; + 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FirestorePath.swift; path = Sources/Common/FirestorePath.swift; sourceTree = ""; }; 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NWPathConnectivityProviderImpl.swift; path = ../../DevLog/Infra/Service/NWPathConnectivityProviderImpl.swift; sourceTree = ""; }; - BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoServiceImpl.swift; path = ../../DevLog/Infra/Service/TodoServiceImpl.swift; sourceTree = ""; }; - C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationServiceImpl.swift; path = ../../DevLog/Infra/Service/PushNotificationServiceImpl.swift; sourceTree = ""; }; - CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryServiceImpl.swift; path = ../../DevLog/Infra/Service/TodoCategoryServiceImpl.swift; sourceTree = ""; }; + B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NWPathConnectivityProviderImpl.swift; path = Sources/Service/NWPathConnectivityProviderImpl.swift; sourceTree = ""; }; + BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoServiceImpl.swift; path = Sources/Service/TodoServiceImpl.swift; sourceTree = ""; }; + C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationServiceImpl.swift; path = Sources/Service/PushNotificationServiceImpl.swift; sourceTree = ""; }; + CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryServiceImpl.swift; path = Sources/Service/TodoCategoryServiceImpl.swift; sourceTree = ""; }; DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; - E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthServiceImpl.swift; path = ../../DevLog/Infra/Service/AuthServiceImpl.swift; sourceTree = ""; }; - E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageServiceImpl.swift; path = ../../DevLog/Infra/Service/WebPageServiceImpl.swift; sourceTree = ""; }; - F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InfraLayerError.swift; path = ../../DevLog/Infra/Common/InfraLayerError.swift; sourceTree = ""; }; - F9AFF9DAE09B8132A62D6DA8 /* FirebaseFunctions+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FirebaseFunctions+.swift"; path = "../../DevLog/Infra/Extension/FirebaseFunctions+.swift"; sourceTree = ""; }; + E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthServiceImpl.swift; path = Sources/Service/AuthServiceImpl.swift; sourceTree = ""; }; + E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageServiceImpl.swift; path = Sources/Service/WebPageServiceImpl.swift; sourceTree = ""; }; + F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InfraLayerError.swift; path = Sources/Common/InfraLayerError.swift; sourceTree = ""; }; + F9AFF9DAE09B8132A62D6DA8 /* FirebaseFunctions+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FirebaseFunctions+.swift"; path = "Sources/Extension/FirebaseFunctions+.swift"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ diff --git a/Projects/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfra.xcscheme b/Application/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfra.xcscheme similarity index 100% rename from Projects/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfra.xcscheme rename to Application/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfra.xcscheme diff --git a/DevLog/Infra/Common/FirestorePath.swift b/Application/DevLogInfra/Sources/Common/FirestorePath.swift similarity index 100% rename from DevLog/Infra/Common/FirestorePath.swift rename to Application/DevLogInfra/Sources/Common/FirestorePath.swift diff --git a/DevLog/Infra/Common/InfraLayerError.swift b/Application/DevLogInfra/Sources/Common/InfraLayerError.swift similarity index 100% rename from DevLog/Infra/Common/InfraLayerError.swift rename to Application/DevLogInfra/Sources/Common/InfraLayerError.swift diff --git a/DevLog/Infra/Common/TopViewControllerProvider.swift b/Application/DevLogInfra/Sources/Common/TopViewControllerProvider.swift similarity index 100% rename from DevLog/Infra/Common/TopViewControllerProvider.swift rename to Application/DevLogInfra/Sources/Common/TopViewControllerProvider.swift diff --git a/DevLog/Infra/Extension/FirebaseAuthUser+.swift b/Application/DevLogInfra/Sources/Extension/FirebaseAuthUser+.swift similarity index 100% rename from DevLog/Infra/Extension/FirebaseAuthUser+.swift rename to Application/DevLogInfra/Sources/Extension/FirebaseAuthUser+.swift diff --git a/DevLog/Infra/Extension/FirebaseFunctions+.swift b/Application/DevLogInfra/Sources/Extension/FirebaseFunctions+.swift similarity index 100% rename from DevLog/Infra/Extension/FirebaseFunctions+.swift rename to Application/DevLogInfra/Sources/Extension/FirebaseFunctions+.swift diff --git a/DevLog/Infra/Service/AuthServiceImpl.swift b/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift similarity index 100% rename from DevLog/Infra/Service/AuthServiceImpl.swift rename to Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift diff --git a/DevLog/Infra/Service/NWPathConnectivityProviderImpl.swift b/Application/DevLogInfra/Sources/Service/NWPathConnectivityProviderImpl.swift similarity index 100% rename from DevLog/Infra/Service/NWPathConnectivityProviderImpl.swift rename to Application/DevLogInfra/Sources/Service/NWPathConnectivityProviderImpl.swift diff --git a/DevLog/Infra/Service/PushNotificationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift similarity index 100% rename from DevLog/Infra/Service/PushNotificationServiceImpl.swift rename to Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift diff --git a/DevLog/Infra/Service/SocialLogin/AppleAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift similarity index 100% rename from DevLog/Infra/Service/SocialLogin/AppleAuthenticationServiceImpl.swift rename to Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift diff --git a/DevLog/Infra/Service/SocialLogin/GithubAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift similarity index 100% rename from DevLog/Infra/Service/SocialLogin/GithubAuthenticationServiceImpl.swift rename to Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift diff --git a/DevLog/Infra/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift similarity index 100% rename from DevLog/Infra/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift rename to Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift diff --git a/DevLog/Infra/Service/TodoCategoryServiceImpl.swift b/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift similarity index 100% rename from DevLog/Infra/Service/TodoCategoryServiceImpl.swift rename to Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift diff --git a/DevLog/Infra/Service/TodoServiceImpl.swift b/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift similarity index 100% rename from DevLog/Infra/Service/TodoServiceImpl.swift rename to Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift diff --git a/DevLog/Infra/Service/UserServiceImpl.swift b/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift similarity index 100% rename from DevLog/Infra/Service/UserServiceImpl.swift rename to Application/DevLogInfra/Sources/Service/UserServiceImpl.swift diff --git a/DevLog/Infra/Service/WebPageMetadataServiceImpl.swift b/Application/DevLogInfra/Sources/Service/WebPageMetadataServiceImpl.swift similarity index 100% rename from DevLog/Infra/Service/WebPageMetadataServiceImpl.swift rename to Application/DevLogInfra/Sources/Service/WebPageMetadataServiceImpl.swift diff --git a/DevLog/Infra/Service/WebPageServiceImpl.swift b/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift similarity index 100% rename from DevLog/Infra/Service/WebPageServiceImpl.swift rename to Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift diff --git a/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj similarity index 88% rename from Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj rename to Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj index d3c10640..6c6943d2 100644 --- a/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj +++ b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj @@ -105,43 +105,43 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingViewModel.swift; path = ../../DevLog/Presentation/ViewModel/SettingViewModel.swift; sourceTree = ""; }; - 0BE3388699802CC7CD57BD74 /* TodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift; sourceTree = ""; }; - 0E844646CD1D172C92451FBE /* SearchViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SearchViewModel.swift; path = ../../DevLog/Presentation/ViewModel/SearchViewModel.swift; sourceTree = ""; }; - 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewModel.swift; path = ../../DevLog/Presentation/ViewModel/TodayViewModel.swift; sourceTree = ""; }; - 1907637E4162396EEDF058C2 /* RootViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RootViewModel.swift; path = ../../DevLog/Presentation/ViewModel/RootViewModel.swift; sourceTree = ""; }; - 1B9804109E1FE95126DD869B /* AccountViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccountViewModel.swift; path = ../../DevLog/Presentation/ViewModel/AccountViewModel.swift; sourceTree = ""; }; - 2BCF82DE8DF3DDEAF78826B5 /* TodayTodoItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayTodoItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodayTodoItem.swift; sourceTree = ""; }; + 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingViewModel.swift; path = Sources/ViewModel/SettingViewModel.swift; sourceTree = ""; }; + 0BE3388699802CC7CD57BD74 /* TodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryItem.swift; path = Sources/Structure/Todo/TodoCategoryItem.swift; sourceTree = ""; }; + 0E844646CD1D172C92451FBE /* SearchViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SearchViewModel.swift; path = Sources/ViewModel/SearchViewModel.swift; sourceTree = ""; }; + 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewModel.swift; path = Sources/ViewModel/TodayViewModel.swift; sourceTree = ""; }; + 1907637E4162396EEDF058C2 /* RootViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RootViewModel.swift; path = Sources/ViewModel/RootViewModel.swift; sourceTree = ""; }; + 1B9804109E1FE95126DD869B /* AccountViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccountViewModel.swift; path = Sources/ViewModel/AccountViewModel.swift; sourceTree = ""; }; + 2BCF82DE8DF3DDEAF78826B5 /* TodayTodoItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayTodoItem.swift; path = Sources/Structure/Todo/TodayTodoItem.swift; sourceTree = ""; }; 3E43EBE726188C58FFB2B6CD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileViewModel.swift; path = ../../DevLog/Presentation/ViewModel/ProfileViewModel.swift; sourceTree = ""; }; + 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileViewModel.swift; path = Sources/ViewModel/ProfileViewModel.swift; sourceTree = ""; }; 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogPresentation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageViewModel.swift; path = ../../DevLog/Presentation/ViewModel/TodoManageViewModel.swift; sourceTree = ""; }; - 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ActivityKindItem.swift; path = ../../DevLog/Presentation/Structure/Profile/ActivityKindItem.swift; sourceTree = ""; }; - 70C952669C86B8EB042ED7CF /* HeatmapMonth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapMonth.swift; path = ../../DevLog/Presentation/Structure/Profile/HeatmapMonth.swift; sourceTree = ""; }; - 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewModel.swift; path = ../../DevLog/Presentation/ViewModel/HomeViewModel.swift; sourceTree = ""; }; + 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageViewModel.swift; path = Sources/ViewModel/TodoManageViewModel.swift; sourceTree = ""; }; + 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ActivityKindItem.swift; path = Sources/Structure/Profile/ActivityKindItem.swift; sourceTree = ""; }; + 70C952669C86B8EB042ED7CF /* HeatmapMonth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapMonth.swift; path = Sources/Structure/Profile/HeatmapMonth.swift; sourceTree = ""; }; + 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewModel.swift; path = Sources/ViewModel/HomeViewModel.swift; sourceTree = ""; }; 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; - 9305330DB8199E1911FAAF49 /* TodoIDItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoIDItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodoIDItem.swift; sourceTree = ""; }; - 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReferenceItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift; sourceTree = ""; }; - A04BEF390A74ECC5558A076F /* HeatmapActivityItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapActivityItem.swift; path = ../../DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift; sourceTree = ""; }; - A117BE662EC3F9C96FF9AC61 /* SystemTodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SystemTodoCategoryItem.swift; path = ../../DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift; sourceTree = ""; }; - A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailViewModel.swift; path = ../../DevLog/Presentation/ViewModel/TodoDetailViewModel.swift; sourceTree = ""; }; - A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsViewModel.swift; path = ../../DevLog/Presentation/ViewModel/PushNotificationSettingsViewModel.swift; sourceTree = ""; }; - B19BFDE3E7FFD430D6DF2AA5 /* WebPageItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageItem.swift; path = ../../DevLog/Presentation/Structure/WebPageItem.swift; sourceTree = ""; }; + 9305330DB8199E1911FAAF49 /* TodoIDItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoIDItem.swift; path = Sources/Structure/Todo/TodoIDItem.swift; sourceTree = ""; }; + 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReferenceItem.swift; path = Sources/Structure/Todo/TodoReferenceItem.swift; sourceTree = ""; }; + A04BEF390A74ECC5558A076F /* HeatmapActivityItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapActivityItem.swift; path = Sources/Structure/Profile/HeatmapActivityItem.swift; sourceTree = ""; }; + A117BE662EC3F9C96FF9AC61 /* SystemTodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SystemTodoCategoryItem.swift; path = Sources/Structure/Todo/SystemTodoCategoryItem.swift; sourceTree = ""; }; + A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailViewModel.swift; path = Sources/ViewModel/TodoDetailViewModel.swift; sourceTree = ""; }; + A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsViewModel.swift; path = Sources/ViewModel/PushNotificationSettingsViewModel.swift; sourceTree = ""; }; + B19BFDE3E7FFD430D6DF2AA5 /* WebPageItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageItem.swift; path = Sources/Structure/WebPageItem.swift; sourceTree = ""; }; B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; - B4D75E33B582B3347AC077B0 /* HeatmapDay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapDay.swift; path = ../../DevLog/Presentation/Structure/Profile/HeatmapDay.swift; sourceTree = ""; }; - B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewModel.swift; path = ../../DevLog/Presentation/ViewModel/MainViewModel.swift; sourceTree = ""; }; - BA522CF101F432B37F315C24 /* TodoListViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListViewModel.swift; path = ../../DevLog/Presentation/ViewModel/TodoListViewModel.swift; sourceTree = ""; }; - BF28FCF602F6165DC67FE7D6 /* PushNotificationItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationItem.swift; path = ../../DevLog/Presentation/Structure/PushNotificationItem.swift; sourceTree = ""; }; - C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapQuarter.swift; path = ../../DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift; sourceTree = ""; }; - C39861EE0C254CCC9A608201 /* LoginViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginViewModel.swift; path = ../../DevLog/Presentation/ViewModel/LoginViewModel.swift; sourceTree = ""; }; - D26AF44FFBB251F34E8F80B5 /* Store.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Store.swift; path = ../../DevLog/Presentation/Protocol/Store.swift; sourceTree = ""; }; - D7258BA3748F0B1BDB1AFFD3 /* TodoListItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListItem.swift; path = ../../DevLog/Presentation/Structure/Todo/TodoListItem.swift; sourceTree = ""; }; - D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Color+Hex.swift"; path = "../../DevLog/Presentation/Extension/Color+Hex.swift"; sourceTree = ""; }; - E06ED9387372D891F65B1CAD /* LoadingState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingState.swift; path = ../../DevLog/Presentation/Common/LoadingState.swift; sourceTree = ""; }; - E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoEditorViewModel.swift; path = ../../DevLog/Presentation/ViewModel/TodoEditorViewModel.swift; sourceTree = ""; }; - E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListViewModel.swift; path = ../../DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift; sourceTree = ""; }; - F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserTodoCategoryItem.swift; path = ../../DevLog/Presentation/Structure/Todo/UserTodoCategoryItem.swift; sourceTree = ""; }; - F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RecentTodoItem.swift; path = ../../DevLog/Presentation/Structure/Todo/RecentTodoItem.swift; sourceTree = ""; }; + B4D75E33B582B3347AC077B0 /* HeatmapDay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapDay.swift; path = Sources/Structure/Profile/HeatmapDay.swift; sourceTree = ""; }; + B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewModel.swift; path = Sources/ViewModel/MainViewModel.swift; sourceTree = ""; }; + BA522CF101F432B37F315C24 /* TodoListViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListViewModel.swift; path = Sources/ViewModel/TodoListViewModel.swift; sourceTree = ""; }; + BF28FCF602F6165DC67FE7D6 /* PushNotificationItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationItem.swift; path = Sources/Structure/PushNotificationItem.swift; sourceTree = ""; }; + C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapQuarter.swift; path = Sources/Structure/Profile/HeatmapQuarter.swift; sourceTree = ""; }; + C39861EE0C254CCC9A608201 /* LoginViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginViewModel.swift; path = Sources/ViewModel/LoginViewModel.swift; sourceTree = ""; }; + D26AF44FFBB251F34E8F80B5 /* Store.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Store.swift; path = Sources/Protocol/Store.swift; sourceTree = ""; }; + D7258BA3748F0B1BDB1AFFD3 /* TodoListItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListItem.swift; path = Sources/Structure/Todo/TodoListItem.swift; sourceTree = ""; }; + D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Color+Hex.swift"; path = "Sources/Extension/Color+Hex.swift"; sourceTree = ""; }; + E06ED9387372D891F65B1CAD /* LoadingState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingState.swift; path = Sources/Common/LoadingState.swift; sourceTree = ""; }; + E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoEditorViewModel.swift; path = Sources/ViewModel/TodoEditorViewModel.swift; sourceTree = ""; }; + E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListViewModel.swift; path = Sources/ViewModel/PushNotificationListViewModel.swift; sourceTree = ""; }; + F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserTodoCategoryItem.swift; path = Sources/Structure/Todo/UserTodoCategoryItem.swift; sourceTree = ""; }; + F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RecentTodoItem.swift; path = Sources/Structure/Todo/RecentTodoItem.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ diff --git a/Projects/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentation.xcscheme b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentation.xcscheme similarity index 100% rename from Projects/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentation.xcscheme rename to Application/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentation.xcscheme diff --git a/DevLog/Presentation/Common/LoadingState.swift b/Application/DevLogPresentation/Sources/Common/LoadingState.swift similarity index 100% rename from DevLog/Presentation/Common/LoadingState.swift rename to Application/DevLogPresentation/Sources/Common/LoadingState.swift diff --git a/DevLog/Presentation/Extension/Color+Hex.swift b/Application/DevLogPresentation/Sources/Extension/Color+Hex.swift similarity index 100% rename from DevLog/Presentation/Extension/Color+Hex.swift rename to Application/DevLogPresentation/Sources/Extension/Color+Hex.swift diff --git a/DevLog/Presentation/Protocol/Store.swift b/Application/DevLogPresentation/Sources/Protocol/Store.swift similarity index 100% rename from DevLog/Presentation/Protocol/Store.swift rename to Application/DevLogPresentation/Sources/Protocol/Store.swift diff --git a/DevLog/Presentation/Structure/Profile/ActivityKindItem.swift b/Application/DevLogPresentation/Sources/Structure/Profile/ActivityKindItem.swift similarity index 100% rename from DevLog/Presentation/Structure/Profile/ActivityKindItem.swift rename to Application/DevLogPresentation/Sources/Structure/Profile/ActivityKindItem.swift diff --git a/DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapActivityItem.swift similarity index 100% rename from DevLog/Presentation/Structure/Profile/HeatmapActivityItem.swift rename to Application/DevLogPresentation/Sources/Structure/Profile/HeatmapActivityItem.swift diff --git a/DevLog/Presentation/Structure/Profile/HeatmapDay.swift b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapDay.swift similarity index 100% rename from DevLog/Presentation/Structure/Profile/HeatmapDay.swift rename to Application/DevLogPresentation/Sources/Structure/Profile/HeatmapDay.swift diff --git a/DevLog/Presentation/Structure/Profile/HeatmapMonth.swift b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapMonth.swift similarity index 100% rename from DevLog/Presentation/Structure/Profile/HeatmapMonth.swift rename to Application/DevLogPresentation/Sources/Structure/Profile/HeatmapMonth.swift diff --git a/DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapQuarter.swift similarity index 100% rename from DevLog/Presentation/Structure/Profile/HeatmapQuarter.swift rename to Application/DevLogPresentation/Sources/Structure/Profile/HeatmapQuarter.swift diff --git a/DevLog/Presentation/Structure/PushNotificationItem.swift b/Application/DevLogPresentation/Sources/Structure/PushNotificationItem.swift similarity index 100% rename from DevLog/Presentation/Structure/PushNotificationItem.swift rename to Application/DevLogPresentation/Sources/Structure/PushNotificationItem.swift diff --git a/DevLog/Presentation/Structure/Todo/RecentTodoItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/RecentTodoItem.swift similarity index 100% rename from DevLog/Presentation/Structure/Todo/RecentTodoItem.swift rename to Application/DevLogPresentation/Sources/Structure/Todo/RecentTodoItem.swift diff --git a/DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/SystemTodoCategoryItem.swift similarity index 100% rename from DevLog/Presentation/Structure/Todo/SystemTodoCategoryItem.swift rename to Application/DevLogPresentation/Sources/Structure/Todo/SystemTodoCategoryItem.swift diff --git a/DevLog/Presentation/Structure/Todo/TodayTodoItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodayTodoItem.swift similarity index 100% rename from DevLog/Presentation/Structure/Todo/TodayTodoItem.swift rename to Application/DevLogPresentation/Sources/Structure/Todo/TodayTodoItem.swift diff --git a/DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodoCategoryItem.swift similarity index 100% rename from DevLog/Presentation/Structure/Todo/TodoCategoryItem.swift rename to Application/DevLogPresentation/Sources/Structure/Todo/TodoCategoryItem.swift diff --git a/DevLog/Presentation/Structure/Todo/TodoIDItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodoIDItem.swift similarity index 100% rename from DevLog/Presentation/Structure/Todo/TodoIDItem.swift rename to Application/DevLogPresentation/Sources/Structure/Todo/TodoIDItem.swift diff --git a/DevLog/Presentation/Structure/Todo/TodoListItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodoListItem.swift similarity index 100% rename from DevLog/Presentation/Structure/Todo/TodoListItem.swift rename to Application/DevLogPresentation/Sources/Structure/Todo/TodoListItem.swift diff --git a/DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodoReferenceItem.swift similarity index 100% rename from DevLog/Presentation/Structure/Todo/TodoReferenceItem.swift rename to Application/DevLogPresentation/Sources/Structure/Todo/TodoReferenceItem.swift diff --git a/DevLog/Presentation/Structure/Todo/UserTodoCategoryItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/UserTodoCategoryItem.swift similarity index 100% rename from DevLog/Presentation/Structure/Todo/UserTodoCategoryItem.swift rename to Application/DevLogPresentation/Sources/Structure/Todo/UserTodoCategoryItem.swift diff --git a/DevLog/Presentation/Structure/WebPageItem.swift b/Application/DevLogPresentation/Sources/Structure/WebPageItem.swift similarity index 100% rename from DevLog/Presentation/Structure/WebPageItem.swift rename to Application/DevLogPresentation/Sources/Structure/WebPageItem.swift diff --git a/DevLog/Presentation/ViewModel/AccountViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/AccountViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift diff --git a/DevLog/Presentation/ViewModel/HomeViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/HomeViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/HomeViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/HomeViewModel.swift diff --git a/DevLog/Presentation/ViewModel/LoginViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/LoginViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift diff --git a/DevLog/Presentation/ViewModel/MainViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/MainViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/MainViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/MainViewModel.swift diff --git a/DevLog/Presentation/ViewModel/ProfileViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/ProfileViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/ProfileViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/ProfileViewModel.swift diff --git a/DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/PushNotificationListViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/PushNotificationListViewModel.swift diff --git a/DevLog/Presentation/ViewModel/PushNotificationSettingsViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/PushNotificationSettingsViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/PushNotificationSettingsViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/PushNotificationSettingsViewModel.swift diff --git a/DevLog/Presentation/ViewModel/RootViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/RootViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/RootViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/RootViewModel.swift diff --git a/DevLog/Presentation/ViewModel/SearchViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/SearchViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/SearchViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/SearchViewModel.swift diff --git a/DevLog/Presentation/ViewModel/SettingViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/SettingViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/SettingViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/SettingViewModel.swift diff --git a/DevLog/Presentation/ViewModel/TodayViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodayViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/TodayViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/TodayViewModel.swift diff --git a/DevLog/Presentation/ViewModel/TodoDetailViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodoDetailViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/TodoDetailViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/TodoDetailViewModel.swift diff --git a/DevLog/Presentation/ViewModel/TodoEditorViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodoEditorViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/TodoEditorViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/TodoEditorViewModel.swift diff --git a/DevLog/Presentation/ViewModel/TodoListViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodoListViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/TodoListViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/TodoListViewModel.swift diff --git a/DevLog/Presentation/ViewModel/TodoManageViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodoManageViewModel.swift similarity index 100% rename from DevLog/Presentation/ViewModel/TodoManageViewModel.swift rename to Application/DevLogPresentation/Sources/ViewModel/TodoManageViewModel.swift diff --git a/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj similarity index 97% rename from Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj rename to Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj index 3b5b6e1d..7141d57d 100644 --- a/Projects/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj +++ b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj @@ -130,18 +130,18 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStoreImpl.swift; path = ../../DevLog/Storage/Persistence/ThemeStoreImpl.swift; sourceTree = ""; }; + 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStoreImpl.swift; path = Sources/Persistence/ThemeStoreImpl.swift; sourceTree = ""; }; 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; 667A0BFA990142C8AE46316A /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; - 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStoreImpl.swift; path = ../../DevLog/Storage/Persistence/WidgetSnapshotPreferenceStoreImpl.swift; sourceTree = ""; }; - 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStoreImpl.swift; path = ../../DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift; sourceTree = ""; }; - 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdaterImpl.swift; path = ../../DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift; sourceTree = ""; }; + 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStoreImpl.swift; path = Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift; sourceTree = ""; }; + 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStoreImpl.swift; path = Sources/Persistence/UserDefaultsStoreImpl.swift; sourceTree = ""; }; + 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdaterImpl.swift; path = Sources/Persistence/WidgetSnapshotUpdaterImpl.swift; sourceTree = ""; }; 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogStorage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 98B16FCDA8A71E2E4E1DC05E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; - C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStoreImpl.swift; path = ../../DevLog/Storage/Persistence/WebPageImageStoreImpl.swift; sourceTree = ""; }; + C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStoreImpl.swift; path = Sources/Persistence/WebPageImageStoreImpl.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ diff --git a/Projects/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme b/Application/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme similarity index 100% rename from Projects/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme rename to Application/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme diff --git a/DevLog/Storage/Persistence/ThemeStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift similarity index 100% rename from DevLog/Storage/Persistence/ThemeStoreImpl.swift rename to Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift diff --git a/DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift similarity index 100% rename from DevLog/Storage/Persistence/UserDefaultsStoreImpl.swift rename to Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift diff --git a/DevLog/Storage/Persistence/WebPageImageStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift similarity index 100% rename from DevLog/Storage/Persistence/WebPageImageStoreImpl.swift rename to Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift diff --git a/DevLog/Storage/Persistence/WidgetSnapshotPreferenceStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift similarity index 100% rename from DevLog/Storage/Persistence/WidgetSnapshotPreferenceStoreImpl.swift rename to Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift diff --git a/DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift similarity index 100% rename from DevLog/Storage/Persistence/WidgetSnapshotUpdaterImpl.swift rename to Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift diff --git a/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj b/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj similarity index 88% rename from Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj rename to Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj index f5af248f..5bf3f556 100644 --- a/Projects/DevLogUI/DevLogUI.xcodeproj/project.pbxproj +++ b/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj @@ -82,48 +82,48 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsView.swift; path = ../../DevLog/UI/Setting/PushNotificationSettingsView.swift; sourceTree = ""; }; - 192A2827C2D676A1AE820FBA /* CacheableImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheableImage.swift; path = ../../DevLog/UI/Common/Component/CacheableImage.swift; sourceTree = ""; }; - 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginButton.swift; path = ../../DevLog/UI/Common/Component/LoginButton.swift; sourceTree = ""; }; - 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoEditorView.swift; path = ../../DevLog/UI/Home/TodoEditorView.swift; sourceTree = ""; }; - 27BB99F804DD47B96FCCFDC0 /* WebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebView.swift; path = ../../DevLog/UI/Common/WebView.swift; sourceTree = ""; }; - 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RelativeTimeText.swift; path = ../../DevLog/UI/Common/Component/RelativeTimeText.swift; sourceTree = ""; }; - 2B45C610096E5AC2967606A6 /* TodoListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListView.swift; path = ../../DevLog/UI/Home/TodoListView.swift; sourceTree = ""; }; + 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsView.swift; path = Sources/Setting/PushNotificationSettingsView.swift; sourceTree = ""; }; + 192A2827C2D676A1AE820FBA /* CacheableImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheableImage.swift; path = Sources/Common/Component/CacheableImage.swift; sourceTree = ""; }; + 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginButton.swift; path = Sources/Common/Component/LoginButton.swift; sourceTree = ""; }; + 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoEditorView.swift; path = Sources/Home/TodoEditorView.swift; sourceTree = ""; }; + 27BB99F804DD47B96FCCFDC0 /* WebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebView.swift; path = Sources/Common/WebView.swift; sourceTree = ""; }; + 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RelativeTimeText.swift; path = Sources/Common/Component/RelativeTimeText.swift; sourceTree = ""; }; + 2B45C610096E5AC2967606A6 /* TodoListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListView.swift; path = Sources/Home/TodoListView.swift; sourceTree = ""; }; 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; - 2EAB97486EC371BE330C70FE /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = ../../DevLog/UI/Common/Component/Toast.swift; sourceTree = ""; }; - 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewCoordinator.swift; path = ../../DevLog/UI/Main/MainViewCoordinator.swift; sourceTree = ""; }; - 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoItemRow.swift; path = ../../DevLog/UI/Common/Component/TodoItemRow.swift; sourceTree = ""; }; - 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ToolbarButton+.swift"; path = "../../DevLog/UI/Common/Component/ToolbarButton+.swift"; sourceTree = ""; }; - 3DF0168AAD4373A780DC5A51 /* View+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "View+.swift"; path = "../../DevLog/UI/Extension/View+.swift"; sourceTree = ""; }; - 4255A04E841570A664D15C72 /* SearchView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SearchView.swift; path = ../../DevLog/UI/Search/SearchView.swift; sourceTree = ""; }; - 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewCoordinator.swift; path = ../../DevLog/UI/Home/HomeViewCoordinator.swift; sourceTree = ""; }; - 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewCoordinator.swift; path = ../../DevLog/UI/Today/TodayViewCoordinator.swift; sourceTree = ""; }; + 2EAB97486EC371BE330C70FE /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = Sources/Common/Component/Toast.swift; sourceTree = ""; }; + 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewCoordinator.swift; path = Sources/Main/MainViewCoordinator.swift; sourceTree = ""; }; + 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoItemRow.swift; path = Sources/Common/Component/TodoItemRow.swift; sourceTree = ""; }; + 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ToolbarButton+.swift"; path = "Sources/Common/Component/ToolbarButton+.swift"; sourceTree = ""; }; + 3DF0168AAD4373A780DC5A51 /* View+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "View+.swift"; path = "Sources/Extension/View+.swift"; sourceTree = ""; }; + 4255A04E841570A664D15C72 /* SearchView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SearchView.swift; path = Sources/Search/SearchView.swift; sourceTree = ""; }; + 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewCoordinator.swift; path = Sources/Home/HomeViewCoordinator.swift; sourceTree = ""; }; + 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewCoordinator.swift; path = Sources/Today/TodayViewCoordinator.swift; sourceTree = ""; }; 69C35DBF629B40E93721B79D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationBarConfigurator.swift; path = ../../DevLog/UI/Common/NavigationBarConfigurator.swift; sourceTree = ""; }; + 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationBarConfigurator.swift; path = Sources/Common/NavigationBarConfigurator.swift; sourceTree = ""; }; 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; - 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationRouter.swift; path = ../../DevLog/UI/Common/NavigationRouter.swift; sourceTree = ""; }; - 7F04A173095F3737E4487EF7 /* ProfileView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileView.swift; path = ../../DevLog/UI/Profile/ProfileView.swift; sourceTree = ""; }; - 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapView.swift; path = ../../DevLog/UI/Profile/HeatmapView.swift; sourceTree = ""; }; - 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "EnvironmentValues+.swift"; path = "../../DevLog/UI/Extension/EnvironmentValues+.swift"; sourceTree = ""; }; - 9340555B2B620464698851A5 /* TodoManageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageView.swift; path = ../../DevLog/UI/Home/TodoManageView.swift; sourceTree = ""; }; - 93B72345FA909BFA40078D53 /* CheckBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CheckBox.swift; path = ../../DevLog/UI/Common/Component/CheckBox.swift; sourceTree = ""; }; - 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIKitTextEditor.swift; path = ../../DevLog/UI/Common/Component/UIKitTextEditor.swift; sourceTree = ""; }; - 9CB6D9970E4286BA9A17C47C /* SettingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingView.swift; path = ../../DevLog/UI/Setting/SettingView.swift; sourceTree = ""; }; - 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeView.swift; path = ../../DevLog/UI/Home/HomeView.swift; sourceTree = ""; }; - A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoMarkdownContentView.swift; path = ../../DevLog/UI/Common/TodoMarkdownContentView.swift; sourceTree = ""; }; - A2A9C9F3E543201091571C00 /* LoadingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingView.swift; path = ../../DevLog/UI/Common/Component/LoadingView.swift; sourceTree = ""; }; - AC142E4A256288A6D73AEB3E /* AccountView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccountView.swift; path = ../../DevLog/UI/Setting/AccountView.swift; sourceTree = ""; }; - B01ACB5EB0ACD6D3233BA118 /* MainView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainView.swift; path = ../../DevLog/UI/Main/MainView.swift; sourceTree = ""; }; - B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListView.swift; path = ../../DevLog/UI/PushNotification/PushNotificationListView.swift; sourceTree = ""; }; - B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailView.swift; path = ../../DevLog/UI/Home/TodoDetailView.swift; sourceTree = ""; }; - B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoInfoSheetView.swift; path = ../../DevLog/UI/Common/TodoInfoSheetView.swift; sourceTree = ""; }; - D2028F13D1316DD7D0229249 /* LoginView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginView.swift; path = ../../DevLog/UI/Login/LoginView.swift; sourceTree = ""; }; - D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailContentView.swift; path = ../../DevLog/UI/Common/TodoDetailContentView.swift; sourceTree = ""; }; - E0C555707203C5E83B5B5D7B /* Tag+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Tag+.swift"; path = "../../DevLog/UI/Common/Component/Tag+.swift"; sourceTree = ""; }; + 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationRouter.swift; path = Sources/Common/NavigationRouter.swift; sourceTree = ""; }; + 7F04A173095F3737E4487EF7 /* ProfileView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileView.swift; path = Sources/Profile/ProfileView.swift; sourceTree = ""; }; + 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapView.swift; path = Sources/Profile/HeatmapView.swift; sourceTree = ""; }; + 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "EnvironmentValues+.swift"; path = "Sources/Extension/EnvironmentValues+.swift"; sourceTree = ""; }; + 9340555B2B620464698851A5 /* TodoManageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageView.swift; path = Sources/Home/TodoManageView.swift; sourceTree = ""; }; + 93B72345FA909BFA40078D53 /* CheckBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CheckBox.swift; path = Sources/Common/Component/CheckBox.swift; sourceTree = ""; }; + 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIKitTextEditor.swift; path = Sources/Common/Component/UIKitTextEditor.swift; sourceTree = ""; }; + 9CB6D9970E4286BA9A17C47C /* SettingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingView.swift; path = Sources/Setting/SettingView.swift; sourceTree = ""; }; + 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeView.swift; path = Sources/Home/HomeView.swift; sourceTree = ""; }; + A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoMarkdownContentView.swift; path = Sources/Common/TodoMarkdownContentView.swift; sourceTree = ""; }; + A2A9C9F3E543201091571C00 /* LoadingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingView.swift; path = Sources/Common/Component/LoadingView.swift; sourceTree = ""; }; + AC142E4A256288A6D73AEB3E /* AccountView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccountView.swift; path = Sources/Setting/AccountView.swift; sourceTree = ""; }; + B01ACB5EB0ACD6D3233BA118 /* MainView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainView.swift; path = Sources/Main/MainView.swift; sourceTree = ""; }; + B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListView.swift; path = Sources/PushNotification/PushNotificationListView.swift; sourceTree = ""; }; + B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailView.swift; path = Sources/Home/TodoDetailView.swift; sourceTree = ""; }; + B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoInfoSheetView.swift; path = Sources/Common/TodoInfoSheetView.swift; sourceTree = ""; }; + D2028F13D1316DD7D0229249 /* LoginView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginView.swift; path = Sources/Login/LoginView.swift; sourceTree = ""; }; + D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailContentView.swift; path = Sources/Common/TodoDetailContentView.swift; sourceTree = ""; }; + E0C555707203C5E83B5B5D7B /* Tag+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Tag+.swift"; path = "Sources/Common/Component/Tag+.swift"; sourceTree = ""; }; EF72EFD447F4FDC1142BABA1 /* DevLogUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F51F902DA946EBFEEC4CD14B /* TodayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayView.swift; path = ../../DevLog/UI/Today/TodayView.swift; sourceTree = ""; }; - F9A20E0402D598F5587EAFFE /* WebItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebItemRow.swift; path = ../../DevLog/UI/Common/Component/WebItemRow.swift; sourceTree = ""; }; - FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeView.swift; path = ../../DevLog/UI/Setting/ThemeView.swift; sourceTree = ""; }; + F51F902DA946EBFEEC4CD14B /* TodayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayView.swift; path = Sources/Today/TodayView.swift; sourceTree = ""; }; + F9A20E0402D598F5587EAFFE /* WebItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebItemRow.swift; path = Sources/Common/Component/WebItemRow.swift; sourceTree = ""; }; + FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeView.swift; path = Sources/Setting/ThemeView.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ diff --git a/Projects/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme b/Application/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme similarity index 100% rename from Projects/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme rename to Application/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme diff --git a/DevLog/UI/Common/Component/CacheableImage.swift b/Application/DevLogUI/Sources/Common/Component/CacheableImage.swift similarity index 100% rename from DevLog/UI/Common/Component/CacheableImage.swift rename to Application/DevLogUI/Sources/Common/Component/CacheableImage.swift diff --git a/DevLog/UI/Common/Component/CheckBox.swift b/Application/DevLogUI/Sources/Common/Component/CheckBox.swift similarity index 100% rename from DevLog/UI/Common/Component/CheckBox.swift rename to Application/DevLogUI/Sources/Common/Component/CheckBox.swift diff --git a/DevLog/UI/Common/Component/LoadingView.swift b/Application/DevLogUI/Sources/Common/Component/LoadingView.swift similarity index 100% rename from DevLog/UI/Common/Component/LoadingView.swift rename to Application/DevLogUI/Sources/Common/Component/LoadingView.swift diff --git a/DevLog/UI/Common/Component/LoginButton.swift b/Application/DevLogUI/Sources/Common/Component/LoginButton.swift similarity index 100% rename from DevLog/UI/Common/Component/LoginButton.swift rename to Application/DevLogUI/Sources/Common/Component/LoginButton.swift diff --git a/DevLog/UI/Common/Component/RelativeTimeText.swift b/Application/DevLogUI/Sources/Common/Component/RelativeTimeText.swift similarity index 100% rename from DevLog/UI/Common/Component/RelativeTimeText.swift rename to Application/DevLogUI/Sources/Common/Component/RelativeTimeText.swift diff --git a/DevLog/UI/Common/Component/Tag+.swift b/Application/DevLogUI/Sources/Common/Component/Tag+.swift similarity index 100% rename from DevLog/UI/Common/Component/Tag+.swift rename to Application/DevLogUI/Sources/Common/Component/Tag+.swift diff --git a/DevLog/UI/Common/Component/Toast.swift b/Application/DevLogUI/Sources/Common/Component/Toast.swift similarity index 100% rename from DevLog/UI/Common/Component/Toast.swift rename to Application/DevLogUI/Sources/Common/Component/Toast.swift diff --git a/DevLog/UI/Common/Component/TodoItemRow.swift b/Application/DevLogUI/Sources/Common/Component/TodoItemRow.swift similarity index 100% rename from DevLog/UI/Common/Component/TodoItemRow.swift rename to Application/DevLogUI/Sources/Common/Component/TodoItemRow.swift diff --git a/DevLog/UI/Common/Component/ToolbarButton+.swift b/Application/DevLogUI/Sources/Common/Component/ToolbarButton+.swift similarity index 100% rename from DevLog/UI/Common/Component/ToolbarButton+.swift rename to Application/DevLogUI/Sources/Common/Component/ToolbarButton+.swift diff --git a/DevLog/UI/Common/Component/UIKitTextEditor.swift b/Application/DevLogUI/Sources/Common/Component/UIKitTextEditor.swift similarity index 100% rename from DevLog/UI/Common/Component/UIKitTextEditor.swift rename to Application/DevLogUI/Sources/Common/Component/UIKitTextEditor.swift diff --git a/DevLog/UI/Common/Component/WebItemRow.swift b/Application/DevLogUI/Sources/Common/Component/WebItemRow.swift similarity index 100% rename from DevLog/UI/Common/Component/WebItemRow.swift rename to Application/DevLogUI/Sources/Common/Component/WebItemRow.swift diff --git a/DevLog/UI/Common/NavigationBarConfigurator.swift b/Application/DevLogUI/Sources/Common/NavigationBarConfigurator.swift similarity index 100% rename from DevLog/UI/Common/NavigationBarConfigurator.swift rename to Application/DevLogUI/Sources/Common/NavigationBarConfigurator.swift diff --git a/DevLog/UI/Common/NavigationRouter.swift b/Application/DevLogUI/Sources/Common/NavigationRouter.swift similarity index 100% rename from DevLog/UI/Common/NavigationRouter.swift rename to Application/DevLogUI/Sources/Common/NavigationRouter.swift diff --git a/DevLog/UI/Common/TodoDetailContentView.swift b/Application/DevLogUI/Sources/Common/TodoDetailContentView.swift similarity index 100% rename from DevLog/UI/Common/TodoDetailContentView.swift rename to Application/DevLogUI/Sources/Common/TodoDetailContentView.swift diff --git a/DevLog/UI/Common/TodoInfoSheetView.swift b/Application/DevLogUI/Sources/Common/TodoInfoSheetView.swift similarity index 100% rename from DevLog/UI/Common/TodoInfoSheetView.swift rename to Application/DevLogUI/Sources/Common/TodoInfoSheetView.swift diff --git a/DevLog/UI/Common/TodoMarkdownContentView.swift b/Application/DevLogUI/Sources/Common/TodoMarkdownContentView.swift similarity index 100% rename from DevLog/UI/Common/TodoMarkdownContentView.swift rename to Application/DevLogUI/Sources/Common/TodoMarkdownContentView.swift diff --git a/DevLog/UI/Common/WebView.swift b/Application/DevLogUI/Sources/Common/WebView.swift similarity index 100% rename from DevLog/UI/Common/WebView.swift rename to Application/DevLogUI/Sources/Common/WebView.swift diff --git a/DevLog/UI/Extension/EnvironmentValues+.swift b/Application/DevLogUI/Sources/Extension/EnvironmentValues+.swift similarity index 100% rename from DevLog/UI/Extension/EnvironmentValues+.swift rename to Application/DevLogUI/Sources/Extension/EnvironmentValues+.swift diff --git a/DevLog/UI/Extension/View+.swift b/Application/DevLogUI/Sources/Extension/View+.swift similarity index 100% rename from DevLog/UI/Extension/View+.swift rename to Application/DevLogUI/Sources/Extension/View+.swift diff --git a/DevLog/UI/Home/HomeView.swift b/Application/DevLogUI/Sources/Home/HomeView.swift similarity index 100% rename from DevLog/UI/Home/HomeView.swift rename to Application/DevLogUI/Sources/Home/HomeView.swift diff --git a/DevLog/UI/Home/HomeViewCoordinator.swift b/Application/DevLogUI/Sources/Home/HomeViewCoordinator.swift similarity index 100% rename from DevLog/UI/Home/HomeViewCoordinator.swift rename to Application/DevLogUI/Sources/Home/HomeViewCoordinator.swift diff --git a/DevLog/UI/Home/TodoDetailView.swift b/Application/DevLogUI/Sources/Home/TodoDetailView.swift similarity index 100% rename from DevLog/UI/Home/TodoDetailView.swift rename to Application/DevLogUI/Sources/Home/TodoDetailView.swift diff --git a/DevLog/UI/Home/TodoEditorView.swift b/Application/DevLogUI/Sources/Home/TodoEditorView.swift similarity index 100% rename from DevLog/UI/Home/TodoEditorView.swift rename to Application/DevLogUI/Sources/Home/TodoEditorView.swift diff --git a/DevLog/UI/Home/TodoListView.swift b/Application/DevLogUI/Sources/Home/TodoListView.swift similarity index 100% rename from DevLog/UI/Home/TodoListView.swift rename to Application/DevLogUI/Sources/Home/TodoListView.swift diff --git a/DevLog/UI/Home/TodoManageView.swift b/Application/DevLogUI/Sources/Home/TodoManageView.swift similarity index 100% rename from DevLog/UI/Home/TodoManageView.swift rename to Application/DevLogUI/Sources/Home/TodoManageView.swift diff --git a/DevLog/UI/Login/LoginView.swift b/Application/DevLogUI/Sources/Login/LoginView.swift similarity index 100% rename from DevLog/UI/Login/LoginView.swift rename to Application/DevLogUI/Sources/Login/LoginView.swift diff --git a/DevLog/UI/Main/MainView.swift b/Application/DevLogUI/Sources/Main/MainView.swift similarity index 100% rename from DevLog/UI/Main/MainView.swift rename to Application/DevLogUI/Sources/Main/MainView.swift diff --git a/DevLog/UI/Main/MainViewCoordinator.swift b/Application/DevLogUI/Sources/Main/MainViewCoordinator.swift similarity index 100% rename from DevLog/UI/Main/MainViewCoordinator.swift rename to Application/DevLogUI/Sources/Main/MainViewCoordinator.swift diff --git a/DevLog/UI/Profile/HeatmapView.swift b/Application/DevLogUI/Sources/Profile/HeatmapView.swift similarity index 100% rename from DevLog/UI/Profile/HeatmapView.swift rename to Application/DevLogUI/Sources/Profile/HeatmapView.swift diff --git a/DevLog/UI/Profile/ProfileView.swift b/Application/DevLogUI/Sources/Profile/ProfileView.swift similarity index 100% rename from DevLog/UI/Profile/ProfileView.swift rename to Application/DevLogUI/Sources/Profile/ProfileView.swift diff --git a/DevLog/UI/PushNotification/PushNotificationListView.swift b/Application/DevLogUI/Sources/PushNotification/PushNotificationListView.swift similarity index 100% rename from DevLog/UI/PushNotification/PushNotificationListView.swift rename to Application/DevLogUI/Sources/PushNotification/PushNotificationListView.swift diff --git a/DevLog/UI/Search/SearchView.swift b/Application/DevLogUI/Sources/Search/SearchView.swift similarity index 100% rename from DevLog/UI/Search/SearchView.swift rename to Application/DevLogUI/Sources/Search/SearchView.swift diff --git a/DevLog/UI/Setting/AccountView.swift b/Application/DevLogUI/Sources/Setting/AccountView.swift similarity index 100% rename from DevLog/UI/Setting/AccountView.swift rename to Application/DevLogUI/Sources/Setting/AccountView.swift diff --git a/DevLog/UI/Setting/PushNotificationSettingsView.swift b/Application/DevLogUI/Sources/Setting/PushNotificationSettingsView.swift similarity index 100% rename from DevLog/UI/Setting/PushNotificationSettingsView.swift rename to Application/DevLogUI/Sources/Setting/PushNotificationSettingsView.swift diff --git a/DevLog/UI/Setting/SettingView.swift b/Application/DevLogUI/Sources/Setting/SettingView.swift similarity index 100% rename from DevLog/UI/Setting/SettingView.swift rename to Application/DevLogUI/Sources/Setting/SettingView.swift diff --git a/DevLog/UI/Setting/ThemeView.swift b/Application/DevLogUI/Sources/Setting/ThemeView.swift similarity index 100% rename from DevLog/UI/Setting/ThemeView.swift rename to Application/DevLogUI/Sources/Setting/ThemeView.swift diff --git a/DevLog/UI/Today/TodayView.swift b/Application/DevLogUI/Sources/Today/TodayView.swift similarity index 100% rename from DevLog/UI/Today/TodayView.swift rename to Application/DevLogUI/Sources/Today/TodayView.swift diff --git a/DevLog/UI/Today/TodayViewCoordinator.swift b/Application/DevLogUI/Sources/Today/TodayViewCoordinator.swift similarity index 100% rename from DevLog/UI/Today/TodayViewCoordinator.swift rename to Application/DevLogUI/Sources/Today/TodayViewCoordinator.swift diff --git a/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj b/Application/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj similarity index 95% rename from Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj rename to Application/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj index 4f8db507..a0ef3927 100644 --- a/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj +++ b/Application/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj @@ -121,20 +121,20 @@ /* Begin PBXFileReference section */ 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; - 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventBus.swift; path = ../../DevLog/Widget/Sync/WidgetSyncEventBus.swift; sourceTree = ""; }; - 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshotFactory.swift; path = ../../DevLog/Widget/Heatmap/HeatmapWidgetSnapshotFactory.swift; sourceTree = ""; }; - 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshotFactory.swift; path = ../../DevLog/Widget/Today/TodayWidgetSnapshotFactory.swift; sourceTree = ""; }; - 489FB48B79E61FF3332C9F3F /* WidgetSyncEventBusImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventBusImpl.swift; path = ../../DevLog/Widget/Sync/WidgetSyncEventBusImpl.swift; sourceTree = ""; }; - 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEvent.swift; path = ../../DevLog/Widget/Common/WidgetSyncEvent.swift; sourceTree = ""; }; - 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotStore.swift; path = ../../DevLog/Widget/Common/WidgetSnapshotStore.swift; sourceTree = ""; }; + 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventBus.swift; path = Sources/Sync/WidgetSyncEventBus.swift; sourceTree = ""; }; + 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshotFactory.swift; path = Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift; sourceTree = ""; }; + 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshotFactory.swift; path = Sources/Today/TodayWidgetSnapshotFactory.swift; sourceTree = ""; }; + 489FB48B79E61FF3332C9F3F /* WidgetSyncEventBusImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventBusImpl.swift; path = Sources/Sync/WidgetSyncEventBusImpl.swift; sourceTree = ""; }; + 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEvent.swift; path = Sources/Common/WidgetSyncEvent.swift; sourceTree = ""; }; + 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotStore.swift; path = Sources/Common/WidgetSnapshotStore.swift; sourceTree = ""; }; 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; - 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshot.swift; path = ../../DevLog/Widget/Today/TodayWidgetSnapshot.swift; sourceTree = ""; }; + 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshot.swift; path = Sources/Today/TodayWidgetSnapshot.swift; sourceTree = ""; }; 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogWidgetCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshot.swift; path = ../../DevLog/Widget/Heatmap/HeatmapWidgetSnapshot.swift; sourceTree = ""; }; - 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSharedDefaultsStore.swift; path = ../../DevLog/Widget/Common/WidgetSharedDefaultsStore.swift; sourceTree = ""; }; + 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshot.swift; path = Sources/Heatmap/HeatmapWidgetSnapshot.swift; sourceTree = ""; }; + 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSharedDefaultsStore.swift; path = Sources/Common/WidgetSharedDefaultsStore.swift; sourceTree = ""; }; ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; - DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventHandler.swift; path = ../../DevLog/Widget/Sync/WidgetSyncEventHandler.swift; sourceTree = ""; }; + DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventHandler.swift; path = Sources/Sync/WidgetSyncEventHandler.swift; sourceTree = ""; }; FBD260F923A87C1577DBFF0F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; /* End PBXFileReference section */ diff --git a/Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme b/Application/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme similarity index 100% rename from Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme rename to Application/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme diff --git a/DevLog/Widget/Common/WidgetSharedDefaultsStore.swift b/Application/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift similarity index 100% rename from DevLog/Widget/Common/WidgetSharedDefaultsStore.swift rename to Application/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift diff --git a/DevLog/Widget/Common/WidgetSnapshotStore.swift b/Application/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift similarity index 100% rename from DevLog/Widget/Common/WidgetSnapshotStore.swift rename to Application/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift diff --git a/DevLog/Widget/Common/WidgetSyncEvent.swift b/Application/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift similarity index 100% rename from DevLog/Widget/Common/WidgetSyncEvent.swift rename to Application/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift diff --git a/DevLog/Widget/Heatmap/HeatmapWidgetSnapshot.swift b/Application/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift similarity index 100% rename from DevLog/Widget/Heatmap/HeatmapWidgetSnapshot.swift rename to Application/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift diff --git a/DevLog/Widget/Heatmap/HeatmapWidgetSnapshotFactory.swift b/Application/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift similarity index 100% rename from DevLog/Widget/Heatmap/HeatmapWidgetSnapshotFactory.swift rename to Application/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift diff --git a/DevLog/Widget/Sync/WidgetSyncEventBus.swift b/Application/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift similarity index 100% rename from DevLog/Widget/Sync/WidgetSyncEventBus.swift rename to Application/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift diff --git a/DevLog/Widget/Sync/WidgetSyncEventBusImpl.swift b/Application/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift similarity index 100% rename from DevLog/Widget/Sync/WidgetSyncEventBusImpl.swift rename to Application/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift diff --git a/DevLog/Widget/Sync/WidgetSyncEventHandler.swift b/Application/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift similarity index 100% rename from DevLog/Widget/Sync/WidgetSyncEventHandler.swift rename to Application/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift diff --git a/DevLog/Widget/Today/TodayWidgetSnapshot.swift b/Application/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift similarity index 100% rename from DevLog/Widget/Today/TodayWidgetSnapshot.swift rename to Application/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift diff --git a/DevLog/Widget/Today/TodayWidgetSnapshotFactory.swift b/Application/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift similarity index 100% rename from DevLog/Widget/Today/TodayWidgetSnapshotFactory.swift rename to Application/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift diff --git a/Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj b/Application/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj similarity index 95% rename from Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj rename to Application/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj index 4b2e4d08..b62e3bc7 100644 --- a/Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj +++ b/Application/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj @@ -17,14 +17,14 @@ /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - 286D442FAA18B8D52A6845FF /* WidgetDeepLink.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetDeepLink.swift; path = ../../WidgetShared/WidgetDeepLink.swift; sourceTree = ""; }; + 286D442FAA18B8D52A6845FF /* WidgetDeepLink.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetDeepLink.swift; path = Sources/WidgetDeepLink.swift; sourceTree = ""; }; 814ECC408D237131E365FC92 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 9E9FD7B09D0D7EAB8B828A5E /* DevLogWidgetShared.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogWidgetShared.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A0BDD8E4BCD4F432B11496E0 /* WidgetHeatmapPlaceholderShape.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetHeatmapPlaceholderShape.swift; path = ../../WidgetShared/WidgetHeatmapPlaceholderShape.swift; sourceTree = ""; }; - C2B11CDF5A711E473115E8E3 /* Calendar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Calendar.swift; path = ../../WidgetShared/Calendar.swift; sourceTree = ""; }; - C6B67DC942FD2230C2E3C8EC /* WidgetSnapshotKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotKey.swift; path = ../../WidgetShared/WidgetSnapshotKey.swift; sourceTree = ""; }; - DEF84B2C1BD8C8ED1F6A5A36 /* WidgetAppGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetAppGroup.swift; path = ../../WidgetShared/WidgetAppGroup.swift; sourceTree = ""; }; - E75E718B8308165441EB1A8A /* WidgetKind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetKind.swift; path = ../../WidgetShared/WidgetKind.swift; sourceTree = ""; }; + A0BDD8E4BCD4F432B11496E0 /* WidgetHeatmapPlaceholderShape.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetHeatmapPlaceholderShape.swift; path = Sources/WidgetHeatmapPlaceholderShape.swift; sourceTree = ""; }; + C2B11CDF5A711E473115E8E3 /* Calendar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Calendar.swift; path = Sources/Calendar.swift; sourceTree = ""; }; + C6B67DC942FD2230C2E3C8EC /* WidgetSnapshotKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotKey.swift; path = Sources/WidgetSnapshotKey.swift; sourceTree = ""; }; + DEF84B2C1BD8C8ED1F6A5A36 /* WidgetAppGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetAppGroup.swift; path = Sources/WidgetAppGroup.swift; sourceTree = ""; }; + E75E718B8308165441EB1A8A /* WidgetKind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetKind.swift; path = Sources/WidgetKind.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ diff --git a/Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme b/Application/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme similarity index 100% rename from Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme rename to Application/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme diff --git a/WidgetShared/Calendar.swift b/Application/DevLogWidgetShared/Sources/Calendar.swift similarity index 100% rename from WidgetShared/Calendar.swift rename to Application/DevLogWidgetShared/Sources/Calendar.swift diff --git a/WidgetShared/WidgetAppGroup.swift b/Application/DevLogWidgetShared/Sources/WidgetAppGroup.swift similarity index 100% rename from WidgetShared/WidgetAppGroup.swift rename to Application/DevLogWidgetShared/Sources/WidgetAppGroup.swift diff --git a/WidgetShared/WidgetDeepLink.swift b/Application/DevLogWidgetShared/Sources/WidgetDeepLink.swift similarity index 100% rename from WidgetShared/WidgetDeepLink.swift rename to Application/DevLogWidgetShared/Sources/WidgetDeepLink.swift diff --git a/WidgetShared/WidgetHeatmapPlaceholderShape.swift b/Application/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift similarity index 100% rename from WidgetShared/WidgetHeatmapPlaceholderShape.swift rename to Application/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift diff --git a/WidgetShared/WidgetKind.swift b/Application/DevLogWidgetShared/Sources/WidgetKind.swift similarity index 100% rename from WidgetShared/WidgetKind.swift rename to Application/DevLogWidgetShared/Sources/WidgetKind.swift diff --git a/WidgetShared/WidgetSnapshotKey.swift b/Application/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift similarity index 100% rename from WidgetShared/WidgetSnapshotKey.swift rename to Application/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift diff --git a/DevLog.xcodeproj/project.pbxproj b/DevLog.xcodeproj/project.pbxproj index 482de74b..d3d8da7d 100644 --- a/DevLog.xcodeproj/project.pbxproj +++ b/DevLog.xcodeproj/project.pbxproj @@ -226,13 +226,13 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = Projects/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; - 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = Projects/DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; - 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = Projects/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; - 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogUI.xcodeproj; path = Projects/DevLogUI/DevLogUI.xcodeproj; sourceTree = ""; }; - 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogStorage.xcodeproj; path = Projects/DevLogStorage/DevLogStorage.xcodeproj; sourceTree = ""; }; - CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogInfra.xcodeproj; path = Projects/DevLogInfra/DevLogInfra.xcodeproj; sourceTree = ""; }; - DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = Projects/DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; + 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = Application/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; + 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = Application/DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; + 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = Application/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; + 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogUI.xcodeproj; path = Application/DevLogUI/DevLogUI.xcodeproj; sourceTree = ""; }; + 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogStorage.xcodeproj; path = Application/DevLogStorage/DevLogStorage.xcodeproj; sourceTree = ""; }; + CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogInfra.xcodeproj; path = Application/DevLogInfra/DevLogInfra.xcodeproj; sourceTree = ""; }; + DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = Application/DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; DF3416492E45F67C00F9312B /* DevLog_Unit.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLog_Unit.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = DevLogWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; DFD3A9712F8E89DD001DA7CD /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; @@ -240,63 +240,23 @@ DFD48B002DC4D6E2005905C5 /* DevLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DevLog.app; sourceTree = BUILT_PRODUCTS_DIR; }; DFD6453F2EC827A10073E133 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; DFD74E2E2E423EA700613803 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = Projects/DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; + E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = Application/DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ -/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ - DF8AB7A72E938CD700E50BBF /* Exceptions for "DevLog" folder in "DevLog" target */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - Data, - Domain, - Infra, - Presentation, - Resource/Config.xcconfig, - Resource/Info.plist, - Storage, - UI, - Widget, - ); - target = DFD48AFF2DC4D6E2005905C5 /* DevLog */; - }; - DFD3A9842F8E89DF001DA7CD /* Exceptions for "DevLogWidget" folder in "DevLogWidgetExtension" target */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - Resource/Info.plist, - ); - target = DFD3A96F2F8E89DD001DA7CD /* DevLogWidgetExtension */; - }; -/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ - /* Begin PBXFileSystemSynchronizedRootGroup section */ DF34164A2E45F67C00F9312B /* DevLog_Unit */ = { isa = PBXFileSystemSynchronizedRootGroup; - exceptions = ( - ); path = DevLog_Unit; sourceTree = ""; }; - DF8AB7982E938B0B00E50BBF /* DevLog */ = { - isa = PBXFileSystemSynchronizedRootGroup; - exceptions = ( - DF8AB7A72E938CD700E50BBF /* Exceptions for "DevLog" folder in "DevLog" target */, - ); - path = DevLog; - sourceTree = ""; - }; - DFD3A9752F8E89DD001DA7CD /* DevLogWidget */ = { + DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; - exceptions = ( - DFD3A9842F8E89DF001DA7CD /* Exceptions for "DevLogWidget" folder in "DevLogWidgetExtension" target */, - ); - path = DevLogWidget; + path = Application/DevLogApp/Sources; sourceTree = ""; }; - FB02A8C62F900000001DA7CD /* WidgetShared */ = { + DFD3A9752F8E89DD001DA7CD /* Application/DevLogApp/WidgetExtension */ = { isa = PBXFileSystemSynchronizedRootGroup; - exceptions = ( - ); - path = WidgetShared; + path = Application/DevLogApp/WidgetExtension; sourceTree = ""; }; /* End PBXFileSystemSynchronizedRootGroup section */ @@ -360,10 +320,9 @@ children = ( DFD74E2E2E423EA700613803 /* README.md */, DFD6453F2EC827A10073E133 /* .gitignore */, - DF8AB7982E938B0B00E50BBF /* DevLog */, + DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */, DF34164A2E45F67C00F9312B /* DevLog_Unit */, - DFD3A9752F8E89DD001DA7CD /* DevLogWidget */, - FB02A8C62F900000001DA7CD /* WidgetShared */, + DFD3A9752F8E89DD001DA7CD /* Application/DevLogApp/WidgetExtension */, DFE28EB62DCCF26300B28FE5 /* Frameworks */, DFD48B012DC4D6E2005905C5 /* Products */, 4F3D8CEC7F23C3BFF6B9E27B /* Projects */, @@ -438,8 +397,7 @@ dependencies = ( ); fileSystemSynchronizedGroups = ( - DFD3A9752F8E89DD001DA7CD /* DevLogWidget */, - FB02A8C62F900000001DA7CD /* WidgetShared */, + DFD3A9752F8E89DD001DA7CD /* Application/DevLogApp/WidgetExtension */, ); name = DevLogWidgetExtension; productName = DevLogWidgetExtension; @@ -474,7 +432,7 @@ 88A796BDB56C53FB2A6CBBB0 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - DF8AB7982E938B0B00E50BBF /* DevLog */, + DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */, ); name = DevLog; productName = SwiftUI_DevLog; @@ -522,11 +480,11 @@ projectReferences = ( { ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; - ProjectRef = 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */; + ProjectRef = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; }, { ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; - ProjectRef = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + ProjectRef = 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */; }, { ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; @@ -534,11 +492,11 @@ }, { ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; - ProjectRef = 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */; + ProjectRef = DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */; }, { ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; - ProjectRef = DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */; + ProjectRef = 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */; }, { ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; @@ -757,7 +715,7 @@ }; DF66A07D2EA52E9F0098E643 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - productRef = DF66A07C2EA52E9F0098E643 /* plugin:SwiftLintBuildToolPlugin */; + productRef = DF66A07C2EA52E9F0098E643 /* SwiftLintBuildToolPlugin */; }; DFD3A97E2F8E89DF001DA7CD /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -832,13 +790,13 @@ buildSettings = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; - CODE_SIGN_ENTITLEMENTS = DevLogWidget/Resource/DevLogWidget.entitlements; + CODE_SIGN_ENTITLEMENTS = Application/DevLogApp/WidgetExtension/Resource/DevLogWidget.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 4CPC6N38WA; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = DevLogWidget/Resource/Info.plist; + INFOPLIST_FILE = Application/DevLogApp/WidgetExtension/Resource/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = DevLogWidget; INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 17; @@ -868,13 +826,13 @@ buildSettings = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; - CODE_SIGN_ENTITLEMENTS = DevLogWidget/Resource/DevLogWidget.entitlements; + CODE_SIGN_ENTITLEMENTS = Application/DevLogApp/WidgetExtension/Resource/DevLogWidget.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 4CPC6N38WA; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = DevLogWidget/Resource/Info.plist; + INFOPLIST_FILE = Application/DevLogApp/WidgetExtension/Resource/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = DevLogWidget; INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 17; @@ -901,14 +859,14 @@ }; DFD48B122DC4D6E4005905C5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* DevLog */; + baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */; baseConfigurationReferenceRelativePath = Resource/Config.xcconfig; buildSettings = { APS_ENVIRONMENT = development; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; - CODE_SIGN_ENTITLEMENTS = DevLog/Resource/DevLog.entitlements; + CODE_SIGN_ENTITLEMENTS = Application/DevLogApp/Sources/Resource/DevLog.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; @@ -916,7 +874,7 @@ ENABLE_PREVIEWS = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = DevLog/Resource/Info.plist; + INFOPLIST_FILE = Application/DevLogApp/Sources/Resource/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = DevLog; INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; @@ -948,14 +906,14 @@ }; DFD48B132DC4D6E4005905C5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* DevLog */; + baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */; baseConfigurationReferenceRelativePath = Resource/Config.xcconfig; buildSettings = { APS_ENVIRONMENT = production; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; - CODE_SIGN_ENTITLEMENTS = DevLog/Resource/DevLog.entitlements; + CODE_SIGN_ENTITLEMENTS = Application/DevLogApp/Sources/Resource/DevLog.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; @@ -963,7 +921,7 @@ ENABLE_PREVIEWS = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = DevLog/Resource/Info.plist; + INFOPLIST_FILE = Application/DevLogApp/Sources/Resource/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = DevLog; INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; @@ -995,7 +953,7 @@ }; DFD48B142DC4D6E4005905C5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* DevLog */; + baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */; baseConfigurationReferenceRelativePath = Resource/Config.xcconfig; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1064,7 +1022,7 @@ }; DFD48B152DC4D6E4005905C5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* DevLog */; + baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */; baseConfigurationReferenceRelativePath = Resource/Config.xcconfig; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1177,7 +1135,7 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - DF66A07C2EA52E9F0098E643 /* plugin:SwiftLintBuildToolPlugin */ = { + DF66A07C2EA52E9F0098E643 /* SwiftLintBuildToolPlugin */ = { isa = XCSwiftPackageProductDependency; package = DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */; productName = "plugin:SwiftLintBuildToolPlugin"; diff --git a/DevLog.xcworkspace/contents.xcworkspacedata b/DevLog.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index d02a1fac..00000000 --- a/DevLog.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - From fc5ff10d021e0582d75feead2b1f48ababbba7aa Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 01:39:19 +0900 Subject: [PATCH 09/46] =?UTF-8?q?chore:=20=EB=A0=88=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=EB=B3=84=20=EC=99=B8=EB=B6=80=20=ED=8C=A8=ED=82=A4=EC=A7=80=20?= =?UTF-8?q?=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=9E=AC=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xcshareddata/swiftpm/Package.resolved | 200 +++++++++++++++++- .../Common/WidgetSharedDefaultsStore.swift | 1 + .../Common/WidgetSnapshotStore.swift | 1 + .../Heatmap/HeatmapWidget.swift | 1 + .../Heatmap/HeatmapWidgetEntryView.swift | 1 + .../Heatmap/WidgetHeatmapGrid.swift | 1 + .../Today/TodayTodoWidget.swift | 1 + .../DevLogInfra.xcodeproj/project.pbxproj | 85 ++++++++ .../project.pbxproj | 27 +++ .../DevLogUI.xcodeproj/project.pbxproj | 61 ++++++ .../WidgetHeatmapPlaceholderShape.swift | 2 +- DevLog.xcodeproj/project.pbxproj | 82 ++++++- 12 files changed, 459 insertions(+), 4 deletions(-) diff --git a/Application/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Application/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved index 20720f0f..5b3ba28a 100644 --- a/Application/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Application/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,6 +1,33 @@ { - "originHash" : "4489714843df66e69545dbcba4e839fab69c69cf9e4b9b54ce76bb1fbbf0c229", + "originHash" : "1650afe852ce40c482098b11ef14a1495112c88ef157ada628db7ce1132f8822", "pins" : [ + { + "identity" : "abseil-cpp-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/abseil-cpp-binary.git", + "state" : { + "revision" : "bbe8b69694d7873315fd3a4ad41efe043e1c07c5", + "version" : "1.2024072200.0" + } + }, + { + "identity" : "app-check", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/app-check.git", + "state" : { + "revision" : "61b85103a1aeed8218f17c794687781505fbbef5", + "version" : "11.2.0" + } + }, + { + "identity" : "appauth-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/openid/AppAuth-iOS.git", + "state" : { + "revision" : "145104f5ea9d58ae21b60add007c33c1cc0c948e", + "version" : "2.0.0" + } + }, { "identity" : "collectionconcurrencykit", "kind" : "remoteSourceControl", @@ -19,6 +46,141 @@ "version" : "1.10.0" } }, + { + "identity" : "firebase-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/firebase-ios-sdk", + "state" : { + "revision" : "fdc352fabaf5916e7faa1f96ad02b1957e93e5a5", + "version" : "11.15.0" + } + }, + { + "identity" : "google-ads-on-device-conversion-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/googleads/google-ads-on-device-conversion-ios-sdk", + "state" : { + "revision" : "a2d0f1f1666de591eb1a811f40b1706f5c63a2ed", + "version" : "2.3.0" + } + }, + { + "identity" : "googleappmeasurement", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleAppMeasurement.git", + "state" : { + "revision" : "45ce435e9406d3c674dd249a042b932bee006f60", + "version" : "11.15.0" + } + }, + { + "identity" : "googledatatransport", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleDataTransport.git", + "state" : { + "revision" : "617af071af9aa1d6a091d59a202910ac482128f9", + "version" : "10.1.0" + } + }, + { + "identity" : "googlesignin-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleSignIn-iOS", + "state" : { + "revision" : "913b4005ea26aebe1c97d54e35ad82a515924c71", + "version" : "9.1.0" + } + }, + { + "identity" : "googleutilities", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleUtilities.git", + "state" : { + "revision" : "60da361632d0de02786f709bdc0c4df340f7613e", + "version" : "8.1.0" + } + }, + { + "identity" : "grpc-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/grpc-binary.git", + "state" : { + "revision" : "75b31c842f664a0f46a2e590a570e370249fd8f6", + "version" : "1.69.1" + } + }, + { + "identity" : "gtm-session-fetcher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/gtm-session-fetcher.git", + "state" : { + "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b", + "version" : "3.5.0" + } + }, + { + "identity" : "gtmappauth", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GTMAppAuth.git", + "state" : { + "revision" : "56e0ccf09a6dd29dc7e68bdf729598240ca8aa16", + "version" : "5.0.0" + } + }, + { + "identity" : "interop-ios-for-google-sdks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/interop-ios-for-google-sdks.git", + "state" : { + "revision" : "040d087ac2267d2ddd4cca36c757d1c6a05fdbfe", + "version" : "101.0.0" + } + }, + { + "identity" : "leveldb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/leveldb.git", + "state" : { + "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1", + "version" : "1.22.5" + } + }, + { + "identity" : "nanopb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/nanopb.git", + "state" : { + "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", + "version" : "2.30910.0" + } + }, + { + "identity" : "networkimage", + "kind" : "remoteSourceControl", + "location" : "https://github.com/gonzalezreal/NetworkImage", + "state" : { + "revision" : "2849f5323265386e200484b0d0f896e73c3411b9", + "version" : "6.0.1" + } + }, + { + "identity" : "nexa", + "kind" : "remoteSourceControl", + "location" : "https://github.com/opficdev/Nexa", + "state" : { + "revision" : "a2f3ca9862eb24ffc28bdeb6d67293b4e8ddf3a5", + "version" : "1.1.0" + } + }, + { + "identity" : "promises", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/promises.git", + "state" : { + "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", + "version" : "2.4.0" + } + }, { "identity" : "sourcekitten", "kind" : "remoteSourceControl", @@ -37,6 +199,24 @@ "version" : "1.7.1" } }, + { + "identity" : "swift-cmark", + "kind" : "remoteSourceControl", + "location" : "https://github.com/swiftlang/swift-cmark", + "state" : { + "revision" : "924936d0427cb25a61169739a7660230bffa6ea6", + "version" : "0.8.0" + } + }, + { + "identity" : "swift-collections", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-collections.git", + "state" : { + "revision" : "03cc312c2c933ed87abace34044a5dff7a3117c1", + "version" : "1.5.0" + } + }, { "identity" : "swift-filename-matcher", "kind" : "remoteSourceControl", @@ -46,6 +226,24 @@ "version" : "2.0.1" } }, + { + "identity" : "swift-markdown-ui", + "kind" : "remoteSourceControl", + "location" : "https://github.com/gonzalezreal/swift-markdown-ui.git", + "state" : { + "revision" : "5f613358148239d0292c0cef674a3c2314737f9e", + "version" : "2.4.1" + } + }, + { + "identity" : "swift-protobuf", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-protobuf.git", + "state" : { + "revision" : "81558271e243f8f47dfe8e9fdd55f3c2b5413f68", + "version" : "1.37.0" + } + }, { "identity" : "swift-syntax", "kind" : "remoteSourceControl", diff --git a/Application/DevLogApp/WidgetExtension/Common/WidgetSharedDefaultsStore.swift b/Application/DevLogApp/WidgetExtension/Common/WidgetSharedDefaultsStore.swift index 1ee41a04..6dd471e9 100644 --- a/Application/DevLogApp/WidgetExtension/Common/WidgetSharedDefaultsStore.swift +++ b/Application/DevLogApp/WidgetExtension/Common/WidgetSharedDefaultsStore.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogWidgetShared final class WidgetSharedDefaultsStore { private let userDefaults: UserDefaults diff --git a/Application/DevLogApp/WidgetExtension/Common/WidgetSnapshotStore.swift b/Application/DevLogApp/WidgetExtension/Common/WidgetSnapshotStore.swift index 7cbaf4c5..d8ea6ff3 100644 --- a/Application/DevLogApp/WidgetExtension/Common/WidgetSnapshotStore.swift +++ b/Application/DevLogApp/WidgetExtension/Common/WidgetSnapshotStore.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogWidgetShared final class WidgetSnapshotStore { private let store: WidgetSharedDefaultsStore diff --git a/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidget.swift b/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidget.swift index 4d70e4f2..d8f28968 100644 --- a/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidget.swift +++ b/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidget.swift @@ -8,6 +8,7 @@ import SwiftUI import AppIntents import WidgetKit +import DevLogWidgetShared struct HeatmapWidget: Widget { let kind = WidgetKind.heatmap diff --git a/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetEntryView.swift b/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetEntryView.swift index 4a437923..62e59e0b 100644 --- a/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetEntryView.swift +++ b/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetEntryView.swift @@ -7,6 +7,7 @@ import SwiftUI import WidgetKit +import DevLogWidgetShared struct HeatmapWidgetEntryView: View { let entry: HeatmapWidgetEntry diff --git a/Application/DevLogApp/WidgetExtension/Heatmap/WidgetHeatmapGrid.swift b/Application/DevLogApp/WidgetExtension/Heatmap/WidgetHeatmapGrid.swift index a7519d88..8f5976a1 100644 --- a/Application/DevLogApp/WidgetExtension/Heatmap/WidgetHeatmapGrid.swift +++ b/Application/DevLogApp/WidgetExtension/Heatmap/WidgetHeatmapGrid.swift @@ -6,6 +6,7 @@ // import SwiftUI +import DevLogWidgetShared struct WidgetHeatmapGrid: View { let months: [WidgetHeatmapMonthSnapshot] diff --git a/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidget.swift b/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidget.swift index 57e15e61..9be7e2e1 100644 --- a/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidget.swift +++ b/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidget.swift @@ -8,6 +8,7 @@ import SwiftUI import AppIntents import WidgetKit +import DevLogWidgetShared struct TodayTodoWidget: Widget { let kind = WidgetKind.todayTodo diff --git a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj index f79e1221..9f550e74 100644 --- a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj +++ b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj @@ -15,6 +15,7 @@ 5C3D4AB0EA1E2DA901239A6C /* FirestorePath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */; }; 6493ACB77436F1E887D91D59 /* FirebaseAuthUser+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59E81A47825142881793450F /* FirebaseAuthUser+.swift */; }; 65478CAC7F8597445F84F656 /* TodoServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */; }; + 65623F19F34A9A75BC72EE36 /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = CE8F32B22E13743B3FF3B66B /* FirebaseFirestore */; }; 6F30F7AD6A048E8ED847D123 /* AuthServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */; }; 6FCB70DE3225AFA821300AC7 /* InfraLayerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */; }; 70CDB738E0DE3895B7539B16 /* WebPageMetadataServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EB8D1DB924582822B68442 /* WebPageMetadataServiceImpl.swift */; }; @@ -24,9 +25,14 @@ 9529B735E38CE98A8EC12AC3 /* TopViewControllerProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED31F0EEEF764BB7538C585 /* TopViewControllerProvider.swift */; }; A18672C71ABCFAAFC19775F5 /* DevLogDataProtocol.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CE407FD20ABD6E4ABC9BC63 /* DevLogDataProtocol.framework */; }; D6A1524366DC5CF153821979 /* NWPathConnectivityProviderImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */; }; + E747320CAD03A579976E87F8 /* FirebaseFunctions in Frameworks */ = {isa = PBXBuildFile; productRef = 172AF9DE3BC54E9E0B4EFD19 /* FirebaseFunctions */; }; EA3F834C61E50B4F60789473 /* TodoCategoryServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */; }; + EE62AAD289D9CED31CC9E05D /* GoogleSignIn in Frameworks */ = {isa = PBXBuildFile; productRef = 7333E70E9D312E56D4A364A6 /* GoogleSignIn */; }; F75AA9259C6636CF733C4D82 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */; }; + FB5186BC5A89B7DADAB8A82A /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 2AC59F98E5A6BFA339C3E5BD /* FirebaseAuth */; }; + FB8043FF7043AFDA0E3F705B /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = 94394E2197878DD50AF67628 /* FirebaseMessaging */; }; FE130A3E1E85658BD3ECE791 /* FirebaseFunctions+.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9AFF9DAE09B8132A62D6DA8 /* FirebaseFunctions+.swift */; }; + FEBF252AD70A910C914D3D22 /* Nexa in Frameworks */ = {isa = PBXBuildFile; productRef = EE91BC971B2F1FFEEDA3A3B8 /* Nexa */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -119,6 +125,12 @@ 17DCF2F561737FAE2CE744AC /* DevLogDataCommon.framework in Frameworks */, 8DC809F74EA0D636E5F51A83 /* DevLogDataDTO.framework in Frameworks */, A18672C71ABCFAAFC19775F5 /* DevLogDataProtocol.framework in Frameworks */, + FB5186BC5A89B7DADAB8A82A /* FirebaseAuth in Frameworks */, + 65623F19F34A9A75BC72EE36 /* FirebaseFirestore in Frameworks */, + E747320CAD03A579976E87F8 /* FirebaseFunctions in Frameworks */, + FB8043FF7043AFDA0E3F705B /* FirebaseMessaging in Frameworks */, + EE62AAD289D9CED31CC9E05D /* GoogleSignIn in Frameworks */, + FEBF252AD70A910C914D3D22 /* Nexa in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -257,6 +269,14 @@ A7332E416B2191D257886169 /* PBXTargetDependency */, ); name = DevLogInfra; + packageProductDependencies = ( + 2AC59F98E5A6BFA339C3E5BD /* FirebaseAuth */, + CE8F32B22E13743B3FF3B66B /* FirebaseFirestore */, + 172AF9DE3BC54E9E0B4EFD19 /* FirebaseFunctions */, + 94394E2197878DD50AF67628 /* FirebaseMessaging */, + 7333E70E9D312E56D4A364A6 /* GoogleSignIn */, + EE91BC971B2F1FFEEDA3A3B8 /* Nexa */, + ); productName = DevLogInfra; productReference = 592C8B7B099933759AB316A5 /* DevLogInfra.framework */; productType = "com.apple.product-type.framework"; @@ -280,6 +300,11 @@ ); mainGroup = 78591B5535D993B16F897C7C; minimizedProjectReferenceProxies = 0; + packageReferences = ( + 6A88F5113FA6A29A059E7035 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, + 7472E8F03A98CCC38B5332F2 /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */, + 13CD939395C6B0EEB80B46F6 /* XCRemoteSwiftPackageReference "Nexa" */, + ); preferredProjectObjectVersion = 77; productRefGroup = 0488BFD2A2F470EEE29679F1 /* Products */; projectDirPath = ""; @@ -575,6 +600,66 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 13CD939395C6B0EEB80B46F6 /* XCRemoteSwiftPackageReference "Nexa" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/opficdev/Nexa"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.1.0; + }; + }; + 6A88F5113FA6A29A059E7035 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 11.15.0; + }; + }; + 7472E8F03A98CCC38B5332F2 /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/google/GoogleSignIn-iOS"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 9.0.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 172AF9DE3BC54E9E0B4EFD19 /* FirebaseFunctions */ = { + isa = XCSwiftPackageProductDependency; + package = 6A88F5113FA6A29A059E7035 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseFunctions; + }; + 2AC59F98E5A6BFA339C3E5BD /* FirebaseAuth */ = { + isa = XCSwiftPackageProductDependency; + package = 6A88F5113FA6A29A059E7035 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseAuth; + }; + 7333E70E9D312E56D4A364A6 /* GoogleSignIn */ = { + isa = XCSwiftPackageProductDependency; + package = 7472E8F03A98CCC38B5332F2 /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */; + productName = GoogleSignIn; + }; + 94394E2197878DD50AF67628 /* FirebaseMessaging */ = { + isa = XCSwiftPackageProductDependency; + package = 6A88F5113FA6A29A059E7035 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseMessaging; + }; + CE8F32B22E13743B3FF3B66B /* FirebaseFirestore */ = { + isa = XCSwiftPackageProductDependency; + package = 6A88F5113FA6A29A059E7035 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseFirestore; + }; + EE91BC971B2F1FFEEDA3A3B8 /* Nexa */ = { + isa = XCSwiftPackageProductDependency; + package = 13CD939395C6B0EEB80B46F6 /* XCRemoteSwiftPackageReference "Nexa" */; + productName = Nexa; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = FF22261AB99602DAB8E9B323 /* Project object */; } diff --git a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj index 6c6943d2..6a6655d6 100644 --- a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj +++ b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj @@ -14,6 +14,7 @@ 143CCE59C5AE926947DA0EA6 /* SystemTodoCategoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A117BE662EC3F9C96FF9AC61 /* SystemTodoCategoryItem.swift */; }; 18C98041FF04371B8D65344B /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DCC0B6BEE21E7E61E0D2C8 /* DevLogDataCommon.framework */; }; 1A5EF7B2B4490CBCA9DAA040 /* SearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E844646CD1D172C92451FBE /* SearchViewModel.swift */; }; + 1B8D0C5D8C506642FFB8F9FA /* OrderedCollections in Frameworks */ = {isa = PBXBuildFile; productRef = 7D6DDD31C1122286D5852621 /* OrderedCollections */; }; 246479E87ECFD0B2DDDA1F75 /* TodoListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA522CF101F432B37F315C24 /* TodoListViewModel.swift */; }; 2FB6AD996A213275B4EEEA05 /* TodayViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */; }; 3530599B937DC8E3F908F3F3 /* LoadingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = E06ED9387372D891F65B1CAD /* LoadingState.swift */; }; @@ -152,6 +153,7 @@ CC36598B842BA60E284D4A9E /* Foundation.framework in Frameworks */, E91B53D33C90B9298E0B2EA1 /* DevLogDomain.framework in Frameworks */, 18C98041FF04371B8D65344B /* DevLogDataCommon.framework in Frameworks */, + 1B8D0C5D8C506642FFB8F9FA /* OrderedCollections in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -332,6 +334,9 @@ 3E21F3A3C22C9F31A55EC073 /* PBXTargetDependency */, ); name = DevLogPresentation; + packageProductDependencies = ( + 7D6DDD31C1122286D5852621 /* OrderedCollections */, + ); productName = DevLogPresentation; productReference = 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */; productType = "com.apple.product-type.framework"; @@ -355,6 +360,9 @@ ); mainGroup = 253FAAC4504D4C5E1B11C833; minimizedProjectReferenceProxies = 0; + packageReferences = ( + 4A268C0F47C89BEF1B5B794F /* XCRemoteSwiftPackageReference "swift-collections" */, + ); preferredProjectObjectVersion = 77; productRefGroup = 03D4331F04C462F4C642860F /* Products */; projectDirPath = ""; @@ -673,6 +681,25 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 4A268C0F47C89BEF1B5B794F /* XCRemoteSwiftPackageReference "swift-collections" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/apple/swift-collections.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.3.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 7D6DDD31C1122286D5852621 /* OrderedCollections */ = { + isa = XCSwiftPackageProductDependency; + package = 4A268C0F47C89BEF1B5B794F /* XCRemoteSwiftPackageReference "swift-collections" */; + productName = OrderedCollections; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 096704712B06C41C6A0FE074 /* Project object */; } diff --git a/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj b/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj index 5bf3f556..cc4c3d3c 100644 --- a/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj +++ b/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj @@ -17,6 +17,7 @@ 26FA5A7B5E8EDE1B8B6BEE4C /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4255A04E841570A664D15C72 /* SearchView.swift */; }; 2781DD85BEB0D586F730C53C /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F04A173095F3737E4487EF7 /* ProfileView.swift */; }; 2A16034EA7F17361A17B80AA /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A7EFE823B69A90528963EA6 /* DevLogPresentation.framework */; }; + 3120506A710A0B6505226C05 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 423A6FE16D5EC7FECF77A31A /* MarkdownUI */; }; 33374D81BED973A28E95EB88 /* HeatmapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */; }; 3568FBF125892AF4577A533B /* PushNotificationListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */; }; 3C865F560E7A379D616F092D /* TodoManageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9340555B2B620464698851A5 /* TodoManageView.swift */; }; @@ -44,6 +45,8 @@ D12294635C147B35F3EA3314 /* PushNotificationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */; }; D7ED2E08383517AA3E242B0C /* TodayViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */; }; DCF1DA50663107DA4687A0D4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69C35DBF629B40E93721B79D /* Foundation.framework */; }; + E68FD303E39CE280ABFC8A57 /* OrderedCollections in Frameworks */ = {isa = PBXBuildFile; productRef = D486CA7A0AC3B3C1992D90D7 /* OrderedCollections */; }; + E69CD0D89DDDF4A68406680D /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = D06169FD4B643952DF59EDAE /* FirebaseAuth */; }; E9BE203BADA107278CFBDD54 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */; }; F0B4DBB89733E466B105CF25 /* EnvironmentValues+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */; }; F1474D4F84693113355B7DA2 /* TodoMarkdownContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */; }; @@ -134,6 +137,9 @@ DCF1DA50663107DA4687A0D4 /* Foundation.framework in Frameworks */, A4AD1EE45C758CF4DBA545A9 /* DevLogDomain.framework in Frameworks */, 2A16034EA7F17361A17B80AA /* DevLogPresentation.framework in Frameworks */, + 3120506A710A0B6505226C05 /* MarkdownUI in Frameworks */, + E68FD303E39CE280ABFC8A57 /* OrderedCollections in Frameworks */, + E69CD0D89DDDF4A68406680D /* FirebaseAuth in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -347,6 +353,11 @@ 4F02ECB9EB26770F47EC2D36 /* PBXTargetDependency */, ); name = DevLogUI; + packageProductDependencies = ( + 423A6FE16D5EC7FECF77A31A /* MarkdownUI */, + D486CA7A0AC3B3C1992D90D7 /* OrderedCollections */, + D06169FD4B643952DF59EDAE /* FirebaseAuth */, + ); productName = DevLogUI; productReference = EF72EFD447F4FDC1142BABA1 /* DevLogUI.framework */; productType = "com.apple.product-type.framework"; @@ -370,6 +381,11 @@ ); mainGroup = D808B5660152F4480C65BB71; minimizedProjectReferenceProxies = 0; + packageReferences = ( + 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */, + 8A1AB2316BD728E4435CE2A1 /* XCRemoteSwiftPackageReference "swift-collections" */, + AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, + ); preferredProjectObjectVersion = 77; productRefGroup = B68C915FE344171A3A1311EF /* Products */; projectDirPath = ""; @@ -665,6 +681,51 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCRemoteSwiftPackageReference section */ + 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/gonzalezreal/swift-markdown-ui.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.4.1; + }; + }; + 8A1AB2316BD728E4435CE2A1 /* XCRemoteSwiftPackageReference "swift-collections" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/apple/swift-collections.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.3.0; + }; + }; + AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 11.15.0; + }; + }; +/* End XCRemoteSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 423A6FE16D5EC7FECF77A31A /* MarkdownUI */ = { + isa = XCSwiftPackageProductDependency; + package = 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */; + productName = MarkdownUI; + }; + D06169FD4B643952DF59EDAE /* FirebaseAuth */ = { + isa = XCSwiftPackageProductDependency; + package = AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseAuth; + }; + D486CA7A0AC3B3C1992D90D7 /* OrderedCollections */ = { + isa = XCSwiftPackageProductDependency; + package = 8A1AB2316BD728E4435CE2A1 /* XCRemoteSwiftPackageReference "swift-collections" */; + productName = OrderedCollections; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 2A5CEF5F3893E84D1C70CACE /* Project object */; } diff --git a/Application/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift b/Application/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift index 90aec66a..e970ec0e 100644 --- a/Application/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift +++ b/Application/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift @@ -19,7 +19,7 @@ public struct WidgetHeatmapPlaceholderShape { quarterMonths.map(\.weeks.count) } - init( + public init( date: Date = Date(), calendar: Calendar = .current ) { diff --git a/DevLog.xcodeproj/project.pbxproj b/DevLog.xcodeproj/project.pbxproj index d3d8da7d..4028d0eb 100644 --- a/DevLog.xcodeproj/project.pbxproj +++ b/DevLog.xcodeproj/project.pbxproj @@ -10,12 +10,16 @@ 0957A66CFE9CB98EA302CC22 /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */; }; 1589C1EF4029ECBF15A842F0 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; }; 186E9AB4F0A79C50FE853607 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA49949C677DDE083F7DE29E /* DevLogDomain.framework */; }; + 18D57A125ACCF0F6B11A7101 /* GoogleSignIn in Frameworks */ = {isa = PBXBuildFile; productRef = F972F1E8E0F5156FE9651020 /* GoogleSignIn */; }; 26C3DC51F23F9C590FDB282D /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67918B544432C45E63273D84 /* DevLogPresentation.framework */; }; 593BFC1632C776A7D59EF625 /* DevLogDataMapper.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF31C7E0802E4877630B4E0D /* DevLogDataMapper.framework */; }; 7188DA2B6DFD13F7FF73069E /* DevLogInfra.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */; }; 79134AD67952720CCC5069EA /* DevLogStorage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */; }; + 7A0D2CD79D383F3D256D6065 /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */; }; 7AB46A7765E72B61AC730D41 /* DevLogUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A2F070E465CD9260A295A505 /* DevLogUI.framework */; }; 8B41461F945DA9A94D3330F9 /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA04D8F5F1B04A3FBE8C5763 /* DevLogDataCommon.framework */; }; + 8D3BD712CB129F2527B00CFB /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = E72BBE64130E2666E4680E1B /* FirebaseMessaging */; }; + B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */ = {isa = PBXBuildFile; productRef = 0B7D3A68C7E7BF5D4A437D29 /* FirebaseCore */; }; B51F2FBCE730B52489D0F89F /* DevLogDataRepository.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C86A027695491A3640899360 /* DevLogDataRepository.framework */; }; CA836545BFC2C01D1A1197AF /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DF226704A710E19F3CCAD1A /* DevLogDataDTO.framework */; }; DFD3A9722F8E89DD001DA7CD /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9712F8E89DD001DA7CD /* WidgetKit.framework */; }; @@ -243,19 +247,45 @@ E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = Application/DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ +/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ + 673A0C8CF8DB5C6AD6614292 /* Exceptions for "Application/DevLogApp/Sources" folder in "DevLog" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Resource/Config.xcconfig, + Resource/Info.plist, + ); + target = DFD48AFF2DC4D6E2005905C5 /* DevLog */; + }; + 6D865D5656AAAB2BB495EB93 /* Exceptions for "Application/DevLogApp/WidgetExtension" folder in "DevLogWidgetExtension" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Resource/Info.plist, + ); + target = DFD3A96F2F8E89DD001DA7CD /* DevLogWidgetExtension */; + }; +/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ + /* Begin PBXFileSystemSynchronizedRootGroup section */ DF34164A2E45F67C00F9312B /* DevLog_Unit */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + ); path = DevLog_Unit; sourceTree = ""; }; DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + 673A0C8CF8DB5C6AD6614292 /* Exceptions for "Application/DevLogApp/Sources" folder in "DevLog" target */, + ); path = Application/DevLogApp/Sources; sourceTree = ""; }; DFD3A9752F8E89DD001DA7CD /* Application/DevLogApp/WidgetExtension */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + 6D865D5656AAAB2BB495EB93 /* Exceptions for "Application/DevLogApp/WidgetExtension" folder in "DevLogWidgetExtension" target */, + ); path = Application/DevLogApp/WidgetExtension; sourceTree = ""; }; @@ -275,6 +305,7 @@ files = ( DFD3A9742F8E89DD001DA7CD /* SwiftUI.framework in Frameworks */, DFD3A9722F8E89DD001DA7CD /* WidgetKit.framework in Frameworks */, + 7A0D2CD79D383F3D256D6065 /* DevLogWidgetShared.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -294,6 +325,9 @@ 7AB46A7765E72B61AC730D41 /* DevLogUI.framework in Frameworks */, 1589C1EF4029ECBF15A842F0 /* DevLogWidgetCore.framework in Frameworks */, 0957A66CFE9CB98EA302CC22 /* DevLogWidgetShared.framework in Frameworks */, + B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */, + 8D3BD712CB129F2527B00CFB /* FirebaseMessaging in Frameworks */, + 18D57A125ACCF0F6B11A7101 /* GoogleSignIn in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -395,6 +429,7 @@ buildRules = ( ); dependencies = ( + 0AB29A08B809E8A2E1AD6CA3 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( DFD3A9752F8E89DD001DA7CD /* Application/DevLogApp/WidgetExtension */, @@ -435,6 +470,11 @@ DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */, ); name = DevLog; + packageProductDependencies = ( + 0B7D3A68C7E7BF5D4A437D29 /* FirebaseCore */, + E72BBE64130E2666E4680E1B /* FirebaseMessaging */, + F972F1E8E0F5156FE9651020 /* GoogleSignIn */, + ); productName = SwiftUI_DevLog; productReference = DFD48B002DC4D6E2005905C5 /* DevLog.app */; productType = "com.apple.product-type.application"; @@ -473,6 +513,8 @@ minimizedProjectReferenceProxies = 1; packageReferences = ( DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */, + D7AE705B27EA8F3775A1284E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, + 1D75B0AFC69F88110A25217B /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */, ); preferredProjectObjectVersion = 77; productRefGroup = DFD48B012DC4D6E2005905C5 /* Products */; @@ -658,6 +700,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 0AB29A08B809E8A2E1AD6CA3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogWidgetShared; + targetProxy = F0A01BBA37FA27D63B9D6943 /* PBXContainerItemProxy */; + }; 0BFC6FE7043DE7320546ABAF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDataMapper; @@ -715,7 +762,7 @@ }; DF66A07D2EA52E9F0098E643 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - productRef = DF66A07C2EA52E9F0098E643 /* SwiftLintBuildToolPlugin */; + productRef = DF66A07C2EA52E9F0098E643 /* plugin:SwiftLintBuildToolPlugin */; }; DFD3A97E2F8E89DF001DA7CD /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -1124,6 +1171,22 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ + 1D75B0AFC69F88110A25217B /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/google/GoogleSignIn-iOS"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 9.0.0; + }; + }; + D7AE705B27EA8F3775A1284E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 11.15.0; + }; + }; DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/realm/SwiftLint"; @@ -1135,11 +1198,26 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - DF66A07C2EA52E9F0098E643 /* SwiftLintBuildToolPlugin */ = { + 0B7D3A68C7E7BF5D4A437D29 /* FirebaseCore */ = { + isa = XCSwiftPackageProductDependency; + package = D7AE705B27EA8F3775A1284E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseCore; + }; + DF66A07C2EA52E9F0098E643 /* plugin:SwiftLintBuildToolPlugin */ = { isa = XCSwiftPackageProductDependency; package = DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */; productName = "plugin:SwiftLintBuildToolPlugin"; }; + E72BBE64130E2666E4680E1B /* FirebaseMessaging */ = { + isa = XCSwiftPackageProductDependency; + package = D7AE705B27EA8F3775A1284E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseMessaging; + }; + F972F1E8E0F5156FE9651020 /* GoogleSignIn */ = { + isa = XCSwiftPackageProductDependency; + package = 1D75B0AFC69F88110A25217B /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */; + productName = GoogleSignIn; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = DFD48AF82DC4D6E2005905C5 /* Project object */; From 796fd47188a7efbf2d6529214ecbbd5ffdafe0cf Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 01:44:17 +0900 Subject: [PATCH 10/46] =?UTF-8?q?chore:=20=EC=9C=84=EC=A0=AF=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=20=EB=94=94=EB=A0=89=ED=86=A0=EB=A6=AC=20=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contents.xcworkspacedata | 4 ++-- .../project.pbxproj | 6 ++--- .../xcschemes/DevLogWidgetCore.xcscheme | 0 .../Common/WidgetSharedDefaultsStore.swift | 0 .../Sources/Common/WidgetSnapshotStore.swift | 0 .../Sources/Common/WidgetSyncEvent.swift | 0 .../Heatmap/HeatmapWidgetSnapshot.swift | 0 .../HeatmapWidgetSnapshotFactory.swift | 0 .../Sources/Sync/WidgetSyncEventBus.swift | 0 .../Sources/Sync/WidgetSyncEventBusImpl.swift | 0 .../Sources/Sync/WidgetSyncEventHandler.swift | 0 .../Sources/Today/TodayWidgetSnapshot.swift | 0 .../Today/TodayWidgetSnapshotFactory.swift | 0 .../Common/WidgetPlaceholderCard.swift | 0 .../Common/WidgetSharedDefaultsStore.swift | 0 .../Common/WidgetSnapshotStore.swift | 0 .../DevLogWidgetBundle.swift | 0 .../Heatmap/HeatmapWidget.swift | 0 .../HeatmapWidgetConfigurationIntent.swift | 0 .../Heatmap/HeatmapWidgetEntry.swift | 0 .../Heatmap/HeatmapWidgetEntryView.swift | 0 .../Heatmap/HeatmapWidgetProvider.swift | 0 .../Heatmap/HeatmapWidgetSnapshot.swift | 0 .../Heatmap/WidgetHeatmapGrid.swift | 0 .../Heatmap/WidgetHeatmapLayout.swift | 0 .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../Resource/Assets.xcassets/Contents.json | 0 .../WidgetBackground.colorset/Contents.json | 0 .../Resource/DevLogWidget.entitlements | 0 .../Resource/Info.plist | 0 .../Resource/Localizable.xcstrings | 0 .../Today/TodayTodoWidget.swift | 0 .../TodayTodoWidgetConfigurationIntent.swift | 0 .../Today/TodayTodoWidgetEntry.swift | 0 .../Today/TodayTodoWidgetEntryView.swift | 0 .../Today/TodayTodoWidgetProvider.swift | 0 .../Today/TodayWidgetSnapshot.swift | 0 .../project.pbxproj | 0 .../xcschemes/DevLogWidgetShared.xcscheme | 0 .../DevLogWidgetShared/Sources/Calendar.swift | 0 .../Sources/WidgetAppGroup.swift | 0 .../Sources/WidgetDeepLink.swift | 0 .../WidgetHeatmapPlaceholderShape.swift | 0 .../Sources/WidgetKind.swift | 0 .../Sources/WidgetSnapshotKey.swift | 0 DevLog.xcodeproj/project.pbxproj | 24 +++++++++---------- 47 files changed, 17 insertions(+), 17 deletions(-) rename Application/{ => Widget}/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj (98%) rename Application/{ => Widget}/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme (100%) rename Application/{ => Widget}/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift (100%) rename Application/{ => Widget}/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift (100%) rename Application/{ => Widget}/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift (100%) rename Application/{ => Widget}/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift (100%) rename Application/{ => Widget}/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift (100%) rename Application/{ => Widget}/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift (100%) rename Application/{ => Widget}/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift (100%) rename Application/{ => Widget}/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift (100%) rename Application/{ => Widget}/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift (100%) rename Application/{ => Widget}/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Common/WidgetPlaceholderCard.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Common/WidgetSharedDefaultsStore.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Common/WidgetSnapshotStore.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/DevLogWidgetBundle.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Heatmap/HeatmapWidget.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Heatmap/HeatmapWidgetConfigurationIntent.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Heatmap/HeatmapWidgetEntry.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Heatmap/HeatmapWidgetEntryView.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Heatmap/HeatmapWidgetProvider.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Heatmap/HeatmapWidgetSnapshot.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Heatmap/WidgetHeatmapGrid.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Heatmap/WidgetHeatmapLayout.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Resource/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Resource/Assets.xcassets/Contents.json (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Resource/DevLogWidget.entitlements (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Resource/Info.plist (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Resource/Localizable.xcstrings (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Today/TodayTodoWidget.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Today/TodayTodoWidgetConfigurationIntent.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Today/TodayTodoWidgetEntry.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Today/TodayTodoWidgetEntryView.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Today/TodayTodoWidgetProvider.swift (100%) rename Application/{DevLogApp/WidgetExtension => Widget/DevLogWidgetExtension}/Today/TodayWidgetSnapshot.swift (100%) rename Application/{ => Widget}/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj (100%) rename Application/{ => Widget}/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme (100%) rename Application/{ => Widget}/DevLogWidgetShared/Sources/Calendar.swift (100%) rename Application/{ => Widget}/DevLogWidgetShared/Sources/WidgetAppGroup.swift (100%) rename Application/{ => Widget}/DevLogWidgetShared/Sources/WidgetDeepLink.swift (100%) rename Application/{ => Widget}/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift (100%) rename Application/{ => Widget}/DevLogWidgetShared/Sources/WidgetKind.swift (100%) rename Application/{ => Widget}/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift (100%) diff --git a/Application/DevLog.xcworkspace/contents.xcworkspacedata b/Application/DevLog.xcworkspace/contents.xcworkspacedata index 819a1c04..8e69992b 100644 --- a/Application/DevLog.xcworkspace/contents.xcworkspacedata +++ b/Application/DevLog.xcworkspace/contents.xcworkspacedata @@ -23,9 +23,9 @@ location = "group:DevLogUI/DevLogUI.xcodeproj"> + location = "group:Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj"> + location = "group:Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj"> diff --git a/Application/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj b/Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj similarity index 98% rename from Application/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj rename to Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj index a0ef3927..7718922b 100644 --- a/Application/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj +++ b/Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj @@ -120,7 +120,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; + 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventBus.swift; path = Sources/Sync/WidgetSyncEventBus.swift; sourceTree = ""; }; 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshotFactory.swift; path = Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift; sourceTree = ""; }; 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshotFactory.swift; path = Sources/Today/TodayWidgetSnapshotFactory.swift; sourceTree = ""; }; @@ -132,8 +132,8 @@ 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogWidgetCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshot.swift; path = Sources/Heatmap/HeatmapWidgetSnapshot.swift; sourceTree = ""; }; 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSharedDefaultsStore.swift; path = Sources/Common/WidgetSharedDefaultsStore.swift; sourceTree = ""; }; - ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; - B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; + ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; + B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventHandler.swift; path = Sources/Sync/WidgetSyncEventHandler.swift; sourceTree = ""; }; FBD260F923A87C1577DBFF0F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; /* End PBXFileReference section */ diff --git a/Application/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme b/Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme similarity index 100% rename from Application/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme rename to Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme diff --git a/Application/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift b/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift similarity index 100% rename from Application/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift rename to Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift diff --git a/Application/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift b/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift similarity index 100% rename from Application/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift rename to Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift diff --git a/Application/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift b/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift similarity index 100% rename from Application/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift rename to Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift diff --git a/Application/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift b/Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift similarity index 100% rename from Application/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift rename to Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift diff --git a/Application/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift b/Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift similarity index 100% rename from Application/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift rename to Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift diff --git a/Application/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift b/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift similarity index 100% rename from Application/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift rename to Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift diff --git a/Application/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift b/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift similarity index 100% rename from Application/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift rename to Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift diff --git a/Application/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift b/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift similarity index 100% rename from Application/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift rename to Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift diff --git a/Application/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift b/Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift similarity index 100% rename from Application/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift rename to Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift diff --git a/Application/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift b/Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift similarity index 100% rename from Application/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift rename to Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift diff --git a/Application/DevLogApp/WidgetExtension/Common/WidgetPlaceholderCard.swift b/Application/Widget/DevLogWidgetExtension/Common/WidgetPlaceholderCard.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Common/WidgetPlaceholderCard.swift rename to Application/Widget/DevLogWidgetExtension/Common/WidgetPlaceholderCard.swift diff --git a/Application/DevLogApp/WidgetExtension/Common/WidgetSharedDefaultsStore.swift b/Application/Widget/DevLogWidgetExtension/Common/WidgetSharedDefaultsStore.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Common/WidgetSharedDefaultsStore.swift rename to Application/Widget/DevLogWidgetExtension/Common/WidgetSharedDefaultsStore.swift diff --git a/Application/DevLogApp/WidgetExtension/Common/WidgetSnapshotStore.swift b/Application/Widget/DevLogWidgetExtension/Common/WidgetSnapshotStore.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Common/WidgetSnapshotStore.swift rename to Application/Widget/DevLogWidgetExtension/Common/WidgetSnapshotStore.swift diff --git a/Application/DevLogApp/WidgetExtension/DevLogWidgetBundle.swift b/Application/Widget/DevLogWidgetExtension/DevLogWidgetBundle.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/DevLogWidgetBundle.swift rename to Application/Widget/DevLogWidgetExtension/DevLogWidgetBundle.swift diff --git a/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidget.swift b/Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidget.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidget.swift rename to Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidget.swift diff --git a/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetConfigurationIntent.swift b/Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetConfigurationIntent.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetConfigurationIntent.swift rename to Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetConfigurationIntent.swift diff --git a/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetEntry.swift b/Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntry.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetEntry.swift rename to Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntry.swift diff --git a/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetEntryView.swift b/Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntryView.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetEntryView.swift rename to Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntryView.swift diff --git a/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetProvider.swift b/Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetProvider.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetProvider.swift rename to Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetProvider.swift diff --git a/Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetSnapshot.swift b/Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetSnapshot.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Heatmap/HeatmapWidgetSnapshot.swift rename to Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetSnapshot.swift diff --git a/Application/DevLogApp/WidgetExtension/Heatmap/WidgetHeatmapGrid.swift b/Application/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapGrid.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Heatmap/WidgetHeatmapGrid.swift rename to Application/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapGrid.swift diff --git a/Application/DevLogApp/WidgetExtension/Heatmap/WidgetHeatmapLayout.swift b/Application/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapLayout.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Heatmap/WidgetHeatmapLayout.swift rename to Application/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapLayout.swift diff --git a/Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/AccentColor.colorset/Contents.json b/Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/AccentColor.colorset/Contents.json rename to Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json b/Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/Contents.json b/Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/Contents.json similarity index 100% rename from Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/Contents.json rename to Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/Contents.json diff --git a/Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json b/Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json similarity index 100% rename from Application/DevLogApp/WidgetExtension/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json rename to Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json diff --git a/Application/DevLogApp/WidgetExtension/Resource/DevLogWidget.entitlements b/Application/Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements similarity index 100% rename from Application/DevLogApp/WidgetExtension/Resource/DevLogWidget.entitlements rename to Application/Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements diff --git a/Application/DevLogApp/WidgetExtension/Resource/Info.plist b/Application/Widget/DevLogWidgetExtension/Resource/Info.plist similarity index 100% rename from Application/DevLogApp/WidgetExtension/Resource/Info.plist rename to Application/Widget/DevLogWidgetExtension/Resource/Info.plist diff --git a/Application/DevLogApp/WidgetExtension/Resource/Localizable.xcstrings b/Application/Widget/DevLogWidgetExtension/Resource/Localizable.xcstrings similarity index 100% rename from Application/DevLogApp/WidgetExtension/Resource/Localizable.xcstrings rename to Application/Widget/DevLogWidgetExtension/Resource/Localizable.xcstrings diff --git a/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidget.swift b/Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidget.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Today/TodayTodoWidget.swift rename to Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidget.swift diff --git a/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetConfigurationIntent.swift b/Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetConfigurationIntent.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetConfigurationIntent.swift rename to Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetConfigurationIntent.swift diff --git a/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetEntry.swift b/Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetEntry.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetEntry.swift rename to Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetEntry.swift diff --git a/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetEntryView.swift b/Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetEntryView.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetEntryView.swift rename to Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetEntryView.swift diff --git a/Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetProvider.swift b/Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetProvider.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Today/TodayTodoWidgetProvider.swift rename to Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetProvider.swift diff --git a/Application/DevLogApp/WidgetExtension/Today/TodayWidgetSnapshot.swift b/Application/Widget/DevLogWidgetExtension/Today/TodayWidgetSnapshot.swift similarity index 100% rename from Application/DevLogApp/WidgetExtension/Today/TodayWidgetSnapshot.swift rename to Application/Widget/DevLogWidgetExtension/Today/TodayWidgetSnapshot.swift diff --git a/Application/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj b/Application/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj similarity index 100% rename from Application/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj rename to Application/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj diff --git a/Application/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme b/Application/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme similarity index 100% rename from Application/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme rename to Application/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme diff --git a/Application/DevLogWidgetShared/Sources/Calendar.swift b/Application/Widget/DevLogWidgetShared/Sources/Calendar.swift similarity index 100% rename from Application/DevLogWidgetShared/Sources/Calendar.swift rename to Application/Widget/DevLogWidgetShared/Sources/Calendar.swift diff --git a/Application/DevLogWidgetShared/Sources/WidgetAppGroup.swift b/Application/Widget/DevLogWidgetShared/Sources/WidgetAppGroup.swift similarity index 100% rename from Application/DevLogWidgetShared/Sources/WidgetAppGroup.swift rename to Application/Widget/DevLogWidgetShared/Sources/WidgetAppGroup.swift diff --git a/Application/DevLogWidgetShared/Sources/WidgetDeepLink.swift b/Application/Widget/DevLogWidgetShared/Sources/WidgetDeepLink.swift similarity index 100% rename from Application/DevLogWidgetShared/Sources/WidgetDeepLink.swift rename to Application/Widget/DevLogWidgetShared/Sources/WidgetDeepLink.swift diff --git a/Application/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift b/Application/Widget/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift similarity index 100% rename from Application/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift rename to Application/Widget/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift diff --git a/Application/DevLogWidgetShared/Sources/WidgetKind.swift b/Application/Widget/DevLogWidgetShared/Sources/WidgetKind.swift similarity index 100% rename from Application/DevLogWidgetShared/Sources/WidgetKind.swift rename to Application/Widget/DevLogWidgetShared/Sources/WidgetKind.swift diff --git a/Application/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift b/Application/Widget/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift similarity index 100% rename from Application/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift rename to Application/Widget/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift diff --git a/DevLog.xcodeproj/project.pbxproj b/DevLog.xcodeproj/project.pbxproj index 4028d0eb..b0609708 100644 --- a/DevLog.xcodeproj/project.pbxproj +++ b/DevLog.xcodeproj/project.pbxproj @@ -230,9 +230,9 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = Application/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; + 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = Application/DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; - 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = Application/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; + 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = Application/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogUI.xcodeproj; path = Application/DevLogUI/DevLogUI.xcodeproj; sourceTree = ""; }; 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogStorage.xcodeproj; path = Application/DevLogStorage/DevLogStorage.xcodeproj; sourceTree = ""; }; CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogInfra.xcodeproj; path = Application/DevLogInfra/DevLogInfra.xcodeproj; sourceTree = ""; }; @@ -256,7 +256,7 @@ ); target = DFD48AFF2DC4D6E2005905C5 /* DevLog */; }; - 6D865D5656AAAB2BB495EB93 /* Exceptions for "Application/DevLogApp/WidgetExtension" folder in "DevLogWidgetExtension" target */ = { + 6D865D5656AAAB2BB495EB93 /* Exceptions for "Application/Widget/DevLogWidgetExtension" folder in "DevLogWidgetExtension" target */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( Resource/Info.plist, @@ -281,12 +281,12 @@ path = Application/DevLogApp/Sources; sourceTree = ""; }; - DFD3A9752F8E89DD001DA7CD /* Application/DevLogApp/WidgetExtension */ = { + DFD3A9752F8E89DD001DA7CD /* Application/Widget/DevLogWidgetExtension */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( - 6D865D5656AAAB2BB495EB93 /* Exceptions for "Application/DevLogApp/WidgetExtension" folder in "DevLogWidgetExtension" target */, + 6D865D5656AAAB2BB495EB93 /* Exceptions for "Application/Widget/DevLogWidgetExtension" folder in "DevLogWidgetExtension" target */, ); - path = Application/DevLogApp/WidgetExtension; + path = Application/Widget/DevLogWidgetExtension; sourceTree = ""; }; /* End PBXFileSystemSynchronizedRootGroup section */ @@ -356,7 +356,7 @@ DFD6453F2EC827A10073E133 /* .gitignore */, DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */, DF34164A2E45F67C00F9312B /* DevLog_Unit */, - DFD3A9752F8E89DD001DA7CD /* Application/DevLogApp/WidgetExtension */, + DFD3A9752F8E89DD001DA7CD /* Application/Widget/DevLogWidgetExtension */, DFE28EB62DCCF26300B28FE5 /* Frameworks */, DFD48B012DC4D6E2005905C5 /* Products */, 4F3D8CEC7F23C3BFF6B9E27B /* Projects */, @@ -432,7 +432,7 @@ 0AB29A08B809E8A2E1AD6CA3 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - DFD3A9752F8E89DD001DA7CD /* Application/DevLogApp/WidgetExtension */, + DFD3A9752F8E89DD001DA7CD /* Application/Widget/DevLogWidgetExtension */, ); name = DevLogWidgetExtension; productName = DevLogWidgetExtension; @@ -837,13 +837,13 @@ buildSettings = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; - CODE_SIGN_ENTITLEMENTS = Application/DevLogApp/WidgetExtension/Resource/DevLogWidget.entitlements; + CODE_SIGN_ENTITLEMENTS = Application/Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 4CPC6N38WA; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Application/DevLogApp/WidgetExtension/Resource/Info.plist; + INFOPLIST_FILE = Application/Widget/DevLogWidgetExtension/Resource/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = DevLogWidget; INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 17; @@ -873,13 +873,13 @@ buildSettings = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; - CODE_SIGN_ENTITLEMENTS = Application/DevLogApp/WidgetExtension/Resource/DevLogWidget.entitlements; + CODE_SIGN_ENTITLEMENTS = Application/Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 4CPC6N38WA; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Application/DevLogApp/WidgetExtension/Resource/Info.plist; + INFOPLIST_FILE = Application/Widget/DevLogWidgetExtension/Resource/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = DevLogWidget; INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 17; From ca472e299cff58d55a225a4519904035b1d2bcea Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 10:38:56 +0900 Subject: [PATCH 11/46] =?UTF-8?q?refactor:=20DevLogCore=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=EB=A1=9C=20DI=20=EC=97=AD=ED=95=A0=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contents.xcworkspacedata | 3 + .../App/Assembler/AppLayerAssembler.swift | 2 + .../Sources/App/Assembler/Assembler.swift | 4 +- .../Sources/App/Assembler/DataAssembler.swift | 2 + .../App/Assembler/DomainAssembler.swift | 22 +- .../App/Assembler/InfraAssembler.swift | 2 + .../App/Assembler/PersistenceAssembler.swift | 2 + .../Sources/App/Delegate/AppDelegate.swift | 1 + .../DevLogApp/Sources/App/DevLogApp.swift | 1 + .../DevLogApp/Sources/App/RootView.swift | 1 + .../DevLogCore.xcodeproj/project.pbxproj | 355 ++++++++++++++++++ .../xcschemes/DevLogCore.xcscheme | 58 +++ .../DevLogCore/Sources/Assembler.swift | 10 + .../Sources}/DIContainer.swift | 26 +- .../Sources}/DIContainerKey.swift | 6 +- .../DevLogUI.xcodeproj/project.pbxproj | 36 ++ .../Sources/Home/HomeViewCoordinator.swift | 1 + .../Sources/Home/TodoDetailView.swift | 1 + .../Sources/Home/TodoEditorView.swift | 1 + .../DevLogUI/Sources/Home/TodoListView.swift | 1 + .../DevLogUI/Sources/Main/MainView.swift | 1 + .../Sources/Main/MainViewCoordinator.swift | 1 + .../Sources/Profile/ProfileView.swift | 1 + .../PushNotificationListView.swift | 1 + .../DevLogUI/Sources/Search/SearchView.swift | 1 + .../Sources/Setting/SettingView.swift | 1 + .../Sources/Today/TodayViewCoordinator.swift | 1 + DevLog.xcodeproj/project.pbxproj | 36 ++ 28 files changed, 549 insertions(+), 29 deletions(-) create mode 100644 Application/DevLogCore/DevLogCore.xcodeproj/project.pbxproj create mode 100644 Application/DevLogCore/DevLogCore.xcodeproj/xcshareddata/xcschemes/DevLogCore.xcscheme create mode 100644 Application/DevLogCore/Sources/Assembler.swift rename Application/{DevLogApp/Sources/App => DevLogCore/Sources}/DIContainer.swift (80%) rename Application/{DevLogApp/Sources/App => DevLogCore/Sources}/DIContainerKey.swift (78%) diff --git a/Application/DevLog.xcworkspace/contents.xcworkspacedata b/Application/DevLog.xcworkspace/contents.xcworkspacedata index 8e69992b..7ea7b199 100644 --- a/Application/DevLog.xcworkspace/contents.xcworkspacedata +++ b/Application/DevLog.xcworkspace/contents.xcworkspacedata @@ -4,6 +4,9 @@ + + diff --git a/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift index bf6afad2..9c7ddd45 100644 --- a/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift @@ -5,6 +5,8 @@ // Created by opfic on 3/19/26. // +import DevLogCore + final class AppLayerAssembler: Assembler { func assemble(_ container: any DIContainer) { container.register(WidgetSyncEventBus.self) { diff --git a/Application/DevLogApp/Sources/App/Assembler/Assembler.swift b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift index ca5f99fd..92693f9f 100644 --- a/Application/DevLogApp/Sources/App/Assembler/Assembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift @@ -5,9 +5,7 @@ // Created by 최윤진 on 12/7/25. // -protocol Assembler { - func assemble(_ container: DIContainer) -} +import DevLogCore final class AppAssembler: Assembler { private let assemblers: [Assembler] = [ diff --git a/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift index d62a519f..1efd1379 100644 --- a/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift @@ -5,6 +5,8 @@ // Created by 최윤진 on 12/7/25. // +import DevLogCore + final class DataAssembler: Assembler { func assemble(_ container: any DIContainer) { container.register(AuthenticationRepository.self) { diff --git a/Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift index 920c4965..cb5237af 100644 --- a/Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift @@ -5,8 +5,10 @@ // Created by 최윤진 on 12/7/25. // +import DevLogCore + final class DomainAssembler: Assembler { - func assemble(_ container: DIContainer) { + func assemble(_ container: any DIContainer) { registerAuthUseCases(container) registerConnectivityUseCases(container) registerAuthProviderUseCases(container) @@ -20,7 +22,7 @@ final class DomainAssembler: Assembler { } private extension DomainAssembler { - func registerAuthUseCases(_ container: DIContainer) { + func registerAuthUseCases(_ container: any DIContainer) { container.register(SignInUseCase.self) { SignInUseCaseImpl(container.resolve(AuthenticationRepository.self)) } @@ -38,7 +40,7 @@ private extension DomainAssembler { } } - func registerConnectivityUseCases(_ container: DIContainer) { + func registerConnectivityUseCases(_ container: any DIContainer) { container.register(ObserveNetworkConnectivityUseCase.self) { ObserveNetworkConnectivityUseCaseImpl( container.resolve(NetworkConnectivityRepository.self) @@ -46,7 +48,7 @@ private extension DomainAssembler { } } - func registerAuthProviderUseCases(_ container: DIContainer) { + func registerAuthProviderUseCases(_ container: any DIContainer) { container.register(FetchAuthProvidersUseCase.self) { FetchAuthProvidersUseCaseImpl(container.resolve(AuthDataRepository.self)) } @@ -60,7 +62,7 @@ private extension DomainAssembler { } } - func registerTodoUseCases(_ container: DIContainer) { + func registerTodoUseCases(_ container: any DIContainer) { container.register(FetchTodoByIdUseCase.self) { FetchTodoByIdUseCaseImpl(container.resolve(TodoRepository.self)) } @@ -86,7 +88,7 @@ private extension DomainAssembler { } } - func registerTodoCategoryUseCases(_ container: DIContainer) { + func registerTodoCategoryUseCases(_ container: any DIContainer) { container.register(FetchTodoCategoryPreferencesUseCase.self) { FetchTodoCategoryPreferencesUseCaseImpl( container.resolve(TodoCategoryRepository.self) @@ -100,7 +102,7 @@ private extension DomainAssembler { } } - func registerUserDataUseCases(_ container: DIContainer) { + func registerUserDataUseCases(_ container: any DIContainer) { container.register(FetchUserDataUseCase.self) { FetchUserDataUseCaseImpl(container.resolve(UserDataRepository.self)) } @@ -110,7 +112,7 @@ private extension DomainAssembler { } } - func registerPushNotificationUseCases(_ container: DIContainer) { + func registerPushNotificationUseCases(_ container: any DIContainer) { container.register(FetchPushSettingsUseCase.self) { FetchPushNotificationSettingsUseCaseImpl(container.resolve(PushNotificationRepository.self)) } @@ -140,7 +142,7 @@ private extension DomainAssembler { } } - func registerWebPageUseCases(_ container: DIContainer) { + func registerWebPageUseCases(_ container: any DIContainer) { container.register(FetchWebPagesUseCase.self) { FetchWebPagesUseCaseImpl(container.resolve(WebPageRepository.self)) } @@ -166,7 +168,7 @@ private extension DomainAssembler { } } - func registerUserPreferencesUseCases(_ container: DIContainer) { + func registerUserPreferencesUseCases(_ container: any DIContainer) { container.register(ObserveSystemThemeUseCase.self) { ObserveSystemThemeUseCaseImpl(container.resolve(UserPreferencesRepository.self)) } diff --git a/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift index e7086b9f..9ad006b2 100644 --- a/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift @@ -5,6 +5,8 @@ // Created by 최윤진 on 12/7/25. // +import DevLogCore + final class InfraAssembler: Assembler { func assemble(_ container: any DIContainer) { container.register( diff --git a/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift index a179110e..db1eef00 100644 --- a/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift @@ -5,6 +5,8 @@ // Created by opfic on 3/15/26. // +import DevLogCore + final class PersistenceAssembler: Assembler { func assemble(_ container: any DIContainer) { container.register(UserDefaultsStore.self) { diff --git a/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift b/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift index b779384f..bb643f3b 100644 --- a/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift +++ b/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift @@ -6,6 +6,7 @@ // import UIKit +import DevLogCore import Firebase import GoogleSignIn diff --git a/Application/DevLogApp/Sources/App/DevLogApp.swift b/Application/DevLogApp/Sources/App/DevLogApp.swift index ee994292..2ffd2c08 100644 --- a/Application/DevLogApp/Sources/App/DevLogApp.swift +++ b/Application/DevLogApp/Sources/App/DevLogApp.swift @@ -6,6 +6,7 @@ // import SwiftUI +import DevLogCore @main struct DevLogApp: App { diff --git a/Application/DevLogApp/Sources/App/RootView.swift b/Application/DevLogApp/Sources/App/RootView.swift index 84f2c47c..ca7eeb5b 100644 --- a/Application/DevLogApp/Sources/App/RootView.swift +++ b/Application/DevLogApp/Sources/App/RootView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import DevLogCore struct RootView: View { @Environment(\.diContainer) var container: DIContainer diff --git a/Application/DevLogCore/DevLogCore.xcodeproj/project.pbxproj b/Application/DevLogCore/DevLogCore.xcodeproj/project.pbxproj new file mode 100644 index 00000000..b19d8fff --- /dev/null +++ b/Application/DevLogCore/DevLogCore.xcodeproj/project.pbxproj @@ -0,0 +1,355 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 18BA78C685175B1BC0DEFCCB /* DIContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2B11CDF5A711E473115E8E3 /* DIContainer.swift */; }; + 2D055D7F21B321D6CCD40A16 /* Assembler.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEF84B2C1BD8C8ED1F6A5A36 /* Assembler.swift */; }; + 6C3457965AC3DE2CD7E8F88B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 814ECC408D237131E365FC92 /* Foundation.framework */; }; + 83B6C8EF4EC3C621C760D1D9 /* DIContainerKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = F73A6F95CE0B1E3E95F0E38C /* DIContainerKey.swift */; }; + 9F2C5C9D87F694B2E82DD1F6 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2BC15A37223F5B128C8DE92 /* SwiftUI.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 814ECC408D237131E365FC92 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 9E9FD7B09D0D7EAB8B828A5E /* DevLogCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C2B11CDF5A711E473115E8E3 /* DIContainer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DIContainer.swift; path = Sources/DIContainer.swift; sourceTree = ""; }; + D2BC15A37223F5B128C8DE92 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/SwiftUI.framework; sourceTree = DEVELOPER_DIR; }; + DEF84B2C1BD8C8ED1F6A5A36 /* Assembler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Assembler.swift; path = Sources/Assembler.swift; sourceTree = ""; }; + F73A6F95CE0B1E3E95F0E38C /* DIContainerKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DIContainerKey.swift; path = Sources/DIContainerKey.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + B36EC59A07DCF6BD1DCD4667 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6C3457965AC3DE2CD7E8F88B /* Foundation.framework in Frameworks */, + 9F2C5C9D87F694B2E82DD1F6 /* SwiftUI.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3A2B4275F79E5911D714CC6A /* Frameworks */ = { + isa = PBXGroup; + children = ( + CC38F8B599D9AFD777F4CF21 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + B66C037F848BDEE68DAC8902 /* Products */ = { + isa = PBXGroup; + children = ( + 9E9FD7B09D0D7EAB8B828A5E /* DevLogCore.framework */, + ); + name = Products; + sourceTree = ""; + }; + C0DE4BE90CB1A6B4CEDFCA61 = { + isa = PBXGroup; + children = ( + B66C037F848BDEE68DAC8902 /* Products */, + 3A2B4275F79E5911D714CC6A /* Frameworks */, + DA0865721A6D430B66025E66 /* DevLogCore */, + ); + sourceTree = ""; + }; + CC38F8B599D9AFD777F4CF21 /* iOS */ = { + isa = PBXGroup; + children = ( + 814ECC408D237131E365FC92 /* Foundation.framework */, + D2BC15A37223F5B128C8DE92 /* SwiftUI.framework */, + ); + name = iOS; + sourceTree = ""; + }; + DA0865721A6D430B66025E66 /* DevLogCore */ = { + isa = PBXGroup; + children = ( + DEF84B2C1BD8C8ED1F6A5A36 /* Assembler.swift */, + C2B11CDF5A711E473115E8E3 /* DIContainer.swift */, + F73A6F95CE0B1E3E95F0E38C /* DIContainerKey.swift */, + ); + name = DevLogCore; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 345C56D731B240D9209C739D /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 5755BDB768C11CE0FDEA4828 /* DevLogCore */ = { + isa = PBXNativeTarget; + buildConfigurationList = 619CC6CBC0D2FBA1B1D3AD2B /* Build configuration list for PBXNativeTarget "DevLogCore" */; + buildPhases = ( + 345C56D731B240D9209C739D /* Headers */, + A7C9D6BE813475D614E5A95D /* Sources */, + B36EC59A07DCF6BD1DCD4667 /* Frameworks */, + 6DAD9D3DB11C5C6B2F92C1F0 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = DevLogCore; + productName = DevLogCore; + productReference = 9E9FD7B09D0D7EAB8B828A5E /* DevLogCore.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3CF16EA616D3B65329E78465 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1600; + LastUpgradeCheck = 1600; + }; + buildConfigurationList = FAE9B719E52217CA1B55B989 /* Build configuration list for PBXProject "DevLogCore" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = C0DE4BE90CB1A6B4CEDFCA61; + minimizedProjectReferenceProxies = 0; + preferredProjectObjectVersion = 77; + productRefGroup = B66C037F848BDEE68DAC8902 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 5755BDB768C11CE0FDEA4828 /* DevLogCore */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 6DAD9D3DB11C5C6B2F92C1F0 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + A7C9D6BE813475D614E5A95D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2D055D7F21B321D6CCD40A16 /* Assembler.swift in Sources */, + 18BA78C685175B1BC0DEFCCB /* DIContainer.swift in Sources */, + 83B6C8EF4EC3C621C760D1D9 /* DIContainerKey.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 0095EA3D0E3FC18B545418BE /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogCore; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B22A027E657DD85A9516F14C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + CE0953D10C4F8C380398A44D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + GENERATE_INFOPLIST_FILE = YES; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogCore; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + CEBA7A8B66FE2E8ED4AEDF32 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 619CC6CBC0D2FBA1B1D3AD2B /* Build configuration list for PBXNativeTarget "DevLogCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CE0953D10C4F8C380398A44D /* Release */, + 0095EA3D0E3FC18B545418BE /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FAE9B719E52217CA1B55B989 /* Build configuration list for PBXProject "DevLogCore" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CEBA7A8B66FE2E8ED4AEDF32 /* Debug */, + B22A027E657DD85A9516F14C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3CF16EA616D3B65329E78465 /* Project object */; +} diff --git a/Application/DevLogCore/DevLogCore.xcodeproj/xcshareddata/xcschemes/DevLogCore.xcscheme b/Application/DevLogCore/DevLogCore.xcodeproj/xcshareddata/xcschemes/DevLogCore.xcscheme new file mode 100644 index 00000000..7a239a07 --- /dev/null +++ b/Application/DevLogCore/DevLogCore.xcodeproj/xcshareddata/xcschemes/DevLogCore.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Application/DevLogCore/Sources/Assembler.swift b/Application/DevLogCore/Sources/Assembler.swift new file mode 100644 index 00000000..55d31228 --- /dev/null +++ b/Application/DevLogCore/Sources/Assembler.swift @@ -0,0 +1,10 @@ +// +// Assembler.swift +// DevLogCore +// +// Created by opfic on 5/15/26. +// + +public protocol Assembler { + func assemble(_ container: any DIContainer) +} diff --git a/Application/DevLogApp/Sources/App/DIContainer.swift b/Application/DevLogCore/Sources/DIContainer.swift similarity index 80% rename from Application/DevLogApp/Sources/App/DIContainer.swift rename to Application/DevLogCore/Sources/DIContainer.swift index a1644fa0..9993ef5c 100644 --- a/Application/DevLogApp/Sources/App/DIContainer.swift +++ b/Application/DevLogCore/Sources/DIContainer.swift @@ -1,30 +1,30 @@ // // DIContainer.swift -// DevLog +// DevLogCore // -// Created by 최윤진 on 11/16/25. +// Created by opfic on 5/15/26. // import Foundation -struct DependencyName: Hashable, ExpressibleByStringLiteral { - let rawValue: String +public struct DependencyName: Hashable, ExpressibleByStringLiteral { + public let rawValue: String - init(rawValue: String) { + public init(rawValue: String) { self.rawValue = rawValue } - init(stringLiteral value: String) { + public init(stringLiteral value: String) { self.rawValue = value } } -enum DependencyScope { +public enum DependencyScope { case singleton case transient } -protocol DIContainer { +public protocol DIContainer { func register( _ type: T.Type, name: DependencyName?, @@ -35,7 +35,7 @@ protocol DIContainer { func resolve(_ type: T.Type, name: DependencyName?) -> T } -extension DIContainer { +public extension DIContainer { func register( _ type: T.Type, name: DependencyName? = nil, @@ -50,8 +50,8 @@ extension DIContainer { } } -final class AppDIContainer: DIContainer { - static let shared = AppDIContainer() +public final class AppDIContainer: DIContainer { + public static let shared = AppDIContainer() private let lock = NSRecursiveLock() @@ -70,7 +70,7 @@ final class AppDIContainer: DIContainer { private var registrations = [Key: Registration]() private var singletons = [Key: Any]() - func register( + public func register( _ type: T.Type, name: DependencyName? = nil, scope: DependencyScope = .singleton, @@ -83,7 +83,7 @@ final class AppDIContainer: DIContainer { registrations[key] = Registration(scope: scope, factory: factory) } - func resolve(_ type: T.Type, name: DependencyName? = nil) -> T { + public func resolve(_ type: T.Type, name: DependencyName? = nil) -> T { lock.lock() defer { lock.unlock() } diff --git a/Application/DevLogApp/Sources/App/DIContainerKey.swift b/Application/DevLogCore/Sources/DIContainerKey.swift similarity index 78% rename from Application/DevLogApp/Sources/App/DIContainerKey.swift rename to Application/DevLogCore/Sources/DIContainerKey.swift index 01ddae17..28ec5372 100644 --- a/Application/DevLogApp/Sources/App/DIContainerKey.swift +++ b/Application/DevLogCore/Sources/DIContainerKey.swift @@ -1,8 +1,8 @@ // // DIContainerKey.swift -// DevLog +// DevLogCore // -// Created by 최윤진 on 12/14/25. +// Created by opfic on 5/15/26. // import SwiftUI @@ -11,7 +11,7 @@ private struct DIContainerKey: EnvironmentKey { static let defaultValue: any DIContainer = AppDIContainer.shared } -extension EnvironmentValues { +public extension EnvironmentValues { var diContainer: any DIContainer { get { self[DIContainerKey.self] } set { self[DIContainerKey.self] = newValue } diff --git a/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj b/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj index cc4c3d3c..98130783 100644 --- a/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj +++ b/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj @@ -17,6 +17,7 @@ 26FA5A7B5E8EDE1B8B6BEE4C /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4255A04E841570A664D15C72 /* SearchView.swift */; }; 2781DD85BEB0D586F730C53C /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F04A173095F3737E4487EF7 /* ProfileView.swift */; }; 2A16034EA7F17361A17B80AA /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A7EFE823B69A90528963EA6 /* DevLogPresentation.framework */; }; + 0A11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E11B22C33D44E55F6677889 /* DevLogCore.framework */; }; 3120506A710A0B6505226C05 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 423A6FE16D5EC7FECF77A31A /* MarkdownUI */; }; 33374D81BED973A28E95EB88 /* HeatmapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */; }; 3568FBF125892AF4577A533B /* PushNotificationListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */; }; @@ -54,6 +55,20 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 0B11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogCore; + }; + 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; + remoteInfo = Subproject; + }; 4B34A432C50DB9586CA58C58 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */; @@ -85,6 +100,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsView.swift; path = Sources/Setting/PushNotificationSettingsView.swift; sourceTree = ""; }; 192A2827C2D676A1AE820FBA /* CacheableImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheableImage.swift; path = Sources/Common/Component/CacheableImage.swift; sourceTree = ""; }; 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginButton.swift; path = Sources/Common/Component/LoginButton.swift; sourceTree = ""; }; @@ -135,6 +151,7 @@ buildActionMask = 2147483647; files = ( DCF1DA50663107DA4687A0D4 /* Foundation.framework in Frameworks */, + 0A11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */, A4AD1EE45C758CF4DBA545A9 /* DevLogDomain.framework in Frameworks */, 2A16034EA7F17361A17B80AA /* DevLogPresentation.framework in Frameworks */, 3120506A710A0B6505226C05 /* MarkdownUI in Frameworks */, @@ -209,6 +226,7 @@ 6C60332595233030EAFFE839 /* Projects */ = { isa = PBXGroup; children = ( + 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */, 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */, 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */, ); @@ -299,6 +317,7 @@ isa = PBXGroup; children = ( EF72EFD447F4FDC1142BABA1 /* DevLogUI.framework */, + 0E11B22C33D44E55F6677889 /* DevLogCore.framework */, 03163FCF510FAA69D772F466 /* DevLogDomain.framework */, 2A7EFE823B69A90528963EA6 /* DevLogPresentation.framework */, ); @@ -349,6 +368,7 @@ buildRules = ( ); dependencies = ( + 0F11B22C33D44E55F6677889 /* PBXTargetDependency */, 20304BBBBB4E5B09A653B1F4 /* PBXTargetDependency */, 4F02ECB9EB26770F47EC2D36 /* PBXTargetDependency */, ); @@ -390,6 +410,10 @@ productRefGroup = B68C915FE344171A3A1311EF /* Products */; projectDirPath = ""; projectReferences = ( + { + ProductGroup = B68C915FE344171A3A1311EF /* Products */; + ProjectRef = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; + }, { ProductGroup = B68C915FE344171A3A1311EF /* Products */; ProjectRef = 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */; @@ -407,6 +431,13 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + 0E11B22C33D44E55F6677889 /* DevLogCore.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogCore.framework; + remoteRef = 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 03163FCF510FAA69D772F466 /* DevLogDomain.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -482,6 +513,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 0F11B22C33D44E55F6677889 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogCore; + targetProxy = 0B11B22C33D44E55F6677889 /* PBXContainerItemProxy */; + }; 20304BBBBB4E5B09A653B1F4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDomain; diff --git a/Application/DevLogUI/Sources/Home/HomeViewCoordinator.swift b/Application/DevLogUI/Sources/Home/HomeViewCoordinator.swift index d0578c1b..905e40f5 100644 --- a/Application/DevLogUI/Sources/Home/HomeViewCoordinator.swift +++ b/Application/DevLogUI/Sources/Home/HomeViewCoordinator.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogCore import DevLogDomain import DevLogPresentation diff --git a/Application/DevLogUI/Sources/Home/TodoDetailView.swift b/Application/DevLogUI/Sources/Home/TodoDetailView.swift index 398b3779..d2953bb3 100644 --- a/Application/DevLogUI/Sources/Home/TodoDetailView.swift +++ b/Application/DevLogUI/Sources/Home/TodoDetailView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import DevLogCore import DevLogDomain import DevLogPresentation diff --git a/Application/DevLogUI/Sources/Home/TodoEditorView.swift b/Application/DevLogUI/Sources/Home/TodoEditorView.swift index bff0e77e..5b3713fb 100644 --- a/Application/DevLogUI/Sources/Home/TodoEditorView.swift +++ b/Application/DevLogUI/Sources/Home/TodoEditorView.swift @@ -8,6 +8,7 @@ import MarkdownUI import OrderedCollections import SwiftUI +import DevLogCore import DevLogDomain import DevLogPresentation diff --git a/Application/DevLogUI/Sources/Home/TodoListView.swift b/Application/DevLogUI/Sources/Home/TodoListView.swift index afb27ad0..1a6924bf 100644 --- a/Application/DevLogUI/Sources/Home/TodoListView.swift +++ b/Application/DevLogUI/Sources/Home/TodoListView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import DevLogCore import DevLogDomain import DevLogPresentation diff --git a/Application/DevLogUI/Sources/Main/MainView.swift b/Application/DevLogUI/Sources/Main/MainView.swift index 6138d223..79368e9e 100644 --- a/Application/DevLogUI/Sources/Main/MainView.swift +++ b/Application/DevLogUI/Sources/Main/MainView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import DevLogCore import DevLogDomain import DevLogPresentation diff --git a/Application/DevLogUI/Sources/Main/MainViewCoordinator.swift b/Application/DevLogUI/Sources/Main/MainViewCoordinator.swift index a094a731..9df3729e 100644 --- a/Application/DevLogUI/Sources/Main/MainViewCoordinator.swift +++ b/Application/DevLogUI/Sources/Main/MainViewCoordinator.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogCore import DevLogDomain import DevLogPresentation diff --git a/Application/DevLogUI/Sources/Profile/ProfileView.swift b/Application/DevLogUI/Sources/Profile/ProfileView.swift index e2085372..3b11da72 100644 --- a/Application/DevLogUI/Sources/Profile/ProfileView.swift +++ b/Application/DevLogUI/Sources/Profile/ProfileView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import DevLogCore import DevLogDomain import DevLogPresentation diff --git a/Application/DevLogUI/Sources/PushNotification/PushNotificationListView.swift b/Application/DevLogUI/Sources/PushNotification/PushNotificationListView.swift index a21bf762..9e97d1df 100644 --- a/Application/DevLogUI/Sources/PushNotification/PushNotificationListView.swift +++ b/Application/DevLogUI/Sources/PushNotification/PushNotificationListView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import DevLogCore import DevLogDomain import DevLogPresentation diff --git a/Application/DevLogUI/Sources/Search/SearchView.swift b/Application/DevLogUI/Sources/Search/SearchView.swift index 2ffbdbcb..7c0658bf 100644 --- a/Application/DevLogUI/Sources/Search/SearchView.swift +++ b/Application/DevLogUI/Sources/Search/SearchView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import DevLogCore import DevLogDomain import DevLogPresentation diff --git a/Application/DevLogUI/Sources/Setting/SettingView.swift b/Application/DevLogUI/Sources/Setting/SettingView.swift index d4e50944..3ee0353c 100644 --- a/Application/DevLogUI/Sources/Setting/SettingView.swift +++ b/Application/DevLogUI/Sources/Setting/SettingView.swift @@ -6,6 +6,7 @@ // import SwiftUI +import DevLogCore import DevLogDomain import DevLogPresentation diff --git a/Application/DevLogUI/Sources/Today/TodayViewCoordinator.swift b/Application/DevLogUI/Sources/Today/TodayViewCoordinator.swift index c9511635..608360f3 100644 --- a/Application/DevLogUI/Sources/Today/TodayViewCoordinator.swift +++ b/Application/DevLogUI/Sources/Today/TodayViewCoordinator.swift @@ -6,6 +6,7 @@ // import Foundation +import DevLogCore import DevLogDomain import DevLogPresentation diff --git a/DevLog.xcodeproj/project.pbxproj b/DevLog.xcodeproj/project.pbxproj index b0609708..b46b9902 100644 --- a/DevLog.xcodeproj/project.pbxproj +++ b/DevLog.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 0957A66CFE9CB98EA302CC22 /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */; }; + AB11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE11B22C33D44E55F6677889 /* DevLogCore.framework */; }; 1589C1EF4029ECBF15A842F0 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; }; 186E9AB4F0A79C50FE853607 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA49949C677DDE083F7DE29E /* DevLogDomain.framework */; }; 18D57A125ACCF0F6B11A7101 /* GoogleSignIn in Frameworks */ = {isa = PBXBuildFile; productRef = F972F1E8E0F5156FE9651020 /* GoogleSignIn */; }; @@ -31,6 +32,20 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + AC11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogCore; + }; + AD11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; + remoteInfo = Subproject; + }; 08788C32F0E85A76D975F825 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; @@ -230,6 +245,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = Application/DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = Application/DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = Application/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; @@ -313,6 +329,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + AB11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */, 186E9AB4F0A79C50FE853607 /* DevLogDomain.framework in Frameworks */, 8B41461F945DA9A94D3330F9 /* DevLogDataCommon.framework in Frameworks */, CA836545BFC2C01D1A1197AF /* DevLogDataDTO.framework in Frameworks */, @@ -337,6 +354,7 @@ 4F3D8CEC7F23C3BFF6B9E27B /* Projects */ = { isa = PBXGroup; children = ( + AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */, 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */, E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */, CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */, @@ -369,6 +387,7 @@ DF3416492E45F67C00F9312B /* DevLog_Unit.xctest */, DFD48B002DC4D6E2005905C5 /* DevLog.app */, DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */, + AE11B22C33D44E55F6677889 /* DevLogCore.framework */, DA49949C677DDE083F7DE29E /* DevLogDomain.framework */, DA04D8F5F1B04A3FBE8C5763 /* DevLogDataCommon.framework */, 5DF226704A710E19F3CCAD1A /* DevLogDataDTO.framework */, @@ -453,6 +472,7 @@ dependencies = ( DF66A07D2EA52E9F0098E643 /* PBXTargetDependency */, DFD3A97E2F8E89DF001DA7CD /* PBXTargetDependency */, + AF11B22C33D44E55F6677889 /* PBXTargetDependency */, 50D25760371BEF13D9781476 /* PBXTargetDependency */, 9AC24C8197811B1C56EA711D /* PBXTargetDependency */, FD5F4A6387D906469DD6FC9C /* PBXTargetDependency */, @@ -520,6 +540,10 @@ productRefGroup = DFD48B012DC4D6E2005905C5 /* Products */; projectDirPath = ""; projectReferences = ( + { + ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProjectRef = AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; + }, { ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; ProjectRef = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; @@ -563,6 +587,13 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + AE11B22C33D44E55F6677889 /* DevLogCore.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogCore.framework; + remoteRef = AD11B22C33D44E55F6677889 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -745,6 +776,11 @@ name = DevLogWidgetCore; targetProxy = D47319B34F77243F170E2A1A /* PBXContainerItemProxy */; }; + AF11B22C33D44E55F6677889 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogCore; + targetProxy = AC11B22C33D44E55F6677889 /* PBXContainerItemProxy */; + }; CAFCDC210D73DEF4316034B4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDataProtocol; From fda956a1c2f3abdb56a7b3e093eedfe1f6fb6d34 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 10:57:49 +0900 Subject: [PATCH 12/46] =?UTF-8?q?refactor:=20DevLogUI=EB=A5=BC=20DevLogPre?= =?UTF-8?q?sentation=EC=9C=BC=EB=A1=9C=20=ED=8E=B8=EC=9E=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contents.xcworkspacedata | 3 - .../xcshareddata/swiftpm/Package.resolved | 2 +- .../DevLogApp/Sources/App/DevLogApp.swift | 10 +- ...Tab.swift => MainTab+WidgetDeepLink.swift} | 13 +- .../App/Routing/PushNotificationRoute.swift | 17 +- .../project.pbxproj | 364 +++++++++ .../Common/Component/CacheableImage.swift | 1 - .../Sources/Common/Component/CheckBox.swift | 1 - .../Common/Component/LoadingView.swift | 1 - .../Common/Component/LoginButton.swift | 1 - .../Common/Component/RelativeTimeText.swift | 1 - .../Sources/Common/Component/Tag+.swift | 1 - .../Sources/Common/Component/Toast.swift | 1 - .../Common/Component/TodoItemRow.swift | 1 - .../Common/Component/ToolbarButton+.swift | 1 - .../Common/Component/UIKitTextEditor.swift | 1 - .../Sources/Common/Component/WebItemRow.swift | 1 - .../Common/NavigationBarConfigurator.swift | 1 - .../Sources/Common/NavigationRouter.swift | 1 - .../Common/TodoDetailContentView.swift | 1 - .../Sources/Common/TodoInfoSheetView.swift | 1 - .../Common/TodoMarkdownContentView.swift | 1 - .../Sources/Common/WebView.swift | 1 - .../Extension/EnvironmentValues+.swift | 1 - .../Sources/Extension/View+.swift | 1 - .../Sources/Home/HomeView.swift | 1 - .../Sources/Home/HomeViewCoordinator.swift | 1 - .../Sources/Home/TodoDetailView.swift | 1 - .../Sources/Home/TodoEditorView.swift | 1 - .../Sources/Home/TodoListView.swift | 1 - .../Sources/Home/TodoManageView.swift | 1 - .../Sources/Login/LoginView.swift | 1 - .../Sources/Main/MainView.swift | 1 - .../Sources/Main/MainViewCoordinator.swift | 1 - .../Sources/Profile/HeatmapView.swift | 1 - .../Sources/Profile/ProfileView.swift | 1 - .../PushNotificationListView.swift | 1 - .../Sources/Root}/RootView.swift | 48 +- .../Sources/Routing/MainTab.swift | 13 + .../Sources/Search/SearchView.swift | 1 - .../Sources/Setting/AccountView.swift | 1 - .../PushNotificationSettingsView.swift | 1 - .../Sources/Setting/SettingView.swift | 1 - .../Sources/Setting/ThemeView.swift | 1 - .../Sources/Today/TodayView.swift | 1 - .../Sources/Today/TodayViewCoordinator.swift | 1 - .../DevLogUI.xcodeproj/project.pbxproj | 767 ------------------ .../xcshareddata/xcschemes/DevLogUI.xcscheme | 58 -- DevLog.xcodeproj/project.pbxproj | 36 - 49 files changed, 434 insertions(+), 935 deletions(-) rename Application/DevLogApp/Sources/App/Routing/{MainTab.swift => MainTab+WidgetDeepLink.swift} (73%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/Component/CacheableImage.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/Component/CheckBox.swift (96%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/Component/LoadingView.swift (92%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/Component/LoginButton.swift (98%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/Component/RelativeTimeText.swift (98%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/Component/Tag+.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/Component/Toast.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/Component/TodoItemRow.swift (98%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/Component/ToolbarButton+.swift (98%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/Component/UIKitTextEditor.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/Component/WebItemRow.swift (98%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/NavigationBarConfigurator.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/NavigationRouter.swift (96%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/TodoDetailContentView.swift (98%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/TodoInfoSheetView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/TodoMarkdownContentView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Common/WebView.swift (94%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Extension/EnvironmentValues+.swift (98%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Extension/View+.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Home/HomeView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Home/HomeViewCoordinator.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Home/TodoDetailView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Home/TodoEditorView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Home/TodoListView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Home/TodoManageView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Login/LoginView.swift (98%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Main/MainView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Main/MainViewCoordinator.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Profile/HeatmapView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Profile/ProfileView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/PushNotification/PushNotificationListView.swift (99%) rename Application/{DevLogApp/Sources/App => DevLogPresentation/Sources/Root}/RootView.swift (62%) create mode 100644 Application/DevLogPresentation/Sources/Routing/MainTab.swift rename Application/{DevLogUI => DevLogPresentation}/Sources/Search/SearchView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Setting/AccountView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Setting/PushNotificationSettingsView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Setting/SettingView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Setting/ThemeView.swift (98%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Today/TodayView.swift (99%) rename Application/{DevLogUI => DevLogPresentation}/Sources/Today/TodayViewCoordinator.swift (96%) delete mode 100644 Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj delete mode 100644 Application/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme diff --git a/Application/DevLog.xcworkspace/contents.xcworkspacedata b/Application/DevLog.xcworkspace/contents.xcworkspacedata index 7ea7b199..3b523975 100644 --- a/Application/DevLog.xcworkspace/contents.xcworkspacedata +++ b/Application/DevLog.xcworkspace/contents.xcworkspacedata @@ -22,9 +22,6 @@ - - diff --git a/Application/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Application/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved index 5b3ba28a..c9fffc37 100644 --- a/Application/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Application/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "1650afe852ce40c482098b11ef14a1495112c88ef157ada628db7ce1132f8822", + "originHash" : "725d7e6de0281660a42e23ec24e8389420f3b373466c9f96baa68280ef6b09aa", "pins" : [ { "identity" : "abseil-cpp-binary", diff --git a/Application/DevLogApp/Sources/App/DevLogApp.swift b/Application/DevLogApp/Sources/App/DevLogApp.swift index 2ffd2c08..637c6549 100644 --- a/Application/DevLogApp/Sources/App/DevLogApp.swift +++ b/Application/DevLogApp/Sources/App/DevLogApp.swift @@ -7,6 +7,7 @@ import SwiftUI import DevLogCore +import DevLogPresentation @main struct DevLogApp: App { @@ -20,11 +21,14 @@ struct DevLogApp: App { var body: some Scene { WindowGroup { - RootView(viewModel: RootViewModel( + RootView( sessionUseCase: container.resolve(ObserveAuthSessionUseCase.self), networkConnectivityUseCase: container.resolve(ObserveNetworkConnectivityUseCase.self), - systemThemeUseCase: container.resolve(ObserveSystemThemeUseCase.self) - )) + systemThemeUseCase: container.resolve(ObserveSystemThemeUseCase.self), + widgetURLTab: { MainTab(widgetURL: $0) }, + pushNotificationTodoIdPublisher: PushNotificationRoute.shared.observe(), + clearPushNotificationRoute: { PushNotificationRoute.shared.clear() } + ) .autocorrectionDisabled() .onChange(of: scenePhase) { _, phase in guard phase == .background else { return } diff --git a/Application/DevLogApp/Sources/App/Routing/MainTab.swift b/Application/DevLogApp/Sources/App/Routing/MainTab+WidgetDeepLink.swift similarity index 73% rename from Application/DevLogApp/Sources/App/Routing/MainTab.swift rename to Application/DevLogApp/Sources/App/Routing/MainTab+WidgetDeepLink.swift index 96c9e525..1b65bad0 100644 --- a/Application/DevLogApp/Sources/App/Routing/MainTab.swift +++ b/Application/DevLogApp/Sources/App/Routing/MainTab+WidgetDeepLink.swift @@ -1,18 +1,15 @@ // -// MainTab.swift +// MainTab+WidgetDeepLink.swift // DevLog // -// Created by opfic on 4/30/26. +// Created by opfic on 5/15/26. // import Foundation +import DevLogPresentation +import DevLogWidgetShared -enum MainTab: Hashable { - case home - case today - case notification - case profile - +extension MainTab { init?(widgetURL: URL) { guard widgetURL.scheme?.lowercased() == WidgetDeepLink.scheme.lowercased() else { return nil } diff --git a/Application/DevLogApp/Sources/App/Routing/PushNotificationRoute.swift b/Application/DevLogApp/Sources/App/Routing/PushNotificationRoute.swift index 625e584e..7fa64157 100644 --- a/Application/DevLogApp/Sources/App/Routing/PushNotificationRoute.swift +++ b/Application/DevLogApp/Sources/App/Routing/PushNotificationRoute.swift @@ -8,33 +8,22 @@ import Foundation import Combine -enum AppRoute: Equatable, Identifiable { - case todoDetail(String) - - var id: String { - switch self { - case .todoDetail(let todoId): - return "todo:\(todoId)" - } - } -} - final class PushNotificationRoute { static let shared = PushNotificationRoute() - func observe() -> AnyPublisher { + func observe() -> AnyPublisher { subject .compactMap { $0 } .eraseToAnyPublisher() } - private let subject = CurrentValueSubject(nil) + private let subject = CurrentValueSubject(nil) private init() { } func handlePushTap(userInfo: [AnyHashable: Any]) { guard let todoId = extractTodoId(from: userInfo) else { return } - subject.send(.todoDetail(todoId)) + subject.send(todoId) } func clear() { diff --git a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj index 6a6655d6..8bd53a6a 100644 --- a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj +++ b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj @@ -44,6 +44,50 @@ E7EBEBA803A9449A6CBEF11B /* RecentTodoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */; }; E91B53D33C90B9298E0B2EA1 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */; }; FBD395A75EDED059CC021AF3 /* PushNotificationSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */; }; + 0553E143B544CD7ACD082298 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2A9C9F3E543201091571C00 /* LoadingView.swift */; }; + 071B4E6FE1D0DC0EF26E0705 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B01ACB5EB0ACD6D3233BA118 /* MainView.swift */; }; + 075FA5A9704297F5A51D765D /* ThemeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */; }; + 0CEB2B1729B59439362725A5 /* ToolbarButton+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */; }; + 1EC3663DB97BFF5D2D511DAF /* AccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC142E4A256288A6D73AEB3E /* AccountView.swift */; }; + 1F5831DA8EC5DCC3AF604DC7 /* TodoDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */; }; + 233981B375AF5EA066660B86 /* UIKitTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */; }; + 26FA5A7B5E8EDE1B8B6BEE4C /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4255A04E841570A664D15C72 /* SearchView.swift */; }; + 2781DD85BEB0D586F730C53C /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F04A173095F3737E4487EF7 /* ProfileView.swift */; }; + 33374D81BED973A28E95EB88 /* HeatmapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */; }; + 3568FBF125892AF4577A533B /* PushNotificationListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */; }; + 3C865F560E7A379D616F092D /* TodoManageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9340555B2B620464698851A5 /* TodoManageView.swift */; }; + 3E3A8CF9B7867748C06B02AD /* HomeViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */; }; + 4A7897CEB011769A2C01CB4C /* TodoEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */; }; + 4C497F6F2C1A7ADCE28CBF4D /* NavigationRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */; }; + 5417F145841A7CAF38C83F35 /* TodoListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B45C610096E5AC2967606A6 /* TodoListView.swift */; }; + 54FB7AB76BCAED80E9CB742D /* WebItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9A20E0402D598F5587EAFFE /* WebItemRow.swift */; }; + 73FF33B77C4FE6E19604D9AE /* View+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DF0168AAD4373A780DC5A51 /* View+.swift */; }; + 81F78FF2F35149E80FDA1BAF /* SettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CB6D9970E4286BA9A17C47C /* SettingView.swift */; }; + 8A11F86B28EC69A9D6CA4FD2 /* MainViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */; }; + 9225927FB28E8A2DD20DEF54 /* CacheableImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 192A2827C2D676A1AE820FBA /* CacheableImage.swift */; }; + 9A245A6C4C2FA8D55EA8840D /* TodoItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */; }; + 9E8EAA00729A59F67360F063 /* WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BB99F804DD47B96FCCFDC0 /* WebView.swift */; }; + AAA318D37BC97EFB4C785ECD /* TodoInfoSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */; }; + AEA3D50A9080249A6359476C /* CheckBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B72345FA909BFA40078D53 /* CheckBox.swift */; }; + B4A60A3AB524E4F9D68750C3 /* TodayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F51F902DA946EBFEEC4CD14B /* TodayView.swift */; }; + BABB40EAD145095BEC1ACB58 /* TodoDetailContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */; }; + BB77CD69698477D38EEB62DA /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EAB97486EC371BE330C70FE /* Toast.swift */; }; + BE5CF573B4B89C77F4A36A94 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2028F13D1316DD7D0229249 /* LoginView.swift */; }; + C4F0BBA11DCEC8017F541999 /* Tag+.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C555707203C5E83B5B5D7B /* Tag+.swift */; }; + C5654549920DB2EEBA5A3F07 /* NavigationBarConfigurator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */; }; + C85FD011138539C08D18D22F /* RelativeTimeText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */; }; + D12294635C147B35F3EA3314 /* PushNotificationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */; }; + D7ED2E08383517AA3E242B0C /* TodayViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */; }; + E9BE203BADA107278CFBDD54 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */; }; + F0B4DBB89733E466B105CF25 /* EnvironmentValues+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */; }; + F1474D4F84693113355B7DA2 /* TodoMarkdownContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */; }; + F99147DC6D6F48E3842CD204 /* LoginButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */; }; + 0A11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E11B22C33D44E55F6677889 /* DevLogCore.framework */; }; + 3120506A710A0B6505226C05 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 423A6FE16D5EC7FECF77A31A /* MarkdownUI */; }; + E69CD0D89DDDF4A68406680D /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = D06169FD4B643952DF59EDAE /* FirebaseAuth */; }; + + AA0000000000000000000001 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000002 /* RootView.swift */; }; + AA0000000000000000000003 /* MainTab.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000004 /* MainTab.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -103,6 +147,22 @@ remoteGlobalIDString = 3F08F6B94839E9021FCFC466; remoteInfo = Subproject; }; + + 0B11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogCore; + }; + + 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; + remoteInfo = Subproject; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -143,6 +203,48 @@ E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListViewModel.swift; path = Sources/ViewModel/PushNotificationListViewModel.swift; sourceTree = ""; }; F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserTodoCategoryItem.swift; path = Sources/Structure/Todo/UserTodoCategoryItem.swift; sourceTree = ""; }; F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RecentTodoItem.swift; path = Sources/Structure/Todo/RecentTodoItem.swift; sourceTree = ""; }; + 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsView.swift; path = Sources/Setting/PushNotificationSettingsView.swift; sourceTree = ""; }; + 192A2827C2D676A1AE820FBA /* CacheableImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheableImage.swift; path = Sources/Common/Component/CacheableImage.swift; sourceTree = ""; }; + 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginButton.swift; path = Sources/Common/Component/LoginButton.swift; sourceTree = ""; }; + 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoEditorView.swift; path = Sources/Home/TodoEditorView.swift; sourceTree = ""; }; + 27BB99F804DD47B96FCCFDC0 /* WebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebView.swift; path = Sources/Common/WebView.swift; sourceTree = ""; }; + 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RelativeTimeText.swift; path = Sources/Common/Component/RelativeTimeText.swift; sourceTree = ""; }; + 2B45C610096E5AC2967606A6 /* TodoListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListView.swift; path = Sources/Home/TodoListView.swift; sourceTree = ""; }; + 2EAB97486EC371BE330C70FE /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = Sources/Common/Component/Toast.swift; sourceTree = ""; }; + 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewCoordinator.swift; path = Sources/Main/MainViewCoordinator.swift; sourceTree = ""; }; + 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoItemRow.swift; path = Sources/Common/Component/TodoItemRow.swift; sourceTree = ""; }; + 4255A04E841570A664D15C72 /* SearchView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SearchView.swift; path = Sources/Search/SearchView.swift; sourceTree = ""; }; + 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewCoordinator.swift; path = Sources/Home/HomeViewCoordinator.swift; sourceTree = ""; }; + 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewCoordinator.swift; path = Sources/Today/TodayViewCoordinator.swift; sourceTree = ""; }; + 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationBarConfigurator.swift; path = Sources/Common/NavigationBarConfigurator.swift; sourceTree = ""; }; + 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationRouter.swift; path = Sources/Common/NavigationRouter.swift; sourceTree = ""; }; + 7F04A173095F3737E4487EF7 /* ProfileView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileView.swift; path = Sources/Profile/ProfileView.swift; sourceTree = ""; }; + 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapView.swift; path = Sources/Profile/HeatmapView.swift; sourceTree = ""; }; + 9340555B2B620464698851A5 /* TodoManageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageView.swift; path = Sources/Home/TodoManageView.swift; sourceTree = ""; }; + 93B72345FA909BFA40078D53 /* CheckBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CheckBox.swift; path = Sources/Common/Component/CheckBox.swift; sourceTree = ""; }; + 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIKitTextEditor.swift; path = Sources/Common/Component/UIKitTextEditor.swift; sourceTree = ""; }; + 9CB6D9970E4286BA9A17C47C /* SettingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingView.swift; path = Sources/Setting/SettingView.swift; sourceTree = ""; }; + 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeView.swift; path = Sources/Home/HomeView.swift; sourceTree = ""; }; + A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoMarkdownContentView.swift; path = Sources/Common/TodoMarkdownContentView.swift; sourceTree = ""; }; + A2A9C9F3E543201091571C00 /* LoadingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingView.swift; path = Sources/Common/Component/LoadingView.swift; sourceTree = ""; }; + AC142E4A256288A6D73AEB3E /* AccountView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccountView.swift; path = Sources/Setting/AccountView.swift; sourceTree = ""; }; + B01ACB5EB0ACD6D3233BA118 /* MainView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainView.swift; path = Sources/Main/MainView.swift; sourceTree = ""; }; + B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListView.swift; path = Sources/PushNotification/PushNotificationListView.swift; sourceTree = ""; }; + B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailView.swift; path = Sources/Home/TodoDetailView.swift; sourceTree = ""; }; + B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoInfoSheetView.swift; path = Sources/Common/TodoInfoSheetView.swift; sourceTree = ""; }; + D2028F13D1316DD7D0229249 /* LoginView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginView.swift; path = Sources/Login/LoginView.swift; sourceTree = ""; }; + D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailContentView.swift; path = Sources/Common/TodoDetailContentView.swift; sourceTree = ""; }; + F51F902DA946EBFEEC4CD14B /* TodayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayView.swift; path = Sources/Today/TodayView.swift; sourceTree = ""; }; + F9A20E0402D598F5587EAFFE /* WebItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebItemRow.swift; path = Sources/Common/Component/WebItemRow.swift; sourceTree = ""; }; + FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeView.swift; path = Sources/Setting/ThemeView.swift; sourceTree = ""; }; + 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ToolbarButton+.swift"; path = "Sources/Common/Component/ToolbarButton+.swift"; sourceTree = ""; }; + 3DF0168AAD4373A780DC5A51 /* View+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "View+.swift"; path = "Sources/Extension/View+.swift"; sourceTree = ""; }; + 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "EnvironmentValues+.swift"; path = "Sources/Extension/EnvironmentValues+.swift"; sourceTree = ""; }; + E0C555707203C5E83B5B5D7B /* Tag+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Tag+.swift"; path = "Sources/Common/Component/Tag+.swift"; sourceTree = ""; }; + 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; + + AA0000000000000000000002 /* RootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RootView.swift; path = Sources/Root/RootView.swift; sourceTree = ""; }; + AA0000000000000000000004 /* MainTab.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainTab.swift; path = Sources/Routing/MainTab.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -150,6 +252,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 0A11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */, + 3120506A710A0B6505226C05 /* MarkdownUI in Frameworks */, + E69CD0D89DDDF4A68406680D /* FirebaseAuth in Frameworks */, CC36598B842BA60E284D4A9E /* Foundation.framework in Frameworks */, E91B53D33C90B9298E0B2EA1 /* DevLogDomain.framework in Frameworks */, 18C98041FF04371B8D65344B /* DevLogDataCommon.framework in Frameworks */, @@ -163,6 +268,7 @@ 03D4331F04C462F4C642860F /* Products */ = { isa = PBXGroup; children = ( + 0E11B22C33D44E55F6677889 /* DevLogCore.framework */, 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */, 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */, E2DCC0B6BEE21E7E61E0D2C8 /* DevLogDataCommon.framework */, @@ -214,6 +320,7 @@ 65C85B83FD4ECCC13F82B90F /* Projects */ = { isa = PBXGroup; children = ( + 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */, B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */, 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */, ); @@ -269,6 +376,9 @@ A4A427D518004ED78EB659DE /* DevLogPresentation */ = { isa = PBXGroup; children = ( + AA0000000000000000000005 /* Root */, + AA0000000000000000000006 /* Routing */, + 7B53286AA9A58D5B6C0124F8 /* View */, 9DE70A3D1E020E5B69721DB1 /* Common */, 1193621431B4F1245A560067 /* Extension */, 1DB192900CD86ED478FCDE79 /* Protocol */, @@ -305,6 +415,167 @@ name = Todo; sourceTree = ""; }; + + 391861E77D429E229BF28568 /* Common */ = { + isa = PBXGroup; + children = ( + 5983BAD9E9F606A63646EDCA /* Component */, + 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */, + 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */, + D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */, + B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */, + A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */, + 27BB99F804DD47B96FCCFDC0 /* WebView.swift */, + ); + name = Common; + sourceTree = ""; + }; + + 5983BAD9E9F606A63646EDCA /* Component */ = { + isa = PBXGroup; + children = ( + 192A2827C2D676A1AE820FBA /* CacheableImage.swift */, + 93B72345FA909BFA40078D53 /* CheckBox.swift */, + A2A9C9F3E543201091571C00 /* LoadingView.swift */, + 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */, + 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */, + E0C555707203C5E83B5B5D7B /* Tag+.swift */, + 2EAB97486EC371BE330C70FE /* Toast.swift */, + 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */, + 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */, + 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */, + F9A20E0402D598F5587EAFFE /* WebItemRow.swift */, + ); + name = Component; + sourceTree = ""; + }; + + 7B53286AA9A58D5B6C0124F8 /* View */ = { + isa = PBXGroup; + children = ( + 391861E77D429E229BF28568 /* Common */, + A23CDC4BC6FDA11519571AC7 /* Extension */, + 9F3A0F708400485DC1E3E04C /* Home */, + 6F07FA4C10334C49DB907A3E /* Login */, + E9D0446D1E5AB2FEB1550B19 /* Main */, + 023934D19218F9AFBD084378 /* Profile */, + B180221771919A464EAE42F5 /* PushNotification */, + A034EAF6BC4F7B46C19357E5 /* Search */, + 3E8BE5E7BA89E9C06CB4680E /* Setting */, + 6F0FC545BB630F476F12C93F /* Today */, + ); + name = View; + sourceTree = ""; + }; + + A23CDC4BC6FDA11519571AC7 /* Extension */ = { + isa = PBXGroup; + children = ( + 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */, + 3DF0168AAD4373A780DC5A51 /* View+.swift */, + ); + name = Extension; + sourceTree = ""; + }; + + 9F3A0F708400485DC1E3E04C /* Home */ = { + isa = PBXGroup; + children = ( + 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */, + 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */, + B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */, + 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */, + 2B45C610096E5AC2967606A6 /* TodoListView.swift */, + 9340555B2B620464698851A5 /* TodoManageView.swift */, + ); + name = Home; + sourceTree = ""; + }; + + 6F07FA4C10334C49DB907A3E /* Login */ = { + isa = PBXGroup; + children = ( + D2028F13D1316DD7D0229249 /* LoginView.swift */, + ); + name = Login; + sourceTree = ""; + }; + + E9D0446D1E5AB2FEB1550B19 /* Main */ = { + isa = PBXGroup; + children = ( + B01ACB5EB0ACD6D3233BA118 /* MainView.swift */, + 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */, + ); + name = Main; + sourceTree = ""; + }; + + 023934D19218F9AFBD084378 /* Profile */ = { + isa = PBXGroup; + children = ( + 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */, + 7F04A173095F3737E4487EF7 /* ProfileView.swift */, + ); + name = Profile; + sourceTree = ""; + }; + + B180221771919A464EAE42F5 /* PushNotification */ = { + isa = PBXGroup; + children = ( + B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */, + ); + name = PushNotification; + sourceTree = ""; + }; + + A034EAF6BC4F7B46C19357E5 /* Search */ = { + isa = PBXGroup; + children = ( + 4255A04E841570A664D15C72 /* SearchView.swift */, + ); + name = Search; + sourceTree = ""; + }; + + 3E8BE5E7BA89E9C06CB4680E /* Setting */ = { + isa = PBXGroup; + children = ( + AC142E4A256288A6D73AEB3E /* AccountView.swift */, + 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */, + 9CB6D9970E4286BA9A17C47C /* SettingView.swift */, + FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */, + ); + name = Setting; + sourceTree = ""; + }; + + 6F0FC545BB630F476F12C93F /* Today */ = { + isa = PBXGroup; + children = ( + F51F902DA946EBFEEC4CD14B /* TodayView.swift */, + 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */, + ); + name = Today; + sourceTree = ""; + }; + AA0000000000000000000005 /* Root */ = { + isa = PBXGroup; + children = ( + AA0000000000000000000002 /* RootView.swift */, + ); + name = Root; + sourceTree = ""; + }; + AA0000000000000000000006 /* Routing */ = { + isa = PBXGroup; + children = ( + AA0000000000000000000004 /* MainTab.swift */, + ); + name = Routing; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -330,11 +601,14 @@ buildRules = ( ); dependencies = ( + 0F11B22C33D44E55F6677889 /* PBXTargetDependency */, C8EA2345A40DFA6BCCD803EE /* PBXTargetDependency */, 3E21F3A3C22C9F31A55EC073 /* PBXTargetDependency */, ); name = DevLogPresentation; packageProductDependencies = ( + 423A6FE16D5EC7FECF77A31A /* MarkdownUI */, + D06169FD4B643952DF59EDAE /* FirebaseAuth */, 7D6DDD31C1122286D5852621 /* OrderedCollections */, ); productName = DevLogPresentation; @@ -361,12 +635,18 @@ mainGroup = 253FAAC4504D4C5E1B11C833; minimizedProjectReferenceProxies = 0; packageReferences = ( + 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */, + AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, 4A268C0F47C89BEF1B5B794F /* XCRemoteSwiftPackageReference "swift-collections" */, ); preferredProjectObjectVersion = 77; productRefGroup = 03D4331F04C462F4C642860F /* Products */; projectDirPath = ""; projectReferences = ( + { + ProductGroup = 03D4331F04C462F4C642860F /* Products */; + ProjectRef = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; + }, { ProductGroup = 03D4331F04C462F4C642860F /* Products */; ProjectRef = B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */; @@ -426,6 +706,14 @@ remoteRef = 3DFAA1B8CAA99746A43B0525 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + + 0E11B22C33D44E55F6677889 /* DevLogCore.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogCore.framework; + remoteRef = 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -443,6 +731,46 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + AA0000000000000000000001 /* RootView.swift in Sources */, + AA0000000000000000000003 /* MainTab.swift in Sources */, + 0553E143B544CD7ACD082298 /* LoadingView.swift in Sources */, + 071B4E6FE1D0DC0EF26E0705 /* MainView.swift in Sources */, + 075FA5A9704297F5A51D765D /* ThemeView.swift in Sources */, + 0CEB2B1729B59439362725A5 /* ToolbarButton+.swift in Sources */, + 1EC3663DB97BFF5D2D511DAF /* AccountView.swift in Sources */, + 1F5831DA8EC5DCC3AF604DC7 /* TodoDetailView.swift in Sources */, + 233981B375AF5EA066660B86 /* UIKitTextEditor.swift in Sources */, + 26FA5A7B5E8EDE1B8B6BEE4C /* SearchView.swift in Sources */, + 2781DD85BEB0D586F730C53C /* ProfileView.swift in Sources */, + 33374D81BED973A28E95EB88 /* HeatmapView.swift in Sources */, + 3568FBF125892AF4577A533B /* PushNotificationListView.swift in Sources */, + 3C865F560E7A379D616F092D /* TodoManageView.swift in Sources */, + 3E3A8CF9B7867748C06B02AD /* HomeViewCoordinator.swift in Sources */, + 4A7897CEB011769A2C01CB4C /* TodoEditorView.swift in Sources */, + 4C497F6F2C1A7ADCE28CBF4D /* NavigationRouter.swift in Sources */, + 5417F145841A7CAF38C83F35 /* TodoListView.swift in Sources */, + 54FB7AB76BCAED80E9CB742D /* WebItemRow.swift in Sources */, + 73FF33B77C4FE6E19604D9AE /* View+.swift in Sources */, + 81F78FF2F35149E80FDA1BAF /* SettingView.swift in Sources */, + 8A11F86B28EC69A9D6CA4FD2 /* MainViewCoordinator.swift in Sources */, + 9225927FB28E8A2DD20DEF54 /* CacheableImage.swift in Sources */, + 9A245A6C4C2FA8D55EA8840D /* TodoItemRow.swift in Sources */, + 9E8EAA00729A59F67360F063 /* WebView.swift in Sources */, + AAA318D37BC97EFB4C785ECD /* TodoInfoSheetView.swift in Sources */, + AEA3D50A9080249A6359476C /* CheckBox.swift in Sources */, + B4A60A3AB524E4F9D68750C3 /* TodayView.swift in Sources */, + BABB40EAD145095BEC1ACB58 /* TodoDetailContentView.swift in Sources */, + BB77CD69698477D38EEB62DA /* Toast.swift in Sources */, + BE5CF573B4B89C77F4A36A94 /* LoginView.swift in Sources */, + C4F0BBA11DCEC8017F541999 /* Tag+.swift in Sources */, + C5654549920DB2EEBA5A3F07 /* NavigationBarConfigurator.swift in Sources */, + C85FD011138539C08D18D22F /* RelativeTimeText.swift in Sources */, + D12294635C147B35F3EA3314 /* PushNotificationSettingsView.swift in Sources */, + D7ED2E08383517AA3E242B0C /* TodayViewCoordinator.swift in Sources */, + E9BE203BADA107278CFBDD54 /* HomeView.swift in Sources */, + F0B4DBB89733E466B105CF25 /* EnvironmentValues+.swift in Sources */, + F1474D4F84693113355B7DA2 /* TodoMarkdownContentView.swift in Sources */, + F99147DC6D6F48E3842CD204 /* LoginButton.swift in Sources */, 3530599B937DC8E3F908F3F3 /* LoadingState.swift in Sources */, BAFA35470372A100D996D4A8 /* Color+Hex.swift in Sources */, 104A1B691C40A8182E5F8EF8 /* Store.swift in Sources */, @@ -492,6 +820,12 @@ name = DevLogDomain; targetProxy = 63A78AEC0654C9B6030C055B /* PBXContainerItemProxy */; }; + + 0F11B22C33D44E55F6677889 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogCore; + targetProxy = 0B11B22C33D44E55F6677889 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -691,6 +1025,24 @@ minimumVersion = 1.3.0; }; }; + + 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/gonzalezreal/swift-markdown-ui.git"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 2.4.1; + }; + }; + + AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 11.15.0; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -699,6 +1051,18 @@ package = 4A268C0F47C89BEF1B5B794F /* XCRemoteSwiftPackageReference "swift-collections" */; productName = OrderedCollections; }; + + 423A6FE16D5EC7FECF77A31A /* MarkdownUI */ = { + isa = XCSwiftPackageProductDependency; + package = 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */; + productName = MarkdownUI; + }; + + D06169FD4B643952DF59EDAE /* FirebaseAuth */ = { + isa = XCSwiftPackageProductDependency; + package = AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseAuth; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 096704712B06C41C6A0FE074 /* Project object */; diff --git a/Application/DevLogUI/Sources/Common/Component/CacheableImage.swift b/Application/DevLogPresentation/Sources/Common/Component/CacheableImage.swift similarity index 99% rename from Application/DevLogUI/Sources/Common/Component/CacheableImage.swift rename to Application/DevLogPresentation/Sources/Common/Component/CacheableImage.swift index e1cc921f..4689ad3b 100644 --- a/Application/DevLogUI/Sources/Common/Component/CacheableImage.swift +++ b/Application/DevLogPresentation/Sources/Common/Component/CacheableImage.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct CacheableImage: View { @State private var loadedUIImage: UIImage? diff --git a/Application/DevLogUI/Sources/Common/Component/CheckBox.swift b/Application/DevLogPresentation/Sources/Common/Component/CheckBox.swift similarity index 96% rename from Application/DevLogUI/Sources/Common/Component/CheckBox.swift rename to Application/DevLogPresentation/Sources/Common/Component/CheckBox.swift index 9fe77648..c7737da9 100644 --- a/Application/DevLogUI/Sources/Common/Component/CheckBox.swift +++ b/Application/DevLogPresentation/Sources/Common/Component/CheckBox.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct CheckBox: View { private let isChecked: Bool diff --git a/Application/DevLogUI/Sources/Common/Component/LoadingView.swift b/Application/DevLogPresentation/Sources/Common/Component/LoadingView.swift similarity index 92% rename from Application/DevLogUI/Sources/Common/Component/LoadingView.swift rename to Application/DevLogPresentation/Sources/Common/Component/LoadingView.swift index 72f0b8d8..228af645 100644 --- a/Application/DevLogUI/Sources/Common/Component/LoadingView.swift +++ b/Application/DevLogPresentation/Sources/Common/Component/LoadingView.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct LoadingView: View { var body: some View { diff --git a/Application/DevLogUI/Sources/Common/Component/LoginButton.swift b/Application/DevLogPresentation/Sources/Common/Component/LoginButton.swift similarity index 98% rename from Application/DevLogUI/Sources/Common/Component/LoginButton.swift rename to Application/DevLogPresentation/Sources/Common/Component/LoginButton.swift index 1fdb5a43..a3a23fcb 100644 --- a/Application/DevLogUI/Sources/Common/Component/LoginButton.swift +++ b/Application/DevLogPresentation/Sources/Common/Component/LoginButton.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct LoginButton: View { @State private var logo: Image? diff --git a/Application/DevLogUI/Sources/Common/Component/RelativeTimeText.swift b/Application/DevLogPresentation/Sources/Common/Component/RelativeTimeText.swift similarity index 98% rename from Application/DevLogUI/Sources/Common/Component/RelativeTimeText.swift rename to Application/DevLogPresentation/Sources/Common/Component/RelativeTimeText.swift index d7f9c0c6..c633081c 100644 --- a/Application/DevLogUI/Sources/Common/Component/RelativeTimeText.swift +++ b/Application/DevLogPresentation/Sources/Common/Component/RelativeTimeText.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct RelativeTimeText: View { let date: Date diff --git a/Application/DevLogUI/Sources/Common/Component/Tag+.swift b/Application/DevLogPresentation/Sources/Common/Component/Tag+.swift similarity index 99% rename from Application/DevLogUI/Sources/Common/Component/Tag+.swift rename to Application/DevLogPresentation/Sources/Common/Component/Tag+.swift index 9515131c..1a4da5fb 100644 --- a/Application/DevLogUI/Sources/Common/Component/Tag+.swift +++ b/Application/DevLogPresentation/Sources/Common/Component/Tag+.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct Tag: View { @Environment(\.colorScheme) private var colorScheme diff --git a/Application/DevLogUI/Sources/Common/Component/Toast.swift b/Application/DevLogPresentation/Sources/Common/Component/Toast.swift similarity index 99% rename from Application/DevLogUI/Sources/Common/Component/Toast.swift rename to Application/DevLogPresentation/Sources/Common/Component/Toast.swift index 922648be..e223112d 100644 --- a/Application/DevLogUI/Sources/Common/Component/Toast.swift +++ b/Application/DevLogPresentation/Sources/Common/Component/Toast.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation extension View { func toast( diff --git a/Application/DevLogUI/Sources/Common/Component/TodoItemRow.swift b/Application/DevLogPresentation/Sources/Common/Component/TodoItemRow.swift similarity index 98% rename from Application/DevLogUI/Sources/Common/Component/TodoItemRow.swift rename to Application/DevLogPresentation/Sources/Common/Component/TodoItemRow.swift index 5705e18b..de43790d 100644 --- a/Application/DevLogUI/Sources/Common/Component/TodoItemRow.swift +++ b/Application/DevLogPresentation/Sources/Common/Component/TodoItemRow.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct TodoItemRow: View { @ScaledMetric(relativeTo: .largeTitle) private var labelWidth = CGFloat(34) diff --git a/Application/DevLogUI/Sources/Common/Component/ToolbarButton+.swift b/Application/DevLogPresentation/Sources/Common/Component/ToolbarButton+.swift similarity index 98% rename from Application/DevLogUI/Sources/Common/Component/ToolbarButton+.swift rename to Application/DevLogPresentation/Sources/Common/Component/ToolbarButton+.swift index a0c15b74..f9b0eac7 100644 --- a/Application/DevLogUI/Sources/Common/Component/ToolbarButton+.swift +++ b/Application/DevLogPresentation/Sources/Common/Component/ToolbarButton+.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct ToolbarLeadingButton: ToolbarContent { var action: (() -> Void)? diff --git a/Application/DevLogUI/Sources/Common/Component/UIKitTextEditor.swift b/Application/DevLogPresentation/Sources/Common/Component/UIKitTextEditor.swift similarity index 99% rename from Application/DevLogUI/Sources/Common/Component/UIKitTextEditor.swift rename to Application/DevLogPresentation/Sources/Common/Component/UIKitTextEditor.swift index ce0d8172..c93780a9 100644 --- a/Application/DevLogUI/Sources/Common/Component/UIKitTextEditor.swift +++ b/Application/DevLogPresentation/Sources/Common/Component/UIKitTextEditor.swift @@ -8,7 +8,6 @@ import SwiftUI import UIKit import DevLogDomain -import DevLogPresentation struct UIKitTextEditor: View { @Binding var text: String diff --git a/Application/DevLogUI/Sources/Common/Component/WebItemRow.swift b/Application/DevLogPresentation/Sources/Common/Component/WebItemRow.swift similarity index 98% rename from Application/DevLogUI/Sources/Common/Component/WebItemRow.swift rename to Application/DevLogPresentation/Sources/Common/Component/WebItemRow.swift index 10169712..42b3d617 100644 --- a/Application/DevLogUI/Sources/Common/Component/WebItemRow.swift +++ b/Application/DevLogPresentation/Sources/Common/Component/WebItemRow.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct WebItemRow: View { @ScaledMetric(relativeTo: .largeTitle) private var labelWidth = CGFloat(34) diff --git a/Application/DevLogUI/Sources/Common/NavigationBarConfigurator.swift b/Application/DevLogPresentation/Sources/Common/NavigationBarConfigurator.swift similarity index 99% rename from Application/DevLogUI/Sources/Common/NavigationBarConfigurator.swift rename to Application/DevLogPresentation/Sources/Common/NavigationBarConfigurator.swift index ccb22375..0a774e10 100644 --- a/Application/DevLogUI/Sources/Common/NavigationBarConfigurator.swift +++ b/Application/DevLogPresentation/Sources/Common/NavigationBarConfigurator.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation /// NavigationBar의 배경색을 지정하고 shadowColor를 제거하는 구조체 /// diff --git a/Application/DevLogUI/Sources/Common/NavigationRouter.swift b/Application/DevLogPresentation/Sources/Common/NavigationRouter.swift similarity index 96% rename from Application/DevLogUI/Sources/Common/NavigationRouter.swift rename to Application/DevLogPresentation/Sources/Common/NavigationRouter.swift index 3e7ddeea..a5439fe2 100644 --- a/Application/DevLogUI/Sources/Common/NavigationRouter.swift +++ b/Application/DevLogPresentation/Sources/Common/NavigationRouter.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation @Observable final class NavigationRouter { diff --git a/Application/DevLogUI/Sources/Common/TodoDetailContentView.swift b/Application/DevLogPresentation/Sources/Common/TodoDetailContentView.swift similarity index 98% rename from Application/DevLogUI/Sources/Common/TodoDetailContentView.swift rename to Application/DevLogPresentation/Sources/Common/TodoDetailContentView.swift index 50f1961b..58001928 100644 --- a/Application/DevLogUI/Sources/Common/TodoDetailContentView.swift +++ b/Application/DevLogPresentation/Sources/Common/TodoDetailContentView.swift @@ -8,7 +8,6 @@ import SwiftUI import MarkdownUI import DevLogDomain -import DevLogPresentation struct TodoDetailContentView: View { let title: String diff --git a/Application/DevLogUI/Sources/Common/TodoInfoSheetView.swift b/Application/DevLogPresentation/Sources/Common/TodoInfoSheetView.swift similarity index 99% rename from Application/DevLogUI/Sources/Common/TodoInfoSheetView.swift rename to Application/DevLogPresentation/Sources/Common/TodoInfoSheetView.swift index c13dc56f..22dad14a 100644 --- a/Application/DevLogUI/Sources/Common/TodoInfoSheetView.swift +++ b/Application/DevLogPresentation/Sources/Common/TodoInfoSheetView.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct TodoInfoSheetView: View { let createdAt: Date diff --git a/Application/DevLogUI/Sources/Common/TodoMarkdownContentView.swift b/Application/DevLogPresentation/Sources/Common/TodoMarkdownContentView.swift similarity index 99% rename from Application/DevLogUI/Sources/Common/TodoMarkdownContentView.swift rename to Application/DevLogPresentation/Sources/Common/TodoMarkdownContentView.swift index 0497f45d..4aca1257 100644 --- a/Application/DevLogUI/Sources/Common/TodoMarkdownContentView.swift +++ b/Application/DevLogPresentation/Sources/Common/TodoMarkdownContentView.swift @@ -8,7 +8,6 @@ import MarkdownUI import SwiftUI import DevLogDomain -import DevLogPresentation private enum TodoMarkdownSection: Equatable { case markdown(String) diff --git a/Application/DevLogUI/Sources/Common/WebView.swift b/Application/DevLogPresentation/Sources/Common/WebView.swift similarity index 94% rename from Application/DevLogUI/Sources/Common/WebView.swift rename to Application/DevLogPresentation/Sources/Common/WebView.swift index edfe1289..7f60e2fa 100644 --- a/Application/DevLogUI/Sources/Common/WebView.swift +++ b/Application/DevLogPresentation/Sources/Common/WebView.swift @@ -8,7 +8,6 @@ import SwiftUI import WebKit import DevLogDomain -import DevLogPresentation struct WebView: UIViewRepresentable { let url: URL diff --git a/Application/DevLogUI/Sources/Extension/EnvironmentValues+.swift b/Application/DevLogPresentation/Sources/Extension/EnvironmentValues+.swift similarity index 98% rename from Application/DevLogUI/Sources/Extension/EnvironmentValues+.swift rename to Application/DevLogPresentation/Sources/Extension/EnvironmentValues+.swift index ce9bb299..28e74706 100644 --- a/Application/DevLogUI/Sources/Extension/EnvironmentValues+.swift +++ b/Application/DevLogPresentation/Sources/Extension/EnvironmentValues+.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation extension EnvironmentValues { var safeAreaInsets: EdgeInsets { diff --git a/Application/DevLogUI/Sources/Extension/View+.swift b/Application/DevLogPresentation/Sources/Extension/View+.swift similarity index 99% rename from Application/DevLogUI/Sources/Extension/View+.swift rename to Application/DevLogPresentation/Sources/Extension/View+.swift index 07841993..5ce6d619 100644 --- a/Application/DevLogUI/Sources/Extension/View+.swift +++ b/Application/DevLogPresentation/Sources/Extension/View+.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation extension View { @ViewBuilder diff --git a/Application/DevLogUI/Sources/Home/HomeView.swift b/Application/DevLogPresentation/Sources/Home/HomeView.swift similarity index 99% rename from Application/DevLogUI/Sources/Home/HomeView.swift rename to Application/DevLogPresentation/Sources/Home/HomeView.swift index 3b041b18..b2ea7770 100644 --- a/Application/DevLogUI/Sources/Home/HomeView.swift +++ b/Application/DevLogPresentation/Sources/Home/HomeView.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct HomeView: View { @ScaledMetric(relativeTo: .largeTitle) private var labelWidth = CGFloat(34) diff --git a/Application/DevLogUI/Sources/Home/HomeViewCoordinator.swift b/Application/DevLogPresentation/Sources/Home/HomeViewCoordinator.swift similarity index 99% rename from Application/DevLogUI/Sources/Home/HomeViewCoordinator.swift rename to Application/DevLogPresentation/Sources/Home/HomeViewCoordinator.swift index 905e40f5..ae6d7716 100644 --- a/Application/DevLogUI/Sources/Home/HomeViewCoordinator.swift +++ b/Application/DevLogPresentation/Sources/Home/HomeViewCoordinator.swift @@ -8,7 +8,6 @@ import Foundation import DevLogCore import DevLogDomain -import DevLogPresentation @MainActor @Observable diff --git a/Application/DevLogUI/Sources/Home/TodoDetailView.swift b/Application/DevLogPresentation/Sources/Home/TodoDetailView.swift similarity index 99% rename from Application/DevLogUI/Sources/Home/TodoDetailView.swift rename to Application/DevLogPresentation/Sources/Home/TodoDetailView.swift index d2953bb3..e13008c8 100644 --- a/Application/DevLogUI/Sources/Home/TodoDetailView.swift +++ b/Application/DevLogPresentation/Sources/Home/TodoDetailView.swift @@ -8,7 +8,6 @@ import SwiftUI import DevLogCore import DevLogDomain -import DevLogPresentation struct TodoDetailView: View { @Environment(\.diContainer) private var container: DIContainer diff --git a/Application/DevLogUI/Sources/Home/TodoEditorView.swift b/Application/DevLogPresentation/Sources/Home/TodoEditorView.swift similarity index 99% rename from Application/DevLogUI/Sources/Home/TodoEditorView.swift rename to Application/DevLogPresentation/Sources/Home/TodoEditorView.swift index 5b3713fb..eb089f08 100644 --- a/Application/DevLogUI/Sources/Home/TodoEditorView.swift +++ b/Application/DevLogPresentation/Sources/Home/TodoEditorView.swift @@ -10,7 +10,6 @@ import OrderedCollections import SwiftUI import DevLogCore import DevLogDomain -import DevLogPresentation struct TodoEditorView: View { @State var viewModel: TodoEditorViewModel diff --git a/Application/DevLogUI/Sources/Home/TodoListView.swift b/Application/DevLogPresentation/Sources/Home/TodoListView.swift similarity index 99% rename from Application/DevLogUI/Sources/Home/TodoListView.swift rename to Application/DevLogPresentation/Sources/Home/TodoListView.swift index 1a6924bf..ae7b3ebc 100644 --- a/Application/DevLogUI/Sources/Home/TodoListView.swift +++ b/Application/DevLogPresentation/Sources/Home/TodoListView.swift @@ -8,7 +8,6 @@ import SwiftUI import DevLogCore import DevLogDomain -import DevLogPresentation struct TodoListView: View { @Environment(NavigationRouter.self) private var router diff --git a/Application/DevLogUI/Sources/Home/TodoManageView.swift b/Application/DevLogPresentation/Sources/Home/TodoManageView.swift similarity index 99% rename from Application/DevLogUI/Sources/Home/TodoManageView.swift rename to Application/DevLogPresentation/Sources/Home/TodoManageView.swift index 8c4fc256..3fd7c5ab 100644 --- a/Application/DevLogUI/Sources/Home/TodoManageView.swift +++ b/Application/DevLogPresentation/Sources/Home/TodoManageView.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct TodoManageView: View { @State var viewModel: TodoManageViewModel diff --git a/Application/DevLogUI/Sources/Login/LoginView.swift b/Application/DevLogPresentation/Sources/Login/LoginView.swift similarity index 98% rename from Application/DevLogUI/Sources/Login/LoginView.swift rename to Application/DevLogPresentation/Sources/Login/LoginView.swift index be1ee88c..31ff0d19 100644 --- a/Application/DevLogUI/Sources/Login/LoginView.swift +++ b/Application/DevLogPresentation/Sources/Login/LoginView.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct LoginView: View { @Environment(\.colorScheme) var colorScheme diff --git a/Application/DevLogUI/Sources/Main/MainView.swift b/Application/DevLogPresentation/Sources/Main/MainView.swift similarity index 99% rename from Application/DevLogUI/Sources/Main/MainView.swift rename to Application/DevLogPresentation/Sources/Main/MainView.swift index 79368e9e..4380e115 100644 --- a/Application/DevLogUI/Sources/Main/MainView.swift +++ b/Application/DevLogPresentation/Sources/Main/MainView.swift @@ -8,7 +8,6 @@ import SwiftUI import DevLogCore import DevLogDomain -import DevLogPresentation struct MainView: View { @Environment(\.horizontalSizeClass) private var horizontalSizeClass diff --git a/Application/DevLogUI/Sources/Main/MainViewCoordinator.swift b/Application/DevLogPresentation/Sources/Main/MainViewCoordinator.swift similarity index 99% rename from Application/DevLogUI/Sources/Main/MainViewCoordinator.swift rename to Application/DevLogPresentation/Sources/Main/MainViewCoordinator.swift index 9df3729e..7af6c049 100644 --- a/Application/DevLogUI/Sources/Main/MainViewCoordinator.swift +++ b/Application/DevLogPresentation/Sources/Main/MainViewCoordinator.swift @@ -8,7 +8,6 @@ import Foundation import DevLogCore import DevLogDomain -import DevLogPresentation @MainActor @Observable diff --git a/Application/DevLogUI/Sources/Profile/HeatmapView.swift b/Application/DevLogPresentation/Sources/Profile/HeatmapView.swift similarity index 99% rename from Application/DevLogUI/Sources/Profile/HeatmapView.swift rename to Application/DevLogPresentation/Sources/Profile/HeatmapView.swift index 2ec6f59e..ca2efaf3 100644 --- a/Application/DevLogUI/Sources/Profile/HeatmapView.swift +++ b/Application/DevLogPresentation/Sources/Profile/HeatmapView.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct HeatmapView: View { @State private var availableWidth = CGFloat.zero diff --git a/Application/DevLogUI/Sources/Profile/ProfileView.swift b/Application/DevLogPresentation/Sources/Profile/ProfileView.swift similarity index 99% rename from Application/DevLogUI/Sources/Profile/ProfileView.swift rename to Application/DevLogPresentation/Sources/Profile/ProfileView.swift index 3b11da72..70f5da0d 100644 --- a/Application/DevLogUI/Sources/Profile/ProfileView.swift +++ b/Application/DevLogPresentation/Sources/Profile/ProfileView.swift @@ -8,7 +8,6 @@ import SwiftUI import DevLogCore import DevLogDomain -import DevLogPresentation struct ProfileView: View { @State var viewModel: ProfileViewModel diff --git a/Application/DevLogUI/Sources/PushNotification/PushNotificationListView.swift b/Application/DevLogPresentation/Sources/PushNotification/PushNotificationListView.swift similarity index 99% rename from Application/DevLogUI/Sources/PushNotification/PushNotificationListView.swift rename to Application/DevLogPresentation/Sources/PushNotification/PushNotificationListView.swift index 9e97d1df..1ff2b7b3 100644 --- a/Application/DevLogUI/Sources/PushNotification/PushNotificationListView.swift +++ b/Application/DevLogPresentation/Sources/PushNotification/PushNotificationListView.swift @@ -8,7 +8,6 @@ import SwiftUI import DevLogCore import DevLogDomain -import DevLogPresentation struct PushNotificationListView: View { @Environment(\.colorScheme) private var colorScheme diff --git a/Application/DevLogApp/Sources/App/RootView.swift b/Application/DevLogPresentation/Sources/Root/RootView.swift similarity index 62% rename from Application/DevLogApp/Sources/App/RootView.swift rename to Application/DevLogPresentation/Sources/Root/RootView.swift index ca7eeb5b..c2a292d9 100644 --- a/Application/DevLogApp/Sources/App/RootView.swift +++ b/Application/DevLogPresentation/Sources/Root/RootView.swift @@ -6,15 +6,38 @@ // import SwiftUI +import Combine import DevLogCore +import DevLogDomain -struct RootView: View { +public struct RootView: View { @Environment(\.diContainer) var container: DIContainer @State var viewModel: RootViewModel - @State private var selectedRoute: AppRoute? + @State private var selectedRoute: Route? @State private var selectedMainTab = MainTab.home + private let widgetURLTab: (URL) -> MainTab? + private let pushNotificationTodoIdPublisher: AnyPublisher + private let clearPushNotificationRoute: () -> Void - var body: some View { + public init( + sessionUseCase: ObserveAuthSessionUseCase, + networkConnectivityUseCase: ObserveNetworkConnectivityUseCase, + systemThemeUseCase: ObserveSystemThemeUseCase, + widgetURLTab: @escaping (URL) -> MainTab?, + pushNotificationTodoIdPublisher: AnyPublisher, + clearPushNotificationRoute: @escaping () -> Void + ) { + self._viewModel = State(initialValue: RootViewModel( + sessionUseCase: sessionUseCase, + networkConnectivityUseCase: networkConnectivityUseCase, + systemThemeUseCase: systemThemeUseCase + )) + self.widgetURLTab = widgetURLTab + self.pushNotificationTodoIdPublisher = pushNotificationTodoIdPublisher + self.clearPushNotificationRoute = clearPushNotificationRoute + } + + public var body: some View { ZStack { Color(UIColor.systemGroupedBackground).ignoresSafeArea() if let signIn = viewModel.state.signIn { @@ -37,7 +60,7 @@ struct RootView: View { selectedMainTab = .home } .onOpenURL { url in - guard let mainTab = MainTab(widgetURL: url) else { return } + guard let mainTab = widgetURLTab(url) else { return } switch viewModel.state.signIn { case .some(false): selectedMainTab = .home @@ -74,9 +97,20 @@ struct RootView: View { .presentationDragIndicator(.visible) } } - .onReceive(PushNotificationRoute.shared.observe()) { route in - selectedRoute = route - PushNotificationRoute.shared.clear() + .onReceive(pushNotificationTodoIdPublisher) { todoId in + selectedRoute = .todoDetail(todoId) + clearPushNotificationRoute() + } + } +} + +private enum Route: Equatable, Identifiable { + case todoDetail(String) + + var id: String { + switch self { + case .todoDetail(let todoId): + return "todo:\(todoId)" } } } diff --git a/Application/DevLogPresentation/Sources/Routing/MainTab.swift b/Application/DevLogPresentation/Sources/Routing/MainTab.swift new file mode 100644 index 00000000..b66d786e --- /dev/null +++ b/Application/DevLogPresentation/Sources/Routing/MainTab.swift @@ -0,0 +1,13 @@ +// +// MainTab.swift +// DevLog +// +// Created by opfic on 4/30/26. +// + +public enum MainTab: Hashable { + case home + case today + case notification + case profile +} diff --git a/Application/DevLogUI/Sources/Search/SearchView.swift b/Application/DevLogPresentation/Sources/Search/SearchView.swift similarity index 99% rename from Application/DevLogUI/Sources/Search/SearchView.swift rename to Application/DevLogPresentation/Sources/Search/SearchView.swift index 7c0658bf..9d1b0372 100644 --- a/Application/DevLogUI/Sources/Search/SearchView.swift +++ b/Application/DevLogPresentation/Sources/Search/SearchView.swift @@ -8,7 +8,6 @@ import SwiftUI import DevLogCore import DevLogDomain -import DevLogPresentation struct SearchView: View { @Environment(\.dismiss) private var dismiss diff --git a/Application/DevLogUI/Sources/Setting/AccountView.swift b/Application/DevLogPresentation/Sources/Setting/AccountView.swift similarity index 99% rename from Application/DevLogUI/Sources/Setting/AccountView.swift rename to Application/DevLogPresentation/Sources/Setting/AccountView.swift index 67d004dc..4174ae38 100644 --- a/Application/DevLogUI/Sources/Setting/AccountView.swift +++ b/Application/DevLogPresentation/Sources/Setting/AccountView.swift @@ -8,7 +8,6 @@ import SwiftUI import FirebaseAuth import DevLogDomain -import DevLogPresentation struct AccountView: View { @State var viewModel: AccountViewModel diff --git a/Application/DevLogUI/Sources/Setting/PushNotificationSettingsView.swift b/Application/DevLogPresentation/Sources/Setting/PushNotificationSettingsView.swift similarity index 99% rename from Application/DevLogUI/Sources/Setting/PushNotificationSettingsView.swift rename to Application/DevLogPresentation/Sources/Setting/PushNotificationSettingsView.swift index 88675153..e6e62db2 100644 --- a/Application/DevLogUI/Sources/Setting/PushNotificationSettingsView.swift +++ b/Application/DevLogPresentation/Sources/Setting/PushNotificationSettingsView.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct PushNotificationSettingsView: View { @State var viewModel: PushNotificationSettingsViewModel diff --git a/Application/DevLogUI/Sources/Setting/SettingView.swift b/Application/DevLogPresentation/Sources/Setting/SettingView.swift similarity index 99% rename from Application/DevLogUI/Sources/Setting/SettingView.swift rename to Application/DevLogPresentation/Sources/Setting/SettingView.swift index 3ee0353c..ba9cb997 100644 --- a/Application/DevLogUI/Sources/Setting/SettingView.swift +++ b/Application/DevLogPresentation/Sources/Setting/SettingView.swift @@ -8,7 +8,6 @@ import SwiftUI import DevLogCore import DevLogDomain -import DevLogPresentation struct SettingView: View { @Environment(\.diContainer) var container: DIContainer diff --git a/Application/DevLogUI/Sources/Setting/ThemeView.swift b/Application/DevLogPresentation/Sources/Setting/ThemeView.swift similarity index 98% rename from Application/DevLogUI/Sources/Setting/ThemeView.swift rename to Application/DevLogPresentation/Sources/Setting/ThemeView.swift index 78e1928e..de3c11e0 100644 --- a/Application/DevLogUI/Sources/Setting/ThemeView.swift +++ b/Application/DevLogPresentation/Sources/Setting/ThemeView.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct ThemeView: View { @Binding var theme: SystemTheme diff --git a/Application/DevLogUI/Sources/Today/TodayView.swift b/Application/DevLogPresentation/Sources/Today/TodayView.swift similarity index 99% rename from Application/DevLogUI/Sources/Today/TodayView.swift rename to Application/DevLogPresentation/Sources/Today/TodayView.swift index 4a1c24a6..0c768e3f 100644 --- a/Application/DevLogUI/Sources/Today/TodayView.swift +++ b/Application/DevLogPresentation/Sources/Today/TodayView.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogPresentation struct TodayView: View { let coordinator: TodayViewCoordinator diff --git a/Application/DevLogUI/Sources/Today/TodayViewCoordinator.swift b/Application/DevLogPresentation/Sources/Today/TodayViewCoordinator.swift similarity index 96% rename from Application/DevLogUI/Sources/Today/TodayViewCoordinator.swift rename to Application/DevLogPresentation/Sources/Today/TodayViewCoordinator.swift index 608360f3..347f2492 100644 --- a/Application/DevLogUI/Sources/Today/TodayViewCoordinator.swift +++ b/Application/DevLogPresentation/Sources/Today/TodayViewCoordinator.swift @@ -8,7 +8,6 @@ import Foundation import DevLogCore import DevLogDomain -import DevLogPresentation @MainActor @Observable diff --git a/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj b/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj deleted file mode 100644 index 98130783..00000000 --- a/Application/DevLogUI/DevLogUI.xcodeproj/project.pbxproj +++ /dev/null @@ -1,767 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 0553E143B544CD7ACD082298 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2A9C9F3E543201091571C00 /* LoadingView.swift */; }; - 071B4E6FE1D0DC0EF26E0705 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B01ACB5EB0ACD6D3233BA118 /* MainView.swift */; }; - 075FA5A9704297F5A51D765D /* ThemeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */; }; - 0CEB2B1729B59439362725A5 /* ToolbarButton+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */; }; - 1EC3663DB97BFF5D2D511DAF /* AccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC142E4A256288A6D73AEB3E /* AccountView.swift */; }; - 1F5831DA8EC5DCC3AF604DC7 /* TodoDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */; }; - 233981B375AF5EA066660B86 /* UIKitTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */; }; - 26FA5A7B5E8EDE1B8B6BEE4C /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4255A04E841570A664D15C72 /* SearchView.swift */; }; - 2781DD85BEB0D586F730C53C /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F04A173095F3737E4487EF7 /* ProfileView.swift */; }; - 2A16034EA7F17361A17B80AA /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2A7EFE823B69A90528963EA6 /* DevLogPresentation.framework */; }; - 0A11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E11B22C33D44E55F6677889 /* DevLogCore.framework */; }; - 3120506A710A0B6505226C05 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 423A6FE16D5EC7FECF77A31A /* MarkdownUI */; }; - 33374D81BED973A28E95EB88 /* HeatmapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */; }; - 3568FBF125892AF4577A533B /* PushNotificationListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */; }; - 3C865F560E7A379D616F092D /* TodoManageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9340555B2B620464698851A5 /* TodoManageView.swift */; }; - 3E3A8CF9B7867748C06B02AD /* HomeViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */; }; - 4A7897CEB011769A2C01CB4C /* TodoEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */; }; - 4C497F6F2C1A7ADCE28CBF4D /* NavigationRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */; }; - 5417F145841A7CAF38C83F35 /* TodoListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B45C610096E5AC2967606A6 /* TodoListView.swift */; }; - 54FB7AB76BCAED80E9CB742D /* WebItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9A20E0402D598F5587EAFFE /* WebItemRow.swift */; }; - 73FF33B77C4FE6E19604D9AE /* View+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DF0168AAD4373A780DC5A51 /* View+.swift */; }; - 81F78FF2F35149E80FDA1BAF /* SettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CB6D9970E4286BA9A17C47C /* SettingView.swift */; }; - 8A11F86B28EC69A9D6CA4FD2 /* MainViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */; }; - 9225927FB28E8A2DD20DEF54 /* CacheableImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 192A2827C2D676A1AE820FBA /* CacheableImage.swift */; }; - 9A245A6C4C2FA8D55EA8840D /* TodoItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */; }; - 9E8EAA00729A59F67360F063 /* WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BB99F804DD47B96FCCFDC0 /* WebView.swift */; }; - A4AD1EE45C758CF4DBA545A9 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03163FCF510FAA69D772F466 /* DevLogDomain.framework */; }; - AAA318D37BC97EFB4C785ECD /* TodoInfoSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */; }; - AEA3D50A9080249A6359476C /* CheckBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B72345FA909BFA40078D53 /* CheckBox.swift */; }; - B4A60A3AB524E4F9D68750C3 /* TodayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F51F902DA946EBFEEC4CD14B /* TodayView.swift */; }; - BABB40EAD145095BEC1ACB58 /* TodoDetailContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */; }; - BB77CD69698477D38EEB62DA /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EAB97486EC371BE330C70FE /* Toast.swift */; }; - BE5CF573B4B89C77F4A36A94 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2028F13D1316DD7D0229249 /* LoginView.swift */; }; - C4F0BBA11DCEC8017F541999 /* Tag+.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C555707203C5E83B5B5D7B /* Tag+.swift */; }; - C5654549920DB2EEBA5A3F07 /* NavigationBarConfigurator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */; }; - C85FD011138539C08D18D22F /* RelativeTimeText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */; }; - D12294635C147B35F3EA3314 /* PushNotificationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */; }; - D7ED2E08383517AA3E242B0C /* TodayViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */; }; - DCF1DA50663107DA4687A0D4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 69C35DBF629B40E93721B79D /* Foundation.framework */; }; - E68FD303E39CE280ABFC8A57 /* OrderedCollections in Frameworks */ = {isa = PBXBuildFile; productRef = D486CA7A0AC3B3C1992D90D7 /* OrderedCollections */; }; - E69CD0D89DDDF4A68406680D /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = D06169FD4B643952DF59EDAE /* FirebaseAuth */; }; - E9BE203BADA107278CFBDD54 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */; }; - F0B4DBB89733E466B105CF25 /* EnvironmentValues+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */; }; - F1474D4F84693113355B7DA2 /* TodoMarkdownContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */; }; - F99147DC6D6F48E3842CD204 /* LoginButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 0B11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; - remoteInfo = DevLogCore; - }; - 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; - remoteInfo = Subproject; - }; - 4B34A432C50DB9586CA58C58 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 5E7473315771B5D3030C5003; - remoteInfo = Subproject; - }; - D408B4BC83C710F46F7B9E1B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 7D1E74925088998D68BBFBBB; - remoteInfo = DevLogDomain; - }; - F8D6CA488ADBE3311ABF0142 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = A85D2D7D1D6DAAFBF86C9C34; - remoteInfo = DevLogPresentation; - }; - FA6ED833721ECB7CAC797902 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3F08F6B94839E9021FCFC466; - remoteInfo = Subproject; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; - 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsView.swift; path = Sources/Setting/PushNotificationSettingsView.swift; sourceTree = ""; }; - 192A2827C2D676A1AE820FBA /* CacheableImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheableImage.swift; path = Sources/Common/Component/CacheableImage.swift; sourceTree = ""; }; - 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginButton.swift; path = Sources/Common/Component/LoginButton.swift; sourceTree = ""; }; - 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoEditorView.swift; path = Sources/Home/TodoEditorView.swift; sourceTree = ""; }; - 27BB99F804DD47B96FCCFDC0 /* WebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebView.swift; path = Sources/Common/WebView.swift; sourceTree = ""; }; - 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RelativeTimeText.swift; path = Sources/Common/Component/RelativeTimeText.swift; sourceTree = ""; }; - 2B45C610096E5AC2967606A6 /* TodoListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListView.swift; path = Sources/Home/TodoListView.swift; sourceTree = ""; }; - 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; - 2EAB97486EC371BE330C70FE /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = Sources/Common/Component/Toast.swift; sourceTree = ""; }; - 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewCoordinator.swift; path = Sources/Main/MainViewCoordinator.swift; sourceTree = ""; }; - 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoItemRow.swift; path = Sources/Common/Component/TodoItemRow.swift; sourceTree = ""; }; - 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ToolbarButton+.swift"; path = "Sources/Common/Component/ToolbarButton+.swift"; sourceTree = ""; }; - 3DF0168AAD4373A780DC5A51 /* View+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "View+.swift"; path = "Sources/Extension/View+.swift"; sourceTree = ""; }; - 4255A04E841570A664D15C72 /* SearchView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SearchView.swift; path = Sources/Search/SearchView.swift; sourceTree = ""; }; - 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewCoordinator.swift; path = Sources/Home/HomeViewCoordinator.swift; sourceTree = ""; }; - 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewCoordinator.swift; path = Sources/Today/TodayViewCoordinator.swift; sourceTree = ""; }; - 69C35DBF629B40E93721B79D /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationBarConfigurator.swift; path = Sources/Common/NavigationBarConfigurator.swift; sourceTree = ""; }; - 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; - 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationRouter.swift; path = Sources/Common/NavigationRouter.swift; sourceTree = ""; }; - 7F04A173095F3737E4487EF7 /* ProfileView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileView.swift; path = Sources/Profile/ProfileView.swift; sourceTree = ""; }; - 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapView.swift; path = Sources/Profile/HeatmapView.swift; sourceTree = ""; }; - 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "EnvironmentValues+.swift"; path = "Sources/Extension/EnvironmentValues+.swift"; sourceTree = ""; }; - 9340555B2B620464698851A5 /* TodoManageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageView.swift; path = Sources/Home/TodoManageView.swift; sourceTree = ""; }; - 93B72345FA909BFA40078D53 /* CheckBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CheckBox.swift; path = Sources/Common/Component/CheckBox.swift; sourceTree = ""; }; - 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIKitTextEditor.swift; path = Sources/Common/Component/UIKitTextEditor.swift; sourceTree = ""; }; - 9CB6D9970E4286BA9A17C47C /* SettingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingView.swift; path = Sources/Setting/SettingView.swift; sourceTree = ""; }; - 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeView.swift; path = Sources/Home/HomeView.swift; sourceTree = ""; }; - A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoMarkdownContentView.swift; path = Sources/Common/TodoMarkdownContentView.swift; sourceTree = ""; }; - A2A9C9F3E543201091571C00 /* LoadingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingView.swift; path = Sources/Common/Component/LoadingView.swift; sourceTree = ""; }; - AC142E4A256288A6D73AEB3E /* AccountView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccountView.swift; path = Sources/Setting/AccountView.swift; sourceTree = ""; }; - B01ACB5EB0ACD6D3233BA118 /* MainView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainView.swift; path = Sources/Main/MainView.swift; sourceTree = ""; }; - B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListView.swift; path = Sources/PushNotification/PushNotificationListView.swift; sourceTree = ""; }; - B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailView.swift; path = Sources/Home/TodoDetailView.swift; sourceTree = ""; }; - B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoInfoSheetView.swift; path = Sources/Common/TodoInfoSheetView.swift; sourceTree = ""; }; - D2028F13D1316DD7D0229249 /* LoginView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginView.swift; path = Sources/Login/LoginView.swift; sourceTree = ""; }; - D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailContentView.swift; path = Sources/Common/TodoDetailContentView.swift; sourceTree = ""; }; - E0C555707203C5E83B5B5D7B /* Tag+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Tag+.swift"; path = "Sources/Common/Component/Tag+.swift"; sourceTree = ""; }; - EF72EFD447F4FDC1142BABA1 /* DevLogUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogUI.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F51F902DA946EBFEEC4CD14B /* TodayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayView.swift; path = Sources/Today/TodayView.swift; sourceTree = ""; }; - F9A20E0402D598F5587EAFFE /* WebItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebItemRow.swift; path = Sources/Common/Component/WebItemRow.swift; sourceTree = ""; }; - FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeView.swift; path = Sources/Setting/ThemeView.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - FF42A9B9045A4560A9CF0F35 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - DCF1DA50663107DA4687A0D4 /* Foundation.framework in Frameworks */, - 0A11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */, - A4AD1EE45C758CF4DBA545A9 /* DevLogDomain.framework in Frameworks */, - 2A16034EA7F17361A17B80AA /* DevLogPresentation.framework in Frameworks */, - 3120506A710A0B6505226C05 /* MarkdownUI in Frameworks */, - E68FD303E39CE280ABFC8A57 /* OrderedCollections in Frameworks */, - E69CD0D89DDDF4A68406680D /* FirebaseAuth in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 023934D19218F9AFBD084378 /* Profile */ = { - isa = PBXGroup; - children = ( - 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */, - 7F04A173095F3737E4487EF7 /* ProfileView.swift */, - ); - name = Profile; - sourceTree = ""; - }; - 1D5CC500CAF3AB573D582AC0 /* iOS */ = { - isa = PBXGroup; - children = ( - 69C35DBF629B40E93721B79D /* Foundation.framework */, - ); - name = iOS; - sourceTree = ""; - }; - 391861E77D429E229BF28568 /* Common */ = { - isa = PBXGroup; - children = ( - 5983BAD9E9F606A63646EDCA /* Component */, - 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */, - 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */, - D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */, - B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */, - A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */, - 27BB99F804DD47B96FCCFDC0 /* WebView.swift */, - ); - name = Common; - sourceTree = ""; - }; - 3E8BE5E7BA89E9C06CB4680E /* Setting */ = { - isa = PBXGroup; - children = ( - AC142E4A256288A6D73AEB3E /* AccountView.swift */, - 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */, - 9CB6D9970E4286BA9A17C47C /* SettingView.swift */, - FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */, - ); - name = Setting; - sourceTree = ""; - }; - 5983BAD9E9F606A63646EDCA /* Component */ = { - isa = PBXGroup; - children = ( - 192A2827C2D676A1AE820FBA /* CacheableImage.swift */, - 93B72345FA909BFA40078D53 /* CheckBox.swift */, - A2A9C9F3E543201091571C00 /* LoadingView.swift */, - 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */, - 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */, - E0C555707203C5E83B5B5D7B /* Tag+.swift */, - 2EAB97486EC371BE330C70FE /* Toast.swift */, - 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */, - 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */, - 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */, - F9A20E0402D598F5587EAFFE /* WebItemRow.swift */, - ); - name = Component; - sourceTree = ""; - }; - 6C60332595233030EAFFE839 /* Projects */ = { - isa = PBXGroup; - children = ( - 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */, - 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */, - 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */, - ); - name = Projects; - sourceTree = ""; - }; - 6F07FA4C10334C49DB907A3E /* Login */ = { - isa = PBXGroup; - children = ( - D2028F13D1316DD7D0229249 /* LoginView.swift */, - ); - name = Login; - sourceTree = ""; - }; - 6F0FC545BB630F476F12C93F /* Today */ = { - isa = PBXGroup; - children = ( - F51F902DA946EBFEEC4CD14B /* TodayView.swift */, - 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */, - ); - name = Today; - sourceTree = ""; - }; - 7B53286AA9A58D5B6C0124F8 /* DevLogUI */ = { - isa = PBXGroup; - children = ( - 391861E77D429E229BF28568 /* Common */, - A23CDC4BC6FDA11519571AC7 /* Extension */, - 9F3A0F708400485DC1E3E04C /* Home */, - 6F07FA4C10334C49DB907A3E /* Login */, - E9D0446D1E5AB2FEB1550B19 /* Main */, - 023934D19218F9AFBD084378 /* Profile */, - B180221771919A464EAE42F5 /* PushNotification */, - A034EAF6BC4F7B46C19357E5 /* Search */, - 3E8BE5E7BA89E9C06CB4680E /* Setting */, - 6F0FC545BB630F476F12C93F /* Today */, - ); - name = DevLogUI; - sourceTree = ""; - }; - 904674574352E72D5129271C /* Frameworks */ = { - isa = PBXGroup; - children = ( - 1D5CC500CAF3AB573D582AC0 /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 9F3A0F708400485DC1E3E04C /* Home */ = { - isa = PBXGroup; - children = ( - 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */, - 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */, - B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */, - 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */, - 2B45C610096E5AC2967606A6 /* TodoListView.swift */, - 9340555B2B620464698851A5 /* TodoManageView.swift */, - ); - name = Home; - sourceTree = ""; - }; - A034EAF6BC4F7B46C19357E5 /* Search */ = { - isa = PBXGroup; - children = ( - 4255A04E841570A664D15C72 /* SearchView.swift */, - ); - name = Search; - sourceTree = ""; - }; - A23CDC4BC6FDA11519571AC7 /* Extension */ = { - isa = PBXGroup; - children = ( - 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */, - 3DF0168AAD4373A780DC5A51 /* View+.swift */, - ); - name = Extension; - sourceTree = ""; - }; - B180221771919A464EAE42F5 /* PushNotification */ = { - isa = PBXGroup; - children = ( - B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */, - ); - name = PushNotification; - sourceTree = ""; - }; - B68C915FE344171A3A1311EF /* Products */ = { - isa = PBXGroup; - children = ( - EF72EFD447F4FDC1142BABA1 /* DevLogUI.framework */, - 0E11B22C33D44E55F6677889 /* DevLogCore.framework */, - 03163FCF510FAA69D772F466 /* DevLogDomain.framework */, - 2A7EFE823B69A90528963EA6 /* DevLogPresentation.framework */, - ); - name = Products; - sourceTree = ""; - }; - D808B5660152F4480C65BB71 = { - isa = PBXGroup; - children = ( - B68C915FE344171A3A1311EF /* Products */, - 904674574352E72D5129271C /* Frameworks */, - 7B53286AA9A58D5B6C0124F8 /* DevLogUI */, - 6C60332595233030EAFFE839 /* Projects */, - ); - sourceTree = ""; - }; - E9D0446D1E5AB2FEB1550B19 /* Main */ = { - isa = PBXGroup; - children = ( - B01ACB5EB0ACD6D3233BA118 /* MainView.swift */, - 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */, - ); - name = Main; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 5A9F5709F2EABC84F2D9B9F8 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - D205F480E5CDACDE14BEF619 /* DevLogUI */ = { - isa = PBXNativeTarget; - buildConfigurationList = 62535B94E527BBFB825E8D92 /* Build configuration list for PBXNativeTarget "DevLogUI" */; - buildPhases = ( - 5A9F5709F2EABC84F2D9B9F8 /* Headers */, - 7980448EDB6A7F36F3A48072 /* Sources */, - FF42A9B9045A4560A9CF0F35 /* Frameworks */, - 770F98EDFF3E434D5AA9B2FF /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 0F11B22C33D44E55F6677889 /* PBXTargetDependency */, - 20304BBBBB4E5B09A653B1F4 /* PBXTargetDependency */, - 4F02ECB9EB26770F47EC2D36 /* PBXTargetDependency */, - ); - name = DevLogUI; - packageProductDependencies = ( - 423A6FE16D5EC7FECF77A31A /* MarkdownUI */, - D486CA7A0AC3B3C1992D90D7 /* OrderedCollections */, - D06169FD4B643952DF59EDAE /* FirebaseAuth */, - ); - productName = DevLogUI; - productReference = EF72EFD447F4FDC1142BABA1 /* DevLogUI.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 2A5CEF5F3893E84D1C70CACE /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1600; - LastUpgradeCheck = 1600; - }; - buildConfigurationList = C00E270E4A31C8DFFA6C3BC4 /* Build configuration list for PBXProject "DevLogUI" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = D808B5660152F4480C65BB71; - minimizedProjectReferenceProxies = 0; - packageReferences = ( - 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */, - 8A1AB2316BD728E4435CE2A1 /* XCRemoteSwiftPackageReference "swift-collections" */, - AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, - ); - preferredProjectObjectVersion = 77; - productRefGroup = B68C915FE344171A3A1311EF /* Products */; - projectDirPath = ""; - projectReferences = ( - { - ProductGroup = B68C915FE344171A3A1311EF /* Products */; - ProjectRef = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; - }, - { - ProductGroup = B68C915FE344171A3A1311EF /* Products */; - ProjectRef = 2C6BDD744FEDC1C8352DF878 /* DevLogDomain.xcodeproj */; - }, - { - ProductGroup = B68C915FE344171A3A1311EF /* Products */; - ProjectRef = 7621BD8208E00468E86EB79E /* DevLogPresentation.xcodeproj */; - }, - ); - projectRoot = ""; - targets = ( - D205F480E5CDACDE14BEF619 /* DevLogUI */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXReferenceProxy section */ - 0E11B22C33D44E55F6677889 /* DevLogCore.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogCore.framework; - remoteRef = 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 03163FCF510FAA69D772F466 /* DevLogDomain.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDomain.framework; - remoteRef = FA6ED833721ECB7CAC797902 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 2A7EFE823B69A90528963EA6 /* DevLogPresentation.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogPresentation.framework; - remoteRef = 4B34A432C50DB9586CA58C58 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; -/* End PBXReferenceProxy section */ - -/* Begin PBXResourcesBuildPhase section */ - 770F98EDFF3E434D5AA9B2FF /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 7980448EDB6A7F36F3A48072 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9225927FB28E8A2DD20DEF54 /* CacheableImage.swift in Sources */, - AEA3D50A9080249A6359476C /* CheckBox.swift in Sources */, - 0553E143B544CD7ACD082298 /* LoadingView.swift in Sources */, - F99147DC6D6F48E3842CD204 /* LoginButton.swift in Sources */, - C85FD011138539C08D18D22F /* RelativeTimeText.swift in Sources */, - C4F0BBA11DCEC8017F541999 /* Tag+.swift in Sources */, - BB77CD69698477D38EEB62DA /* Toast.swift in Sources */, - 9A245A6C4C2FA8D55EA8840D /* TodoItemRow.swift in Sources */, - 0CEB2B1729B59439362725A5 /* ToolbarButton+.swift in Sources */, - 233981B375AF5EA066660B86 /* UIKitTextEditor.swift in Sources */, - 54FB7AB76BCAED80E9CB742D /* WebItemRow.swift in Sources */, - C5654549920DB2EEBA5A3F07 /* NavigationBarConfigurator.swift in Sources */, - 4C497F6F2C1A7ADCE28CBF4D /* NavigationRouter.swift in Sources */, - BABB40EAD145095BEC1ACB58 /* TodoDetailContentView.swift in Sources */, - AAA318D37BC97EFB4C785ECD /* TodoInfoSheetView.swift in Sources */, - F1474D4F84693113355B7DA2 /* TodoMarkdownContentView.swift in Sources */, - 9E8EAA00729A59F67360F063 /* WebView.swift in Sources */, - F0B4DBB89733E466B105CF25 /* EnvironmentValues+.swift in Sources */, - 73FF33B77C4FE6E19604D9AE /* View+.swift in Sources */, - E9BE203BADA107278CFBDD54 /* HomeView.swift in Sources */, - 3E3A8CF9B7867748C06B02AD /* HomeViewCoordinator.swift in Sources */, - 1F5831DA8EC5DCC3AF604DC7 /* TodoDetailView.swift in Sources */, - 4A7897CEB011769A2C01CB4C /* TodoEditorView.swift in Sources */, - 5417F145841A7CAF38C83F35 /* TodoListView.swift in Sources */, - 3C865F560E7A379D616F092D /* TodoManageView.swift in Sources */, - BE5CF573B4B89C77F4A36A94 /* LoginView.swift in Sources */, - 071B4E6FE1D0DC0EF26E0705 /* MainView.swift in Sources */, - 8A11F86B28EC69A9D6CA4FD2 /* MainViewCoordinator.swift in Sources */, - 33374D81BED973A28E95EB88 /* HeatmapView.swift in Sources */, - 2781DD85BEB0D586F730C53C /* ProfileView.swift in Sources */, - 3568FBF125892AF4577A533B /* PushNotificationListView.swift in Sources */, - 26FA5A7B5E8EDE1B8B6BEE4C /* SearchView.swift in Sources */, - 1EC3663DB97BFF5D2D511DAF /* AccountView.swift in Sources */, - D12294635C147B35F3EA3314 /* PushNotificationSettingsView.swift in Sources */, - 81F78FF2F35149E80FDA1BAF /* SettingView.swift in Sources */, - 075FA5A9704297F5A51D765D /* ThemeView.swift in Sources */, - B4A60A3AB524E4F9D68750C3 /* TodayView.swift in Sources */, - D7ED2E08383517AA3E242B0C /* TodayViewCoordinator.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 0F11B22C33D44E55F6677889 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogCore; - targetProxy = 0B11B22C33D44E55F6677889 /* PBXContainerItemProxy */; - }; - 20304BBBBB4E5B09A653B1F4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDomain; - targetProxy = D408B4BC83C710F46F7B9E1B /* PBXContainerItemProxy */; - }; - 4F02ECB9EB26770F47EC2D36 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogPresentation; - targetProxy = F8D6CA488ADBE3311ABF0142 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 0017B20412D6EAAA00596A5A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogUI; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 057474AABB547252F03AD3B0 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - A4D5F6FE725B3AB43CB2316A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogUI; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - D997A0EFA65F220D52A8DF38 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 62535B94E527BBFB825E8D92 /* Build configuration list for PBXNativeTarget "DevLogUI" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0017B20412D6EAAA00596A5A /* Release */, - A4D5F6FE725B3AB43CB2316A /* Debug */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C00E270E4A31C8DFFA6C3BC4 /* Build configuration list for PBXProject "DevLogUI" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 057474AABB547252F03AD3B0 /* Debug */, - D997A0EFA65F220D52A8DF38 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCRemoteSwiftPackageReference section */ - 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/gonzalezreal/swift-markdown-ui.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 2.4.1; - }; - }; - 8A1AB2316BD728E4435CE2A1 /* XCRemoteSwiftPackageReference "swift-collections" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/apple/swift-collections.git"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 1.3.0; - }; - }; - AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 11.15.0; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - 423A6FE16D5EC7FECF77A31A /* MarkdownUI */ = { - isa = XCSwiftPackageProductDependency; - package = 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */; - productName = MarkdownUI; - }; - D06169FD4B643952DF59EDAE /* FirebaseAuth */ = { - isa = XCSwiftPackageProductDependency; - package = AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = FirebaseAuth; - }; - D486CA7A0AC3B3C1992D90D7 /* OrderedCollections */ = { - isa = XCSwiftPackageProductDependency; - package = 8A1AB2316BD728E4435CE2A1 /* XCRemoteSwiftPackageReference "swift-collections" */; - productName = OrderedCollections; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = 2A5CEF5F3893E84D1C70CACE /* Project object */; -} diff --git a/Application/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme b/Application/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme deleted file mode 100644 index 2ecac534..00000000 --- a/Application/DevLogUI/DevLogUI.xcodeproj/xcshareddata/xcschemes/DevLogUI.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/DevLog.xcodeproj/project.pbxproj b/DevLog.xcodeproj/project.pbxproj index b46b9902..f21c0542 100644 --- a/DevLog.xcodeproj/project.pbxproj +++ b/DevLog.xcodeproj/project.pbxproj @@ -17,7 +17,6 @@ 7188DA2B6DFD13F7FF73069E /* DevLogInfra.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */; }; 79134AD67952720CCC5069EA /* DevLogStorage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */; }; 7A0D2CD79D383F3D256D6065 /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */; }; - 7AB46A7765E72B61AC730D41 /* DevLogUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A2F070E465CD9260A295A505 /* DevLogUI.framework */; }; 8B41461F945DA9A94D3330F9 /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA04D8F5F1B04A3FBE8C5763 /* DevLogDataCommon.framework */; }; 8D3BD712CB129F2527B00CFB /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = E72BBE64130E2666E4680E1B /* FirebaseMessaging */; }; B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */ = {isa = PBXBuildFile; productRef = 0B7D3A68C7E7BF5D4A437D29 /* FirebaseCore */; }; @@ -74,13 +73,6 @@ remoteGlobalIDString = A85D2D7D1D6DAAFBF86C9C34; remoteInfo = DevLogPresentation; }; - 18CFACC537B0E3106305F47B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = EF72EFD447F4FDC1142BABA1; - remoteInfo = Subproject; - }; 1EE32CC37C6DFCB68E794DB9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; @@ -102,13 +94,6 @@ remoteGlobalIDString = 0C205A501EF8E79FA9A73C4B; remoteInfo = DevLogStorage; }; - 52E6272133B73E021A630191 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = D205F480E5CDACDE14BEF619; - remoteInfo = DevLogUI; - }; 687F85C6DCE6D569D448B141 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */; @@ -249,7 +234,6 @@ 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = Application/DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = Application/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; - 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogUI.xcodeproj; path = Application/DevLogUI/DevLogUI.xcodeproj; sourceTree = ""; }; 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogStorage.xcodeproj; path = Application/DevLogStorage/DevLogStorage.xcodeproj; sourceTree = ""; }; CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogInfra.xcodeproj; path = Application/DevLogInfra/DevLogInfra.xcodeproj; sourceTree = ""; }; DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = Application/DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; @@ -339,7 +323,6 @@ 7188DA2B6DFD13F7FF73069E /* DevLogInfra.framework in Frameworks */, 79134AD67952720CCC5069EA /* DevLogStorage.framework in Frameworks */, 26C3DC51F23F9C590FDB282D /* DevLogPresentation.framework in Frameworks */, - 7AB46A7765E72B61AC730D41 /* DevLogUI.framework in Frameworks */, 1589C1EF4029ECBF15A842F0 /* DevLogWidgetCore.framework in Frameworks */, 0957A66CFE9CB98EA302CC22 /* DevLogWidgetShared.framework in Frameworks */, B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */, @@ -360,7 +343,6 @@ CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */, 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */, DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */, - 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */, 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */, 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */, ); @@ -397,7 +379,6 @@ 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */, 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */, 67918B544432C45E63273D84 /* DevLogPresentation.framework */, - A2F070E465CD9260A295A505 /* DevLogUI.framework */, EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */, 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */, ); @@ -482,7 +463,6 @@ 56CC02CD824E370E0BF33D2E /* PBXTargetDependency */, CD56EF21C39E985CEDBB9165 /* PBXTargetDependency */, F00B1378BDC6B8D7CCD24AB0 /* PBXTargetDependency */, - 9F9CC6108F20A1C3067082DD /* PBXTargetDependency */, A2A3C286B46BB965A8D4C047 /* PBXTargetDependency */, 88A796BDB56C53FB2A6CBBB0 /* PBXTargetDependency */, ); @@ -564,10 +544,6 @@ ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; ProjectRef = 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */; }, - { - ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; - ProjectRef = 89088BF6F221B5C0F51917E3 /* DevLogUI.xcodeproj */; - }, { ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; ProjectRef = 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */; @@ -636,13 +612,6 @@ remoteRef = A974AB39F1B9AEC8C3519A47 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - A2F070E465CD9260A295A505 /* DevLogUI.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogUI.framework; - remoteRef = 18CFACC537B0E3106305F47B /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; AF31C7E0802E4877630B4E0D /* DevLogDataMapper.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -766,11 +735,6 @@ name = DevLogDataCommon; targetProxy = 16573F1134973B16E8CBBE1A /* PBXContainerItemProxy */; }; - 9F9CC6108F20A1C3067082DD /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogUI; - targetProxy = 52E6272133B73E021A630191 /* PBXContainerItemProxy */; - }; A2A3C286B46BB965A8D4C047 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogWidgetCore; From cd7074990c14bda8658e383854abb2980a4540c6 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 11:22:22 +0900 Subject: [PATCH 13/46] =?UTF-8?q?refactor:=20App=20=ED=83=80=EA=B9=83?= =?UTF-8?q?=EC=9D=84=20DevLogApp=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8?= =?UTF-8?q?=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contents.xcworkspacedata | 2 +- .../DevLogApp.xcodeproj}/project.pbxproj | 70 ++--- .../contents.xcworkspacedata | 0 .../xcshareddata/swiftpm/Package.resolved | 294 ++++++++++++++++++ .../xcshareddata/xcschemes/DevLog.xcscheme | 8 +- .../xcschemes/DevLogWidgetExtension.xcscheme | 10 +- .../xcschemes/DevLog_Unit.xcscheme | 6 +- .../xcshareddata/swiftpm/Package.resolved | 87 ------ .../IDEFindNavigatorScopes.plist | 5 - .../xcschemes/xcschememanagement.plist | 47 --- 10 files changed, 342 insertions(+), 187 deletions(-) rename {DevLog.xcodeproj => Application/DevLogApp/DevLogApp.xcodeproj}/project.pbxproj (94%) rename {DevLog.xcodeproj => Application/DevLogApp/DevLogApp.xcodeproj}/project.xcworkspace/contents.xcworkspacedata (100%) create mode 100644 Application/DevLogApp/DevLogApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved rename {DevLog.xcodeproj => Application/DevLogApp/DevLogApp.xcodeproj}/xcshareddata/xcschemes/DevLog.xcscheme (92%) rename {DevLog.xcodeproj => Application/DevLogApp/DevLogApp.xcodeproj}/xcshareddata/xcschemes/DevLogWidgetExtension.xcscheme (92%) rename {DevLog.xcodeproj => Application/DevLogApp/DevLogApp.xcodeproj}/xcshareddata/xcschemes/DevLog_Unit.xcscheme (92%) delete mode 100644 DevLog.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved delete mode 100644 DevLog.xcodeproj/project.xcworkspace/xcuserdata/opfic.xcuserdatad/IDEFindNavigatorScopes.plist delete mode 100644 DevLog.xcodeproj/xcuserdata/opfic.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/Application/DevLog.xcworkspace/contents.xcworkspacedata b/Application/DevLog.xcworkspace/contents.xcworkspacedata index 3b523975..8b7373dc 100644 --- a/Application/DevLog.xcworkspace/contents.xcworkspacedata +++ b/Application/DevLog.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:DevLogApp/DevLogApp.xcodeproj"> diff --git a/DevLog.xcodeproj/project.pbxproj b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj similarity index 94% rename from DevLog.xcodeproj/project.pbxproj rename to Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj index f21c0542..bf7552f2 100644 --- a/DevLog.xcodeproj/project.pbxproj +++ b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj @@ -230,25 +230,25 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = Application/DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; - 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; - 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = Application/DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; - 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = Application/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; - 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogStorage.xcodeproj; path = Application/DevLogStorage/DevLogStorage.xcodeproj; sourceTree = ""; }; - CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogInfra.xcodeproj; path = Application/DevLogInfra/DevLogInfra.xcodeproj; sourceTree = ""; }; - DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = Application/DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; + AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; + 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; + 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; + 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; + 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogStorage.xcodeproj; path = ../DevLogStorage/DevLogStorage.xcodeproj; sourceTree = ""; }; + CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogInfra.xcodeproj; path = ../DevLogInfra/DevLogInfra.xcodeproj; sourceTree = ""; }; + DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; DF3416492E45F67C00F9312B /* DevLog_Unit.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLog_Unit.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = DevLogWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; DFD3A9712F8E89DD001DA7CD /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; DFD3A9732F8E89DD001DA7CD /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; DFD48B002DC4D6E2005905C5 /* DevLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DevLog.app; sourceTree = BUILT_PRODUCTS_DIR; }; - DFD6453F2EC827A10073E133 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = .gitignore; sourceTree = ""; }; - DFD74E2E2E423EA700613803 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = Application/DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; + DFD6453F2EC827A10073E133 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = ../../.gitignore; sourceTree = ""; }; + DFD74E2E2E423EA700613803 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ../../README.md; sourceTree = ""; }; + E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ - 673A0C8CF8DB5C6AD6614292 /* Exceptions for "Application/DevLogApp/Sources" folder in "DevLog" target */ = { + 673A0C8CF8DB5C6AD6614292 /* Exceptions for "Sources" folder in "DevLog" target */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( Resource/Config.xcconfig, @@ -256,7 +256,7 @@ ); target = DFD48AFF2DC4D6E2005905C5 /* DevLog */; }; - 6D865D5656AAAB2BB495EB93 /* Exceptions for "Application/Widget/DevLogWidgetExtension" folder in "DevLogWidgetExtension" target */ = { + 6D865D5656AAAB2BB495EB93 /* Exceptions for "../Widget/DevLogWidgetExtension" folder in "DevLogWidgetExtension" target */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( Resource/Info.plist, @@ -270,23 +270,23 @@ isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( ); - path = DevLog_Unit; + path = ../../DevLog_Unit; sourceTree = ""; }; - DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */ = { + DF8AB7982E938B0B00E50BBF /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( - 673A0C8CF8DB5C6AD6614292 /* Exceptions for "Application/DevLogApp/Sources" folder in "DevLog" target */, + 673A0C8CF8DB5C6AD6614292 /* Exceptions for "Sources" folder in "DevLog" target */, ); - path = Application/DevLogApp/Sources; + path = Sources; sourceTree = ""; }; - DFD3A9752F8E89DD001DA7CD /* Application/Widget/DevLogWidgetExtension */ = { + DFD3A9752F8E89DD001DA7CD /* ../Widget/DevLogWidgetExtension */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( - 6D865D5656AAAB2BB495EB93 /* Exceptions for "Application/Widget/DevLogWidgetExtension" folder in "DevLogWidgetExtension" target */, + 6D865D5656AAAB2BB495EB93 /* Exceptions for "../Widget/DevLogWidgetExtension" folder in "DevLogWidgetExtension" target */, ); - path = Application/Widget/DevLogWidgetExtension; + path = ../Widget/DevLogWidgetExtension; sourceTree = ""; }; /* End PBXFileSystemSynchronizedRootGroup section */ @@ -354,9 +354,9 @@ children = ( DFD74E2E2E423EA700613803 /* README.md */, DFD6453F2EC827A10073E133 /* .gitignore */, - DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */, + DF8AB7982E938B0B00E50BBF /* Sources */, DF34164A2E45F67C00F9312B /* DevLog_Unit */, - DFD3A9752F8E89DD001DA7CD /* Application/Widget/DevLogWidgetExtension */, + DFD3A9752F8E89DD001DA7CD /* ../Widget/DevLogWidgetExtension */, DFE28EB62DCCF26300B28FE5 /* Frameworks */, DFD48B012DC4D6E2005905C5 /* Products */, 4F3D8CEC7F23C3BFF6B9E27B /* Projects */, @@ -432,7 +432,7 @@ 0AB29A08B809E8A2E1AD6CA3 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - DFD3A9752F8E89DD001DA7CD /* Application/Widget/DevLogWidgetExtension */, + DFD3A9752F8E89DD001DA7CD /* ../Widget/DevLogWidgetExtension */, ); name = DevLogWidgetExtension; productName = DevLogWidgetExtension; @@ -467,7 +467,7 @@ 88A796BDB56C53FB2A6CBBB0 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */, + DF8AB7982E938B0B00E50BBF /* Sources */, ); name = DevLog; packageProductDependencies = ( @@ -837,13 +837,13 @@ buildSettings = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; - CODE_SIGN_ENTITLEMENTS = Application/Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements; + CODE_SIGN_ENTITLEMENTS = ../Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 4CPC6N38WA; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Application/Widget/DevLogWidgetExtension/Resource/Info.plist; + INFOPLIST_FILE = ../Widget/DevLogWidgetExtension/Resource/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = DevLogWidget; INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 17; @@ -873,13 +873,13 @@ buildSettings = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; - CODE_SIGN_ENTITLEMENTS = Application/Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements; + CODE_SIGN_ENTITLEMENTS = ../Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 4CPC6N38WA; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Application/Widget/DevLogWidgetExtension/Resource/Info.plist; + INFOPLIST_FILE = ../Widget/DevLogWidgetExtension/Resource/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = DevLogWidget; INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 17; @@ -906,14 +906,14 @@ }; DFD48B122DC4D6E4005905C5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */; + baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* Sources */; baseConfigurationReferenceRelativePath = Resource/Config.xcconfig; buildSettings = { APS_ENVIRONMENT = development; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; - CODE_SIGN_ENTITLEMENTS = Application/DevLogApp/Sources/Resource/DevLog.entitlements; + CODE_SIGN_ENTITLEMENTS = Sources/Resource/DevLog.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; @@ -921,7 +921,7 @@ ENABLE_PREVIEWS = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Application/DevLogApp/Sources/Resource/Info.plist; + INFOPLIST_FILE = Sources/Resource/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = DevLog; INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; @@ -953,14 +953,14 @@ }; DFD48B132DC4D6E4005905C5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */; + baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* Sources */; baseConfigurationReferenceRelativePath = Resource/Config.xcconfig; buildSettings = { APS_ENVIRONMENT = production; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES; - CODE_SIGN_ENTITLEMENTS = Application/DevLogApp/Sources/Resource/DevLog.entitlements; + CODE_SIGN_ENTITLEMENTS = Sources/Resource/DevLog.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; @@ -968,7 +968,7 @@ ENABLE_PREVIEWS = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Application/DevLogApp/Sources/Resource/Info.plist; + INFOPLIST_FILE = Sources/Resource/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = DevLog; INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; @@ -1000,7 +1000,7 @@ }; DFD48B142DC4D6E4005905C5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */; + baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* Sources */; baseConfigurationReferenceRelativePath = Resource/Config.xcconfig; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1069,7 +1069,7 @@ }; DFD48B152DC4D6E4005905C5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* Application/DevLogApp/Sources */; + baseConfigurationReferenceAnchor = DF8AB7982E938B0B00E50BBF /* Sources */; baseConfigurationReferenceRelativePath = Resource/Config.xcconfig; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; diff --git a/DevLog.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Application/DevLogApp/DevLogApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from DevLog.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to Application/DevLogApp/DevLogApp.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/Application/DevLogApp/DevLogApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Application/DevLogApp/DevLogApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..c9fffc37 --- /dev/null +++ b/Application/DevLogApp/DevLogApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,294 @@ +{ + "originHash" : "725d7e6de0281660a42e23ec24e8389420f3b373466c9f96baa68280ef6b09aa", + "pins" : [ + { + "identity" : "abseil-cpp-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/abseil-cpp-binary.git", + "state" : { + "revision" : "bbe8b69694d7873315fd3a4ad41efe043e1c07c5", + "version" : "1.2024072200.0" + } + }, + { + "identity" : "app-check", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/app-check.git", + "state" : { + "revision" : "61b85103a1aeed8218f17c794687781505fbbef5", + "version" : "11.2.0" + } + }, + { + "identity" : "appauth-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/openid/AppAuth-iOS.git", + "state" : { + "revision" : "145104f5ea9d58ae21b60add007c33c1cc0c948e", + "version" : "2.0.0" + } + }, + { + "identity" : "collectionconcurrencykit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/JohnSundell/CollectionConcurrencyKit.git", + "state" : { + "revision" : "b4f23e24b5a1bff301efc5e70871083ca029ff95", + "version" : "0.2.0" + } + }, + { + "identity" : "cryptoswift", + "kind" : "remoteSourceControl", + "location" : "https://github.com/krzyzanowskim/CryptoSwift.git", + "state" : { + "revision" : "f2a627b84c1ff96f21ac2fcb623ab36142dd5512", + "version" : "1.10.0" + } + }, + { + "identity" : "firebase-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/firebase-ios-sdk", + "state" : { + "revision" : "fdc352fabaf5916e7faa1f96ad02b1957e93e5a5", + "version" : "11.15.0" + } + }, + { + "identity" : "google-ads-on-device-conversion-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/googleads/google-ads-on-device-conversion-ios-sdk", + "state" : { + "revision" : "a2d0f1f1666de591eb1a811f40b1706f5c63a2ed", + "version" : "2.3.0" + } + }, + { + "identity" : "googleappmeasurement", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleAppMeasurement.git", + "state" : { + "revision" : "45ce435e9406d3c674dd249a042b932bee006f60", + "version" : "11.15.0" + } + }, + { + "identity" : "googledatatransport", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleDataTransport.git", + "state" : { + "revision" : "617af071af9aa1d6a091d59a202910ac482128f9", + "version" : "10.1.0" + } + }, + { + "identity" : "googlesignin-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleSignIn-iOS", + "state" : { + "revision" : "913b4005ea26aebe1c97d54e35ad82a515924c71", + "version" : "9.1.0" + } + }, + { + "identity" : "googleutilities", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleUtilities.git", + "state" : { + "revision" : "60da361632d0de02786f709bdc0c4df340f7613e", + "version" : "8.1.0" + } + }, + { + "identity" : "grpc-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/grpc-binary.git", + "state" : { + "revision" : "75b31c842f664a0f46a2e590a570e370249fd8f6", + "version" : "1.69.1" + } + }, + { + "identity" : "gtm-session-fetcher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/gtm-session-fetcher.git", + "state" : { + "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b", + "version" : "3.5.0" + } + }, + { + "identity" : "gtmappauth", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GTMAppAuth.git", + "state" : { + "revision" : "56e0ccf09a6dd29dc7e68bdf729598240ca8aa16", + "version" : "5.0.0" + } + }, + { + "identity" : "interop-ios-for-google-sdks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/interop-ios-for-google-sdks.git", + "state" : { + "revision" : "040d087ac2267d2ddd4cca36c757d1c6a05fdbfe", + "version" : "101.0.0" + } + }, + { + "identity" : "leveldb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/leveldb.git", + "state" : { + "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1", + "version" : "1.22.5" + } + }, + { + "identity" : "nanopb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/nanopb.git", + "state" : { + "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", + "version" : "2.30910.0" + } + }, + { + "identity" : "networkimage", + "kind" : "remoteSourceControl", + "location" : "https://github.com/gonzalezreal/NetworkImage", + "state" : { + "revision" : "2849f5323265386e200484b0d0f896e73c3411b9", + "version" : "6.0.1" + } + }, + { + "identity" : "nexa", + "kind" : "remoteSourceControl", + "location" : "https://github.com/opficdev/Nexa", + "state" : { + "revision" : "a2f3ca9862eb24ffc28bdeb6d67293b4e8ddf3a5", + "version" : "1.1.0" + } + }, + { + "identity" : "promises", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/promises.git", + "state" : { + "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", + "version" : "2.4.0" + } + }, + { + "identity" : "sourcekitten", + "kind" : "remoteSourceControl", + "location" : "https://github.com/jpsim/SourceKitten.git", + "state" : { + "revision" : "6529c17fe80dd94843a3df7ed3e6a239790d5c91", + "version" : "0.37.3" + } + }, + { + "identity" : "swift-argument-parser", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-argument-parser.git", + "state" : { + "revision" : "626b5b7b2f45e1b0b1c6f4a309296d1d21d7311b", + "version" : "1.7.1" + } + }, + { + "identity" : "swift-cmark", + "kind" : "remoteSourceControl", + "location" : "https://github.com/swiftlang/swift-cmark", + "state" : { + "revision" : "924936d0427cb25a61169739a7660230bffa6ea6", + "version" : "0.8.0" + } + }, + { + "identity" : "swift-collections", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-collections.git", + "state" : { + "revision" : "03cc312c2c933ed87abace34044a5dff7a3117c1", + "version" : "1.5.0" + } + }, + { + "identity" : "swift-filename-matcher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/ileitch/swift-filename-matcher", + "state" : { + "revision" : "eef5ac0b6b3cdc64b3039b037bed2def8a1edaeb", + "version" : "2.0.1" + } + }, + { + "identity" : "swift-markdown-ui", + "kind" : "remoteSourceControl", + "location" : "https://github.com/gonzalezreal/swift-markdown-ui.git", + "state" : { + "revision" : "5f613358148239d0292c0cef674a3c2314737f9e", + "version" : "2.4.1" + } + }, + { + "identity" : "swift-protobuf", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-protobuf.git", + "state" : { + "revision" : "81558271e243f8f47dfe8e9fdd55f3c2b5413f68", + "version" : "1.37.0" + } + }, + { + "identity" : "swift-syntax", + "kind" : "remoteSourceControl", + "location" : "https://github.com/swiftlang/swift-syntax.git", + "state" : { + "revision" : "65b02a90ad2cc213e09309faeb7f6909e0a8577a", + "version" : "604.0.0-prerelease-2026-01-20" + } + }, + { + "identity" : "swiftlint", + "kind" : "remoteSourceControl", + "location" : "https://github.com/realm/SwiftLint", + "state" : { + "revision" : "88952528a590ed366c6f76f6bfb980b5ebdcefc1", + "version" : "0.63.2" + } + }, + { + "identity" : "swiftytexttable", + "kind" : "remoteSourceControl", + "location" : "https://github.com/scottrhoyt/SwiftyTextTable.git", + "state" : { + "revision" : "c6df6cf533d120716bff38f8ff9885e1ce2a4ac3", + "version" : "0.9.0" + } + }, + { + "identity" : "swxmlhash", + "kind" : "remoteSourceControl", + "location" : "https://github.com/drmohundro/SWXMLHash.git", + "state" : { + "revision" : "a853604c9e9a83ad9954c7e3d2a565273982471f", + "version" : "7.0.2" + } + }, + { + "identity" : "yams", + "kind" : "remoteSourceControl", + "location" : "https://github.com/jpsim/Yams.git", + "state" : { + "revision" : "deaf82e867fa2cbd3cd865978b079bfcf384ac28", + "version" : "6.2.1" + } + } + ], + "version" : 3 +} diff --git a/DevLog.xcodeproj/xcshareddata/xcschemes/DevLog.xcscheme b/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog.xcscheme similarity index 92% rename from DevLog.xcodeproj/xcshareddata/xcschemes/DevLog.xcscheme rename to Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog.xcscheme index 2a843515..b40787db 100644 --- a/DevLog.xcodeproj/xcshareddata/xcschemes/DevLog.xcscheme +++ b/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog.xcscheme @@ -18,7 +18,7 @@ BlueprintIdentifier = "DFD48AFF2DC4D6E2005905C5" BuildableName = "DevLog.app" BlueprintName = "DevLog" - ReferencedContainer = "container:DevLog.xcodeproj"> + ReferencedContainer = "container:DevLogApp.xcodeproj"> @@ -38,7 +38,7 @@ BlueprintIdentifier = "DF3416442E45F67C00F9312B" BuildableName = "DevLog_Unit.xctest" BlueprintName = "DevLog_Unit" - ReferencedContainer = "container:DevLog.xcodeproj"> + ReferencedContainer = "container:DevLogApp.xcodeproj"> @@ -60,7 +60,7 @@ BlueprintIdentifier = "DFD48AFF2DC4D6E2005905C5" BuildableName = "DevLog.app" BlueprintName = "DevLog" - ReferencedContainer = "container:DevLog.xcodeproj"> + ReferencedContainer = "container:DevLogApp.xcodeproj"> @@ -77,7 +77,7 @@ BlueprintIdentifier = "DFD48AFF2DC4D6E2005905C5" BuildableName = "DevLog.app" BlueprintName = "DevLog" - ReferencedContainer = "container:DevLog.xcodeproj"> + ReferencedContainer = "container:DevLogApp.xcodeproj"> diff --git a/DevLog.xcodeproj/xcshareddata/xcschemes/DevLogWidgetExtension.xcscheme b/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLogWidgetExtension.xcscheme similarity index 92% rename from DevLog.xcodeproj/xcshareddata/xcschemes/DevLogWidgetExtension.xcscheme rename to Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLogWidgetExtension.xcscheme index 73c9f92d..8f55cbce 100644 --- a/DevLog.xcodeproj/xcshareddata/xcschemes/DevLogWidgetExtension.xcscheme +++ b/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLogWidgetExtension.xcscheme @@ -19,7 +19,7 @@ BlueprintIdentifier = "DFD3A96F2F8E89DD001DA7CD" BuildableName = "DevLogWidgetExtension.appex" BlueprintName = "DevLogWidgetExtension" - ReferencedContainer = "container:DevLog.xcodeproj"> + ReferencedContainer = "container:DevLogApp.xcodeproj"> + ReferencedContainer = "container:DevLogApp.xcodeproj"> @@ -66,7 +66,7 @@ BlueprintIdentifier = "DFD3A96F2F8E89DD001DA7CD" BuildableName = "DevLogWidgetExtension.appex" BlueprintName = "DevLogWidgetExtension" - ReferencedContainer = "container:DevLog.xcodeproj"> + ReferencedContainer = "container:DevLogApp.xcodeproj"> @@ -75,7 +75,7 @@ BlueprintIdentifier = "DFD48AFF2DC4D6E2005905C5" BuildableName = "DevLog.app" BlueprintName = "DevLog" - ReferencedContainer = "container:DevLog.xcodeproj"> + ReferencedContainer = "container:DevLogApp.xcodeproj"> @@ -111,7 +111,7 @@ BlueprintIdentifier = "DFD48AFF2DC4D6E2005905C5" BuildableName = "DevLog.app" BlueprintName = "DevLog" - ReferencedContainer = "container:DevLog.xcodeproj"> + ReferencedContainer = "container:DevLogApp.xcodeproj"> diff --git a/DevLog.xcodeproj/xcshareddata/xcschemes/DevLog_Unit.xcscheme b/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog_Unit.xcscheme similarity index 92% rename from DevLog.xcodeproj/xcshareddata/xcschemes/DevLog_Unit.xcscheme rename to Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog_Unit.xcscheme index 57d89dee..edb74b69 100644 --- a/DevLog.xcodeproj/xcshareddata/xcschemes/DevLog_Unit.xcscheme +++ b/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog_Unit.xcscheme @@ -22,7 +22,7 @@ BlueprintIdentifier = "DF3416442E45F67C00F9312B" BuildableName = "DevLog_Unit.xctest" BlueprintName = "DevLog_Unit" - ReferencedContainer = "container:DevLog.xcodeproj"> + ReferencedContainer = "container:DevLogApp.xcodeproj"> @@ -44,7 +44,7 @@ BlueprintIdentifier = "DFD48AFF2DC4D6E2005905C5" BuildableName = "DevLog.app" BlueprintName = "DevLog" - ReferencedContainer = "container:DevLog.xcodeproj"> + ReferencedContainer = "container:DevLogApp.xcodeproj"> @@ -60,7 +60,7 @@ BlueprintIdentifier = "DFD48AFF2DC4D6E2005905C5" BuildableName = "DevLog.app" BlueprintName = "DevLog" - ReferencedContainer = "container:DevLog.xcodeproj"> + ReferencedContainer = "container:DevLogApp.xcodeproj"> diff --git a/DevLog.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DevLog.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved deleted file mode 100644 index 79080861..00000000 --- a/DevLog.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ /dev/null @@ -1,87 +0,0 @@ -{ - "originHash" : "4489714843df66e69545dbcba4e839fab69c69cf9e4b9b54ce76bb1fbbf0c229", - "pins" : [ - { - "identity" : "collectionconcurrencykit", - "kind" : "remoteSourceControl", - "location" : "https://github.com/JohnSundell/CollectionConcurrencyKit.git", - "state" : { - "revision" : "b4f23e24b5a1bff301efc5e70871083ca029ff95", - "version" : "0.2.0" - } - }, - { - "identity" : "cryptoswift", - "kind" : "remoteSourceControl", - "location" : "https://github.com/krzyzanowskim/CryptoSwift.git", - "state" : { - "revision" : "e45a26384239e028ec87fbcc788f513b67e10d8f", - "version" : "1.9.0" - } - }, - { - "identity" : "sourcekitten", - "kind" : "remoteSourceControl", - "location" : "https://github.com/jpsim/SourceKitten.git", - "state" : { - "revision" : "731ffe6a35344a19bab00cdca1c952d5b4fee4d8", - "version" : "0.37.2" - } - }, - { - "identity" : "swift-argument-parser", - "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-argument-parser.git", - "state" : { - "revision" : "cdd0ef3755280949551dc26dee5de9ddeda89f54", - "version" : "1.6.2" - } - }, - { - "identity" : "swift-syntax", - "kind" : "remoteSourceControl", - "location" : "https://github.com/swiftlang/swift-syntax.git", - "state" : { - "revision" : "6673b05995983461eef015c4768f1483c245db22", - "version" : "603.0.0-prerelease-2025-09-15" - } - }, - { - "identity" : "swiftlint", - "kind" : "remoteSourceControl", - "location" : "https://github.com/realm/SwiftLint", - "state" : { - "revision" : "57dba9819eb3e2b25daf71a06eb414fda7e43078", - "version" : "0.62.1" - } - }, - { - "identity" : "swiftytexttable", - "kind" : "remoteSourceControl", - "location" : "https://github.com/scottrhoyt/SwiftyTextTable.git", - "state" : { - "revision" : "c6df6cf533d120716bff38f8ff9885e1ce2a4ac3", - "version" : "0.9.0" - } - }, - { - "identity" : "swxmlhash", - "kind" : "remoteSourceControl", - "location" : "https://github.com/drmohundro/SWXMLHash.git", - "state" : { - "revision" : "a853604c9e9a83ad9954c7e3d2a565273982471f", - "version" : "7.0.2" - } - }, - { - "identity" : "yams", - "kind" : "remoteSourceControl", - "location" : "https://github.com/jpsim/Yams.git", - "state" : { - "revision" : "51b5127c7fb6ffac106ad6d199aaa33c5024895f", - "version" : "6.2.0" - } - } - ], - "version" : 3 -} diff --git a/DevLog.xcodeproj/project.xcworkspace/xcuserdata/opfic.xcuserdatad/IDEFindNavigatorScopes.plist b/DevLog.xcodeproj/project.xcworkspace/xcuserdata/opfic.xcuserdatad/IDEFindNavigatorScopes.plist deleted file mode 100644 index 5dd5da85..00000000 --- a/DevLog.xcodeproj/project.xcworkspace/xcuserdata/opfic.xcuserdatad/IDEFindNavigatorScopes.plist +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/DevLog.xcodeproj/xcuserdata/opfic.xcuserdatad/xcschemes/xcschememanagement.plist b/DevLog.xcodeproj/xcuserdata/opfic.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index f77f0ad8..00000000 --- a/DevLog.xcodeproj/xcuserdata/opfic.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,47 +0,0 @@ - - - - - SchemeUserState - - DevLog.xcscheme_^#shared#^_ - - orderHint - 0 - - DevLogWidgetExtension.xcscheme_^#shared#^_ - - orderHint - 2 - - DevLog_Unit.xcscheme_^#shared#^_ - - orderHint - 1 - - Promises (Playground).xcscheme - - orderHint - 3 - - - SuppressBuildableAutocreation - - DF3416442E45F67C00F9312B - - primary - - - DFD3A96F2F8E89DD001DA7CD - - primary - - - DFD48AFF2DC4D6E2005905C5 - - primary - - - - - From d68ccce841272c8590aa818b5442ee20d0bccca0 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 12:00:43 +0900 Subject: [PATCH 14/46] =?UTF-8?q?refactor:=20Widget=20=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EC=9D=98=20Presentation=20=EB=A0=88=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=20=EC=9D=98=EC=A1=B4=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 36 ------------- .../Common/WidgetSharedDefaultsStore.swift | 1 - .../Sources/Common/WidgetSnapshotStore.swift | 19 ++++--- .../Sources/Common/WidgetSyncEvent.swift | 1 - .../Heatmap/HeatmapWidgetSnapshot.swift | 9 ++-- .../HeatmapWidgetSnapshotFactory.swift | 7 ++- .../Sources/Sync/WidgetSyncEventBus.swift | 1 - .../Sources/Sync/WidgetSyncEventBusImpl.swift | 1 - .../Sources/Sync/WidgetSyncEventHandler.swift | 1 - .../Sources/Today/TodayWidgetSnapshot.swift | 7 ++- .../Today/TodayWidgetSnapshotFactory.swift | 53 ++++++++++++------- .../TodayWidgetSnapshotFactoryTests.swift | 34 ++++++------ 12 files changed, 72 insertions(+), 98 deletions(-) diff --git a/Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj b/Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj index 7718922b..f63dc8da 100644 --- a/Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj +++ b/Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj @@ -18,7 +18,6 @@ A839995EF6B607DBECF11933 /* HeatmapWidgetSnapshotFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */; }; B2223843996C9D11E0193B16 /* WidgetSnapshotStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */; }; B5136D8DCBDD2122668F36C5 /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EECF1D1D174C83D0E82EEC37 /* DevLogDataCommon.framework */; }; - C0FB13AD82E4EE78C5FCD66B /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 037D41D56652256DBDC2FC4B /* DevLogPresentation.framework */; }; CD7C54E749A6696CF92AEF71 /* WidgetSyncEventBus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */; }; F29C18438886406B532B926B /* TodayWidgetSnapshotFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */; }; F9D4F24C64D75DC51F89BBC5 /* TodayWidgetSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */; }; @@ -40,13 +39,6 @@ remoteGlobalIDString = 92502C9F074520D19CC451EF; remoteInfo = Subproject; }; - 2B43104001EB83FCD2A9652B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 5E7473315771B5D3030C5003; - remoteInfo = Subproject; - }; 3021BF47C2FDC8E6FA84B229 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */; @@ -96,13 +88,6 @@ remoteGlobalIDString = 7D1E74925088998D68BBFBBB; remoteInfo = DevLogDomain; }; - 8A950C8C84D89659104D9BE2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = A85D2D7D1D6DAAFBF86C9C34; - remoteInfo = DevLogPresentation; - }; 9AD37FC80466FDCF48198BE8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; @@ -120,7 +105,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventBus.swift; path = Sources/Sync/WidgetSyncEventBus.swift; sourceTree = ""; }; 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshotFactory.swift; path = Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift; sourceTree = ""; }; 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshotFactory.swift; path = Sources/Today/TodayWidgetSnapshotFactory.swift; sourceTree = ""; }; @@ -147,7 +131,6 @@ A1DEB84CF3B18EC2005382C5 /* DevLogDomain.framework in Frameworks */, B5136D8DCBDD2122668F36C5 /* DevLogDataCommon.framework in Frameworks */, 0404C6CCF356EE25271EF71F /* DevLogDataProtocol.framework in Frameworks */, - C0FB13AD82E4EE78C5FCD66B /* DevLogPresentation.framework in Frameworks */, 1E316639D5B48E091F18C91D /* DevLogWidgetShared.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -178,7 +161,6 @@ children = ( B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */, ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */, - 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */, 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */, ); name = Projects; @@ -194,7 +176,6 @@ B7FBF3D9169BF38CAE0CEF09 /* DevLogDataProtocol.framework */, 6D0A229E66EFF934401E5C41 /* DevLogDataMapper.framework */, E0C97D1D94352CA4F40DB4C9 /* DevLogDataRepository.framework */, - 037D41D56652256DBDC2FC4B /* DevLogPresentation.framework */, E46E84150C232E2525F648D1 /* DevLogWidgetShared.framework */, ); name = Products; @@ -285,7 +266,6 @@ 504FAABF657F1D901A2B6BB9 /* PBXTargetDependency */, 4036ECCB1366A3CEC681FEB9 /* PBXTargetDependency */, FAB7CF08795995774C902DE1 /* PBXTargetDependency */, - D3B08393F3B485387A0BCDE2 /* PBXTargetDependency */, 5A7DA83CEEE7600394C47846 /* PBXTargetDependency */, ); name = DevLogWidgetCore; @@ -324,10 +304,6 @@ ProductGroup = 573F3011EB6718B39FCF276F /* Products */; ProjectRef = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; }, - { - ProductGroup = 573F3011EB6718B39FCF276F /* Products */; - ProjectRef = 0A1EDF6C52AF092812BC84CA /* DevLogPresentation.xcodeproj */; - }, { ProductGroup = 573F3011EB6718B39FCF276F /* Products */; ProjectRef = 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */; @@ -341,13 +317,6 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - 037D41D56652256DBDC2FC4B /* DevLogPresentation.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogPresentation.framework; - remoteRef = 2B43104001EB83FCD2A9652B /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 55250D20C9A4B42D2FF1334C /* DevLogDataDTO.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -445,11 +414,6 @@ name = DevLogWidgetShared; targetProxy = 3021BF47C2FDC8E6FA84B229 /* PBXContainerItemProxy */; }; - D3B08393F3B485387A0BCDE2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogPresentation; - targetProxy = 8A950C8C84D89659104D9BE2 /* PBXContainerItemProxy */; - }; FAB7CF08795995774C902DE1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDataProtocol; diff --git a/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift b/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift index 899557d7..89f6b51b 100644 --- a/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift +++ b/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift @@ -9,7 +9,6 @@ import Foundation import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetShared final class WidgetSharedDefaultsStore { diff --git a/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift b/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift index abb6e7da..050d2d96 100644 --- a/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift +++ b/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift @@ -9,39 +9,42 @@ import Foundation import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetShared -final class WidgetSnapshotStore { +public final class WidgetSnapshotStore { private let store: WidgetSharedDefaultsStore private let encoder = JSONEncoder() private let decoder = JSONDecoder() - init(store: WidgetSharedDefaultsStore = .init()) { + public init() { + self.store = WidgetSharedDefaultsStore() + } + + init(store: WidgetSharedDefaultsStore) { self.store = store } - func saveTodaySnapshot(_ snapshot: TodayWidgetSnapshot) throws { + public func saveTodaySnapshot(_ snapshot: TodayWidgetSnapshot) throws { let data = try encoder.encode(snapshot) store.setData(data, forKey: WidgetSnapshotKey.today) } - func loadTodaySnapshot() throws -> TodayWidgetSnapshot? { + public func loadTodaySnapshot() throws -> TodayWidgetSnapshot? { guard let data = store.data(forKey: WidgetSnapshotKey.today) else { return nil } return try decoder.decode(TodayWidgetSnapshot.self, from: data) } - func saveHeatmapSnapshot(_ snapshot: HeatmapWidgetSnapshot) throws { + public func saveHeatmapSnapshot(_ snapshot: HeatmapWidgetSnapshot) throws { let data = try encoder.encode(snapshot) store.setData(data, forKey: WidgetSnapshotKey.heatmap) } - func loadHeatmapSnapshot() throws -> HeatmapWidgetSnapshot? { + public func loadHeatmapSnapshot() throws -> HeatmapWidgetSnapshot? { guard let data = store.data(forKey: WidgetSnapshotKey.heatmap) else { return nil } return try decoder.decode(HeatmapWidgetSnapshot.self, from: data) } - func clearSnapshots() { + public func clearSnapshots() { WidgetSnapshotKey.snapshots.forEach { store.removeObject(forKey: $0) } diff --git a/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift b/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift index 08d28059..eef43c6f 100644 --- a/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift +++ b/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift @@ -8,7 +8,6 @@ import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetShared enum WidgetSyncEvent: Equatable { diff --git a/Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift b/Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift index 84652ad1..4c96bead 100644 --- a/Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift +++ b/Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift @@ -9,10 +9,9 @@ import Foundation import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetShared -struct HeatmapWidgetSnapshot: Codable, Equatable { +public struct HeatmapWidgetSnapshot: Codable, Equatable { let generatedAt: Date let quarterStart: Date let selectedActivityKindRawValues: [String] @@ -20,17 +19,17 @@ struct HeatmapWidgetSnapshot: Codable, Equatable { let months: [WidgetHeatmapMonthSnapshot] } -struct WidgetHeatmapMonthSnapshot: Codable, Equatable { +public struct WidgetHeatmapMonthSnapshot: Codable, Equatable { let monthStart: Date let weeks: [WidgetHeatmapWeekSnapshot] } -struct WidgetHeatmapWeekSnapshot: Codable, Equatable { +public struct WidgetHeatmapWeekSnapshot: Codable, Equatable { let id: Int let days: [WidgetHeatmapDaySnapshot] } -struct WidgetHeatmapDaySnapshot: Codable, Equatable { +public struct WidgetHeatmapDaySnapshot: Codable, Equatable { let date: Date let createdCount: Int let completedCount: Int diff --git a/Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift b/Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift index 23716e36..d25927be 100644 --- a/Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift +++ b/Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift @@ -9,10 +9,9 @@ import Foundation import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetShared -struct HeatmapWidgetSnapshotFactory { +public struct HeatmapWidgetSnapshotFactory { fileprivate struct DailyCounts { var createdCount = 0 var completedCount = 0 @@ -32,11 +31,11 @@ struct HeatmapWidgetSnapshotFactory { private let calendar: Calendar - init(calendar: Calendar = .current) { + public init(calendar: Calendar = .current) { self.calendar = calendar } - func makeSnapshot( + public func makeSnapshot( createdTodos: [Todo], completedTodos: [Todo], deletedTodos: [Todo], diff --git a/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift b/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift index 23b55966..26183eea 100644 --- a/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift +++ b/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift @@ -9,7 +9,6 @@ import Combine import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetShared protocol WidgetSyncEventBus { diff --git a/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift b/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift index 93dc5fa7..e24e688a 100644 --- a/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift +++ b/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift @@ -9,7 +9,6 @@ import Combine import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetShared final class WidgetSyncEventBusImpl: WidgetSyncEventBus { diff --git a/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift b/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift index 973978e5..4dfc2940 100644 --- a/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift +++ b/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift @@ -10,7 +10,6 @@ import Foundation import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetShared final class WidgetSyncEventHandler { diff --git a/Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift b/Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift index 3cc86571..3ddd1e8d 100644 --- a/Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift +++ b/Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift @@ -9,10 +9,9 @@ import Foundation import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetShared -struct TodayWidgetSnapshot: Codable, Equatable { +public struct TodayWidgetSnapshot: Codable, Equatable { let generatedAt: Date let totalCount: Int let focusedCount: Int @@ -21,12 +20,12 @@ struct TodayWidgetSnapshot: Codable, Equatable { let sections: [TodayWidgetSectionSnapshot] } -struct TodayWidgetSectionSnapshot: Codable, Equatable { +public struct TodayWidgetSectionSnapshot: Codable, Equatable { let category: String let items: [WidgetTodoSnapshotItem] } -struct WidgetTodoSnapshotItem: Codable, Equatable { +public struct WidgetTodoSnapshotItem: Codable, Equatable { let id: String let number: Int let title: String diff --git a/Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift b/Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift index c4226875..46506435 100644 --- a/Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift +++ b/Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift @@ -9,10 +9,9 @@ import Foundation import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetShared -struct TodayWidgetSnapshotFactory { +public struct TodayWidgetSnapshotFactory { private enum SectionCategory: String, CaseIterable { case focused case overdue @@ -22,13 +21,13 @@ struct TodayWidgetSnapshotFactory { } private struct SectionCollection { - var focused = [TodayTodoItem]() - var overdue = [TodayTodoItem]() - var dueSoon = [TodayTodoItem]() - var later = [TodayTodoItem]() - var unscheduled = [TodayTodoItem]() + var focused = [TodayWidgetTodoItem]() + var overdue = [TodayWidgetTodoItem]() + var dueSoon = [TodayWidgetTodoItem]() + var later = [TodayWidgetTodoItem]() + var unscheduled = [TodayWidgetTodoItem]() - func items(for category: SectionCategory) -> [TodayTodoItem] { + func items(for category: SectionCategory) -> [TodayWidgetTodoItem] { switch category { case .focused: focused @@ -44,10 +43,27 @@ struct TodayWidgetSnapshotFactory { } } + private struct TodayWidgetTodoItem { + let id: String + let number: Int + let title: String + let isPinned: Bool + let dueDate: Date? + + init?(from todo: Todo) { + guard let number = todo.number else { return nil } + self.id = todo.id + self.number = number + self.title = todo.title + self.isPinned = todo.isPinned + self.dueDate = todo.dueDate + } + } + private let calendar: Calendar private let upcomingWindowDays: Int - init( + public init( calendar: Calendar = .current, upcomingWindowDays: Int = 7 ) { @@ -55,13 +71,14 @@ struct TodayWidgetSnapshotFactory { self.upcomingWindowDays = upcomingWindowDays } - func makeSnapshot( - todos: [TodayTodoItem], + public func makeSnapshot( + todos: [Todo], displayOptions: TodayDisplayOptions, now: Date = Date() ) -> TodayWidgetSnapshot { + let todayWidgetTodoItems = todos.compactMap { TodayWidgetTodoItem(from: $0) } let displayedTodos = displayedTodos( - from: todos, + from: todayWidgetTodoItems, displayOptions: displayOptions ) let sections = groupedSectionItems( @@ -96,10 +113,10 @@ struct TodayWidgetSnapshotFactory { } private func displayedTodos( - from todos: [TodayTodoItem], + from todos: [TodayWidgetTodoItem], displayOptions: TodayDisplayOptions - ) -> [TodayTodoItem] { - let dueDateFilteredTodos: [TodayTodoItem] + ) -> [TodayWidgetTodoItem] { + let dueDateFilteredTodos: [TodayWidgetTodoItem] switch displayOptions.dueDateVisibility { case .all: dueDateFilteredTodos = todos @@ -118,7 +135,7 @@ struct TodayWidgetSnapshotFactory { } private func groupedSectionItems( - from items: [TodayTodoItem], + from items: [TodayWidgetTodoItem], now: Date ) -> SectionCollection { let startOfToday = calendar.startOfDay(for: now) @@ -160,7 +177,7 @@ struct TodayWidgetSnapshotFactory { } private func isOverdue( - _ item: TodayTodoItem, + _ item: TodayWidgetTodoItem, now: Date ) -> Bool { guard let dueDate = item.dueDate else { return false } @@ -168,7 +185,7 @@ struct TodayWidgetSnapshotFactory { } private func isDueSoon( - _ item: TodayTodoItem, + _ item: TodayWidgetTodoItem, now: Date ) -> Bool { guard let dueDate = item.dueDate else { return false } diff --git a/DevLog_Unit/Widget/TodayWidgetSnapshotFactoryTests.swift b/DevLog_Unit/Widget/TodayWidgetSnapshotFactoryTests.swift index 64077da8..508df8a8 100644 --- a/DevLog_Unit/Widget/TodayWidgetSnapshotFactoryTests.swift +++ b/DevLog_Unit/Widget/TodayWidgetSnapshotFactoryTests.swift @@ -67,36 +67,36 @@ struct TodayWidgetSnapshotFactoryTests { let factory = TodayWidgetSnapshotFactory(calendar: calendar) let snapshot = factory.makeSnapshot( - todos: try [ - makeTodayTodoItem( + todos: [ + makeTodo( id: "todo-overdue", number: 1, title: "지난 일정", isPinned: false, dueDate: yesterday ), - makeTodayTodoItem( + makeTodo( id: "todo-today", number: 2, title: "오늘 일정", isPinned: false, dueDate: now ), - makeTodayTodoItem( + makeTodo( id: "todo-seven-days-later", number: 3, title: "7일 뒤 일정", isPinned: false, dueDate: sevenDaysLater ), - makeTodayTodoItem( + makeTodo( id: "todo-eight-days-later", number: 4, title: "8일 뒤 일정", isPinned: false, dueDate: eightDaysLater ), - makeTodayTodoItem( + makeTodo( id: "todo-unscheduled", number: 5, title: "미정 일정", @@ -121,41 +121,41 @@ struct TodayWidgetSnapshotFactoryTests { private func makeTodayTodos( now: Date, calendar: Calendar - ) throws -> [TodayTodoItem] { + ) throws -> [Todo] { let overdueDate = try #require(calendar.date(byAdding: .day, value: -1, to: now)) let dueSoonDate = try #require(calendar.date(byAdding: .day, value: 3, to: now)) let laterDate = try #require(calendar.date(byAdding: .day, value: 9, to: now)) - return try [ - makeTodayTodoItem( + return [ + makeTodo( id: "todo-1", number: 1, title: "고정된 할 일", isPinned: true, dueDate: dueSoonDate ), - makeTodayTodoItem( + makeTodo( id: "todo-2", number: 2, title: "지난 일정", isPinned: false, dueDate: overdueDate ), - makeTodayTodoItem( + makeTodo( id: "todo-3", number: 3, title: "임박 일정", isPinned: false, dueDate: dueSoonDate ), - makeTodayTodoItem( + makeTodo( id: "todo-4", number: 4, title: "나중 일정", isPinned: false, dueDate: laterDate ), - makeTodayTodoItem( + makeTodo( id: "todo-5", number: 5, title: "미정 일정", @@ -165,14 +165,14 @@ struct TodayWidgetSnapshotFactoryTests { ] } - private func makeTodayTodoItem( + private func makeTodo( id: String, number: Int, title: String, isPinned: Bool, dueDate: Date? - ) throws -> TodayTodoItem { - let todo = Todo( + ) -> Todo { + Todo( id: id, isPinned: isPinned, isCompleted: false, @@ -188,7 +188,5 @@ struct TodayWidgetSnapshotFactoryTests { tags: [], category: .system(.feature) ) - - return try #require(TodayTodoItem(from: todo)) } } From 62577304090afe42b3f3c8e0c7fd5546f7233e31 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 12:00:50 +0900 Subject: [PATCH 15/46] =?UTF-8?q?refactor:=20Storage=20=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EC=9D=98=20Presentation=20=EB=A0=88=EC=9D=B4=EC=96=B4?= =?UTF-8?q?=20=EC=9D=98=EC=A1=B4=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogStorage.xcodeproj/project.pbxproj | 40 +------------------ .../Sources/Persistence/ThemeStoreImpl.swift | 1 - .../Persistence/UserDefaultsStoreImpl.swift | 1 - .../Persistence/WebPageImageStoreImpl.swift | 1 - .../WidgetSnapshotPreferenceStoreImpl.swift | 1 - .../WidgetSnapshotUpdaterImpl.swift | 4 +- 6 files changed, 3 insertions(+), 45 deletions(-) diff --git a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj index 7141d57d..31426853 100644 --- a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj +++ b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj @@ -16,19 +16,11 @@ 809200C32B4373978AEB0E9C /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E11B536BC8D874B485E853C1 /* DevLogDataCommon.framework */; }; 9814DBF1A0DCD650FEF5A376 /* WidgetSnapshotUpdaterImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */; }; B1EAEC66B3C4F0B16072F5BE /* WidgetSnapshotPreferenceStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */; }; - CBCE60D1065F6E710D2448C2 /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92ED589CB5AF264F08FAC2AA /* DevLogPresentation.framework */; }; E53E13B73BFAF0C51013ECA2 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */; }; FD5714A26C340EB6EA8EDF20 /* DevLogDataProtocol.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B82421EAA10239DFA7F2BC87 /* DevLogDataProtocol.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 03525AD86342AAD3446AD593 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 667A0BFA990142C8AE46316A /* DevLogPresentation.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = A85D2D7D1D6DAAFBF86C9C34; - remoteInfo = DevLogPresentation; - }; 1E8A0ECBDDDDE7B102E9CE1B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; @@ -36,13 +28,6 @@ remoteGlobalIDString = 690289F520872AC78D6C95D3; remoteInfo = Subproject; }; - 3F2DE4C241EABA0D34263E21 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 667A0BFA990142C8AE46316A /* DevLogPresentation.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 5E7473315771B5D3030C5003; - remoteInfo = Subproject; - }; 60C2DA2FC710E0E17F04FE38 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; @@ -132,15 +117,14 @@ /* Begin PBXFileReference section */ 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStoreImpl.swift; path = Sources/Persistence/ThemeStoreImpl.swift; sourceTree = ""; }; 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; - 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; + 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; - 667A0BFA990142C8AE46316A /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStoreImpl.swift; path = Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift; sourceTree = ""; }; 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStoreImpl.swift; path = Sources/Persistence/UserDefaultsStoreImpl.swift; sourceTree = ""; }; 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdaterImpl.swift; path = Sources/Persistence/WidgetSnapshotUpdaterImpl.swift; sourceTree = ""; }; 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogStorage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 98B16FCDA8A71E2E4E1DC05E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; + AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStoreImpl.swift; path = Sources/Persistence/WebPageImageStoreImpl.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -153,7 +137,6 @@ 7D8DE74BD24B456D42B04806 /* DevLogDomain.framework in Frameworks */, 809200C32B4373978AEB0E9C /* DevLogDataCommon.framework in Frameworks */, FD5714A26C340EB6EA8EDF20 /* DevLogDataProtocol.framework in Frameworks */, - CBCE60D1065F6E710D2448C2 /* DevLogPresentation.framework in Frameworks */, E53E13B73BFAF0C51013ECA2 /* DevLogWidgetCore.framework in Frameworks */, 0B318F82A17C708D399761BB /* DevLogWidgetShared.framework in Frameworks */, ); @@ -218,7 +201,6 @@ B82421EAA10239DFA7F2BC87 /* DevLogDataProtocol.framework */, C44C541F40188C5D426687A9 /* DevLogDataMapper.framework */, 85C80A6D5C01B14BC8BA3898 /* DevLogDataRepository.framework */, - 92ED589CB5AF264F08FAC2AA /* DevLogPresentation.framework */, 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */, A901500062F184A55322ED05 /* DevLogWidgetShared.framework */, ); @@ -230,7 +212,6 @@ children = ( 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */, 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */, - 667A0BFA990142C8AE46316A /* DevLogPresentation.xcodeproj */, AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */, 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */, ); @@ -265,7 +246,6 @@ 083FDD9BBD997A11EED7ACA9 /* PBXTargetDependency */, 4E20E0F4BBBBD8A8C0B4C71F /* PBXTargetDependency */, 990E65E094C3CCFB4C1E1A8B /* PBXTargetDependency */, - 2E5E60AD3247315CCBCA3361 /* PBXTargetDependency */, 8C9EB60C8E58A67726AF0EF1 /* PBXTargetDependency */, 79C71E38CBE3984287E4AC6A /* PBXTargetDependency */, ); @@ -305,10 +285,6 @@ ProductGroup = AD653F86B18A4BB73CB50AFE /* Products */; ProjectRef = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; }, - { - ProductGroup = AD653F86B18A4BB73CB50AFE /* Products */; - ProjectRef = 667A0BFA990142C8AE46316A /* DevLogPresentation.xcodeproj */; - }, { ProductGroup = AD653F86B18A4BB73CB50AFE /* Products */; ProjectRef = AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */; @@ -340,13 +316,6 @@ remoteRef = D4D5E6A626F52A82593C41A7 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 92ED589CB5AF264F08FAC2AA /* DevLogPresentation.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogPresentation.framework; - remoteRef = 3F2DE4C241EABA0D34263E21 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; A901500062F184A55322ED05 /* DevLogWidgetShared.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -422,11 +391,6 @@ name = DevLogDomain; targetProxy = C118DECC34A0AE1E3085D4AB /* PBXContainerItemProxy */; }; - 2E5E60AD3247315CCBCA3361 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogPresentation; - targetProxy = 03525AD86342AAD3446AD593 /* PBXContainerItemProxy */; - }; 4E20E0F4BBBBD8A8C0B4C71F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDataCommon; diff --git a/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift index b3684983..313a26d1 100644 --- a/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift @@ -9,7 +9,6 @@ import Combine import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetCore import DevLogWidgetShared diff --git a/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift index 147f26ad..c96d97bc 100644 --- a/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift @@ -9,7 +9,6 @@ import Foundation import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetCore import DevLogWidgetShared diff --git a/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift index 208f9654..2f179aca 100644 --- a/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift @@ -10,7 +10,6 @@ import Foundation import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetCore import DevLogWidgetShared diff --git a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift index 897a84ef..262f126e 100644 --- a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift @@ -9,7 +9,6 @@ import Foundation import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetCore import DevLogWidgetShared diff --git a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift index e715ebf0..3ccf3cba 100644 --- a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift @@ -10,7 +10,6 @@ import WidgetKit import DevLogDomain import DevLogDataCommon import DevLogDataProtocol -import DevLogPresentation import DevLogWidgetCore import DevLogWidgetShared @@ -49,9 +48,8 @@ final class WidgetSnapshotUpdaterImpl: WidgetSnapshotUpdater { displayOptions: TodayDisplayOptions, now: Date = Date() ) { - let todayTodoItems = todos.compactMap { TodayTodoItem(from: $0) } let todayWidgetSnapshot = todayFactory.makeSnapshot( - todos: todayTodoItems, + todos: todos, displayOptions: displayOptions, now: now ) From 78e5b3e3e1662f5312dd9200aeb5ac339e4c15a8 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 12:09:14 +0900 Subject: [PATCH 16/46] =?UTF-8?q?refactor:=20=EC=9C=84=EC=A0=AF=EA=B3=BC?= =?UTF-8?q?=20=EC=9B=8C=ED=81=AC=EC=8A=A4=ED=8E=98=EC=9D=B4=EC=8A=A4=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../contents.xcworkspacedata | 31 ------------------- .../DevLogApp.xcodeproj/project.pbxproj | 24 +++++++------- .../DevLogStorage.xcodeproj/project.pbxproj | 4 +-- DevLog.xcworkspace/contents.xcworkspacedata | 31 +++++++++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcshareddata/swiftpm/Package.resolved | 0 .../project.pbxproj | 0 .../xcschemes/DevLogWidgetCore.xcscheme | 0 .../Common/WidgetSharedDefaultsStore.swift | 0 .../Sources/Common/WidgetSnapshotStore.swift | 0 .../Sources/Common/WidgetSyncEvent.swift | 0 .../Heatmap/HeatmapWidgetSnapshot.swift | 0 .../HeatmapWidgetSnapshotFactory.swift | 0 .../Sources/Sync/WidgetSyncEventBus.swift | 0 .../Sources/Sync/WidgetSyncEventBusImpl.swift | 0 .../Sources/Sync/WidgetSyncEventHandler.swift | 0 .../Sources/Today/TodayWidgetSnapshot.swift | 0 .../Today/TodayWidgetSnapshotFactory.swift | 0 .../Common/WidgetPlaceholderCard.swift | 0 .../Common/WidgetSharedDefaultsStore.swift | 0 .../Common/WidgetSnapshotStore.swift | 0 .../DevLogWidgetBundle.swift | 0 .../Heatmap/HeatmapWidget.swift | 0 .../HeatmapWidgetConfigurationIntent.swift | 0 .../Heatmap/HeatmapWidgetEntry.swift | 0 .../Heatmap/HeatmapWidgetEntryView.swift | 0 .../Heatmap/HeatmapWidgetProvider.swift | 0 .../Heatmap/HeatmapWidgetSnapshot.swift | 0 .../Heatmap/WidgetHeatmapGrid.swift | 0 .../Heatmap/WidgetHeatmapLayout.swift | 0 .../AccentColor.colorset/Contents.json | 0 .../AppIcon.appiconset/Contents.json | 0 .../Resource/Assets.xcassets/Contents.json | 0 .../WidgetBackground.colorset/Contents.json | 0 .../Resource/DevLogWidget.entitlements | 0 .../DevLogWidgetExtension/Resource/Info.plist | 0 .../Resource/Localizable.xcstrings | 0 .../Today/TodayTodoWidget.swift | 0 .../TodayTodoWidgetConfigurationIntent.swift | 0 .../Today/TodayTodoWidgetEntry.swift | 0 .../Today/TodayTodoWidgetEntryView.swift | 0 .../Today/TodayTodoWidgetProvider.swift | 0 .../Today/TodayWidgetSnapshot.swift | 0 .../project.pbxproj | 0 .../xcschemes/DevLogWidgetShared.xcscheme | 0 .../DevLogWidgetShared/Sources/Calendar.swift | 0 .../Sources/WidgetAppGroup.swift | 0 .../Sources/WidgetDeepLink.swift | 0 .../WidgetHeatmapPlaceholderShape.swift | 0 .../Sources/WidgetKind.swift | 0 .../Sources/WidgetSnapshotKey.swift | 0 51 files changed, 45 insertions(+), 45 deletions(-) delete mode 100644 Application/DevLog.xcworkspace/contents.xcworkspacedata create mode 100644 DevLog.xcworkspace/contents.xcworkspacedata rename {Application/DevLog.xcworkspace => DevLog.xcworkspace}/xcshareddata/IDEWorkspaceChecks.plist (100%) rename {Application/DevLog.xcworkspace => DevLog.xcworkspace}/xcshareddata/swiftpm/Package.resolved (100%) rename {Application/Widget => Widget}/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj (100%) rename {Application/Widget => Widget}/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme (100%) rename {Application/Widget => Widget}/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Common/WidgetPlaceholderCard.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Common/WidgetSharedDefaultsStore.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Common/WidgetSnapshotStore.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/DevLogWidgetBundle.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Heatmap/HeatmapWidget.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Heatmap/HeatmapWidgetConfigurationIntent.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntry.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntryView.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Heatmap/HeatmapWidgetProvider.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Heatmap/HeatmapWidgetSnapshot.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Heatmap/WidgetHeatmapGrid.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Heatmap/WidgetHeatmapLayout.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Resource/Assets.xcassets/AccentColor.colorset/Contents.json (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Resource/Assets.xcassets/Contents.json (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Resource/DevLogWidget.entitlements (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Resource/Info.plist (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Resource/Localizable.xcstrings (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Today/TodayTodoWidget.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Today/TodayTodoWidgetConfigurationIntent.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Today/TodayTodoWidgetEntry.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Today/TodayTodoWidgetEntryView.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Today/TodayTodoWidgetProvider.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetExtension/Today/TodayWidgetSnapshot.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj (100%) rename {Application/Widget => Widget}/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme (100%) rename {Application/Widget => Widget}/DevLogWidgetShared/Sources/Calendar.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetShared/Sources/WidgetAppGroup.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetShared/Sources/WidgetDeepLink.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetShared/Sources/WidgetKind.swift (100%) rename {Application/Widget => Widget}/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift (100%) diff --git a/Application/DevLog.xcworkspace/contents.xcworkspacedata b/Application/DevLog.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 8b7373dc..00000000 --- a/Application/DevLog.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj index bf7552f2..c8f3b267 100644 --- a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj +++ b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj @@ -231,9 +231,9 @@ /* Begin PBXFileReference section */ AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; - 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; + 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../../Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; - 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; + 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../../Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogStorage.xcodeproj; path = ../DevLogStorage/DevLogStorage.xcodeproj; sourceTree = ""; }; CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogInfra.xcodeproj; path = ../DevLogInfra/DevLogInfra.xcodeproj; sourceTree = ""; }; DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; @@ -256,7 +256,7 @@ ); target = DFD48AFF2DC4D6E2005905C5 /* DevLog */; }; - 6D865D5656AAAB2BB495EB93 /* Exceptions for "../Widget/DevLogWidgetExtension" folder in "DevLogWidgetExtension" target */ = { + 6D865D5656AAAB2BB495EB93 /* Exceptions for "../../Widget/DevLogWidgetExtension" folder in "DevLogWidgetExtension" target */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( Resource/Info.plist, @@ -281,12 +281,12 @@ path = Sources; sourceTree = ""; }; - DFD3A9752F8E89DD001DA7CD /* ../Widget/DevLogWidgetExtension */ = { + DFD3A9752F8E89DD001DA7CD /* ../../Widget/DevLogWidgetExtension */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( - 6D865D5656AAAB2BB495EB93 /* Exceptions for "../Widget/DevLogWidgetExtension" folder in "DevLogWidgetExtension" target */, + 6D865D5656AAAB2BB495EB93 /* Exceptions for "../../Widget/DevLogWidgetExtension" folder in "DevLogWidgetExtension" target */, ); - path = ../Widget/DevLogWidgetExtension; + path = ../../Widget/DevLogWidgetExtension; sourceTree = ""; }; /* End PBXFileSystemSynchronizedRootGroup section */ @@ -356,7 +356,7 @@ DFD6453F2EC827A10073E133 /* .gitignore */, DF8AB7982E938B0B00E50BBF /* Sources */, DF34164A2E45F67C00F9312B /* DevLog_Unit */, - DFD3A9752F8E89DD001DA7CD /* ../Widget/DevLogWidgetExtension */, + DFD3A9752F8E89DD001DA7CD /* ../../Widget/DevLogWidgetExtension */, DFE28EB62DCCF26300B28FE5 /* Frameworks */, DFD48B012DC4D6E2005905C5 /* Products */, 4F3D8CEC7F23C3BFF6B9E27B /* Projects */, @@ -432,7 +432,7 @@ 0AB29A08B809E8A2E1AD6CA3 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - DFD3A9752F8E89DD001DA7CD /* ../Widget/DevLogWidgetExtension */, + DFD3A9752F8E89DD001DA7CD /* ../../Widget/DevLogWidgetExtension */, ); name = DevLogWidgetExtension; productName = DevLogWidgetExtension; @@ -837,13 +837,13 @@ buildSettings = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; - CODE_SIGN_ENTITLEMENTS = ../Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements; + CODE_SIGN_ENTITLEMENTS = ../../Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 4CPC6N38WA; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = ../Widget/DevLogWidgetExtension/Resource/Info.plist; + INFOPLIST_FILE = ../../Widget/DevLogWidgetExtension/Resource/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = DevLogWidget; INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 17; @@ -873,13 +873,13 @@ buildSettings = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; - CODE_SIGN_ENTITLEMENTS = ../Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements; + CODE_SIGN_ENTITLEMENTS = ../../Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 4CPC6N38WA; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = ../Widget/DevLogWidgetExtension/Resource/Info.plist; + INFOPLIST_FILE = ../../Widget/DevLogWidgetExtension/Resource/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = DevLogWidget; INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 17; diff --git a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj index 31426853..9e062a95 100644 --- a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj +++ b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj @@ -117,14 +117,14 @@ /* Begin PBXFileReference section */ 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStoreImpl.swift; path = Sources/Persistence/ThemeStoreImpl.swift; sourceTree = ""; }; 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; - 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; + 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../../Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStoreImpl.swift; path = Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift; sourceTree = ""; }; 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStoreImpl.swift; path = Sources/Persistence/UserDefaultsStoreImpl.swift; sourceTree = ""; }; 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdaterImpl.swift; path = Sources/Persistence/WidgetSnapshotUpdaterImpl.swift; sourceTree = ""; }; 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogStorage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 98B16FCDA8A71E2E4E1DC05E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; + AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../../Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStoreImpl.swift; path = Sources/Persistence/WebPageImageStoreImpl.swift; sourceTree = ""; }; /* End PBXFileReference section */ diff --git a/DevLog.xcworkspace/contents.xcworkspacedata b/DevLog.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..49839dc1 --- /dev/null +++ b/DevLog.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/Application/DevLog.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/DevLog.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from Application/DevLog.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to DevLog.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Application/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved similarity index 100% rename from Application/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved rename to DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj similarity index 100% rename from Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj rename to Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj diff --git a/Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme similarity index 100% rename from Application/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme rename to Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCore.xcscheme diff --git a/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift similarity index 100% rename from Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift rename to Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift diff --git a/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift similarity index 100% rename from Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift rename to Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift diff --git a/Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift similarity index 100% rename from Application/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift rename to Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift diff --git a/Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift b/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift similarity index 100% rename from Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift rename to Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift diff --git a/Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift b/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift similarity index 100% rename from Application/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift rename to Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift diff --git a/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift similarity index 100% rename from Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift rename to Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift diff --git a/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift similarity index 100% rename from Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift rename to Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift diff --git a/Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift similarity index 100% rename from Application/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift rename to Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift diff --git a/Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift b/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift similarity index 100% rename from Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift rename to Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift diff --git a/Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift b/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift similarity index 100% rename from Application/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift rename to Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift diff --git a/Application/Widget/DevLogWidgetExtension/Common/WidgetPlaceholderCard.swift b/Widget/DevLogWidgetExtension/Common/WidgetPlaceholderCard.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Common/WidgetPlaceholderCard.swift rename to Widget/DevLogWidgetExtension/Common/WidgetPlaceholderCard.swift diff --git a/Application/Widget/DevLogWidgetExtension/Common/WidgetSharedDefaultsStore.swift b/Widget/DevLogWidgetExtension/Common/WidgetSharedDefaultsStore.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Common/WidgetSharedDefaultsStore.swift rename to Widget/DevLogWidgetExtension/Common/WidgetSharedDefaultsStore.swift diff --git a/Application/Widget/DevLogWidgetExtension/Common/WidgetSnapshotStore.swift b/Widget/DevLogWidgetExtension/Common/WidgetSnapshotStore.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Common/WidgetSnapshotStore.swift rename to Widget/DevLogWidgetExtension/Common/WidgetSnapshotStore.swift diff --git a/Application/Widget/DevLogWidgetExtension/DevLogWidgetBundle.swift b/Widget/DevLogWidgetExtension/DevLogWidgetBundle.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/DevLogWidgetBundle.swift rename to Widget/DevLogWidgetExtension/DevLogWidgetBundle.swift diff --git a/Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidget.swift b/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidget.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidget.swift rename to Widget/DevLogWidgetExtension/Heatmap/HeatmapWidget.swift diff --git a/Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetConfigurationIntent.swift b/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetConfigurationIntent.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetConfigurationIntent.swift rename to Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetConfigurationIntent.swift diff --git a/Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntry.swift b/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntry.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntry.swift rename to Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntry.swift diff --git a/Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntryView.swift b/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntryView.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntryView.swift rename to Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntryView.swift diff --git a/Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetProvider.swift b/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetProvider.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetProvider.swift rename to Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetProvider.swift diff --git a/Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetSnapshot.swift b/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetSnapshot.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetSnapshot.swift rename to Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetSnapshot.swift diff --git a/Application/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapGrid.swift b/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapGrid.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapGrid.swift rename to Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapGrid.swift diff --git a/Application/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapLayout.swift b/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapLayout.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapLayout.swift rename to Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapLayout.swift diff --git a/Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/AccentColor.colorset/Contents.json b/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/AccentColor.colorset/Contents.json similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/AccentColor.colorset/Contents.json rename to Widget/DevLogWidgetExtension/Resource/Assets.xcassets/AccentColor.colorset/Contents.json diff --git a/Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json b/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json rename to Widget/DevLogWidgetExtension/Resource/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/Contents.json b/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/Contents.json similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/Contents.json rename to Widget/DevLogWidgetExtension/Resource/Assets.xcassets/Contents.json diff --git a/Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json b/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json rename to Widget/DevLogWidgetExtension/Resource/Assets.xcassets/WidgetBackground.colorset/Contents.json diff --git a/Application/Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements b/Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements rename to Widget/DevLogWidgetExtension/Resource/DevLogWidget.entitlements diff --git a/Application/Widget/DevLogWidgetExtension/Resource/Info.plist b/Widget/DevLogWidgetExtension/Resource/Info.plist similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Resource/Info.plist rename to Widget/DevLogWidgetExtension/Resource/Info.plist diff --git a/Application/Widget/DevLogWidgetExtension/Resource/Localizable.xcstrings b/Widget/DevLogWidgetExtension/Resource/Localizable.xcstrings similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Resource/Localizable.xcstrings rename to Widget/DevLogWidgetExtension/Resource/Localizable.xcstrings diff --git a/Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidget.swift b/Widget/DevLogWidgetExtension/Today/TodayTodoWidget.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidget.swift rename to Widget/DevLogWidgetExtension/Today/TodayTodoWidget.swift diff --git a/Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetConfigurationIntent.swift b/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetConfigurationIntent.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetConfigurationIntent.swift rename to Widget/DevLogWidgetExtension/Today/TodayTodoWidgetConfigurationIntent.swift diff --git a/Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetEntry.swift b/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetEntry.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetEntry.swift rename to Widget/DevLogWidgetExtension/Today/TodayTodoWidgetEntry.swift diff --git a/Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetEntryView.swift b/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetEntryView.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetEntryView.swift rename to Widget/DevLogWidgetExtension/Today/TodayTodoWidgetEntryView.swift diff --git a/Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetProvider.swift b/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetProvider.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Today/TodayTodoWidgetProvider.swift rename to Widget/DevLogWidgetExtension/Today/TodayTodoWidgetProvider.swift diff --git a/Application/Widget/DevLogWidgetExtension/Today/TodayWidgetSnapshot.swift b/Widget/DevLogWidgetExtension/Today/TodayWidgetSnapshot.swift similarity index 100% rename from Application/Widget/DevLogWidgetExtension/Today/TodayWidgetSnapshot.swift rename to Widget/DevLogWidgetExtension/Today/TodayWidgetSnapshot.swift diff --git a/Application/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj b/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj similarity index 100% rename from Application/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj rename to Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj diff --git a/Application/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme b/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme similarity index 100% rename from Application/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme rename to Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme diff --git a/Application/Widget/DevLogWidgetShared/Sources/Calendar.swift b/Widget/DevLogWidgetShared/Sources/Calendar.swift similarity index 100% rename from Application/Widget/DevLogWidgetShared/Sources/Calendar.swift rename to Widget/DevLogWidgetShared/Sources/Calendar.swift diff --git a/Application/Widget/DevLogWidgetShared/Sources/WidgetAppGroup.swift b/Widget/DevLogWidgetShared/Sources/WidgetAppGroup.swift similarity index 100% rename from Application/Widget/DevLogWidgetShared/Sources/WidgetAppGroup.swift rename to Widget/DevLogWidgetShared/Sources/WidgetAppGroup.swift diff --git a/Application/Widget/DevLogWidgetShared/Sources/WidgetDeepLink.swift b/Widget/DevLogWidgetShared/Sources/WidgetDeepLink.swift similarity index 100% rename from Application/Widget/DevLogWidgetShared/Sources/WidgetDeepLink.swift rename to Widget/DevLogWidgetShared/Sources/WidgetDeepLink.swift diff --git a/Application/Widget/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift b/Widget/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift similarity index 100% rename from Application/Widget/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift rename to Widget/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift diff --git a/Application/Widget/DevLogWidgetShared/Sources/WidgetKind.swift b/Widget/DevLogWidgetShared/Sources/WidgetKind.swift similarity index 100% rename from Application/Widget/DevLogWidgetShared/Sources/WidgetKind.swift rename to Widget/DevLogWidgetShared/Sources/WidgetKind.swift diff --git a/Application/Widget/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift b/Widget/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift similarity index 100% rename from Application/Widget/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift rename to Widget/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift From 9433599e76be7cf35bd488e98052c143a95af4c6 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 13:46:50 +0900 Subject: [PATCH 17/46] =?UTF-8?q?fix:=20=EC=9C=84=EC=A0=AF=20=EC=BD=94?= =?UTF-8?q?=EC=96=B4=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20=EC=B0=B8?= =?UTF-8?q?=EC=A1=B0=20=EA=B2=BD=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogWidgetCore.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj index f63dc8da..6ccd32a7 100644 --- a/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj +++ b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj @@ -116,8 +116,8 @@ 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogWidgetCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshot.swift; path = Sources/Heatmap/HeatmapWidgetSnapshot.swift; sourceTree = ""; }; 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSharedDefaultsStore.swift; path = Sources/Common/WidgetSharedDefaultsStore.swift; sourceTree = ""; }; - ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; - B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; + ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../../Application/DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; + B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../../Application/DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventHandler.swift; path = Sources/Sync/WidgetSyncEventHandler.swift; sourceTree = ""; }; FBD260F923A87C1577DBFF0F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; /* End PBXFileReference section */ From 9a8d17ac3f9133768fdbcd9b361e340a38901349 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 14:20:03 +0900 Subject: [PATCH 18/46] =?UTF-8?q?refactor:=20Infra=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=A0=95=EB=A6=AC=20=EA=B8=B0=EB=B0=98=20=EC=9E=91?= =?UTF-8?q?=EC=97=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogData.xcodeproj/project.pbxproj | 4 -- .../Sources/DTO/AppleAuthResponse.swift | 17 ------- .../Sources/DTO/AuthDataResponse.swift | 2 +- .../Sources/DTO/UserProfileResponse.swift | 14 ++++++ .../Sources/DTO/WebPageMetadataResponse.swift | 10 +++++ .../DevLogInfra.xcodeproj/project.pbxproj | 44 +++++++++++++++++++ .../Service/PushNotificationServiceImpl.swift | 1 + .../SocialLogin/AppleAuthResponse.swift | 28 ++++++++++++ .../SocialLogin}/AppleSignInDelegate.swift | 5 ++- .../Service/TodoCategoryServiceImpl.swift | 1 + .../Sources/Service/TodoServiceImpl.swift | 1 + 11 files changed, 103 insertions(+), 24 deletions(-) delete mode 100644 Application/DevLogData/Sources/DTO/AppleAuthResponse.swift create mode 100644 Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthResponse.swift rename Application/{DevLogApp/Sources/App/Delegate => DevLogInfra/Sources/Service/SocialLogin}/AppleSignInDelegate.swift (98%) diff --git a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj index a6ed0d97..cbed597d 100644 --- a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj +++ b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj @@ -45,7 +45,6 @@ 6F59D30C084D7C827CC50F51 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; 6FB5E632397385B569B5FB5E /* PushNotificationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */; }; 71C83A8D875833719759B1FE /* UserDataRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B167270C81CB76E8F5ED9CA /* UserDataRepositoryImpl.swift */; }; - 74E91703D0FC8E5849507A99 /* AppleAuthResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EB4A7B045A63D5BC6A541D8E /* AppleAuthResponse.swift */; }; 7A71FF2428AECD0170B555F7 /* WebPageMetadataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */; }; 7A74659BAEE980ECCBA0D22A /* UserProfileMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37830EA98EFABE66D2ADBCE9 /* UserProfileMapping.swift */; }; 7C88E53D0CC7798B5EFF8228 /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */; }; @@ -205,7 +204,6 @@ D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryResponse.swift; path = Sources/DTO/TodoCategoryResponse.swift; sourceTree = ""; }; DD765636013B36A3BCCCF8B7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; E7154773B586C2D41307CD49 /* AuthenticationService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthenticationService.swift; path = Sources/Protocol/AuthenticationService.swift; sourceTree = ""; }; - EB4A7B045A63D5BC6A541D8E /* AppleAuthResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppleAuthResponse.swift; path = Sources/DTO/AppleAuthResponse.swift; sourceTree = ""; }; EE96D070821D1FB62A155AB5 /* PushNotificationPageResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationPageResponse.swift; path = Sources/DTO/PushNotificationPageResponse.swift; sourceTree = ""; }; EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCursorDTO.swift; path = Sources/DTO/TodoCursorDTO.swift; sourceTree = ""; }; EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataResponse.swift; path = Sources/DTO/WebPageMetadataResponse.swift; sourceTree = ""; }; @@ -270,7 +268,6 @@ 1DECEF89B4893159CF3166B3 /* DTO */ = { isa = PBXGroup; children = ( - EB4A7B045A63D5BC6A541D8E /* AppleAuthResponse.swift */, 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */, 13680A4153A719F15E7DFDF6 /* NotificationKind.swift */, 2DF12B44E80793EF948B211B /* PushNotificationCursorDTO.swift */, @@ -699,7 +696,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 74E91703D0FC8E5849507A99 /* AppleAuthResponse.swift in Sources */, 3E47658FDC0F074222D07B2C /* AuthDataResponse.swift in Sources */, 2D91812BD78B5FA8DBE2F030 /* NotificationKind.swift in Sources */, 5D56791D0D2F4F4B299C183C /* PushNotificationCursorDTO.swift in Sources */, diff --git a/Application/DevLogData/Sources/DTO/AppleAuthResponse.swift b/Application/DevLogData/Sources/DTO/AppleAuthResponse.swift deleted file mode 100644 index 5c81e6cb..00000000 --- a/Application/DevLogData/Sources/DTO/AppleAuthResponse.swift +++ /dev/null @@ -1,17 +0,0 @@ -// -// AppleAuthResponse.swift -// DevLog -// -// Created by opfic on 5/16/25. -// - -import Foundation -import AuthenticationServices -import DevLogDomain - -public struct AppleAuthResponse { - public let nonce: String - public let credential: ASAuthorizationAppleIDCredential - public let authorizationCode: Data - public let idTokenString: String -} diff --git a/Application/DevLogData/Sources/DTO/AuthDataResponse.swift b/Application/DevLogData/Sources/DTO/AuthDataResponse.swift index 8be574d8..a72a1516 100644 --- a/Application/DevLogData/Sources/DTO/AuthDataResponse.swift +++ b/Application/DevLogData/Sources/DTO/AuthDataResponse.swift @@ -17,7 +17,7 @@ public struct AuthDataResponse { public let fcmToken: String public let accessToken: String? - init( + public init( uid: String, displayName: String?, email: String?, diff --git a/Application/DevLogData/Sources/DTO/UserProfileResponse.swift b/Application/DevLogData/Sources/DTO/UserProfileResponse.swift index 517c7ff4..3898c461 100644 --- a/Application/DevLogData/Sources/DTO/UserProfileResponse.swift +++ b/Application/DevLogData/Sources/DTO/UserProfileResponse.swift @@ -14,4 +14,18 @@ public struct UserProfileResponse: Decodable { public let statusMessage: String public let avatarURL: URL? public let createdAt: Date + + public init( + name: String, + email: String, + statusMessage: String, + avatarURL: URL?, + createdAt: Date + ) { + self.name = name + self.email = email + self.statusMessage = statusMessage + self.avatarURL = avatarURL + self.createdAt = createdAt + } } diff --git a/Application/DevLogData/Sources/DTO/WebPageMetadataResponse.swift b/Application/DevLogData/Sources/DTO/WebPageMetadataResponse.swift index 38d64f20..d4e0c471 100644 --- a/Application/DevLogData/Sources/DTO/WebPageMetadataResponse.swift +++ b/Application/DevLogData/Sources/DTO/WebPageMetadataResponse.swift @@ -9,4 +9,14 @@ public struct WebPageMetadataResponse { public let title: String public let displayURL: String public let imageURL: String + + public init( + title: String, + displayURL: String, + imageURL: String + ) { + self.title = title + self.displayURL = displayURL + self.imageURL = imageURL + } } diff --git a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj index 9f550e74..178eb522 100644 --- a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj +++ b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ 0E1D2D0391955DAAAEB0090F /* PushNotificationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */; }; 17DCF2F561737FAE2CE744AC /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E93139280AFA8F1C2B741F3 /* DevLogDataCommon.framework */; }; 1F4B40F21FD77E3BB481E763 /* GithubAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */; }; + 21F6F37746C943D1A019963F /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C4421AE6B9E4E419E73297F /* DevLogDomain.framework */; }; 3A2B4478D6F3438C00240EB4 /* GoogleAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */; }; 4A36236096C643DA1FF29771 /* UserServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 383CD000472C3025FACB9EFF /* UserServiceImpl.swift */; }; 5C3D4AB0EA1E2DA901239A6C /* FirestorePath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */; }; @@ -19,6 +20,8 @@ 6F30F7AD6A048E8ED847D123 /* AuthServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */; }; 6FCB70DE3225AFA821300AC7 /* InfraLayerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */; }; 70CDB738E0DE3895B7539B16 /* WebPageMetadataServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34EB8D1DB924582822B68442 /* WebPageMetadataServiceImpl.swift */; }; + 73814E7535B64F24905F1EF1 /* AppleSignInDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CB84E61E29D44B48D3A1211 /* AppleSignInDelegate.swift */; }; + 7711F199E79F41919891BF31 /* AppleAuthResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2C9755DE5674266B3C6F90C /* AppleAuthResponse.swift */; }; 87F2CCAD35FD485467397CCC /* WebPageServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */; }; 8DC809F74EA0D636E5F51A83 /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A5DD33E6F5140069CA53AAF /* DevLogDataDTO.framework */; }; 93D79429D184808FB702BF2D /* AppleAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E56286B1275FC5BD988C94B /* AppleAuthenticationServiceImpl.swift */; }; @@ -50,6 +53,13 @@ remoteGlobalIDString = 6D02EDBA887507AC7BA79658; remoteInfo = DevLogDataProtocol; }; + 3941472A0F8E4DA796217D2B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A748C00357094C72BA72DC72 /* DevLogDomain.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 3F08F6B94839E9021FCFC466; + remoteInfo = Subproject; + }; 3C55FED4AAAFF680BC9A9419 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; @@ -92,9 +102,17 @@ remoteGlobalIDString = 0B9228953A84A7D7ED3BC5B8; remoteInfo = DevLogDataDTO; }; + DD5CC520521F4F86A8EC6225 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A748C00357094C72BA72DC72 /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 0CB84E61E29D44B48D3A1211 /* AppleSignInDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppleSignInDelegate.swift; path = Sources/Service/SocialLogin/AppleSignInDelegate.swift; sourceTree = ""; }; 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GithubAuthenticationServiceImpl.swift; path = Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift; sourceTree = ""; }; 34EB8D1DB924582822B68442 /* WebPageMetadataServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageMetadataServiceImpl.swift; path = Sources/Service/WebPageMetadataServiceImpl.swift; sourceTree = ""; }; 383CD000472C3025FACB9EFF /* UserServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserServiceImpl.swift; path = Sources/Service/UserServiceImpl.swift; sourceTree = ""; }; @@ -109,7 +127,9 @@ BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoServiceImpl.swift; path = Sources/Service/TodoServiceImpl.swift; sourceTree = ""; }; C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationServiceImpl.swift; path = Sources/Service/PushNotificationServiceImpl.swift; sourceTree = ""; }; CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryServiceImpl.swift; path = Sources/Service/TodoCategoryServiceImpl.swift; sourceTree = ""; }; + D2C9755DE5674266B3C6F90C /* AppleAuthResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppleAuthResponse.swift; path = Sources/Service/SocialLogin/AppleAuthResponse.swift; sourceTree = ""; }; DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; + A748C00357094C72BA72DC72 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthServiceImpl.swift; path = Sources/Service/AuthServiceImpl.swift; sourceTree = ""; }; E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageServiceImpl.swift; path = Sources/Service/WebPageServiceImpl.swift; sourceTree = ""; }; F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InfraLayerError.swift; path = Sources/Common/InfraLayerError.swift; sourceTree = ""; }; @@ -125,6 +145,7 @@ 17DCF2F561737FAE2CE744AC /* DevLogDataCommon.framework in Frameworks */, 8DC809F74EA0D636E5F51A83 /* DevLogDataDTO.framework in Frameworks */, A18672C71ABCFAAFC19775F5 /* DevLogDataProtocol.framework in Frameworks */, + 21F6F37746C943D1A019963F /* DevLogDomain.framework in Frameworks */, FB5186BC5A89B7DADAB8A82A /* FirebaseAuth in Frameworks */, 65623F19F34A9A75BC72EE36 /* FirebaseFirestore in Frameworks */, E747320CAD03A579976E87F8 /* FirebaseFunctions in Frameworks */, @@ -146,6 +167,7 @@ 6CE407FD20ABD6E4ABC9BC63 /* DevLogDataProtocol.framework */, 2AC0C307821B12C249CFFC13 /* DevLogDataMapper.framework */, 344EDB4AD1E8A6EE910CBABC /* DevLogDataRepository.framework */, + 8C4421AE6B9E4E419E73297F /* DevLogDomain.framework */, ); name = Products; sourceTree = ""; @@ -153,6 +175,8 @@ 091FD7B63F7A260D118E5905 /* SocialLogin */ = { isa = PBXGroup; children = ( + D2C9755DE5674266B3C6F90C /* AppleAuthResponse.swift */, + 0CB84E61E29D44B48D3A1211 /* AppleSignInDelegate.swift */, 3E56286B1275FC5BD988C94B /* AppleAuthenticationServiceImpl.swift */, 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */, 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */, @@ -227,6 +251,7 @@ isa = PBXGroup; children = ( DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */, + A748C00357094C72BA72DC72 /* DevLogDomain.xcodeproj */, ); name = Projects; sourceTree = ""; @@ -267,6 +292,7 @@ 70E913DD1742622E14034FA5 /* PBXTargetDependency */, 56E7098218C952A11F239418 /* PBXTargetDependency */, A7332E416B2191D257886169 /* PBXTargetDependency */, + 342FB70B2E884012B67F8B38 /* PBXTargetDependency */, ); name = DevLogInfra; packageProductDependencies = ( @@ -313,6 +339,10 @@ ProductGroup = 0488BFD2A2F470EEE29679F1 /* Products */; ProjectRef = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; }, + { + ProductGroup = 0488BFD2A2F470EEE29679F1 /* Products */; + ProjectRef = A748C00357094C72BA72DC72 /* DevLogDomain.xcodeproj */; + }, ); projectRoot = ""; targets = ( @@ -357,6 +387,13 @@ remoteRef = 3C55FED4AAAFF680BC9A9419 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 8C4421AE6B9E4E419E73297F /* DevLogDomain.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogDomain.framework; + remoteRef = 3941472A0F8E4DA796217D2B /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -382,6 +419,8 @@ 6F30F7AD6A048E8ED847D123 /* AuthServiceImpl.swift in Sources */, D6A1524366DC5CF153821979 /* NWPathConnectivityProviderImpl.swift in Sources */, 0E1D2D0391955DAAAEB0090F /* PushNotificationServiceImpl.swift in Sources */, + 7711F199E79F41919891BF31 /* AppleAuthResponse.swift in Sources */, + 73814E7535B64F24905F1EF1 /* AppleSignInDelegate.swift in Sources */, 93D79429D184808FB702BF2D /* AppleAuthenticationServiceImpl.swift in Sources */, 1F4B40F21FD77E3BB481E763 /* GithubAuthenticationServiceImpl.swift in Sources */, 3A2B4478D6F3438C00240EB4 /* GoogleAuthenticationServiceImpl.swift in Sources */, @@ -396,6 +435,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + 342FB70B2E884012B67F8B38 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = DD5CC520521F4F86A8EC6225 /* PBXContainerItemProxy */; + }; 56E7098218C952A11F239418 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDataDTO; diff --git a/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift index d815db9f..bd94d191 100644 --- a/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift @@ -9,6 +9,7 @@ import FirebaseAuth import Combine import FirebaseFirestore import FirebaseFunctions +import DevLogDomain import DevLogDataCommon import DevLogDataDTO import DevLogDataProtocol diff --git a/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthResponse.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthResponse.swift new file mode 100644 index 00000000..6c697fc6 --- /dev/null +++ b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthResponse.swift @@ -0,0 +1,28 @@ +// +// AppleAuthResponse.swift +// DevLog +// +// Created by opfic on 5/16/25. +// + +import Foundation +import AuthenticationServices + +struct AppleAuthResponse { + let nonce: String + let credential: ASAuthorizationAppleIDCredential + let authorizationCode: Data + let idTokenString: String + + init( + nonce: String, + credential: ASAuthorizationAppleIDCredential, + authorizationCode: Data, + idTokenString: String + ) { + self.nonce = nonce + self.credential = credential + self.authorizationCode = authorizationCode + self.idTokenString = idTokenString + } +} diff --git a/Application/DevLogApp/Sources/App/Delegate/AppleSignInDelegate.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleSignInDelegate.swift similarity index 98% rename from Application/DevLogApp/Sources/App/Delegate/AppleSignInDelegate.swift rename to Application/DevLogInfra/Sources/Service/SocialLogin/AppleSignInDelegate.swift index cf861f1e..5ee6fac2 100644 --- a/Application/DevLogApp/Sources/App/Delegate/AppleSignInDelegate.swift +++ b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleSignInDelegate.swift @@ -7,6 +7,7 @@ import Foundation import AuthenticationServices +import UIKit @MainActor final class AppleSignInDelegate: NSObject, @@ -24,11 +25,11 @@ final class AppleSignInDelegate: NSObject, ) { finish(.success(authorization)) } - + func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) { finish(.failure(error)) } - + func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor { return UIApplication.shared.connectedScenes .compactMap { $0 as? UIWindowScene }.flatMap { $0.windows }.first { $0.isKeyWindow }! diff --git a/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift b/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift index 78706d2c..dfcc8be7 100644 --- a/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift @@ -7,6 +7,7 @@ import FirebaseAuth import FirebaseFirestore +import DevLogDomain import DevLogDataCommon import DevLogDataDTO import DevLogDataProtocol diff --git a/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift b/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift index 6e8d2d5a..c29ad28a 100644 --- a/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift @@ -8,6 +8,7 @@ import FirebaseAuth import FirebaseFirestore import FirebaseFunctions +import DevLogDomain import DevLogDataCommon import DevLogDataDTO import DevLogDataProtocol From 195c2eb057c3a52d87b332abd5dde790acc9e434 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 14:46:54 +0900 Subject: [PATCH 19/46] =?UTF-8?q?chore:=20DataProtocol=EC=9D=98=20?= =?UTF-8?q?=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20Domain=20import=20?= =?UTF-8?q?=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/DevLogData/Sources/Protocol/AuthService.swift | 1 - .../DevLogData/Sources/Protocol/AuthenticationService.swift | 1 - .../DevLogData/Sources/Protocol/NWPathConnectivityProvider.swift | 1 - Application/DevLogData/Sources/Protocol/UserDefaultsStore.swift | 1 - Application/DevLogData/Sources/Protocol/UserService.swift | 1 - Application/DevLogData/Sources/Protocol/WebPageImageStore.swift | 1 - .../DevLogData/Sources/Protocol/WebPageMetadataService.swift | 1 - Application/DevLogData/Sources/Protocol/WebPageService.swift | 1 - 8 files changed, 8 deletions(-) diff --git a/Application/DevLogData/Sources/Protocol/AuthService.swift b/Application/DevLogData/Sources/Protocol/AuthService.swift index 1acf7c7b..4bf704d4 100644 --- a/Application/DevLogData/Sources/Protocol/AuthService.swift +++ b/Application/DevLogData/Sources/Protocol/AuthService.swift @@ -7,7 +7,6 @@ import Combine import Foundation -import DevLogDomain import DevLogDataDTO public protocol AuthService { diff --git a/Application/DevLogData/Sources/Protocol/AuthenticationService.swift b/Application/DevLogData/Sources/Protocol/AuthenticationService.swift index a1b90077..bd9d2032 100644 --- a/Application/DevLogData/Sources/Protocol/AuthenticationService.swift +++ b/Application/DevLogData/Sources/Protocol/AuthenticationService.swift @@ -6,7 +6,6 @@ // import Foundation -import DevLogDomain import DevLogDataDTO public protocol AuthenticationService { diff --git a/Application/DevLogData/Sources/Protocol/NWPathConnectivityProvider.swift b/Application/DevLogData/Sources/Protocol/NWPathConnectivityProvider.swift index 4b850f1d..7a1bce0b 100644 --- a/Application/DevLogData/Sources/Protocol/NWPathConnectivityProvider.swift +++ b/Application/DevLogData/Sources/Protocol/NWPathConnectivityProvider.swift @@ -7,7 +7,6 @@ import Combine import Foundation -import DevLogDomain import DevLogDataDTO public protocol NWPathConnectivityProvider { diff --git a/Application/DevLogData/Sources/Protocol/UserDefaultsStore.swift b/Application/DevLogData/Sources/Protocol/UserDefaultsStore.swift index 363ee1c7..32d5af1b 100644 --- a/Application/DevLogData/Sources/Protocol/UserDefaultsStore.swift +++ b/Application/DevLogData/Sources/Protocol/UserDefaultsStore.swift @@ -6,7 +6,6 @@ // import Foundation -import DevLogDomain import DevLogDataDTO public protocol UserDefaultsStore { diff --git a/Application/DevLogData/Sources/Protocol/UserService.swift b/Application/DevLogData/Sources/Protocol/UserService.swift index 091e6631..a035b342 100644 --- a/Application/DevLogData/Sources/Protocol/UserService.swift +++ b/Application/DevLogData/Sources/Protocol/UserService.swift @@ -6,7 +6,6 @@ // import Foundation -import DevLogDomain import DevLogDataDTO public protocol UserService { diff --git a/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift b/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift index 4623b100..62ebbe1c 100644 --- a/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift +++ b/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift @@ -6,7 +6,6 @@ // import Foundation -import DevLogDomain import DevLogDataDTO public protocol WebPageImageStore { diff --git a/Application/DevLogData/Sources/Protocol/WebPageMetadataService.swift b/Application/DevLogData/Sources/Protocol/WebPageMetadataService.swift index 84a40d5f..ce37133e 100644 --- a/Application/DevLogData/Sources/Protocol/WebPageMetadataService.swift +++ b/Application/DevLogData/Sources/Protocol/WebPageMetadataService.swift @@ -6,7 +6,6 @@ // import Foundation -import DevLogDomain import DevLogDataDTO public protocol WebPageMetadataService { diff --git a/Application/DevLogData/Sources/Protocol/WebPageService.swift b/Application/DevLogData/Sources/Protocol/WebPageService.swift index b73e1fed..8a07d2a7 100644 --- a/Application/DevLogData/Sources/Protocol/WebPageService.swift +++ b/Application/DevLogData/Sources/Protocol/WebPageService.swift @@ -6,7 +6,6 @@ // import Foundation -import DevLogDomain import DevLogDataDTO public protocol WebPageService { From 26e4d5b919cfaa1f5d6f333321a5154be9669786 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 15:10:43 +0900 Subject: [PATCH 20/46] =?UTF-8?q?refactor:=20Data=20=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EB=A5=BC=20=EB=8B=A8=EC=9D=BC=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=EB=A1=9C=20=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogApp.xcodeproj/project.pbxproj | 206 ++---- .../App/Assembler/AppLayerAssembler.swift | 1 + .../Sources/App/Assembler/DataAssembler.swift | 1 + .../App/Assembler/InfraAssembler.swift | 1 + .../App/Assembler/PersistenceAssembler.swift | 1 + .../Sources/App/Delegate/AppDelegate.swift | 1 + .../App/Handler/FCMTokenSyncHandler.swift | 1 + .../App/Handler/UserTimeZoneSyncHandler.swift | 1 + .../DevLogData.xcodeproj/project.pbxproj | 686 ++---------------- ...epository.xcscheme => DevLogData.xcscheme} | 4 +- .../xcschemes/DevLogDataCommon.xcscheme | 58 -- .../xcschemes/DevLogDataDTO.xcscheme | 58 -- .../xcschemes/DevLogDataMapper.xcscheme | 58 -- .../xcschemes/DevLogDataProtocol.xcscheme | 58 -- .../Mapper/PushNotificationMapping.swift | 2 - .../Sources/Mapper/TodoMapping.swift | 2 - .../Sources/Mapper/UserProfileMapping.swift | 1 - .../Sources/Mapper/WebPageMapping.swift | 2 - .../Sources/Protocol/AuthService.swift | 1 - .../Protocol/AuthenticationService.swift | 1 - .../Protocol/NWPathConnectivityProvider.swift | 1 - .../Protocol/PushNotificationService.swift | 1 - .../Sources/Protocol/ThemeStore.swift | 1 - .../Protocol/TodoCategoryService.swift | 1 - .../Sources/Protocol/TodoService.swift | 1 - .../Sources/Protocol/UserDefaultsStore.swift | 1 - .../Sources/Protocol/UserService.swift | 1 - .../Sources/Protocol/WebPageImageStore.swift | 1 - .../Protocol/WebPageMetadataService.swift | 1 - .../Sources/Protocol/WebPageService.swift | 1 - .../WidgetSnapshotPreferenceStore.swift | 1 - .../Protocol/WidgetSnapshotUpdater.swift | 1 - .../Repository/AuthDataRepositoryImpl.swift | 4 - .../AuthSessionRepositoryImpl.swift | 4 - .../AuthenticationRepositoryImpl.swift | 4 - .../NetworkConnectivityRepositoryImpl.swift | 4 - .../PushNotificationRepositoryImpl.swift | 4 - .../TodoCategoryRepositoryImpl.swift | 4 - .../Repository/TodoRepositoryImpl.swift | 4 - .../Repository/UserDataRepositoryImpl.swift | 4 - .../UserPreferencesRepositoryImpl.swift | 4 - .../WebPageImageRepositoryImpl.swift | 4 - .../Repository/WebPageRepositoryImpl.swift | 4 - .../DevLogInfra.xcodeproj/project.pbxproj | 128 +--- .../Sources/Common/InfraLayerError.swift | 4 +- .../Common/TopViewControllerProvider.swift | 4 +- .../Sources/Extension/FirebaseAuthUser+.swift | 4 +- .../Extension/FirebaseFunctions+.swift | 4 +- .../Sources/Service/AuthServiceImpl.swift | 4 +- .../NWPathConnectivityProviderImpl.swift | 4 +- .../Service/PushNotificationServiceImpl.swift | 4 +- .../AppleAuthenticationServiceImpl.swift | 4 +- .../GithubAuthenticationServiceImpl.swift | 4 +- .../GoogleAuthenticationServiceImpl.swift | 4 +- .../Service/TodoCategoryServiceImpl.swift | 4 +- .../Sources/Service/TodoServiceImpl.swift | 4 +- .../Sources/Service/UserServiceImpl.swift | 4 +- .../Service/WebPageMetadataServiceImpl.swift | 4 +- .../Sources/Service/WebPageServiceImpl.swift | 4 +- .../project.pbxproj | 608 +++++++--------- .../Sources/Common/LoadingState.swift | 2 +- .../Sources/Extension/Color+Hex.swift | 2 +- .../Sources/Protocol/Store.swift | 2 +- .../Structure/Profile/ActivityKindItem.swift | 2 +- .../Profile/HeatmapActivityItem.swift | 2 +- .../Structure/Profile/HeatmapDay.swift | 2 +- .../Structure/Profile/HeatmapMonth.swift | 2 +- .../Structure/Profile/HeatmapQuarter.swift | 2 +- .../Structure/PushNotificationItem.swift | 2 +- .../Structure/Todo/RecentTodoItem.swift | 2 +- .../Todo/SystemTodoCategoryItem.swift | 2 +- .../Structure/Todo/TodayTodoItem.swift | 2 +- .../Structure/Todo/TodoCategoryItem.swift | 2 +- .../Sources/Structure/Todo/TodoIDItem.swift | 2 +- .../Sources/Structure/Todo/TodoListItem.swift | 2 +- .../Structure/Todo/TodoReferenceItem.swift | 2 +- .../Structure/Todo/UserTodoCategoryItem.swift | 2 +- .../Sources/Structure/WebPageItem.swift | 2 +- .../Sources/ViewModel/AccountViewModel.swift | 2 +- .../Sources/ViewModel/HomeViewModel.swift | 2 +- .../Sources/ViewModel/LoginViewModel.swift | 2 +- .../Sources/ViewModel/MainViewModel.swift | 2 +- .../Sources/ViewModel/ProfileViewModel.swift | 2 +- .../PushNotificationListViewModel.swift | 2 +- .../PushNotificationSettingsViewModel.swift | 2 +- .../Sources/ViewModel/RootViewModel.swift | 2 +- .../Sources/ViewModel/SearchViewModel.swift | 2 +- .../Sources/ViewModel/SettingViewModel.swift | 2 +- .../Sources/ViewModel/TodayViewModel.swift | 2 +- .../ViewModel/TodoDetailViewModel.swift | 2 +- .../ViewModel/TodoEditorViewModel.swift | 2 +- .../Sources/ViewModel/TodoListViewModel.swift | 2 +- .../ViewModel/TodoManageViewModel.swift | 2 +- .../DevLogStorage.xcodeproj/project.pbxproj | 109 +-- .../Sources/Persistence/ThemeStoreImpl.swift | 3 +- .../Persistence/UserDefaultsStoreImpl.swift | 3 +- .../Persistence/WebPageImageStoreImpl.swift | 3 +- .../WidgetSnapshotPreferenceStoreImpl.swift | 3 +- .../WidgetSnapshotUpdaterImpl.swift | 3 +- .../project.pbxproj | 105 +-- .../Common/WidgetSharedDefaultsStore.swift | 3 +- .../Sources/Common/WidgetSnapshotStore.swift | 3 +- .../Sources/Common/WidgetSyncEvent.swift | 3 +- .../Heatmap/HeatmapWidgetSnapshot.swift | 3 +- .../HeatmapWidgetSnapshotFactory.swift | 3 +- .../Sources/Sync/WidgetSyncEventBus.swift | 3 +- .../Sources/Sync/WidgetSyncEventBusImpl.swift | 3 +- .../Sources/Sync/WidgetSyncEventHandler.swift | 3 +- .../Sources/Today/TodayWidgetSnapshot.swift | 3 +- .../Today/TodayWidgetSnapshotFactory.swift | 3 +- 110 files changed, 506 insertions(+), 1815 deletions(-) rename Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/{DevLogDataRepository.xcscheme => DevLogData.xcscheme} (94%) delete mode 100644 Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme delete mode 100644 Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme delete mode 100644 Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme delete mode 100644 Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme diff --git a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj index c8f3b267..6ef27047 100644 --- a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj +++ b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj @@ -8,50 +8,25 @@ /* Begin PBXBuildFile section */ 0957A66CFE9CB98EA302CC22 /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */; }; - AB11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE11B22C33D44E55F6677889 /* DevLogCore.framework */; }; 1589C1EF4029ECBF15A842F0 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; }; + 160E41BDADA3136CD58BE0B4 /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B1B97007E09855108A99428B /* DevLogData.framework */; }; 186E9AB4F0A79C50FE853607 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA49949C677DDE083F7DE29E /* DevLogDomain.framework */; }; 18D57A125ACCF0F6B11A7101 /* GoogleSignIn in Frameworks */ = {isa = PBXBuildFile; productRef = F972F1E8E0F5156FE9651020 /* GoogleSignIn */; }; 26C3DC51F23F9C590FDB282D /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67918B544432C45E63273D84 /* DevLogPresentation.framework */; }; - 593BFC1632C776A7D59EF625 /* DevLogDataMapper.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF31C7E0802E4877630B4E0D /* DevLogDataMapper.framework */; }; 7188DA2B6DFD13F7FF73069E /* DevLogInfra.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */; }; 79134AD67952720CCC5069EA /* DevLogStorage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */; }; 7A0D2CD79D383F3D256D6065 /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */; }; - 8B41461F945DA9A94D3330F9 /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA04D8F5F1B04A3FBE8C5763 /* DevLogDataCommon.framework */; }; 8D3BD712CB129F2527B00CFB /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = E72BBE64130E2666E4680E1B /* FirebaseMessaging */; }; + AB11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE11B22C33D44E55F6677889 /* DevLogCore.framework */; }; B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */ = {isa = PBXBuildFile; productRef = 0B7D3A68C7E7BF5D4A437D29 /* FirebaseCore */; }; - B51F2FBCE730B52489D0F89F /* DevLogDataRepository.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C86A027695491A3640899360 /* DevLogDataRepository.framework */; }; - CA836545BFC2C01D1A1197AF /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DF226704A710E19F3CCAD1A /* DevLogDataDTO.framework */; }; DFD3A9722F8E89DD001DA7CD /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9712F8E89DD001DA7CD /* WidgetKit.framework */; }; DFD3A9742F8E89DD001DA7CD /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9732F8E89DD001DA7CD /* SwiftUI.framework */; }; DFD3A97F2F8E89DF001DA7CD /* DevLogWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; DFD645402EC827A10073E133 /* .gitignore in Resources */ = {isa = PBXBuildFile; fileRef = DFD6453F2EC827A10073E133 /* .gitignore */; }; DFD74E2F2E423EA700613803 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = DFD74E2E2E423EA700613803 /* README.md */; }; - E21AC32BAD51AD53627F4649 /* DevLogDataProtocol.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 731CC979BBA178E3862BBB74 /* DevLogDataProtocol.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - AC11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; - remoteInfo = DevLogCore; - }; - AD11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; - remoteInfo = Subproject; - }; - 08788C32F0E85A76D975F825 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = D9D76C33D8B4790694BD3488; - remoteInfo = DevLogDataRepository; - }; 0F460A6F0F9B74AE847DFD16 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */; @@ -59,13 +34,6 @@ remoteGlobalIDString = CB9B628AE2E0684C1FCF8840; remoteInfo = DevLogInfra; }; - 16573F1134973B16E8CBBE1A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 80A60CC195BD79C638F5B405; - remoteInfo = DevLogDataCommon; - }; 17E732C4E37D1ADD4E46D669 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */; @@ -73,13 +41,6 @@ remoteGlobalIDString = A85D2D7D1D6DAAFBF86C9C34; remoteInfo = DevLogPresentation; }; - 1EE32CC37C6DFCB68E794DB9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 27C8E1F04453FD577C839404; - remoteInfo = DevLogDataMapper; - }; 3BC2BDF8DAF15E7E6FF53443 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */; @@ -94,18 +55,18 @@ remoteGlobalIDString = 0C205A501EF8E79FA9A73C4B; remoteInfo = DevLogStorage; }; - 687F85C6DCE6D569D448B141 /* PBXContainerItemProxy */ = { + 5AD2E0B85930A1F24ED8888E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */; + containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 6AF1B307A7E7CC03AA2BABB1; + remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; remoteInfo = Subproject; }; - 77B58AFF05F40515211C8701 /* PBXContainerItemProxy */ = { + 687F85C6DCE6D569D448B141 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + containerPortal = 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 92502C9F074520D19CC451EF; + remoteGlobalIDString = 6AF1B307A7E7CC03AA2BABB1; remoteInfo = Subproject; }; 933EF563698CBBA322E4A1FF /* PBXContainerItemProxy */ = { @@ -115,13 +76,6 @@ remoteGlobalIDString = 86E8AA2A43914F444BF5A6C2; remoteInfo = Subproject; }; - A74090DFC060507C027FF285 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 6D02EDBA887507AC7BA79658; - remoteInfo = DevLogDataProtocol; - }; A974AB39F1B9AEC8C3519A47 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */; @@ -129,18 +83,18 @@ remoteGlobalIDString = 592C8B7B099933759AB316A5; remoteInfo = Subproject; }; - B0DA389C8C1AEFBF239204D4 /* PBXContainerItemProxy */ = { + AC11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = C063BD562070CA11C2AA4EDF; - remoteInfo = Subproject; + containerPortal = AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogCore; }; - C74665BE4047F0FD1DF4CEA7 /* PBXContainerItemProxy */ = { + AD11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + containerPortal = AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 690289F520872AC78D6C95D3; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; remoteInfo = Subproject; }; D113DE9A0832A6EB30D402FD /* PBXContainerItemProxy */ = { @@ -171,6 +125,13 @@ remoteGlobalIDString = DFD3A96F2F8E89DD001DA7CD; remoteInfo = DevLogWidgetExtension; }; + E95D839477AC9648EDD0F85F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D9D76C33D8B4790694BD3488; + remoteInfo = DevLogData; + }; EA9A577921BC21C5451FCE98 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */; @@ -185,13 +146,6 @@ remoteGlobalIDString = 7D1E74925088998D68BBFBBB; remoteInfo = DevLogDomain; }; - EFFE07E9E4CFAEB9C8C44C2A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 0B9228953A84A7D7ED3BC5B8; - remoteInfo = DevLogDataDTO; - }; F0A01BBA37FA27D63B9D6943 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */; @@ -199,20 +153,6 @@ remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; remoteInfo = DevLogWidgetShared; }; - FB9F2FE12E43931C76A6A7D5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; - remoteInfo = Subproject; - }; - FEDD8ED334FBDE63B0402F8D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 44466B71BA6B67309210A7BB; - remoteInfo = Subproject; - }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -230,11 +170,11 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../../Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../../Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogStorage.xcodeproj; path = ../DevLogStorage/DevLogStorage.xcodeproj; sourceTree = ""; }; + AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogInfra.xcodeproj; path = ../DevLogInfra/DevLogInfra.xcodeproj; sourceTree = ""; }; DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; DF3416492E45F67C00F9312B /* DevLog_Unit.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLog_Unit.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -266,7 +206,7 @@ /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ - DF34164A2E45F67C00F9312B /* DevLog_Unit */ = { + DF34164A2E45F67C00F9312B /* ../../DevLog_Unit */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( ); @@ -315,11 +255,6 @@ files = ( AB11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */, 186E9AB4F0A79C50FE853607 /* DevLogDomain.framework in Frameworks */, - 8B41461F945DA9A94D3330F9 /* DevLogDataCommon.framework in Frameworks */, - CA836545BFC2C01D1A1197AF /* DevLogDataDTO.framework in Frameworks */, - E21AC32BAD51AD53627F4649 /* DevLogDataProtocol.framework in Frameworks */, - 593BFC1632C776A7D59EF625 /* DevLogDataMapper.framework in Frameworks */, - B51F2FBCE730B52489D0F89F /* DevLogDataRepository.framework in Frameworks */, 7188DA2B6DFD13F7FF73069E /* DevLogInfra.framework in Frameworks */, 79134AD67952720CCC5069EA /* DevLogStorage.framework in Frameworks */, 26C3DC51F23F9C590FDB282D /* DevLogPresentation.framework in Frameworks */, @@ -328,6 +263,7 @@ B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */, 8D3BD712CB129F2527B00CFB /* FirebaseMessaging in Frameworks */, 18D57A125ACCF0F6B11A7101 /* GoogleSignIn in Frameworks */, + 160E41BDADA3136CD58BE0B4 /* DevLogData.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -355,7 +291,7 @@ DFD74E2E2E423EA700613803 /* README.md */, DFD6453F2EC827A10073E133 /* .gitignore */, DF8AB7982E938B0B00E50BBF /* Sources */, - DF34164A2E45F67C00F9312B /* DevLog_Unit */, + DF34164A2E45F67C00F9312B /* ../../DevLog_Unit */, DFD3A9752F8E89DD001DA7CD /* ../../Widget/DevLogWidgetExtension */, DFE28EB62DCCF26300B28FE5 /* Frameworks */, DFD48B012DC4D6E2005905C5 /* Products */, @@ -371,16 +307,12 @@ DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */, AE11B22C33D44E55F6677889 /* DevLogCore.framework */, DA49949C677DDE083F7DE29E /* DevLogDomain.framework */, - DA04D8F5F1B04A3FBE8C5763 /* DevLogDataCommon.framework */, - 5DF226704A710E19F3CCAD1A /* DevLogDataDTO.framework */, - 731CC979BBA178E3862BBB74 /* DevLogDataProtocol.framework */, - AF31C7E0802E4877630B4E0D /* DevLogDataMapper.framework */, - C86A027695491A3640899360 /* DevLogDataRepository.framework */, 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */, 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */, 67918B544432C45E63273D84 /* DevLogPresentation.framework */, EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */, 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */, + B1B97007E09855108A99428B /* DevLogData.framework */, ); name = Products; sourceTree = ""; @@ -411,7 +343,7 @@ DF34164C2E45F67C00F9312B /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - DF34164A2E45F67C00F9312B /* DevLog_Unit */, + DF34164A2E45F67C00F9312B /* ../../DevLog_Unit */, ); name = DevLog_Unit; productName = DevLog_Unit; @@ -455,16 +387,12 @@ DFD3A97E2F8E89DF001DA7CD /* PBXTargetDependency */, AF11B22C33D44E55F6677889 /* PBXTargetDependency */, 50D25760371BEF13D9781476 /* PBXTargetDependency */, - 9AC24C8197811B1C56EA711D /* PBXTargetDependency */, - FD5F4A6387D906469DD6FC9C /* PBXTargetDependency */, - CAFCDC210D73DEF4316034B4 /* PBXTargetDependency */, - 0BFC6FE7043DE7320546ABAF /* PBXTargetDependency */, - 82D40B00239B0AC02F41C723 /* PBXTargetDependency */, 56CC02CD824E370E0BF33D2E /* PBXTargetDependency */, CD56EF21C39E985CEDBB9165 /* PBXTargetDependency */, F00B1378BDC6B8D7CCD24AB0 /* PBXTargetDependency */, A2A3C286B46BB965A8D4C047 /* PBXTargetDependency */, 88A796BDB56C53FB2A6CBBB0 /* PBXTargetDependency */, + D8C9622EAD15756212C69E6A /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( DF8AB7982E938B0B00E50BBF /* Sources */, @@ -501,7 +429,7 @@ }; }; }; - buildConfigurationList = DFD48AFB2DC4D6E2005905C5 /* Build configuration list for PBXProject "DevLog" */; + buildConfigurationList = DFD48AFB2DC4D6E2005905C5 /* Build configuration list for PBXProject "DevLogApp" */; developmentRegion = ko; hasScannedForEncodings = 0; knownRegions = ( @@ -563,13 +491,6 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - AE11B22C33D44E55F6677889 /* DevLogCore.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogCore.framework; - remoteRef = AD11B22C33D44E55F6677889 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -577,13 +498,6 @@ remoteRef = EA9A577921BC21C5451FCE98 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 5DF226704A710E19F3CCAD1A /* DevLogDataDTO.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataDTO.framework; - remoteRef = 77B58AFF05F40515211C8701 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 67918B544432C45E63273D84 /* DevLogPresentation.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -598,13 +512,6 @@ remoteRef = 933EF563698CBBA322E4A1FF /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 731CC979BBA178E3862BBB74 /* DevLogDataProtocol.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataProtocol.framework; - remoteRef = B0DA389C8C1AEFBF239204D4 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -612,25 +519,18 @@ remoteRef = A974AB39F1B9AEC8C3519A47 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - AF31C7E0802E4877630B4E0D /* DevLogDataMapper.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataMapper.framework; - remoteRef = FEDD8ED334FBDE63B0402F8D /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - C86A027695491A3640899360 /* DevLogDataRepository.framework */ = { + AE11B22C33D44E55F6677889 /* DevLogCore.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = DevLogDataRepository.framework; - remoteRef = FB9F2FE12E43931C76A6A7D5 /* PBXContainerItemProxy */; + path = DevLogCore.framework; + remoteRef = AD11B22C33D44E55F6677889 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - DA04D8F5F1B04A3FBE8C5763 /* DevLogDataCommon.framework */ = { + B1B97007E09855108A99428B /* DevLogData.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = DevLogDataCommon.framework; - remoteRef = C74665BE4047F0FD1DF4CEA7 /* PBXContainerItemProxy */; + path = DevLogData.framework; + remoteRef = 5AD2E0B85930A1F24ED8888E /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; DA49949C677DDE083F7DE29E /* DevLogDomain.framework */ = { @@ -705,11 +605,6 @@ name = DevLogWidgetShared; targetProxy = F0A01BBA37FA27D63B9D6943 /* PBXContainerItemProxy */; }; - 0BFC6FE7043DE7320546ABAF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataMapper; - targetProxy = 1EE32CC37C6DFCB68E794DB9 /* PBXContainerItemProxy */; - }; 50D25760371BEF13D9781476 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDomain; @@ -720,21 +615,11 @@ name = DevLogInfra; targetProxy = 0F460A6F0F9B74AE847DFD16 /* PBXContainerItemProxy */; }; - 82D40B00239B0AC02F41C723 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataRepository; - targetProxy = 08788C32F0E85A76D975F825 /* PBXContainerItemProxy */; - }; 88A796BDB56C53FB2A6CBBB0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogWidgetShared; targetProxy = F0A01BBA37FA27D63B9D6943 /* PBXContainerItemProxy */; }; - 9AC24C8197811B1C56EA711D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataCommon; - targetProxy = 16573F1134973B16E8CBBE1A /* PBXContainerItemProxy */; - }; A2A3C286B46BB965A8D4C047 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogWidgetCore; @@ -745,16 +630,16 @@ name = DevLogCore; targetProxy = AC11B22C33D44E55F6677889 /* PBXContainerItemProxy */; }; - CAFCDC210D73DEF4316034B4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataProtocol; - targetProxy = A74090DFC060507C027FF285 /* PBXContainerItemProxy */; - }; CD56EF21C39E985CEDBB9165 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogStorage; targetProxy = 3EECE4329ECCA26C0A19337E /* PBXContainerItemProxy */; }; + D8C9622EAD15756212C69E6A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogData; + targetProxy = E95D839477AC9648EDD0F85F /* PBXContainerItemProxy */; + }; DF34164C2E45F67C00F9312B /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = DFD48AFF2DC4D6E2005905C5 /* DevLog */; @@ -774,11 +659,6 @@ name = DevLogPresentation; targetProxy = 17E732C4E37D1ADD4E46D669 /* PBXContainerItemProxy */; }; - FD5F4A6387D906469DD6FC9C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataDTO; - targetProxy = EFFE07E9E4CFAEB9C8C44C2A /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -1150,7 +1030,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DFD48AFB2DC4D6E2005905C5 /* Build configuration list for PBXProject "DevLog" */ = { + DFD48AFB2DC4D6E2005905C5 /* Build configuration list for PBXProject "DevLogApp" */ = { isa = XCConfigurationList; buildConfigurations = ( DFD48B142DC4D6E4005905C5 /* Debug */, diff --git a/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift index 9c7ddd45..e02c2510 100644 --- a/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift @@ -6,6 +6,7 @@ // import DevLogCore +import DevLogData final class AppLayerAssembler: Assembler { func assemble(_ container: any DIContainer) { diff --git a/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift index 1efd1379..b131d37e 100644 --- a/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift @@ -6,6 +6,7 @@ // import DevLogCore +import DevLogData final class DataAssembler: Assembler { func assemble(_ container: any DIContainer) { diff --git a/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift index 9ad006b2..3096d5e5 100644 --- a/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift @@ -6,6 +6,7 @@ // import DevLogCore +import DevLogData final class InfraAssembler: Assembler { func assemble(_ container: any DIContainer) { diff --git a/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift index db1eef00..88362f10 100644 --- a/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift @@ -6,6 +6,7 @@ // import DevLogCore +import DevLogData final class PersistenceAssembler: Assembler { func assemble(_ container: any DIContainer) { diff --git a/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift b/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift index bb643f3b..bcf1cfb0 100644 --- a/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift +++ b/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift @@ -7,6 +7,7 @@ import UIKit import DevLogCore +import DevLogData import Firebase import GoogleSignIn diff --git a/Application/DevLogApp/Sources/App/Handler/FCMTokenSyncHandler.swift b/Application/DevLogApp/Sources/App/Handler/FCMTokenSyncHandler.swift index 6a8c77f8..b2a25d0b 100644 --- a/Application/DevLogApp/Sources/App/Handler/FCMTokenSyncHandler.swift +++ b/Application/DevLogApp/Sources/App/Handler/FCMTokenSyncHandler.swift @@ -6,6 +6,7 @@ // import Combine +import DevLogData import Foundation final class FCMTokenSyncHandler { diff --git a/Application/DevLogApp/Sources/App/Handler/UserTimeZoneSyncHandler.swift b/Application/DevLogApp/Sources/App/Handler/UserTimeZoneSyncHandler.swift index 476d2541..8ae0c82d 100644 --- a/Application/DevLogApp/Sources/App/Handler/UserTimeZoneSyncHandler.swift +++ b/Application/DevLogApp/Sources/App/Handler/UserTimeZoneSyncHandler.swift @@ -6,6 +6,7 @@ // import Combine +import DevLogData import UIKit final class UserTimeZoneSyncHandler { diff --git a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj index cbed597d..d6cd444d 100644 --- a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj +++ b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj @@ -7,8 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + 014DD58F9A49EF8F613A8512 /* TodoDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = B28D4F60262075223EC096E0 /* TodoDTO.swift */; }; 02989D2DD8C861339C89EFAB /* TodoReferenceResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F6961039F12AFD8B33F25DF /* TodoReferenceResponse.swift */; }; 02AD0EC1D813FD957B53FBE5 /* PushNotificationRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CEB1EE245302780E69EC631 /* PushNotificationRepositoryImpl.swift */; }; + 05E9A2CF2D447750487BDC38 /* WebPageDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */; }; 06C8405C9CCC37319D16F4D6 /* TodoCursorDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */; }; 0C8E1C07EF01FB22BF8B80B9 /* PushNotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */; }; 14D1BF4D1F50FB067DA875B3 /* WebPageDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */; }; @@ -16,57 +18,81 @@ 18C2B39408BF745FE0BFC810 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67FC3A5288FABA7441F4D6AA /* Logger.swift */; }; 18D37737A07ECBDA79EA9270 /* WidgetSnapshotPreferenceStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */; }; 2068F0B84A3BC53EEB156D82 /* WebPageMetadataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */; }; + 238E950C1B6FF60F0840EA35 /* TodoCursorDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */; }; + 2A057B6B7F6900E50AC2E031 /* PushNotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */; }; 2D91812BD78B5FA8DBE2F030 /* NotificationKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13680A4153A719F15E7DFDF6 /* NotificationKind.swift */; }; 2F0ECAAFBEB7651130A6160A /* AuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7154773B586C2D41307CD49 /* AuthenticationService.swift */; }; 320469937B9BD964D29F5C97 /* TodoRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F8C39E4E51A7A62D716612 /* TodoRepositoryImpl.swift */; }; 326C26B47FCE678C36BE5788 /* AuthenticationRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09310E1D16103C0E6E96C7C7 /* AuthenticationRepositoryImpl.swift */; }; + 355537B4107978D346594E6A /* WidgetSnapshotPreferenceStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */; }; + 36A48634DC1A350421118FEB /* NWPathConnectivityProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B67886F72C946CBC709AFCB /* NWPathConnectivityProvider.swift */; }; 3774F15D0E51BAE1445550C8 /* WebPageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE1FE53786D11AC7B192698 /* WebPageService.swift */; }; 3E47658FDC0F074222D07B2C /* AuthDataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */; }; + 3F09F91345793F8C14F5CC05 /* WidgetSnapshotUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */; }; + 41371B777FE701652CA2E798 /* AuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7154773B586C2D41307CD49 /* AuthenticationService.swift */; }; 415FA233A97D67108CA8FA60 /* ThemeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */; }; 48520BBB5EAEF3DB9D65CAE8 /* TodoPageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1ABB0ED51067433D3C90F02 /* TodoPageResponse.swift */; }; 49F6E1752300C28F873AE959 /* PushNotificationPageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE96D070821D1FB62A155AB5 /* PushNotificationPageResponse.swift */; }; - 4ABBDC64F51AD1D019D93D0E /* DevLogDataProtocol.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C063BD562070CA11C2AA4EDF /* DevLogDataProtocol.framework */; }; 4B18018B63AE2321B8B7761A /* DataLayerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */; }; 4BD06832F56598B25183EF06 /* WebPageRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF764A3F6E025A18E6A0BC /* WebPageRepositoryImpl.swift */; }; 4C0F2F479581D2E091C429B2 /* TodoCategoryRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36E09221F6FBF67359105995 /* TodoCategoryRepositoryImpl.swift */; }; 4EFB81EBF4C8E68D1219E261 /* UserService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42BC563A225597B3D761253 /* UserService.swift */; }; - 4FCA3EE76074371F5CA5F50F /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */; }; 50C769615D094189B739F055 /* UserPreferencesRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0202E26A972D5D274AF77C67 /* UserPreferencesRepositoryImpl.swift */; }; + 5168B6165545231B3E9CB52D /* AuthDataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */; }; + 51F956F957951237D7B09387 /* TodoPageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1ABB0ED51067433D3C90F02 /* TodoPageResponse.swift */; }; 552E7AC6C92BB3EDA4A3B99B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; + 57E1BC53D8D628A254A270A1 /* TodoCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */; }; + 58FFF761F471A091E5A8BCF5 /* DataLayerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */; }; 59FB0D9F7C8C8D1B63EA5880 /* UserProfileResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 387E711B7A3BA319D3E7C2AB /* UserProfileResponse.swift */; }; 5CC76E5C85D4133B0E2409EC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; 5D56791D0D2F4F4B299C183C /* PushNotificationCursorDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF12B44E80793EF948B211B /* PushNotificationCursorDTO.swift */; }; 627A5B276E98C623E7953868 /* WebPageMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C2B7108CD63C65097876046 /* WebPageMapping.swift */; }; 630C1F917AED059FBE29BDBC /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7559825C27ED42F9F86EBAC1 /* AuthService.swift */; }; - 6386F4E9FC44422C070273C8 /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */; }; + 672BED915B5A7A1A0A29B4FD /* TodoReferenceResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F6961039F12AFD8B33F25DF /* TodoReferenceResponse.swift */; }; 67F3E365DA09012FBBE2012F /* PushNotificationMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44C564559DBDF765945456FA /* PushNotificationMapping.swift */; }; 696ECBF42D3E9504BE9939FB /* AuthDataRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B3ED1B2326966F84851DFDD /* AuthDataRepositoryImpl.swift */; }; 6DACC3B9A91F4B83A51E001C /* NetworkConnectivityRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78DB5B22BE2E31B18173E89E /* NetworkConnectivityRepositoryImpl.swift */; }; 6F59D30C084D7C827CC50F51 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; + 6FB32AA05C08D6C55F7345D7 /* WebPageImageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 454F04A5E5887B163DD7E5A9 /* WebPageImageStore.swift */; }; 6FB5E632397385B569B5FB5E /* PushNotificationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */; }; 71C83A8D875833719759B1FE /* UserDataRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B167270C81CB76E8F5ED9CA /* UserDataRepositoryImpl.swift */; }; + 7A1360E04BA36E6476DB4430 /* UserProfileMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37830EA98EFABE66D2ADBCE9 /* UserProfileMapping.swift */; }; 7A71FF2428AECD0170B555F7 /* WebPageMetadataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */; }; 7A74659BAEE980ECCBA0D22A /* UserProfileMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37830EA98EFABE66D2ADBCE9 /* UserProfileMapping.swift */; }; - 7C88E53D0CC7798B5EFF8228 /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */; }; + 7C9171AA49A09F0D8F8A4419 /* WebPageMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C2B7108CD63C65097876046 /* WebPageMapping.swift */; }; 7FD388EB6C3123479B304478 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; 8744A8E2492B34573A5A1459 /* WebPageImageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 454F04A5E5887B163DD7E5A9 /* WebPageImageStore.swift */; }; 8F9466853CB478992BFA7762 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; + 90776FF719A37EAE1CB1BB1B /* TodoCategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 082E30ECD7061C9E401FF2D0 /* TodoCategoryService.swift */; }; + 922EECF001AF1EAC4EE5ACAA /* PushNotificationMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44C564559DBDF765945456FA /* PushNotificationMapping.swift */; }; + 94BC00B678F8511CC23BCA17 /* UserDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */; }; + 963AA368BA2E4A085206768C /* ThemeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */; }; 986DAE304B67FC8F8563FC40 /* AuthSessionRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80CBBE2B99B80E70DCD800ED /* AuthSessionRepositoryImpl.swift */; }; 9B584555CC7504BEDF5F8008 /* WebPageImageRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 914EE1DC0A02968747B6B3A2 /* WebPageImageRepositoryImpl.swift */; }; + 9DBA952A12D983B8398F40FB /* WebPageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE1FE53786D11AC7B192698 /* WebPageService.swift */; }; A6BADE4BA91529F464FBEB0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; A99E2FD1B2E157BF7BE9FB5C /* TodoDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = B28D4F60262075223EC096E0 /* TodoDTO.swift */; }; - B02D9699AED8ACA2DA62A4B4 /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */; }; B2D2F2614E6446B422B42E98 /* TodoService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E716EC015A5805DD7C949B /* TodoService.swift */; }; + B35B7FCCDD45C7C302B3E94D /* TodoMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CB1CEA7122BFEDED0F4370 /* TodoMapping.swift */; }; + B3655250BCDBFAFBFA941F63 /* WebPageMetadataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */; }; + B4A86993344617CDA0279841 /* UserService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42BC563A225597B3D761253 /* UserService.swift */; }; B5F2954F61C8263C3A31B295 /* TodoMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CB1CEA7122BFEDED0F4370 /* TodoMapping.swift */; }; + B73F5314433AE44F09034914 /* NotificationKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13680A4153A719F15E7DFDF6 /* NotificationKind.swift */; }; + B77ADC0FB7F0CEE46F3D46BB /* PushNotificationCursorDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF12B44E80793EF948B211B /* PushNotificationCursorDTO.swift */; }; B8E8AB9B2529E248BF3E9AC5 /* NWPathConnectivityProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B67886F72C946CBC709AFCB /* NWPathConnectivityProvider.swift */; }; BB7C667A5651F5C5E60C9C65 /* TodoCategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 082E30ECD7061C9E401FF2D0 /* TodoCategoryService.swift */; }; - C25D925CD643720891C3CD85 /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */; }; + D5A27B2AC5CDF6C4878CC5FF /* PushNotificationPageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE96D070821D1FB62A155AB5 /* PushNotificationPageResponse.swift */; }; + D7D9BD96D0F8E1647775A61A /* TodoService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E716EC015A5805DD7C949B /* TodoService.swift */; }; D910214884BD6503097E03F6 /* TodoCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */; }; E00C306546BD8A52E12D2296 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; + E5772C4226F405A20B26ED3B /* WebPageMetadataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */; }; E671A77745F90F217E091010 /* UserDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */; }; + E860E8E59EE2F714EF7F0FD8 /* UserProfileResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 387E711B7A3BA319D3E7C2AB /* UserProfileResponse.swift */; }; E8FA3EF7AE26AA96A2168FEE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; + E9D070C8D3644AA9E7AB7EEA /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67FC3A5288FABA7441F4D6AA /* Logger.swift */; }; EB5E684FF9C0430609D41D24 /* WidgetSnapshotUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */; }; - F88DD9F3B1720EE23C9A23CC /* DevLogDataMapper.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 44466B71BA6B67309210A7BB /* DevLogDataMapper.framework */; }; + F515D3BD025E835AFFFAE8F6 /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7559825C27ED42F9F86EBAC1 /* AuthService.swift */; }; + FB654D9A5FD611C1CC1F9C15 /* PushNotificationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -84,27 +110,6 @@ remoteGlobalIDString = 7D1E74925088998D68BBFBBB; remoteInfo = DevLogDomain; }; - 265EA22D69D36B94BD0FADCC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0B9228953A84A7D7ED3BC5B8; - remoteInfo = DevLogDataDTO; - }; - 291C29C98BA846DB1EFF9263 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 27C8E1F04453FD577C839404; - remoteInfo = DevLogDataMapper; - }; - 2C3CE6146CD5AB882B075236 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 6D02EDBA887507AC7BA79658; - remoteInfo = DevLogDataProtocol; - }; 345F8284E22699C65B7FF89B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */; @@ -112,13 +117,6 @@ remoteGlobalIDString = 7D1E74925088998D68BBFBBB; remoteInfo = DevLogDomain; }; - 3838BBE0FEC6B9E08242914D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0B9228953A84A7D7ED3BC5B8; - remoteInfo = DevLogDataDTO; - }; 6E927734EC01B34C7A7B01C2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */; @@ -126,20 +124,6 @@ remoteGlobalIDString = 3F08F6B94839E9021FCFC466; remoteInfo = Subproject; }; - 87C4E293CEB68865146027D2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0B9228953A84A7D7ED3BC5B8; - remoteInfo = DevLogDataDTO; - }; - BB3B1390C9968DC8F87296F8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 80A60CC195BD79C638F5B405; - remoteInfo = DevLogDataCommon; - }; C7F303494B4D15C44C82AF32 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */; @@ -147,13 +131,6 @@ remoteGlobalIDString = 7D1E74925088998D68BBFBBB; remoteInfo = DevLogDomain; }; - F8A671FF637FB67637A2D9A2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 80A60CC195BD79C638F5B405; - remoteInfo = DevLogDataCommon; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -175,16 +152,14 @@ 3CEB1EE245302780E69EC631 /* PushNotificationRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationRepositoryImpl.swift; path = Sources/Repository/PushNotificationRepositoryImpl.swift; sourceTree = ""; }; 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdater.swift; path = Sources/Protocol/WidgetSnapshotUpdater.swift; sourceTree = ""; }; 3F6961039F12AFD8B33F25DF /* TodoReferenceResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReferenceResponse.swift; path = Sources/DTO/TodoReferenceResponse.swift; sourceTree = ""; }; - 44466B71BA6B67309210A7BB /* DevLogDataMapper.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataMapper.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 44C564559DBDF765945456FA /* PushNotificationMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationMapping.swift; path = Sources/Mapper/PushNotificationMapping.swift; sourceTree = ""; }; 454F04A5E5887B163DD7E5A9 /* WebPageImageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStore.swift; path = Sources/Protocol/WebPageImageStore.swift; sourceTree = ""; }; 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataResponse.swift; path = Sources/DTO/AuthDataResponse.swift; sourceTree = ""; }; - 4AB6E00A38C37CDBF82B57FD /* DevLogDataRepository.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataRepository.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4AB6E00A38C37CDBF82B57FD /* DevLogData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DevLogData.framework; path = DevLogData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageDTO.swift; path = Sources/DTO/WebPageDTO.swift; sourceTree = ""; }; 60E716EC015A5805DD7C949B /* TodoService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoService.swift; path = Sources/Protocol/TodoService.swift; sourceTree = ""; }; 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationResponse.swift; path = Sources/DTO/PushNotificationResponse.swift; sourceTree = ""; }; 67FC3A5288FABA7441F4D6AA /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Logger.swift; path = Sources/Common/Logger.swift; sourceTree = ""; }; - 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataCommon.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7559825C27ED42F9F86EBAC1 /* AuthService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthService.swift; path = Sources/Protocol/AuthService.swift; sourceTree = ""; }; 78DB5B22BE2E31B18173E89E /* NetworkConnectivityRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkConnectivityRepositoryImpl.swift; path = Sources/Repository/NetworkConnectivityRepositoryImpl.swift; sourceTree = ""; }; 7B3ED1B2326966F84851DFDD /* AuthDataRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataRepositoryImpl.swift; path = Sources/Repository/AuthDataRepositoryImpl.swift; sourceTree = ""; }; @@ -192,14 +167,12 @@ 80CBBE2B99B80E70DCD800ED /* AuthSessionRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthSessionRepositoryImpl.swift; path = Sources/Repository/AuthSessionRepositoryImpl.swift; sourceTree = ""; }; 8B167270C81CB76E8F5ED9CA /* UserDataRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDataRepositoryImpl.swift; path = Sources/Repository/UserDataRepositoryImpl.swift; sourceTree = ""; }; 914EE1DC0A02968747B6B3A2 /* WebPageImageRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageRepositoryImpl.swift; path = Sources/Repository/WebPageImageRepositoryImpl.swift; sourceTree = ""; }; - 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataDTO.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataLayerError.swift; path = Sources/Common/DataLayerError.swift; sourceTree = ""; }; ADE1FE53786D11AC7B192698 /* WebPageService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageService.swift; path = Sources/Protocol/WebPageService.swift; sourceTree = ""; }; B1ABB0ED51067433D3C90F02 /* TodoPageResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoPageResponse.swift; path = Sources/DTO/TodoPageResponse.swift; sourceTree = ""; }; B28D4F60262075223EC096E0 /* TodoDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDTO.swift; path = Sources/DTO/TodoDTO.swift; sourceTree = ""; }; B5F8C39E4E51A7A62D716612 /* TodoRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoRepositoryImpl.swift; path = Sources/Repository/TodoRepositoryImpl.swift; sourceTree = ""; }; BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStore.swift; path = Sources/Protocol/WidgetSnapshotPreferenceStore.swift; sourceTree = ""; }; - C063BD562070CA11C2AA4EDF /* DevLogDataProtocol.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDataProtocol.framework; sourceTree = BUILT_PRODUCTS_DIR; }; C42BC563A225597B3D761253 /* UserService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserService.swift; path = Sources/Protocol/UserService.swift; sourceTree = ""; }; D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryResponse.swift; path = Sources/DTO/TodoCategoryResponse.swift; sourceTree = ""; }; DD765636013B36A3BCCCF8B7 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; @@ -211,57 +184,15 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 27B38693800AEADD845028A9 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 552E7AC6C92BB3EDA4A3B99B /* Foundation.framework in Frameworks */, - C25D925CD643720891C3CD85 /* DevLogDataCommon.framework in Frameworks */, - 4FCA3EE76074371F5CA5F50F /* DevLogDataDTO.framework in Frameworks */, - 8F9466853CB478992BFA7762 /* DevLogDomain.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 483D4601CF8E621607331AB6 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6F59D30C084D7C827CC50F51 /* Foundation.framework in Frameworks */, - E00C306546BD8A52E12D2296 /* DevLogDomain.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 59A9CE50C120F550A7D99914 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - A6BADE4BA91529F464FBEB0F /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; DC3B63D4A3808A9CE20EE7CD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( E8FA3EF7AE26AA96A2168FEE /* Foundation.framework in Frameworks */, - B02D9699AED8ACA2DA62A4B4 /* DevLogDataCommon.framework in Frameworks */, - 7C88E53D0CC7798B5EFF8228 /* DevLogDataDTO.framework in Frameworks */, - 4ABBDC64F51AD1D019D93D0E /* DevLogDataProtocol.framework in Frameworks */, - F88DD9F3B1720EE23C9A23CC /* DevLogDataMapper.framework in Frameworks */, 7FD388EB6C3123479B304478 /* DevLogDomain.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - E059E60416E6E796FB83CCFB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 5CC76E5C85D4133B0E2409EC /* Foundation.framework in Frameworks */, - 6386F4E9FC44422C070273C8 /* DevLogDataDTO.framework in Frameworks */, - 159FADC56D29B32B0613BB77 /* DevLogDomain.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -288,11 +219,7 @@ 27CDFCFF9F1093391B8566A1 /* Products */ = { isa = PBXGroup; children = ( - 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */, - 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */, - C063BD562070CA11C2AA4EDF /* DevLogDataProtocol.framework */, - 44466B71BA6B67309210A7BB /* DevLogDataMapper.framework */, - 4AB6E00A38C37CDBF82B57FD /* DevLogDataRepository.framework */, + 4AB6E00A38C37CDBF82B57FD /* DevLogData.framework */, 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */, ); name = Products; @@ -406,34 +333,6 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 2A431786CA770FC6A975CD96 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4539FA1B796BDDC510AAF82E /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5E24448CBA4C00D26FA5F908 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - CA6383B9828EE3271083BF32 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; FEB154AC88AD6EBCF8E8763D /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -444,87 +343,9 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 0B9228953A84A7D7ED3BC5B8 /* DevLogDataDTO */ = { - isa = PBXNativeTarget; - buildConfigurationList = A94BF61A161D9751A69AD42A /* Build configuration list for PBXNativeTarget "DevLogDataDTO" */; - buildPhases = ( - CA6383B9828EE3271083BF32 /* Headers */, - D76E724F041C4AE595FDCBE2 /* Sources */, - 483D4601CF8E621607331AB6 /* Frameworks */, - FBA6D30F7E480099B3FF4EEB /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 5B2FEE8E4475FD1CFDEBE355 /* PBXTargetDependency */, - ); - name = DevLogDataDTO; - productName = DevLogDataDTO; - productReference = 92502C9F074520D19CC451EF /* DevLogDataDTO.framework */; - productType = "com.apple.product-type.framework"; - }; - 27C8E1F04453FD577C839404 /* DevLogDataMapper */ = { - isa = PBXNativeTarget; - buildConfigurationList = DC47700CBACAB161C518DE36 /* Build configuration list for PBXNativeTarget "DevLogDataMapper" */; - buildPhases = ( - 2A431786CA770FC6A975CD96 /* Headers */, - B5B0646A96399A2D3FCB09E9 /* Sources */, - 27B38693800AEADD845028A9 /* Frameworks */, - CB8656DB659B465E5B2E5A0D /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 6BD7CDC2CE90027069EBF474 /* PBXTargetDependency */, - 9DF49C480F5AB60C3B9EBE38 /* PBXTargetDependency */, - 2AB91A72C9F3135F2114FAFE /* PBXTargetDependency */, - ); - name = DevLogDataMapper; - productName = DevLogDataMapper; - productReference = 44466B71BA6B67309210A7BB /* DevLogDataMapper.framework */; - productType = "com.apple.product-type.framework"; - }; - 6D02EDBA887507AC7BA79658 /* DevLogDataProtocol */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6DD7FDB4425EE810218E2C32 /* Build configuration list for PBXNativeTarget "DevLogDataProtocol" */; - buildPhases = ( - 5E24448CBA4C00D26FA5F908 /* Headers */, - 10F00E11702D43472906BF45 /* Sources */, - E059E60416E6E796FB83CCFB /* Frameworks */, - C728749A5150DFF9753B0CBF /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - AC3779B9D6B670AB6BC05C43 /* PBXTargetDependency */, - 297FB8C855D46D77DDDA1925 /* PBXTargetDependency */, - ); - name = DevLogDataProtocol; - productName = DevLogDataProtocol; - productReference = C063BD562070CA11C2AA4EDF /* DevLogDataProtocol.framework */; - productType = "com.apple.product-type.framework"; - }; - 80A60CC195BD79C638F5B405 /* DevLogDataCommon */ = { + D9D76C33D8B4790694BD3488 /* DevLogData */ = { isa = PBXNativeTarget; - buildConfigurationList = EFD568C3CDC85883840DBD45 /* Build configuration list for PBXNativeTarget "DevLogDataCommon" */; - buildPhases = ( - 4539FA1B796BDDC510AAF82E /* Headers */, - 1E8F3697B1D7CB1C23D15D6A /* Sources */, - 59A9CE50C120F550A7D99914 /* Frameworks */, - 1E37BB8AE25D5987F5E24FEF /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = DevLogDataCommon; - productName = DevLogDataCommon; - productReference = 690289F520872AC78D6C95D3 /* DevLogDataCommon.framework */; - productType = "com.apple.product-type.framework"; - }; - D9D76C33D8B4790694BD3488 /* DevLogDataRepository */ = { - isa = PBXNativeTarget; - buildConfigurationList = 64EB1E90241FDB4FE019B42A /* Build configuration list for PBXNativeTarget "DevLogDataRepository" */; + buildConfigurationList = 64EB1E90241FDB4FE019B42A /* Build configuration list for PBXNativeTarget "DevLogData" */; buildPhases = ( FEB154AC88AD6EBCF8E8763D /* Headers */, 2674AC03A9187931B580AAEE /* Sources */, @@ -534,15 +355,11 @@ buildRules = ( ); dependencies = ( - 437F9D225A70C7BCFF3FBF39 /* PBXTargetDependency */, - 0E96401944C90EF831B7D8E1 /* PBXTargetDependency */, - BBF9CC002B18DE6FE4839A0B /* PBXTargetDependency */, - C1C19451F7732DCE6BED672E /* PBXTargetDependency */, C2D9D7E526019AEF507D8EFD /* PBXTargetDependency */, ); - name = DevLogDataRepository; - productName = DevLogDataRepository; - productReference = 4AB6E00A38C37CDBF82B57FD /* DevLogDataRepository.framework */; + name = DevLogData; + productName = DevLogData; + productReference = 4AB6E00A38C37CDBF82B57FD /* DevLogData.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -575,11 +392,7 @@ ); projectRoot = ""; targets = ( - 80A60CC195BD79C638F5B405 /* DevLogDataCommon */, - 0B9228953A84A7D7ED3BC5B8 /* DevLogDataDTO */, - 6D02EDBA887507AC7BA79658 /* DevLogDataProtocol */, - 27C8E1F04453FD577C839404 /* DevLogDataMapper */, - D9D76C33D8B4790694BD3488 /* DevLogDataRepository */, + D9D76C33D8B4790694BD3488 /* DevLogData */, ); }; /* End PBXProject section */ @@ -595,13 +408,6 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ - 1E37BB8AE25D5987F5E24FEF /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 73B3ACF5A02F5A91A7C72F92 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -609,60 +415,9 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - C728749A5150DFF9753B0CBF /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - CB8656DB659B465E5B2E5A0D /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FBA6D30F7E480099B3FF4EEB /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 10F00E11702D43472906BF45 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 630C1F917AED059FBE29BDBC /* AuthService.swift in Sources */, - 2F0ECAAFBEB7651130A6160A /* AuthenticationService.swift in Sources */, - B8E8AB9B2529E248BF3E9AC5 /* NWPathConnectivityProvider.swift in Sources */, - 0C8E1C07EF01FB22BF8B80B9 /* PushNotificationService.swift in Sources */, - 415FA233A97D67108CA8FA60 /* ThemeStore.swift in Sources */, - BB7C667A5651F5C5E60C9C65 /* TodoCategoryService.swift in Sources */, - B2D2F2614E6446B422B42E98 /* TodoService.swift in Sources */, - E671A77745F90F217E091010 /* UserDefaultsStore.swift in Sources */, - 4EFB81EBF4C8E68D1219E261 /* UserService.swift in Sources */, - 8744A8E2492B34573A5A1459 /* WebPageImageStore.swift in Sources */, - 7A71FF2428AECD0170B555F7 /* WebPageMetadataService.swift in Sources */, - 3774F15D0E51BAE1445550C8 /* WebPageService.swift in Sources */, - 18D37737A07ECBDA79EA9270 /* WidgetSnapshotPreferenceStore.swift in Sources */, - EB5E684FF9C0430609D41D24 /* WidgetSnapshotUpdater.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1E8F3697B1D7CB1C23D15D6A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4B18018B63AE2321B8B7761A /* DataLayerError.swift in Sources */, - 18C2B39408BF745FE0BFC810 /* Logger.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 2674AC03A9187931B580AAEE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -678,100 +433,45 @@ 50C769615D094189B739F055 /* UserPreferencesRepositoryImpl.swift in Sources */, 9B584555CC7504BEDF5F8008 /* WebPageImageRepositoryImpl.swift in Sources */, 4BD06832F56598B25183EF06 /* WebPageRepositoryImpl.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B5B0646A96399A2D3FCB09E9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 67F3E365DA09012FBBE2012F /* PushNotificationMapping.swift in Sources */, - B5F2954F61C8263C3A31B295 /* TodoMapping.swift in Sources */, - 7A74659BAEE980ECCBA0D22A /* UserProfileMapping.swift in Sources */, - 627A5B276E98C623E7953868 /* WebPageMapping.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D76E724F041C4AE595FDCBE2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 3E47658FDC0F074222D07B2C /* AuthDataResponse.swift in Sources */, - 2D91812BD78B5FA8DBE2F030 /* NotificationKind.swift in Sources */, - 5D56791D0D2F4F4B299C183C /* PushNotificationCursorDTO.swift in Sources */, - 49F6E1752300C28F873AE959 /* PushNotificationPageResponse.swift in Sources */, - 6FB5E632397385B569B5FB5E /* PushNotificationResponse.swift in Sources */, - D910214884BD6503097E03F6 /* TodoCategoryResponse.swift in Sources */, - 06C8405C9CCC37319D16F4D6 /* TodoCursorDTO.swift in Sources */, - A99E2FD1B2E157BF7BE9FB5C /* TodoDTO.swift in Sources */, - 48520BBB5EAEF3DB9D65CAE8 /* TodoPageResponse.swift in Sources */, - 02989D2DD8C861339C89EFAB /* TodoReferenceResponse.swift in Sources */, - 59FB0D9F7C8C8D1B63EA5880 /* UserProfileResponse.swift in Sources */, - 14D1BF4D1F50FB067DA875B3 /* WebPageDTO.swift in Sources */, - 2068F0B84A3BC53EEB156D82 /* WebPageMetadataResponse.swift in Sources */, + 58FFF761F471A091E5A8BCF5 /* DataLayerError.swift in Sources */, + E9D070C8D3644AA9E7AB7EEA /* Logger.swift in Sources */, + 5168B6165545231B3E9CB52D /* AuthDataResponse.swift in Sources */, + B73F5314433AE44F09034914 /* NotificationKind.swift in Sources */, + B77ADC0FB7F0CEE46F3D46BB /* PushNotificationCursorDTO.swift in Sources */, + D5A27B2AC5CDF6C4878CC5FF /* PushNotificationPageResponse.swift in Sources */, + FB654D9A5FD611C1CC1F9C15 /* PushNotificationResponse.swift in Sources */, + 57E1BC53D8D628A254A270A1 /* TodoCategoryResponse.swift in Sources */, + 238E950C1B6FF60F0840EA35 /* TodoCursorDTO.swift in Sources */, + 014DD58F9A49EF8F613A8512 /* TodoDTO.swift in Sources */, + 51F956F957951237D7B09387 /* TodoPageResponse.swift in Sources */, + 672BED915B5A7A1A0A29B4FD /* TodoReferenceResponse.swift in Sources */, + E860E8E59EE2F714EF7F0FD8 /* UserProfileResponse.swift in Sources */, + 05E9A2CF2D447750487BDC38 /* WebPageDTO.swift in Sources */, + B3655250BCDBFAFBFA941F63 /* WebPageMetadataResponse.swift in Sources */, + F515D3BD025E835AFFFAE8F6 /* AuthService.swift in Sources */, + 41371B777FE701652CA2E798 /* AuthenticationService.swift in Sources */, + 36A48634DC1A350421118FEB /* NWPathConnectivityProvider.swift in Sources */, + 2A057B6B7F6900E50AC2E031 /* PushNotificationService.swift in Sources */, + 963AA368BA2E4A085206768C /* ThemeStore.swift in Sources */, + 90776FF719A37EAE1CB1BB1B /* TodoCategoryService.swift in Sources */, + D7D9BD96D0F8E1647775A61A /* TodoService.swift in Sources */, + 94BC00B678F8511CC23BCA17 /* UserDefaultsStore.swift in Sources */, + B4A86993344617CDA0279841 /* UserService.swift in Sources */, + 6FB32AA05C08D6C55F7345D7 /* WebPageImageStore.swift in Sources */, + E5772C4226F405A20B26ED3B /* WebPageMetadataService.swift in Sources */, + 9DBA952A12D983B8398F40FB /* WebPageService.swift in Sources */, + 355537B4107978D346594E6A /* WidgetSnapshotPreferenceStore.swift in Sources */, + 3F09F91345793F8C14F5CC05 /* WidgetSnapshotUpdater.swift in Sources */, + 922EECF001AF1EAC4EE5ACAA /* PushNotificationMapping.swift in Sources */, + B35B7FCCDD45C7C302B3E94D /* TodoMapping.swift in Sources */, + 7A1360E04BA36E6476DB4430 /* UserProfileMapping.swift in Sources */, + 7C9171AA49A09F0D8F8A4419 /* WebPageMapping.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 0E96401944C90EF831B7D8E1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataDTO; - target = 0B9228953A84A7D7ED3BC5B8 /* DevLogDataDTO */; - targetProxy = 87C4E293CEB68865146027D2 /* PBXContainerItemProxy */; - }; - 297FB8C855D46D77DDDA1925 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDomain; - targetProxy = 345F8284E22699C65B7FF89B /* PBXContainerItemProxy */; - }; - 2AB91A72C9F3135F2114FAFE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDomain; - targetProxy = C7F303494B4D15C44C82AF32 /* PBXContainerItemProxy */; - }; - 437F9D225A70C7BCFF3FBF39 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataCommon; - target = 80A60CC195BD79C638F5B405 /* DevLogDataCommon */; - targetProxy = F8A671FF637FB67637A2D9A2 /* PBXContainerItemProxy */; - }; - 5B2FEE8E4475FD1CFDEBE355 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDomain; - targetProxy = 1AEE6078E99E8794FC5D9C1A /* PBXContainerItemProxy */; - }; - 6BD7CDC2CE90027069EBF474 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataCommon; - target = 80A60CC195BD79C638F5B405 /* DevLogDataCommon */; - targetProxy = BB3B1390C9968DC8F87296F8 /* PBXContainerItemProxy */; - }; - 9DF49C480F5AB60C3B9EBE38 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataDTO; - target = 0B9228953A84A7D7ED3BC5B8 /* DevLogDataDTO */; - targetProxy = 265EA22D69D36B94BD0FADCC /* PBXContainerItemProxy */; - }; - AC3779B9D6B670AB6BC05C43 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataDTO; - target = 0B9228953A84A7D7ED3BC5B8 /* DevLogDataDTO */; - targetProxy = 3838BBE0FEC6B9E08242914D /* PBXContainerItemProxy */; - }; - BBF9CC002B18DE6FE4839A0B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataProtocol; - target = 6D02EDBA887507AC7BA79658 /* DevLogDataProtocol */; - targetProxy = 2C3CE6146CD5AB882B075236 /* PBXContainerItemProxy */; - }; - C1C19451F7732DCE6BED672E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataMapper; - target = 27C8E1F04453FD577C839404 /* DevLogDataMapper */; - targetProxy = 291C29C98BA846DB1EFF9263 /* PBXContainerItemProxy */; - }; C2D9D7E526019AEF507D8EFD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDomain; @@ -793,81 +493,7 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataRepository; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 3203A99F59D1BEAB6D3C8FB3 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataMapper; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 4675F51029F52D544979DADD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataDTO; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 496C32FE03087C102E98CAEB /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataCommon; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogData; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -932,80 +558,6 @@ }; name = Release; }; - 6AF1DADBD0DF112129374DCD /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataProtocol; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 79E19457A49085BD47013120 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataCommon; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 7DE72E58DE6F03593F856276 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataMapper; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; 808AF7FF654C2CE90505C83C /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1067,54 +619,6 @@ }; name = Debug; }; - BDE089461B9B8C04DEAD4833 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataProtocol; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - C8237CB7F17187931E3D8CFB /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataDTO; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; D6BAE0518A7CBD73832246F3 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1128,7 +632,7 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataRepository; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogData; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -1143,7 +647,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 64EB1E90241FDB4FE019B42A /* Build configuration list for PBXNativeTarget "DevLogDataRepository" */ = { + 64EB1E90241FDB4FE019B42A /* Build configuration list for PBXNativeTarget "DevLogData" */ = { isa = XCConfigurationList; buildConfigurations = ( D6BAE0518A7CBD73832246F3 /* Release */, @@ -1152,15 +656,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6DD7FDB4425EE810218E2C32 /* Build configuration list for PBXNativeTarget "DevLogDataProtocol" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6AF1DADBD0DF112129374DCD /* Release */, - BDE089461B9B8C04DEAD4833 /* Debug */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 7F096A3943F90686072B1DF1 /* Build configuration list for PBXProject "DevLogData" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -1170,33 +665,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A94BF61A161D9751A69AD42A /* Build configuration list for PBXNativeTarget "DevLogDataDTO" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4675F51029F52D544979DADD /* Release */, - C8237CB7F17187931E3D8CFB /* Debug */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - DC47700CBACAB161C518DE36 /* Build configuration list for PBXNativeTarget "DevLogDataMapper" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 3203A99F59D1BEAB6D3C8FB3 /* Release */, - 7DE72E58DE6F03593F856276 /* Debug */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EFD568C3CDC85883840DBD45 /* Build configuration list for PBXNativeTarget "DevLogDataCommon" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 79E19457A49085BD47013120 /* Release */, - 496C32FE03087C102E98CAEB /* Debug */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = CC7EBB5B45CD6E34221B84D0 /* Project object */; diff --git a/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataRepository.xcscheme b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogData.xcscheme similarity index 94% rename from Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataRepository.xcscheme rename to Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogData.xcscheme index 3f9e5818..b1dcb495 100644 --- a/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataRepository.xcscheme +++ b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogData.xcscheme @@ -15,8 +15,8 @@ diff --git a/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme deleted file mode 100644 index 2a08880c..00000000 --- a/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataCommon.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme deleted file mode 100644 index 53106c6a..00000000 --- a/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataDTO.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme deleted file mode 100644 index 9b996cb4..00000000 --- a/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataMapper.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme deleted file mode 100644 index e1c052f3..00000000 --- a/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataProtocol.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Application/DevLogData/Sources/Mapper/PushNotificationMapping.swift b/Application/DevLogData/Sources/Mapper/PushNotificationMapping.swift index b314ee88..ab694c3c 100644 --- a/Application/DevLogData/Sources/Mapper/PushNotificationMapping.swift +++ b/Application/DevLogData/Sources/Mapper/PushNotificationMapping.swift @@ -6,8 +6,6 @@ // import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO public extension PushNotificationResponse { public func toDomain() throws -> PushNotification { diff --git a/Application/DevLogData/Sources/Mapper/TodoMapping.swift b/Application/DevLogData/Sources/Mapper/TodoMapping.swift index 937be302..5404b73e 100644 --- a/Application/DevLogData/Sources/Mapper/TodoMapping.swift +++ b/Application/DevLogData/Sources/Mapper/TodoMapping.swift @@ -6,8 +6,6 @@ // import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO public extension TodoRequest { public static func fromDomain(_ entity: Todo) -> Self { diff --git a/Application/DevLogData/Sources/Mapper/UserProfileMapping.swift b/Application/DevLogData/Sources/Mapper/UserProfileMapping.swift index e2542ba3..e6738b97 100644 --- a/Application/DevLogData/Sources/Mapper/UserProfileMapping.swift +++ b/Application/DevLogData/Sources/Mapper/UserProfileMapping.swift @@ -6,7 +6,6 @@ // import DevLogDomain -import DevLogDataDTO public extension UserProfileResponse { public func toDomain() -> UserProfile { diff --git a/Application/DevLogData/Sources/Mapper/WebPageMapping.swift b/Application/DevLogData/Sources/Mapper/WebPageMapping.swift index 94172d92..c2d934e9 100644 --- a/Application/DevLogData/Sources/Mapper/WebPageMapping.swift +++ b/Application/DevLogData/Sources/Mapper/WebPageMapping.swift @@ -7,8 +7,6 @@ import Foundation import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO public extension WebPageResponse { public func toDomain() throws -> WebPage { diff --git a/Application/DevLogData/Sources/Protocol/AuthService.swift b/Application/DevLogData/Sources/Protocol/AuthService.swift index 4bf704d4..f8e535b5 100644 --- a/Application/DevLogData/Sources/Protocol/AuthService.swift +++ b/Application/DevLogData/Sources/Protocol/AuthService.swift @@ -7,7 +7,6 @@ import Combine import Foundation -import DevLogDataDTO public protocol AuthService { var uid: String? { get } diff --git a/Application/DevLogData/Sources/Protocol/AuthenticationService.swift b/Application/DevLogData/Sources/Protocol/AuthenticationService.swift index bd9d2032..609658dc 100644 --- a/Application/DevLogData/Sources/Protocol/AuthenticationService.swift +++ b/Application/DevLogData/Sources/Protocol/AuthenticationService.swift @@ -6,7 +6,6 @@ // import Foundation -import DevLogDataDTO public protocol AuthenticationService { func signIn() async throws -> AuthDataResponse diff --git a/Application/DevLogData/Sources/Protocol/NWPathConnectivityProvider.swift b/Application/DevLogData/Sources/Protocol/NWPathConnectivityProvider.swift index 7a1bce0b..1c87c230 100644 --- a/Application/DevLogData/Sources/Protocol/NWPathConnectivityProvider.swift +++ b/Application/DevLogData/Sources/Protocol/NWPathConnectivityProvider.swift @@ -7,7 +7,6 @@ import Combine import Foundation -import DevLogDataDTO public protocol NWPathConnectivityProvider { func observeNetworkConnectivity() -> AnyPublisher diff --git a/Application/DevLogData/Sources/Protocol/PushNotificationService.swift b/Application/DevLogData/Sources/Protocol/PushNotificationService.swift index 2e82d1c6..0b17bb9d 100644 --- a/Application/DevLogData/Sources/Protocol/PushNotificationService.swift +++ b/Application/DevLogData/Sources/Protocol/PushNotificationService.swift @@ -8,7 +8,6 @@ import Combine import Foundation import DevLogDomain -import DevLogDataDTO public protocol PushNotificationService { func fetchPushNotificationEnabled() async throws -> Bool diff --git a/Application/DevLogData/Sources/Protocol/ThemeStore.swift b/Application/DevLogData/Sources/Protocol/ThemeStore.swift index 0e10a11d..ef93c2ea 100644 --- a/Application/DevLogData/Sources/Protocol/ThemeStore.swift +++ b/Application/DevLogData/Sources/Protocol/ThemeStore.swift @@ -8,7 +8,6 @@ import Combine import Foundation import DevLogDomain -import DevLogDataDTO public protocol ThemeStore { func observeTheme() -> AnyPublisher diff --git a/Application/DevLogData/Sources/Protocol/TodoCategoryService.swift b/Application/DevLogData/Sources/Protocol/TodoCategoryService.swift index 0851c57c..d701bd84 100644 --- a/Application/DevLogData/Sources/Protocol/TodoCategoryService.swift +++ b/Application/DevLogData/Sources/Protocol/TodoCategoryService.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogDataDTO public protocol TodoCategoryService { func fetchPreferences() async throws -> [TodoCategoryPreference] diff --git a/Application/DevLogData/Sources/Protocol/TodoService.swift b/Application/DevLogData/Sources/Protocol/TodoService.swift index 0255c5bb..41293b3b 100644 --- a/Application/DevLogData/Sources/Protocol/TodoService.swift +++ b/Application/DevLogData/Sources/Protocol/TodoService.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogDataDTO public protocol TodoService { func fetchTodos(_ query: TodoQuery, cursor: TodoCursorDTO?) async throws -> TodoPageResponse diff --git a/Application/DevLogData/Sources/Protocol/UserDefaultsStore.swift b/Application/DevLogData/Sources/Protocol/UserDefaultsStore.swift index 32d5af1b..0e1e805f 100644 --- a/Application/DevLogData/Sources/Protocol/UserDefaultsStore.swift +++ b/Application/DevLogData/Sources/Protocol/UserDefaultsStore.swift @@ -6,7 +6,6 @@ // import Foundation -import DevLogDataDTO public protocol UserDefaultsStore { func string(forKey key: String) -> String? diff --git a/Application/DevLogData/Sources/Protocol/UserService.swift b/Application/DevLogData/Sources/Protocol/UserService.swift index a035b342..df35bde4 100644 --- a/Application/DevLogData/Sources/Protocol/UserService.swift +++ b/Application/DevLogData/Sources/Protocol/UserService.swift @@ -6,7 +6,6 @@ // import Foundation -import DevLogDataDTO public protocol UserService { func upsertUser(_ response: AuthDataResponse) async throws diff --git a/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift b/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift index 62ebbe1c..b3277956 100644 --- a/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift +++ b/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift @@ -6,7 +6,6 @@ // import Foundation -import DevLogDataDTO public protocol WebPageImageStore { func cachedImageURL(for url: URL) async throws -> URL diff --git a/Application/DevLogData/Sources/Protocol/WebPageMetadataService.swift b/Application/DevLogData/Sources/Protocol/WebPageMetadataService.swift index ce37133e..fe16ad5c 100644 --- a/Application/DevLogData/Sources/Protocol/WebPageMetadataService.swift +++ b/Application/DevLogData/Sources/Protocol/WebPageMetadataService.swift @@ -6,7 +6,6 @@ // import Foundation -import DevLogDataDTO public protocol WebPageMetadataService { func fetchMetadata(from urlString: String) async throws -> WebPageMetadataResponse diff --git a/Application/DevLogData/Sources/Protocol/WebPageService.swift b/Application/DevLogData/Sources/Protocol/WebPageService.swift index 8a07d2a7..8566c836 100644 --- a/Application/DevLogData/Sources/Protocol/WebPageService.swift +++ b/Application/DevLogData/Sources/Protocol/WebPageService.swift @@ -6,7 +6,6 @@ // import Foundation -import DevLogDataDTO public protocol WebPageService { func fetchWebPages(_ query: String) async throws -> [WebPageResponse] diff --git a/Application/DevLogData/Sources/Protocol/WidgetSnapshotPreferenceStore.swift b/Application/DevLogData/Sources/Protocol/WidgetSnapshotPreferenceStore.swift index 1014eb84..82c701ac 100644 --- a/Application/DevLogData/Sources/Protocol/WidgetSnapshotPreferenceStore.swift +++ b/Application/DevLogData/Sources/Protocol/WidgetSnapshotPreferenceStore.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogDataDTO public protocol WidgetSnapshotPreferenceStore { func heatmapActivityTypes() -> [String] diff --git a/Application/DevLogData/Sources/Protocol/WidgetSnapshotUpdater.swift b/Application/DevLogData/Sources/Protocol/WidgetSnapshotUpdater.swift index 3c5b02bb..2c3d4035 100644 --- a/Application/DevLogData/Sources/Protocol/WidgetSnapshotUpdater.swift +++ b/Application/DevLogData/Sources/Protocol/WidgetSnapshotUpdater.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogDataDTO public protocol WidgetSnapshotUpdater { func updateTodaySnapshot( diff --git a/Application/DevLogData/Sources/Repository/AuthDataRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/AuthDataRepositoryImpl.swift index a75f2546..b52aff9b 100644 --- a/Application/DevLogData/Sources/Repository/AuthDataRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/AuthDataRepositoryImpl.swift @@ -6,10 +6,6 @@ // import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataMapper -import DevLogDataProtocol final class AuthDataRepositoryImpl: AuthDataRepository { private let authService: AuthService diff --git a/Application/DevLogData/Sources/Repository/AuthSessionRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/AuthSessionRepositoryImpl.swift index 1e93e375..8289c0d6 100644 --- a/Application/DevLogData/Sources/Repository/AuthSessionRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/AuthSessionRepositoryImpl.swift @@ -7,10 +7,6 @@ import Combine import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataMapper -import DevLogDataProtocol final class AuthSessionRepositoryImpl: AuthSessionRepository { private let authService: AuthService diff --git a/Application/DevLogData/Sources/Repository/AuthenticationRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/AuthenticationRepositoryImpl.swift index c5dc07a4..99eb849d 100644 --- a/Application/DevLogData/Sources/Repository/AuthenticationRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/AuthenticationRepositoryImpl.swift @@ -6,10 +6,6 @@ // import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataMapper -import DevLogDataProtocol final class AuthenticationRepositoryImpl: AuthenticationRepository { private let authService: AuthService diff --git a/Application/DevLogData/Sources/Repository/NetworkConnectivityRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/NetworkConnectivityRepositoryImpl.swift index 7564341f..4d78487d 100644 --- a/Application/DevLogData/Sources/Repository/NetworkConnectivityRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/NetworkConnectivityRepositoryImpl.swift @@ -7,10 +7,6 @@ import Combine import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataMapper -import DevLogDataProtocol final class NetworkConnectivityRepositoryImpl: NetworkConnectivityRepository { private let connectivityProvider: NWPathConnectivityProvider diff --git a/Application/DevLogData/Sources/Repository/PushNotificationRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/PushNotificationRepositoryImpl.swift index 074221f5..1177c6df 100644 --- a/Application/DevLogData/Sources/Repository/PushNotificationRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/PushNotificationRepositoryImpl.swift @@ -8,10 +8,6 @@ import Foundation import Combine import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataMapper -import DevLogDataProtocol final class PushNotificationRepositoryImpl: PushNotificationRepository { private let pushNotificationService: PushNotificationService diff --git a/Application/DevLogData/Sources/Repository/TodoCategoryRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/TodoCategoryRepositoryImpl.swift index 888176a8..12f603e9 100644 --- a/Application/DevLogData/Sources/Repository/TodoCategoryRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/TodoCategoryRepositoryImpl.swift @@ -6,10 +6,6 @@ // import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataMapper -import DevLogDataProtocol final class TodoCategoryRepositoryImpl: TodoCategoryRepository { private let todoCategoryService: TodoCategoryService diff --git a/Application/DevLogData/Sources/Repository/TodoRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/TodoRepositoryImpl.swift index 5150be02..ed800868 100644 --- a/Application/DevLogData/Sources/Repository/TodoRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/TodoRepositoryImpl.swift @@ -7,10 +7,6 @@ import Foundation import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataMapper -import DevLogDataProtocol final class TodoRepositoryImpl: TodoRepository { private let todoService: TodoService diff --git a/Application/DevLogData/Sources/Repository/UserDataRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/UserDataRepositoryImpl.swift index 333fd33d..9249cdab 100644 --- a/Application/DevLogData/Sources/Repository/UserDataRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/UserDataRepositoryImpl.swift @@ -6,10 +6,6 @@ // import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataMapper -import DevLogDataProtocol final class UserDataRepositoryImpl: UserDataRepository { private let userService: UserService diff --git a/Application/DevLogData/Sources/Repository/UserPreferencesRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/UserPreferencesRepositoryImpl.swift index a058c786..ec1b4118 100644 --- a/Application/DevLogData/Sources/Repository/UserPreferencesRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/UserPreferencesRepositoryImpl.swift @@ -8,10 +8,6 @@ import Foundation import Combine import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataMapper -import DevLogDataProtocol final class UserPreferencesRepositoryImpl: UserPreferencesRepository { private enum Key { diff --git a/Application/DevLogData/Sources/Repository/WebPageImageRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/WebPageImageRepositoryImpl.swift index 77ba9264..df3c7e2a 100644 --- a/Application/DevLogData/Sources/Repository/WebPageImageRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/WebPageImageRepositoryImpl.swift @@ -6,10 +6,6 @@ // import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataMapper -import DevLogDataProtocol final class WebPageImageRepositoryImpl: WebPageImageRepository { private let store: WebPageImageStore diff --git a/Application/DevLogData/Sources/Repository/WebPageRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/WebPageRepositoryImpl.swift index f7f12ca6..f7467e49 100644 --- a/Application/DevLogData/Sources/Repository/WebPageRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/WebPageRepositoryImpl.swift @@ -8,10 +8,6 @@ import Foundation import UIKit import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataMapper -import DevLogDataProtocol final class WebPageRepositoryImpl: WebPageRepository { private let webPageService: WebPageService diff --git a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj index 178eb522..7b54552d 100644 --- a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj +++ b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 0E1D2D0391955DAAAEB0090F /* PushNotificationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */; }; - 17DCF2F561737FAE2CE744AC /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E93139280AFA8F1C2B741F3 /* DevLogDataCommon.framework */; }; 1F4B40F21FD77E3BB481E763 /* GithubAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E570F577BDD00D5DD473D84 /* GithubAuthenticationServiceImpl.swift */; }; 21F6F37746C943D1A019963F /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C4421AE6B9E4E419E73297F /* DevLogDomain.framework */; }; 3A2B4478D6F3438C00240EB4 /* GoogleAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */; }; @@ -23,14 +22,13 @@ 73814E7535B64F24905F1EF1 /* AppleSignInDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0CB84E61E29D44B48D3A1211 /* AppleSignInDelegate.swift */; }; 7711F199E79F41919891BF31 /* AppleAuthResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2C9755DE5674266B3C6F90C /* AppleAuthResponse.swift */; }; 87F2CCAD35FD485467397CCC /* WebPageServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */; }; - 8DC809F74EA0D636E5F51A83 /* DevLogDataDTO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6A5DD33E6F5140069CA53AAF /* DevLogDataDTO.framework */; }; 93D79429D184808FB702BF2D /* AppleAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E56286B1275FC5BD988C94B /* AppleAuthenticationServiceImpl.swift */; }; 9529B735E38CE98A8EC12AC3 /* TopViewControllerProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED31F0EEEF764BB7538C585 /* TopViewControllerProvider.swift */; }; - A18672C71ABCFAAFC19775F5 /* DevLogDataProtocol.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6CE407FD20ABD6E4ABC9BC63 /* DevLogDataProtocol.framework */; }; D6A1524366DC5CF153821979 /* NWPathConnectivityProviderImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */; }; E747320CAD03A579976E87F8 /* FirebaseFunctions in Frameworks */ = {isa = PBXBuildFile; productRef = 172AF9DE3BC54E9E0B4EFD19 /* FirebaseFunctions */; }; EA3F834C61E50B4F60789473 /* TodoCategoryServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */; }; EE62AAD289D9CED31CC9E05D /* GoogleSignIn in Frameworks */ = {isa = PBXBuildFile; productRef = 7333E70E9D312E56D4A364A6 /* GoogleSignIn */; }; + F085DED20E80F63AE071D8BA /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4F874032FD57C0BBCC41C64 /* DevLogData.framework */; }; F75AA9259C6636CF733C4D82 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */; }; FB5186BC5A89B7DADAB8A82A /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 2AC59F98E5A6BFA339C3E5BD /* FirebaseAuth */; }; FB8043FF7043AFDA0E3F705B /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = 94394E2197878DD50AF67628 /* FirebaseMessaging */; }; @@ -39,19 +37,12 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 222664031A3755F898AC4A64 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; - remoteInfo = Subproject; - }; - 32EC06031958F9D5646C1D0C /* PBXContainerItemProxy */ = { + 242875057F793AB5E271751C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; proxyType = 1; - remoteGlobalIDString = 6D02EDBA887507AC7BA79658; - remoteInfo = DevLogDataProtocol; + remoteGlobalIDString = D9D76C33D8B4790694BD3488; + remoteInfo = DevLogData; }; 3941472A0F8E4DA796217D2B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -60,48 +51,13 @@ remoteGlobalIDString = 3F08F6B94839E9021FCFC466; remoteInfo = Subproject; }; - 3C55FED4AAAFF680BC9A9419 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 690289F520872AC78D6C95D3; - remoteInfo = Subproject; - }; - 3CCA8B999AE2B98D2879E143 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 80A60CC195BD79C638F5B405; - remoteInfo = DevLogDataCommon; - }; - 727CFE0E6C6DAB110ACB562B /* PBXContainerItemProxy */ = { + 92ED4507B81AC42C599EE7EE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; proxyType = 2; - remoteGlobalIDString = C063BD562070CA11C2AA4EDF; - remoteInfo = Subproject; - }; - 7C38D533DC06F649C1864BD6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 44466B71BA6B67309210A7BB; - remoteInfo = Subproject; - }; - 9CDFD7B003CE61367A243C92 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 92502C9F074520D19CC451EF; + remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; remoteInfo = Subproject; }; - 9E214F3BA927C38871E8B03B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 0B9228953A84A7D7ED3BC5B8; - remoteInfo = DevLogDataDTO; - }; DD5CC520521F4F86A8EC6225 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = A748C00357094C72BA72DC72 /* DevLogDomain.xcodeproj */; @@ -123,13 +79,13 @@ 59E81A47825142881793450F /* FirebaseAuthUser+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FirebaseAuthUser+.swift"; path = "Sources/Extension/FirebaseAuthUser+.swift"; sourceTree = ""; }; 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FirestorePath.swift; path = Sources/Common/FirestorePath.swift; sourceTree = ""; }; 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + A748C00357094C72BA72DC72 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NWPathConnectivityProviderImpl.swift; path = Sources/Service/NWPathConnectivityProviderImpl.swift; sourceTree = ""; }; BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoServiceImpl.swift; path = Sources/Service/TodoServiceImpl.swift; sourceTree = ""; }; C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationServiceImpl.swift; path = Sources/Service/PushNotificationServiceImpl.swift; sourceTree = ""; }; CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryServiceImpl.swift; path = Sources/Service/TodoCategoryServiceImpl.swift; sourceTree = ""; }; D2C9755DE5674266B3C6F90C /* AppleAuthResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppleAuthResponse.swift; path = Sources/Service/SocialLogin/AppleAuthResponse.swift; sourceTree = ""; }; DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; - A748C00357094C72BA72DC72 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthServiceImpl.swift; path = Sources/Service/AuthServiceImpl.swift; sourceTree = ""; }; E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageServiceImpl.swift; path = Sources/Service/WebPageServiceImpl.swift; sourceTree = ""; }; F0BD9ECDA007FB1BC02C2B98 /* InfraLayerError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InfraLayerError.swift; path = Sources/Common/InfraLayerError.swift; sourceTree = ""; }; @@ -142,9 +98,6 @@ buildActionMask = 2147483647; files = ( F75AA9259C6636CF733C4D82 /* Foundation.framework in Frameworks */, - 17DCF2F561737FAE2CE744AC /* DevLogDataCommon.framework in Frameworks */, - 8DC809F74EA0D636E5F51A83 /* DevLogDataDTO.framework in Frameworks */, - A18672C71ABCFAAFC19775F5 /* DevLogDataProtocol.framework in Frameworks */, 21F6F37746C943D1A019963F /* DevLogDomain.framework in Frameworks */, FB5186BC5A89B7DADAB8A82A /* FirebaseAuth in Frameworks */, 65623F19F34A9A75BC72EE36 /* FirebaseFirestore in Frameworks */, @@ -152,6 +105,7 @@ FB8043FF7043AFDA0E3F705B /* FirebaseMessaging in Frameworks */, EE62AAD289D9CED31CC9E05D /* GoogleSignIn in Frameworks */, FEBF252AD70A910C914D3D22 /* Nexa in Frameworks */, + F085DED20E80F63AE071D8BA /* DevLogData.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -162,12 +116,8 @@ isa = PBXGroup; children = ( 592C8B7B099933759AB316A5 /* DevLogInfra.framework */, - 7E93139280AFA8F1C2B741F3 /* DevLogDataCommon.framework */, - 6A5DD33E6F5140069CA53AAF /* DevLogDataDTO.framework */, - 6CE407FD20ABD6E4ABC9BC63 /* DevLogDataProtocol.framework */, - 2AC0C307821B12C249CFFC13 /* DevLogDataMapper.framework */, - 344EDB4AD1E8A6EE910CBABC /* DevLogDataRepository.framework */, 8C4421AE6B9E4E419E73297F /* DevLogDomain.framework */, + A4F874032FD57C0BBCC41C64 /* DevLogData.framework */, ); name = Products; sourceTree = ""; @@ -289,10 +239,8 @@ buildRules = ( ); dependencies = ( - 70E913DD1742622E14034FA5 /* PBXTargetDependency */, - 56E7098218C952A11F239418 /* PBXTargetDependency */, - A7332E416B2191D257886169 /* PBXTargetDependency */, 342FB70B2E884012B67F8B38 /* PBXTargetDependency */, + B62EE119F71162DAB0F9D034 /* PBXTargetDependency */, ); name = DevLogInfra; packageProductDependencies = ( @@ -352,46 +300,18 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - 2AC0C307821B12C249CFFC13 /* DevLogDataMapper.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataMapper.framework; - remoteRef = 7C38D533DC06F649C1864BD6 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 344EDB4AD1E8A6EE910CBABC /* DevLogDataRepository.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataRepository.framework; - remoteRef = 222664031A3755F898AC4A64 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6A5DD33E6F5140069CA53AAF /* DevLogDataDTO.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataDTO.framework; - remoteRef = 9CDFD7B003CE61367A243C92 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6CE407FD20ABD6E4ABC9BC63 /* DevLogDataProtocol.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataProtocol.framework; - remoteRef = 727CFE0E6C6DAB110ACB562B /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 7E93139280AFA8F1C2B741F3 /* DevLogDataCommon.framework */ = { + 8C4421AE6B9E4E419E73297F /* DevLogDomain.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = DevLogDataCommon.framework; - remoteRef = 3C55FED4AAAFF680BC9A9419 /* PBXContainerItemProxy */; + path = DevLogDomain.framework; + remoteRef = 3941472A0F8E4DA796217D2B /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 8C4421AE6B9E4E419E73297F /* DevLogDomain.framework */ = { + A4F874032FD57C0BBCC41C64 /* DevLogData.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = DevLogDomain.framework; - remoteRef = 3941472A0F8E4DA796217D2B /* PBXContainerItemProxy */; + path = DevLogData.framework; + remoteRef = 92ED4507B81AC42C599EE7EE /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXReferenceProxy section */ @@ -440,20 +360,10 @@ name = DevLogDomain; targetProxy = DD5CC520521F4F86A8EC6225 /* PBXContainerItemProxy */; }; - 56E7098218C952A11F239418 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataDTO; - targetProxy = 9E214F3BA927C38871E8B03B /* PBXContainerItemProxy */; - }; - 70E913DD1742622E14034FA5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataCommon; - targetProxy = 3CCA8B999AE2B98D2879E143 /* PBXContainerItemProxy */; - }; - A7332E416B2191D257886169 /* PBXTargetDependency */ = { + B62EE119F71162DAB0F9D034 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DevLogDataProtocol; - targetProxy = 32EC06031958F9D5646C1D0C /* PBXContainerItemProxy */; + name = DevLogData; + targetProxy = 242875057F793AB5E271751C /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ diff --git a/Application/DevLogInfra/Sources/Common/InfraLayerError.swift b/Application/DevLogInfra/Sources/Common/InfraLayerError.swift index 6b4a9c45..765fee24 100644 --- a/Application/DevLogInfra/Sources/Common/InfraLayerError.swift +++ b/Application/DevLogInfra/Sources/Common/InfraLayerError.swift @@ -7,9 +7,7 @@ import AuthenticationServices import Foundation -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData enum FirestoreError: Error, LocalizedError { case dataNotFound(_ key: String) diff --git a/Application/DevLogInfra/Sources/Common/TopViewControllerProvider.swift b/Application/DevLogInfra/Sources/Common/TopViewControllerProvider.swift index c527d073..c678e89d 100644 --- a/Application/DevLogInfra/Sources/Common/TopViewControllerProvider.swift +++ b/Application/DevLogInfra/Sources/Common/TopViewControllerProvider.swift @@ -6,9 +6,7 @@ // import UIKit -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData final class TopViewControllerProvider { @MainActor diff --git a/Application/DevLogInfra/Sources/Extension/FirebaseAuthUser+.swift b/Application/DevLogInfra/Sources/Extension/FirebaseAuthUser+.swift index 9ce56799..f5fb42f3 100644 --- a/Application/DevLogInfra/Sources/Extension/FirebaseAuthUser+.swift +++ b/Application/DevLogInfra/Sources/Extension/FirebaseAuthUser+.swift @@ -7,9 +7,7 @@ import Foundation import FirebaseAuth -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData extension FirebaseAuth.User { func makeResponse( diff --git a/Application/DevLogInfra/Sources/Extension/FirebaseFunctions+.swift b/Application/DevLogInfra/Sources/Extension/FirebaseFunctions+.swift index f4db1630..8da24b89 100644 --- a/Application/DevLogInfra/Sources/Extension/FirebaseFunctions+.swift +++ b/Application/DevLogInfra/Sources/Extension/FirebaseFunctions+.swift @@ -6,9 +6,7 @@ // import FirebaseFunctions -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData extension Functions { func httpsCallable(_ name: some RawRepresentable) -> HTTPSCallable { diff --git a/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift b/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift index 689a5965..53e9aeb4 100644 --- a/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift @@ -9,9 +9,7 @@ import Combine import FirebaseAuth import FirebaseFirestore import FirebaseMessaging -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData final class AuthServiceImpl: AuthService { private let store = Firestore.firestore() diff --git a/Application/DevLogInfra/Sources/Service/NWPathConnectivityProviderImpl.swift b/Application/DevLogInfra/Sources/Service/NWPathConnectivityProviderImpl.swift index 2092bd10..629f9b0e 100644 --- a/Application/DevLogInfra/Sources/Service/NWPathConnectivityProviderImpl.swift +++ b/Application/DevLogInfra/Sources/Service/NWPathConnectivityProviderImpl.swift @@ -7,9 +7,7 @@ import Network import Combine -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData final class NWPathConnectivityProviderImpl: NWPathConnectivityProvider { private let networkPathMonitor = NWPathMonitor() diff --git a/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift index bd94d191..268f769d 100644 --- a/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift @@ -10,9 +10,7 @@ import Combine import FirebaseFirestore import FirebaseFunctions import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData final class PushNotificationServiceImpl: PushNotificationService { private enum FunctionName: String { diff --git a/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift index d744fad6..852d276b 100644 --- a/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift @@ -12,9 +12,7 @@ import FirebaseFirestore import FirebaseFunctions import FirebaseMessaging import Foundation -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData final class AppleAuthenticationServiceImpl: AuthenticationService { private enum FunctionName: String { diff --git a/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift index b95dbc98..d15a78df 100644 --- a/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift @@ -12,9 +12,7 @@ import FirebaseFirestore import FirebaseFunctions import FirebaseMessaging import Nexa -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData final class GithubAuthenticationServiceImpl: NSObject, AuthenticationService { private enum FunctionName: String { diff --git a/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift index cf20ff45..9ebb4f17 100644 --- a/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift @@ -10,9 +10,7 @@ import FirebaseFirestore import FirebaseMessaging import Foundation import GoogleSignIn -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData final class GoogleAuthenticationServiceImpl: AuthenticationService { private let store = Firestore.firestore() diff --git a/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift b/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift index dfcc8be7..f946030a 100644 --- a/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift @@ -8,9 +8,7 @@ import FirebaseAuth import FirebaseFirestore import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData final class TodoCategoryServiceImpl: TodoCategoryService { private enum Field: String { diff --git a/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift b/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift index c29ad28a..340a59ea 100644 --- a/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift @@ -9,9 +9,7 @@ import FirebaseAuth import FirebaseFirestore import FirebaseFunctions import DevLogDomain -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData final class TodoServiceImpl: TodoService { private enum FunctionName: String { diff --git a/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift b/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift index f80478dd..e92f9b67 100644 --- a/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift @@ -7,9 +7,7 @@ import FirebaseAuth import FirebaseFirestore -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData final class UserServiceImpl: UserService { private let store = Firestore.firestore() diff --git a/Application/DevLogInfra/Sources/Service/WebPageMetadataServiceImpl.swift b/Application/DevLogInfra/Sources/Service/WebPageMetadataServiceImpl.swift index e1bf420e..1b4ae2f7 100644 --- a/Application/DevLogInfra/Sources/Service/WebPageMetadataServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/WebPageMetadataServiceImpl.swift @@ -8,9 +8,7 @@ import Foundation import LinkPresentation import UIKit -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData final class WebPageMetadataServiceImpl: WebPageMetadataService { private let imageStore: WebPageImageStore diff --git a/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift b/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift index e8e57631..b331c31b 100644 --- a/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift @@ -8,9 +8,7 @@ import FirebaseAuth import FirebaseFirestore import FirebaseFunctions -import DevLogDataCommon -import DevLogDataDTO -import DevLogDataProtocol +import DevLogData final class WebPageServiceImpl: WebPageService { private enum FunctionName: String { diff --git a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj index 8bd53a6a..c9fcd9eb 100644 --- a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj +++ b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj @@ -7,138 +7,123 @@ objects = { /* Begin PBXBuildFile section */ + 0553E143B544CD7ACD082298 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2A9C9F3E543201091571C00 /* LoadingView.swift */; }; + 071B4E6FE1D0DC0EF26E0705 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B01ACB5EB0ACD6D3233BA118 /* MainView.swift */; }; + 075FA5A9704297F5A51D765D /* ThemeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */; }; + 0A11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E11B22C33D44E55F6677889 /* DevLogCore.framework */; }; 0A5A148F5EF1BAD010BED113 /* HeatmapMonth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70C952669C86B8EB042ED7CF /* HeatmapMonth.swift */; }; + 0CEB2B1729B59439362725A5 /* ToolbarButton+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */; }; 0F4B4A95DBD1219D374B47E3 /* HeatmapActivityItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A04BEF390A74ECC5558A076F /* HeatmapActivityItem.swift */; }; 104A1B691C40A8182E5F8EF8 /* Store.swift in Sources */ = {isa = PBXBuildFile; fileRef = D26AF44FFBB251F34E8F80B5 /* Store.swift */; }; 10EA3E7496613DE389BF9DB7 /* PushNotificationItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF28FCF602F6165DC67FE7D6 /* PushNotificationItem.swift */; }; 143CCE59C5AE926947DA0EA6 /* SystemTodoCategoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A117BE662EC3F9C96FF9AC61 /* SystemTodoCategoryItem.swift */; }; - 18C98041FF04371B8D65344B /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E2DCC0B6BEE21E7E61E0D2C8 /* DevLogDataCommon.framework */; }; 1A5EF7B2B4490CBCA9DAA040 /* SearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E844646CD1D172C92451FBE /* SearchViewModel.swift */; }; 1B8D0C5D8C506642FFB8F9FA /* OrderedCollections in Frameworks */ = {isa = PBXBuildFile; productRef = 7D6DDD31C1122286D5852621 /* OrderedCollections */; }; - 246479E87ECFD0B2DDDA1F75 /* TodoListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA522CF101F432B37F315C24 /* TodoListViewModel.swift */; }; - 2FB6AD996A213275B4EEEA05 /* TodayViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */; }; - 3530599B937DC8E3F908F3F3 /* LoadingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = E06ED9387372D891F65B1CAD /* LoadingState.swift */; }; - 363613285150A9CE24C9A251 /* ActivityKindItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */; }; - 44ACA41EDDAB32BA6DD4419B /* MainViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */; }; - 44B70769659747F403D98B3A /* SettingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */; }; - 516FF64DF6F521E446A4E55B /* AccountViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B9804109E1FE95126DD869B /* AccountViewModel.swift */; }; - 55F93EBF8B32C5B838DC13A3 /* TodoDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */; }; - 59A456649207F4FA33CCD747 /* TodoManageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */; }; - 5C687AA63F317542D6EBAC59 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C39861EE0C254CCC9A608201 /* LoginViewModel.swift */; }; - 5E60673D981843248E402D54 /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1907637E4162396EEDF058C2 /* RootViewModel.swift */; }; - 72DEE86FF7C989E685B4AC0B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */; }; - 73D3CC9EDECF98AEE1D71A7E /* PushNotificationListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */; }; - 8177365142615E093EFEBA2D /* TodoCategoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BE3388699802CC7CD57BD74 /* TodoCategoryItem.swift */; }; - 8F0F4426566FDABC9804C3FD /* TodoIDItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9305330DB8199E1911FAAF49 /* TodoIDItem.swift */; }; - A36B72465455E8FE6C5D95FD /* HeatmapDay.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D75E33B582B3347AC077B0 /* HeatmapDay.swift */; }; - AB242EFD5B25055A0F4B3436 /* TodoEditorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */; }; - BAFA35470372A100D996D4A8 /* Color+Hex.swift in Sources */ = {isa = PBXBuildFile; fileRef = D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */; }; - BD140AE5E7EBE1F485AE5C65 /* TodoListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7258BA3748F0B1BDB1AFFD3 /* TodoListItem.swift */; }; - BDC5D53C3F06032A1CE7AFDA /* WebPageItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19BFDE3E7FFD430D6DF2AA5 /* WebPageItem.swift */; }; - C217400D4242DC74BA88D82D /* UserTodoCategoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */; }; - C3F4F347400691516783EF81 /* TodoReferenceItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */; }; - CC36598B842BA60E284D4A9E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E43EBE726188C58FFB2B6CD /* Foundation.framework */; }; - CD1D494C5D0EC118C8BAD491 /* TodayTodoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF82DE8DF3DDEAF78826B5 /* TodayTodoItem.swift */; }; - D8DCEA367C54C527295E004F /* HeatmapQuarter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */; }; - DB081DF4854E8D445EFE0608 /* ProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */; }; - E7EBEBA803A9449A6CBEF11B /* RecentTodoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */; }; - E91B53D33C90B9298E0B2EA1 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */; }; - FBD395A75EDED059CC021AF3 /* PushNotificationSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */; }; - 0553E143B544CD7ACD082298 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2A9C9F3E543201091571C00 /* LoadingView.swift */; }; - 071B4E6FE1D0DC0EF26E0705 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B01ACB5EB0ACD6D3233BA118 /* MainView.swift */; }; - 075FA5A9704297F5A51D765D /* ThemeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */; }; - 0CEB2B1729B59439362725A5 /* ToolbarButton+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */; }; 1EC3663DB97BFF5D2D511DAF /* AccountView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC142E4A256288A6D73AEB3E /* AccountView.swift */; }; 1F5831DA8EC5DCC3AF604DC7 /* TodoDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */; }; 233981B375AF5EA066660B86 /* UIKitTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */; }; + 246479E87ECFD0B2DDDA1F75 /* TodoListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA522CF101F432B37F315C24 /* TodoListViewModel.swift */; }; 26FA5A7B5E8EDE1B8B6BEE4C /* SearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4255A04E841570A664D15C72 /* SearchView.swift */; }; 2781DD85BEB0D586F730C53C /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F04A173095F3737E4487EF7 /* ProfileView.swift */; }; + 2FB6AD996A213275B4EEEA05 /* TodayViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */; }; + 3120506A710A0B6505226C05 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 423A6FE16D5EC7FECF77A31A /* MarkdownUI */; }; 33374D81BED973A28E95EB88 /* HeatmapView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */; }; + 3530599B937DC8E3F908F3F3 /* LoadingState.swift in Sources */ = {isa = PBXBuildFile; fileRef = E06ED9387372D891F65B1CAD /* LoadingState.swift */; }; 3568FBF125892AF4577A533B /* PushNotificationListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */; }; + 363613285150A9CE24C9A251 /* ActivityKindItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */; }; 3C865F560E7A379D616F092D /* TodoManageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9340555B2B620464698851A5 /* TodoManageView.swift */; }; 3E3A8CF9B7867748C06B02AD /* HomeViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */; }; + 44ACA41EDDAB32BA6DD4419B /* MainViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */; }; + 44B70769659747F403D98B3A /* SettingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */; }; 4A7897CEB011769A2C01CB4C /* TodoEditorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */; }; 4C497F6F2C1A7ADCE28CBF4D /* NavigationRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */; }; + 516FF64DF6F521E446A4E55B /* AccountViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B9804109E1FE95126DD869B /* AccountViewModel.swift */; }; 5417F145841A7CAF38C83F35 /* TodoListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B45C610096E5AC2967606A6 /* TodoListView.swift */; }; 54FB7AB76BCAED80E9CB742D /* WebItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9A20E0402D598F5587EAFFE /* WebItemRow.swift */; }; + 55F93EBF8B32C5B838DC13A3 /* TodoDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */; }; + 579CB25DE472412C0223A8CD /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB1FD32F1E8C4D75A63D26B9 /* DevLogData.framework */; }; + 59A456649207F4FA33CCD747 /* TodoManageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */; }; + 5C687AA63F317542D6EBAC59 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C39861EE0C254CCC9A608201 /* LoginViewModel.swift */; }; + 5E60673D981843248E402D54 /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1907637E4162396EEDF058C2 /* RootViewModel.swift */; }; + 72DEE86FF7C989E685B4AC0B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */; }; + 73D3CC9EDECF98AEE1D71A7E /* PushNotificationListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */; }; 73FF33B77C4FE6E19604D9AE /* View+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DF0168AAD4373A780DC5A51 /* View+.swift */; }; + 8177365142615E093EFEBA2D /* TodoCategoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BE3388699802CC7CD57BD74 /* TodoCategoryItem.swift */; }; 81F78FF2F35149E80FDA1BAF /* SettingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9CB6D9970E4286BA9A17C47C /* SettingView.swift */; }; 8A11F86B28EC69A9D6CA4FD2 /* MainViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */; }; + 8F0F4426566FDABC9804C3FD /* TodoIDItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9305330DB8199E1911FAAF49 /* TodoIDItem.swift */; }; 9225927FB28E8A2DD20DEF54 /* CacheableImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 192A2827C2D676A1AE820FBA /* CacheableImage.swift */; }; 9A245A6C4C2FA8D55EA8840D /* TodoItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */; }; 9E8EAA00729A59F67360F063 /* WebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27BB99F804DD47B96FCCFDC0 /* WebView.swift */; }; + A36B72465455E8FE6C5D95FD /* HeatmapDay.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D75E33B582B3347AC077B0 /* HeatmapDay.swift */; }; + AA0000000000000000000001 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000002 /* RootView.swift */; }; + AA0000000000000000000003 /* MainTab.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000004 /* MainTab.swift */; }; AAA318D37BC97EFB4C785ECD /* TodoInfoSheetView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */; }; + AB242EFD5B25055A0F4B3436 /* TodoEditorViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */; }; AEA3D50A9080249A6359476C /* CheckBox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93B72345FA909BFA40078D53 /* CheckBox.swift */; }; B4A60A3AB524E4F9D68750C3 /* TodayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F51F902DA946EBFEEC4CD14B /* TodayView.swift */; }; BABB40EAD145095BEC1ACB58 /* TodoDetailContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */; }; + BAFA35470372A100D996D4A8 /* Color+Hex.swift in Sources */ = {isa = PBXBuildFile; fileRef = D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */; }; BB77CD69698477D38EEB62DA /* Toast.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EAB97486EC371BE330C70FE /* Toast.swift */; }; + BD140AE5E7EBE1F485AE5C65 /* TodoListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7258BA3748F0B1BDB1AFFD3 /* TodoListItem.swift */; }; + BDC5D53C3F06032A1CE7AFDA /* WebPageItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B19BFDE3E7FFD430D6DF2AA5 /* WebPageItem.swift */; }; BE5CF573B4B89C77F4A36A94 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2028F13D1316DD7D0229249 /* LoginView.swift */; }; + C217400D4242DC74BA88D82D /* UserTodoCategoryItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */; }; + C3F4F347400691516783EF81 /* TodoReferenceItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */; }; C4F0BBA11DCEC8017F541999 /* Tag+.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0C555707203C5E83B5B5D7B /* Tag+.swift */; }; C5654549920DB2EEBA5A3F07 /* NavigationBarConfigurator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */; }; C85FD011138539C08D18D22F /* RelativeTimeText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */; }; + CC36598B842BA60E284D4A9E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E43EBE726188C58FFB2B6CD /* Foundation.framework */; }; + CD1D494C5D0EC118C8BAD491 /* TodayTodoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF82DE8DF3DDEAF78826B5 /* TodayTodoItem.swift */; }; D12294635C147B35F3EA3314 /* PushNotificationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */; }; D7ED2E08383517AA3E242B0C /* TodayViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */; }; + D8DCEA367C54C527295E004F /* HeatmapQuarter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */; }; + DB081DF4854E8D445EFE0608 /* ProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */; }; + E69CD0D89DDDF4A68406680D /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = D06169FD4B643952DF59EDAE /* FirebaseAuth */; }; + E7EBEBA803A9449A6CBEF11B /* RecentTodoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */; }; + E91B53D33C90B9298E0B2EA1 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */; }; E9BE203BADA107278CFBDD54 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */; }; F0B4DBB89733E466B105CF25 /* EnvironmentValues+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */; }; F1474D4F84693113355B7DA2 /* TodoMarkdownContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */; }; F99147DC6D6F48E3842CD204 /* LoginButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */; }; - 0A11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E11B22C33D44E55F6677889 /* DevLogCore.framework */; }; - 3120506A710A0B6505226C05 /* MarkdownUI in Frameworks */ = {isa = PBXBuildFile; productRef = 423A6FE16D5EC7FECF77A31A /* MarkdownUI */; }; - E69CD0D89DDDF4A68406680D /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = D06169FD4B643952DF59EDAE /* FirebaseAuth */; }; - - AA0000000000000000000001 /* RootView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000002 /* RootView.swift */; }; - AA0000000000000000000003 /* MainTab.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA0000000000000000000004 /* MainTab.swift */; }; + FBD395A75EDED059CC021AF3 /* PushNotificationSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 3DFAA1B8CAA99746A43B0525 /* PBXContainerItemProxy */ = { + 0400B17B467B3D0D2BA03C31 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; proxyType = 2; - remoteGlobalIDString = C063BD562070CA11C2AA4EDF; + remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; remoteInfo = Subproject; }; - 63A78AEC0654C9B6030C055B /* PBXContainerItemProxy */ = { + 0B11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */; + containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; proxyType = 1; - remoteGlobalIDString = 7D1E74925088998D68BBFBBB; - remoteInfo = DevLogDomain; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogCore; }; - 77E4314FC17F4A0414624BB3 /* PBXContainerItemProxy */ = { + 0B2037A08C974203C72B35DD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; proxyType = 1; - remoteGlobalIDString = 80A60CC195BD79C638F5B405; - remoteInfo = DevLogDataCommon; - }; - 7EC73D0C02D4A6D53AB175BB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 690289F520872AC78D6C95D3; - remoteInfo = Subproject; - }; - 8AB12CC1E45EA2E88A0C348C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 44466B71BA6B67309210A7BB; - remoteInfo = Subproject; + remoteGlobalIDString = D9D76C33D8B4790694BD3488; + remoteInfo = DevLogData; }; - BDCEF8AD496E43BE1880A579 /* PBXContainerItemProxy */ = { + 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; + containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 92502C9F074520D19CC451EF; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; remoteInfo = Subproject; }; - D589A82F38CCB742DB42F82D /* PBXContainerItemProxy */ = { + 63A78AEC0654C9B6030C055B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; - remoteInfo = Subproject; + containerPortal = B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; }; F62246BFB23AD8069C3C9A25 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -147,104 +132,87 @@ remoteGlobalIDString = 3F08F6B94839E9021FCFC466; remoteInfo = Subproject; }; - - 0B11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; - remoteInfo = DevLogCore; - }; - - 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; - remoteInfo = Subproject; - }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingViewModel.swift; path = Sources/ViewModel/SettingViewModel.swift; sourceTree = ""; }; 0BE3388699802CC7CD57BD74 /* TodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryItem.swift; path = Sources/Structure/Todo/TodoCategoryItem.swift; sourceTree = ""; }; + 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsView.swift; path = Sources/Setting/PushNotificationSettingsView.swift; sourceTree = ""; }; + 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; 0E844646CD1D172C92451FBE /* SearchViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SearchViewModel.swift; path = Sources/ViewModel/SearchViewModel.swift; sourceTree = ""; }; 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewModel.swift; path = Sources/ViewModel/TodayViewModel.swift; sourceTree = ""; }; 1907637E4162396EEDF058C2 /* RootViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RootViewModel.swift; path = Sources/ViewModel/RootViewModel.swift; sourceTree = ""; }; + 192A2827C2D676A1AE820FBA /* CacheableImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheableImage.swift; path = Sources/Common/Component/CacheableImage.swift; sourceTree = ""; }; 1B9804109E1FE95126DD869B /* AccountViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccountViewModel.swift; path = Sources/ViewModel/AccountViewModel.swift; sourceTree = ""; }; + 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginButton.swift; path = Sources/Common/Component/LoginButton.swift; sourceTree = ""; }; + 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoEditorView.swift; path = Sources/Home/TodoEditorView.swift; sourceTree = ""; }; + 27BB99F804DD47B96FCCFDC0 /* WebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebView.swift; path = Sources/Common/WebView.swift; sourceTree = ""; }; + 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RelativeTimeText.swift; path = Sources/Common/Component/RelativeTimeText.swift; sourceTree = ""; }; + 2B45C610096E5AC2967606A6 /* TodoListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListView.swift; path = Sources/Home/TodoListView.swift; sourceTree = ""; }; 2BCF82DE8DF3DDEAF78826B5 /* TodayTodoItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayTodoItem.swift; path = Sources/Structure/Todo/TodayTodoItem.swift; sourceTree = ""; }; + 2EAB97486EC371BE330C70FE /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = Sources/Common/Component/Toast.swift; sourceTree = ""; }; + 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewCoordinator.swift; path = Sources/Main/MainViewCoordinator.swift; sourceTree = ""; }; + 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoItemRow.swift; path = Sources/Common/Component/TodoItemRow.swift; sourceTree = ""; }; + 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ToolbarButton+.swift"; path = "Sources/Common/Component/ToolbarButton+.swift"; sourceTree = ""; }; + 3DF0168AAD4373A780DC5A51 /* View+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "View+.swift"; path = "Sources/Extension/View+.swift"; sourceTree = ""; }; 3E43EBE726188C58FFB2B6CD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 4255A04E841570A664D15C72 /* SearchView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SearchView.swift; path = Sources/Search/SearchView.swift; sourceTree = ""; }; 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileViewModel.swift; path = Sources/ViewModel/ProfileViewModel.swift; sourceTree = ""; }; + 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewCoordinator.swift; path = Sources/Home/HomeViewCoordinator.swift; sourceTree = ""; }; + 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewCoordinator.swift; path = Sources/Today/TodayViewCoordinator.swift; sourceTree = ""; }; 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogPresentation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageViewModel.swift; path = Sources/ViewModel/TodoManageViewModel.swift; sourceTree = ""; }; 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ActivityKindItem.swift; path = Sources/Structure/Profile/ActivityKindItem.swift; sourceTree = ""; }; + 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationBarConfigurator.swift; path = Sources/Common/NavigationBarConfigurator.swift; sourceTree = ""; }; 70C952669C86B8EB042ED7CF /* HeatmapMonth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapMonth.swift; path = Sources/Structure/Profile/HeatmapMonth.swift; sourceTree = ""; }; + 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationRouter.swift; path = Sources/Common/NavigationRouter.swift; sourceTree = ""; }; 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewModel.swift; path = Sources/ViewModel/HomeViewModel.swift; sourceTree = ""; }; + 7F04A173095F3737E4487EF7 /* ProfileView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileView.swift; path = Sources/Profile/ProfileView.swift; sourceTree = ""; }; + 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapView.swift; path = Sources/Profile/HeatmapView.swift; sourceTree = ""; }; 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; 9305330DB8199E1911FAAF49 /* TodoIDItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoIDItem.swift; path = Sources/Structure/Todo/TodoIDItem.swift; sourceTree = ""; }; + 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "EnvironmentValues+.swift"; path = "Sources/Extension/EnvironmentValues+.swift"; sourceTree = ""; }; + 9340555B2B620464698851A5 /* TodoManageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageView.swift; path = Sources/Home/TodoManageView.swift; sourceTree = ""; }; + 93B72345FA909BFA40078D53 /* CheckBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CheckBox.swift; path = Sources/Common/Component/CheckBox.swift; sourceTree = ""; }; + 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIKitTextEditor.swift; path = Sources/Common/Component/UIKitTextEditor.swift; sourceTree = ""; }; 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReferenceItem.swift; path = Sources/Structure/Todo/TodoReferenceItem.swift; sourceTree = ""; }; + 9CB6D9970E4286BA9A17C47C /* SettingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingView.swift; path = Sources/Setting/SettingView.swift; sourceTree = ""; }; + 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeView.swift; path = Sources/Home/HomeView.swift; sourceTree = ""; }; A04BEF390A74ECC5558A076F /* HeatmapActivityItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapActivityItem.swift; path = Sources/Structure/Profile/HeatmapActivityItem.swift; sourceTree = ""; }; A117BE662EC3F9C96FF9AC61 /* SystemTodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SystemTodoCategoryItem.swift; path = Sources/Structure/Todo/SystemTodoCategoryItem.swift; sourceTree = ""; }; + A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoMarkdownContentView.swift; path = Sources/Common/TodoMarkdownContentView.swift; sourceTree = ""; }; A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailViewModel.swift; path = Sources/ViewModel/TodoDetailViewModel.swift; sourceTree = ""; }; + A2A9C9F3E543201091571C00 /* LoadingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingView.swift; path = Sources/Common/Component/LoadingView.swift; sourceTree = ""; }; A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsViewModel.swift; path = Sources/ViewModel/PushNotificationSettingsViewModel.swift; sourceTree = ""; }; + AA0000000000000000000002 /* RootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RootView.swift; path = Sources/Root/RootView.swift; sourceTree = ""; }; + AA0000000000000000000004 /* MainTab.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainTab.swift; path = Sources/Routing/MainTab.swift; sourceTree = ""; }; + AC142E4A256288A6D73AEB3E /* AccountView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccountView.swift; path = Sources/Setting/AccountView.swift; sourceTree = ""; }; + B01ACB5EB0ACD6D3233BA118 /* MainView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainView.swift; path = Sources/Main/MainView.swift; sourceTree = ""; }; + B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListView.swift; path = Sources/PushNotification/PushNotificationListView.swift; sourceTree = ""; }; B19BFDE3E7FFD430D6DF2AA5 /* WebPageItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageItem.swift; path = Sources/Structure/WebPageItem.swift; sourceTree = ""; }; B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; + B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailView.swift; path = Sources/Home/TodoDetailView.swift; sourceTree = ""; }; B4D75E33B582B3347AC077B0 /* HeatmapDay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapDay.swift; path = Sources/Structure/Profile/HeatmapDay.swift; sourceTree = ""; }; + B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoInfoSheetView.swift; path = Sources/Common/TodoInfoSheetView.swift; sourceTree = ""; }; B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewModel.swift; path = Sources/ViewModel/MainViewModel.swift; sourceTree = ""; }; BA522CF101F432B37F315C24 /* TodoListViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListViewModel.swift; path = Sources/ViewModel/TodoListViewModel.swift; sourceTree = ""; }; BF28FCF602F6165DC67FE7D6 /* PushNotificationItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationItem.swift; path = Sources/Structure/PushNotificationItem.swift; sourceTree = ""; }; C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapQuarter.swift; path = Sources/Structure/Profile/HeatmapQuarter.swift; sourceTree = ""; }; C39861EE0C254CCC9A608201 /* LoginViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginViewModel.swift; path = Sources/ViewModel/LoginViewModel.swift; sourceTree = ""; }; + D2028F13D1316DD7D0229249 /* LoginView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginView.swift; path = Sources/Login/LoginView.swift; sourceTree = ""; }; D26AF44FFBB251F34E8F80B5 /* Store.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Store.swift; path = Sources/Protocol/Store.swift; sourceTree = ""; }; D7258BA3748F0B1BDB1AFFD3 /* TodoListItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListItem.swift; path = Sources/Structure/Todo/TodoListItem.swift; sourceTree = ""; }; + D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailContentView.swift; path = Sources/Common/TodoDetailContentView.swift; sourceTree = ""; }; D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Color+Hex.swift"; path = "Sources/Extension/Color+Hex.swift"; sourceTree = ""; }; E06ED9387372D891F65B1CAD /* LoadingState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingState.swift; path = Sources/Common/LoadingState.swift; sourceTree = ""; }; + E0C555707203C5E83B5B5D7B /* Tag+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Tag+.swift"; path = "Sources/Common/Component/Tag+.swift"; sourceTree = ""; }; E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoEditorViewModel.swift; path = Sources/ViewModel/TodoEditorViewModel.swift; sourceTree = ""; }; E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListViewModel.swift; path = Sources/ViewModel/PushNotificationListViewModel.swift; sourceTree = ""; }; F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserTodoCategoryItem.swift; path = Sources/Structure/Todo/UserTodoCategoryItem.swift; sourceTree = ""; }; F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RecentTodoItem.swift; path = Sources/Structure/Todo/RecentTodoItem.swift; sourceTree = ""; }; - 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationSettingsView.swift; path = Sources/Setting/PushNotificationSettingsView.swift; sourceTree = ""; }; - 192A2827C2D676A1AE820FBA /* CacheableImage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CacheableImage.swift; path = Sources/Common/Component/CacheableImage.swift; sourceTree = ""; }; - 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginButton.swift; path = Sources/Common/Component/LoginButton.swift; sourceTree = ""; }; - 2730A4C9E99A0CB9F4C962CB /* TodoEditorView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoEditorView.swift; path = Sources/Home/TodoEditorView.swift; sourceTree = ""; }; - 27BB99F804DD47B96FCCFDC0 /* WebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebView.swift; path = Sources/Common/WebView.swift; sourceTree = ""; }; - 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RelativeTimeText.swift; path = Sources/Common/Component/RelativeTimeText.swift; sourceTree = ""; }; - 2B45C610096E5AC2967606A6 /* TodoListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListView.swift; path = Sources/Home/TodoListView.swift; sourceTree = ""; }; - 2EAB97486EC371BE330C70FE /* Toast.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Toast.swift; path = Sources/Common/Component/Toast.swift; sourceTree = ""; }; - 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewCoordinator.swift; path = Sources/Main/MainViewCoordinator.swift; sourceTree = ""; }; - 3343BE9F2B47D02417F53AEA /* TodoItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoItemRow.swift; path = Sources/Common/Component/TodoItemRow.swift; sourceTree = ""; }; - 4255A04E841570A664D15C72 /* SearchView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SearchView.swift; path = Sources/Search/SearchView.swift; sourceTree = ""; }; - 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewCoordinator.swift; path = Sources/Home/HomeViewCoordinator.swift; sourceTree = ""; }; - 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewCoordinator.swift; path = Sources/Today/TodayViewCoordinator.swift; sourceTree = ""; }; - 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationBarConfigurator.swift; path = Sources/Common/NavigationBarConfigurator.swift; sourceTree = ""; }; - 7ACCCD8C588175D8E7C91F5D /* NavigationRouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationRouter.swift; path = Sources/Common/NavigationRouter.swift; sourceTree = ""; }; - 7F04A173095F3737E4487EF7 /* ProfileView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileView.swift; path = Sources/Profile/ProfileView.swift; sourceTree = ""; }; - 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapView.swift; path = Sources/Profile/HeatmapView.swift; sourceTree = ""; }; - 9340555B2B620464698851A5 /* TodoManageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageView.swift; path = Sources/Home/TodoManageView.swift; sourceTree = ""; }; - 93B72345FA909BFA40078D53 /* CheckBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CheckBox.swift; path = Sources/Common/Component/CheckBox.swift; sourceTree = ""; }; - 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIKitTextEditor.swift; path = Sources/Common/Component/UIKitTextEditor.swift; sourceTree = ""; }; - 9CB6D9970E4286BA9A17C47C /* SettingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingView.swift; path = Sources/Setting/SettingView.swift; sourceTree = ""; }; - 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeView.swift; path = Sources/Home/HomeView.swift; sourceTree = ""; }; - A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoMarkdownContentView.swift; path = Sources/Common/TodoMarkdownContentView.swift; sourceTree = ""; }; - A2A9C9F3E543201091571C00 /* LoadingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingView.swift; path = Sources/Common/Component/LoadingView.swift; sourceTree = ""; }; - AC142E4A256288A6D73AEB3E /* AccountView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AccountView.swift; path = Sources/Setting/AccountView.swift; sourceTree = ""; }; - B01ACB5EB0ACD6D3233BA118 /* MainView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainView.swift; path = Sources/Main/MainView.swift; sourceTree = ""; }; - B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListView.swift; path = Sources/PushNotification/PushNotificationListView.swift; sourceTree = ""; }; - B358ADE50604AFDC42DCF122 /* TodoDetailView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailView.swift; path = Sources/Home/TodoDetailView.swift; sourceTree = ""; }; - B6B13C71E611B9D20EA5B5CA /* TodoInfoSheetView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoInfoSheetView.swift; path = Sources/Common/TodoInfoSheetView.swift; sourceTree = ""; }; - D2028F13D1316DD7D0229249 /* LoginView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginView.swift; path = Sources/Login/LoginView.swift; sourceTree = ""; }; - D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailContentView.swift; path = Sources/Common/TodoDetailContentView.swift; sourceTree = ""; }; F51F902DA946EBFEEC4CD14B /* TodayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayView.swift; path = Sources/Today/TodayView.swift; sourceTree = ""; }; F9A20E0402D598F5587EAFFE /* WebItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebItemRow.swift; path = Sources/Common/Component/WebItemRow.swift; sourceTree = ""; }; FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeView.swift; path = Sources/Setting/ThemeView.swift; sourceTree = ""; }; - 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "ToolbarButton+.swift"; path = "Sources/Common/Component/ToolbarButton+.swift"; sourceTree = ""; }; - 3DF0168AAD4373A780DC5A51 /* View+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "View+.swift"; path = "Sources/Extension/View+.swift"; sourceTree = ""; }; - 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "EnvironmentValues+.swift"; path = "Sources/Extension/EnvironmentValues+.swift"; sourceTree = ""; }; - E0C555707203C5E83B5B5D7B /* Tag+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Tag+.swift"; path = "Sources/Common/Component/Tag+.swift"; sourceTree = ""; }; - 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; - - AA0000000000000000000002 /* RootView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RootView.swift; path = Sources/Root/RootView.swift; sourceTree = ""; }; - AA0000000000000000000004 /* MainTab.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainTab.swift; path = Sources/Routing/MainTab.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -257,25 +225,30 @@ E69CD0D89DDDF4A68406680D /* FirebaseAuth in Frameworks */, CC36598B842BA60E284D4A9E /* Foundation.framework in Frameworks */, E91B53D33C90B9298E0B2EA1 /* DevLogDomain.framework in Frameworks */, - 18C98041FF04371B8D65344B /* DevLogDataCommon.framework in Frameworks */, 1B8D0C5D8C506642FFB8F9FA /* OrderedCollections in Frameworks */, + 579CB25DE472412C0223A8CD /* DevLogData.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 023934D19218F9AFBD084378 /* Profile */ = { + isa = PBXGroup; + children = ( + 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */, + 7F04A173095F3737E4487EF7 /* ProfileView.swift */, + ); + name = Profile; + sourceTree = ""; + }; 03D4331F04C462F4C642860F /* Products */ = { isa = PBXGroup; children = ( 0E11B22C33D44E55F6677889 /* DevLogCore.framework */, 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */, 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */, - E2DCC0B6BEE21E7E61E0D2C8 /* DevLogDataCommon.framework */, - B369CB942ED1617E5B26BEF5 /* DevLogDataDTO.framework */, - ECA0FA5D48B08534F54744FC /* DevLogDataProtocol.framework */, - 80C7F2CB4F4D5904E5DB6956 /* DevLogDataMapper.framework */, - 45BCDF66F607E7CACB49B7C9 /* DevLogDataRepository.framework */, + AB1FD32F1E8C4D75A63D26B9 /* DevLogData.framework */, ); name = Products; sourceTree = ""; @@ -299,123 +272,24 @@ name = Structure; sourceTree = ""; }; - 1DB192900CD86ED478FCDE79 /* Protocol */ = { - isa = PBXGroup; - children = ( - D26AF44FFBB251F34E8F80B5 /* Store.swift */, - ); - name = Protocol; - sourceTree = ""; - }; - 253FAAC4504D4C5E1B11C833 = { - isa = PBXGroup; - children = ( - 03D4331F04C462F4C642860F /* Products */, - 9CC0354538B2A1DF2C74E484 /* Frameworks */, - A4A427D518004ED78EB659DE /* DevLogPresentation */, - 65C85B83FD4ECCC13F82B90F /* Projects */, - ); - sourceTree = ""; - }; - 65C85B83FD4ECCC13F82B90F /* Projects */ = { - isa = PBXGroup; - children = ( - 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */, - B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */, - 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */, - ); - name = Projects; - sourceTree = ""; - }; - 727E4EDC1C08E03AAA6FED64 /* ViewModel */ = { - isa = PBXGroup; - children = ( - 1B9804109E1FE95126DD869B /* AccountViewModel.swift */, - 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */, - C39861EE0C254CCC9A608201 /* LoginViewModel.swift */, - B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */, - 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */, - E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */, - A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */, - 1907637E4162396EEDF058C2 /* RootViewModel.swift */, - 0E844646CD1D172C92451FBE /* SearchViewModel.swift */, - 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */, - 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */, - A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */, - E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */, - BA522CF101F432B37F315C24 /* TodoListViewModel.swift */, - 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */, - ); - name = ViewModel; - sourceTree = ""; - }; - 9A88EA8D5BC609F90B07B726 /* iOS */ = { - isa = PBXGroup; - children = ( - 3E43EBE726188C58FFB2B6CD /* Foundation.framework */, - ); - name = iOS; - sourceTree = ""; - }; - 9CC0354538B2A1DF2C74E484 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 9A88EA8D5BC609F90B07B726 /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 9DE70A3D1E020E5B69721DB1 /* Common */ = { - isa = PBXGroup; - children = ( - E06ED9387372D891F65B1CAD /* LoadingState.swift */, - ); - name = Common; - sourceTree = ""; - }; - A4A427D518004ED78EB659DE /* DevLogPresentation */ = { - isa = PBXGroup; - children = ( - AA0000000000000000000005 /* Root */, - AA0000000000000000000006 /* Routing */, - 7B53286AA9A58D5B6C0124F8 /* View */, - 9DE70A3D1E020E5B69721DB1 /* Common */, - 1193621431B4F1245A560067 /* Extension */, - 1DB192900CD86ED478FCDE79 /* Protocol */, - 13DA278FCF792713D53657D7 /* Structure */, - 727E4EDC1C08E03AAA6FED64 /* ViewModel */, - ); - name = DevLogPresentation; - sourceTree = ""; - }; - D9C1D736903B0AD12DA504BA /* Profile */ = { + 1DB192900CD86ED478FCDE79 /* Protocol */ = { isa = PBXGroup; children = ( - 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */, - A04BEF390A74ECC5558A076F /* HeatmapActivityItem.swift */, - B4D75E33B582B3347AC077B0 /* HeatmapDay.swift */, - 70C952669C86B8EB042ED7CF /* HeatmapMonth.swift */, - C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */, + D26AF44FFBB251F34E8F80B5 /* Store.swift */, ); - name = Profile; + name = Protocol; sourceTree = ""; }; - E4A0DAED0089A38F5494701B /* Todo */ = { + 253FAAC4504D4C5E1B11C833 = { isa = PBXGroup; children = ( - F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */, - A117BE662EC3F9C96FF9AC61 /* SystemTodoCategoryItem.swift */, - 2BCF82DE8DF3DDEAF78826B5 /* TodayTodoItem.swift */, - 0BE3388699802CC7CD57BD74 /* TodoCategoryItem.swift */, - 9305330DB8199E1911FAAF49 /* TodoIDItem.swift */, - D7258BA3748F0B1BDB1AFFD3 /* TodoListItem.swift */, - 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */, - F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */, + 03D4331F04C462F4C642860F /* Products */, + 9CC0354538B2A1DF2C74E484 /* Frameworks */, + A4A427D518004ED78EB659DE /* DevLogPresentation */, + 65C85B83FD4ECCC13F82B90F /* Projects */, ); - name = Todo; sourceTree = ""; }; - 391861E77D429E229BF28568 /* Common */ = { isa = PBXGroup; children = ( @@ -430,7 +304,17 @@ name = Common; sourceTree = ""; }; - + 3E8BE5E7BA89E9C06CB4680E /* Setting */ = { + isa = PBXGroup; + children = ( + AC142E4A256288A6D73AEB3E /* AccountView.swift */, + 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */, + 9CB6D9970E4286BA9A17C47C /* SettingView.swift */, + FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */, + ); + name = Setting; + sourceTree = ""; + }; 5983BAD9E9F606A63646EDCA /* Component */ = { isa = PBXGroup; children = ( @@ -449,7 +333,55 @@ name = Component; sourceTree = ""; }; - + 65C85B83FD4ECCC13F82B90F /* Projects */ = { + isa = PBXGroup; + children = ( + 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */, + B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */, + 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */, + ); + name = Projects; + sourceTree = ""; + }; + 6F07FA4C10334C49DB907A3E /* Login */ = { + isa = PBXGroup; + children = ( + D2028F13D1316DD7D0229249 /* LoginView.swift */, + ); + name = Login; + sourceTree = ""; + }; + 6F0FC545BB630F476F12C93F /* Today */ = { + isa = PBXGroup; + children = ( + F51F902DA946EBFEEC4CD14B /* TodayView.swift */, + 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */, + ); + name = Today; + sourceTree = ""; + }; + 727E4EDC1C08E03AAA6FED64 /* ViewModel */ = { + isa = PBXGroup; + children = ( + 1B9804109E1FE95126DD869B /* AccountViewModel.swift */, + 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */, + C39861EE0C254CCC9A608201 /* LoginViewModel.swift */, + B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */, + 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */, + E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */, + A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */, + 1907637E4162396EEDF058C2 /* RootViewModel.swift */, + 0E844646CD1D172C92451FBE /* SearchViewModel.swift */, + 045ABCD0E3877256008CDAFF /* SettingViewModel.swift */, + 0F3C4B51F6957C8E9D93DC4E /* TodayViewModel.swift */, + A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */, + E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */, + BA522CF101F432B37F315C24 /* TodoListViewModel.swift */, + 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */, + ); + name = ViewModel; + sourceTree = ""; + }; 7B53286AA9A58D5B6C0124F8 /* View */ = { isa = PBXGroup; children = ( @@ -467,17 +399,30 @@ name = View; sourceTree = ""; }; - - A23CDC4BC6FDA11519571AC7 /* Extension */ = { + 9A88EA8D5BC609F90B07B726 /* iOS */ = { isa = PBXGroup; children = ( - 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */, - 3DF0168AAD4373A780DC5A51 /* View+.swift */, + 3E43EBE726188C58FFB2B6CD /* Foundation.framework */, ); - name = Extension; + name = iOS; + sourceTree = ""; + }; + 9CC0354538B2A1DF2C74E484 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 9A88EA8D5BC609F90B07B726 /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 9DE70A3D1E020E5B69721DB1 /* Common */ = { + isa = PBXGroup; + children = ( + E06ED9387372D891F65B1CAD /* LoadingState.swift */, + ); + name = Common; sourceTree = ""; }; - 9F3A0F708400485DC1E3E04C /* Home */ = { isa = PBXGroup; children = ( @@ -491,89 +436,96 @@ name = Home; sourceTree = ""; }; - - 6F07FA4C10334C49DB907A3E /* Login */ = { + A034EAF6BC4F7B46C19357E5 /* Search */ = { isa = PBXGroup; children = ( - D2028F13D1316DD7D0229249 /* LoginView.swift */, + 4255A04E841570A664D15C72 /* SearchView.swift */, ); - name = Login; + name = Search; sourceTree = ""; }; - - E9D0446D1E5AB2FEB1550B19 /* Main */ = { + A23CDC4BC6FDA11519571AC7 /* Extension */ = { isa = PBXGroup; children = ( - B01ACB5EB0ACD6D3233BA118 /* MainView.swift */, - 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */, + 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */, + 3DF0168AAD4373A780DC5A51 /* View+.swift */, ); - name = Main; + name = Extension; sourceTree = ""; }; - - 023934D19218F9AFBD084378 /* Profile */ = { + A4A427D518004ED78EB659DE /* DevLogPresentation */ = { isa = PBXGroup; children = ( - 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */, - 7F04A173095F3737E4487EF7 /* ProfileView.swift */, + AA0000000000000000000005 /* Root */, + AA0000000000000000000006 /* Routing */, + 7B53286AA9A58D5B6C0124F8 /* View */, + 9DE70A3D1E020E5B69721DB1 /* Common */, + 1193621431B4F1245A560067 /* Extension */, + 1DB192900CD86ED478FCDE79 /* Protocol */, + 13DA278FCF792713D53657D7 /* Structure */, + 727E4EDC1C08E03AAA6FED64 /* ViewModel */, ); - name = Profile; + name = DevLogPresentation; sourceTree = ""; }; - - B180221771919A464EAE42F5 /* PushNotification */ = { + AA0000000000000000000005 /* Root */ = { isa = PBXGroup; children = ( - B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */, + AA0000000000000000000002 /* RootView.swift */, ); - name = PushNotification; + name = Root; sourceTree = ""; }; - - A034EAF6BC4F7B46C19357E5 /* Search */ = { + AA0000000000000000000006 /* Routing */ = { isa = PBXGroup; children = ( - 4255A04E841570A664D15C72 /* SearchView.swift */, + AA0000000000000000000004 /* MainTab.swift */, ); - name = Search; + name = Routing; sourceTree = ""; }; - - 3E8BE5E7BA89E9C06CB4680E /* Setting */ = { + B180221771919A464EAE42F5 /* PushNotification */ = { isa = PBXGroup; children = ( - AC142E4A256288A6D73AEB3E /* AccountView.swift */, - 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */, - 9CB6D9970E4286BA9A17C47C /* SettingView.swift */, - FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */, + B0358ADF733F6A5DECC8FC94 /* PushNotificationListView.swift */, ); - name = Setting; + name = PushNotification; sourceTree = ""; }; - - 6F0FC545BB630F476F12C93F /* Today */ = { + D9C1D736903B0AD12DA504BA /* Profile */ = { isa = PBXGroup; children = ( - F51F902DA946EBFEEC4CD14B /* TodayView.swift */, - 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */, + 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */, + A04BEF390A74ECC5558A076F /* HeatmapActivityItem.swift */, + B4D75E33B582B3347AC077B0 /* HeatmapDay.swift */, + 70C952669C86B8EB042ED7CF /* HeatmapMonth.swift */, + C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */, ); - name = Today; + name = Profile; sourceTree = ""; }; - AA0000000000000000000005 /* Root */ = { + E4A0DAED0089A38F5494701B /* Todo */ = { isa = PBXGroup; children = ( - AA0000000000000000000002 /* RootView.swift */, + F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */, + A117BE662EC3F9C96FF9AC61 /* SystemTodoCategoryItem.swift */, + 2BCF82DE8DF3DDEAF78826B5 /* TodayTodoItem.swift */, + 0BE3388699802CC7CD57BD74 /* TodoCategoryItem.swift */, + 9305330DB8199E1911FAAF49 /* TodoIDItem.swift */, + D7258BA3748F0B1BDB1AFFD3 /* TodoListItem.swift */, + 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */, + F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */, ); - name = Root; + name = Todo; sourceTree = ""; }; - AA0000000000000000000006 /* Routing */ = { + E9D0446D1E5AB2FEB1550B19 /* Main */ = { isa = PBXGroup; children = ( - AA0000000000000000000004 /* MainTab.swift */, + B01ACB5EB0ACD6D3233BA118 /* MainView.swift */, + 31A2C1FC9EABEA7C7CA5D67F /* MainViewCoordinator.swift */, ); - name = Routing; + name = Main; sourceTree = ""; }; /* End PBXGroup section */ @@ -603,7 +555,7 @@ dependencies = ( 0F11B22C33D44E55F6677889 /* PBXTargetDependency */, C8EA2345A40DFA6BCCD803EE /* PBXTargetDependency */, - 3E21F3A3C22C9F31A55EC073 /* PBXTargetDependency */, + CB6DAEBD19915F981BA92139 /* PBXTargetDependency */, ); name = DevLogPresentation; packageProductDependencies = ( @@ -664,11 +616,11 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - 45BCDF66F607E7CACB49B7C9 /* DevLogDataRepository.framework */ = { + 0E11B22C33D44E55F6677889 /* DevLogCore.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = DevLogDataRepository.framework; - remoteRef = D589A82F38CCB742DB42F82D /* PBXContainerItemProxy */; + path = DevLogCore.framework; + remoteRef = 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */ = { @@ -678,40 +630,11 @@ remoteRef = F62246BFB23AD8069C3C9A25 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 80C7F2CB4F4D5904E5DB6956 /* DevLogDataMapper.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataMapper.framework; - remoteRef = 8AB12CC1E45EA2E88A0C348C /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - B369CB942ED1617E5B26BEF5 /* DevLogDataDTO.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataDTO.framework; - remoteRef = BDCEF8AD496E43BE1880A579 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E2DCC0B6BEE21E7E61E0D2C8 /* DevLogDataCommon.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataCommon.framework; - remoteRef = 7EC73D0C02D4A6D53AB175BB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - ECA0FA5D48B08534F54744FC /* DevLogDataProtocol.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataProtocol.framework; - remoteRef = 3DFAA1B8CAA99746A43B0525 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - - 0E11B22C33D44E55F6677889 /* DevLogCore.framework */ = { + AB1FD32F1E8C4D75A63D26B9 /* DevLogData.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = DevLogCore.framework; - remoteRef = 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */; + path = DevLogData.framework; + remoteRef = 0400B17B467B3D0D2BA03C31 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXReferenceProxy section */ @@ -810,21 +733,20 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 3E21F3A3C22C9F31A55EC073 /* PBXTargetDependency */ = { + 0F11B22C33D44E55F6677889 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DevLogDataCommon; - targetProxy = 77E4314FC17F4A0414624BB3 /* PBXContainerItemProxy */; + name = DevLogCore; + targetProxy = 0B11B22C33D44E55F6677889 /* PBXContainerItemProxy */; }; C8EA2345A40DFA6BCCD803EE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDomain; targetProxy = 63A78AEC0654C9B6030C055B /* PBXContainerItemProxy */; }; - - 0F11B22C33D44E55F6677889 /* PBXTargetDependency */ = { + CB6DAEBD19915F981BA92139 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DevLogCore; - targetProxy = 0B11B22C33D44E55F6677889 /* PBXContainerItemProxy */; + name = DevLogData; + targetProxy = 0B2037A08C974203C72B35DD /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -1017,24 +939,22 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 4A268C0F47C89BEF1B5B794F /* XCRemoteSwiftPackageReference "swift-collections" */ = { + 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/apple/swift-collections.git"; + repositoryURL = "https://github.com/gonzalezreal/swift-markdown-ui.git"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 1.3.0; + minimumVersion = 2.4.1; }; }; - - 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */ = { + 4A268C0F47C89BEF1B5B794F /* XCRemoteSwiftPackageReference "swift-collections" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/gonzalezreal/swift-markdown-ui.git"; + repositoryURL = "https://github.com/apple/swift-collections.git"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 2.4.1; + minimumVersion = 1.3.0; }; }; - AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; @@ -1046,18 +966,16 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - 7D6DDD31C1122286D5852621 /* OrderedCollections */ = { - isa = XCSwiftPackageProductDependency; - package = 4A268C0F47C89BEF1B5B794F /* XCRemoteSwiftPackageReference "swift-collections" */; - productName = OrderedCollections; - }; - 423A6FE16D5EC7FECF77A31A /* MarkdownUI */ = { isa = XCSwiftPackageProductDependency; package = 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */; productName = MarkdownUI; }; - + 7D6DDD31C1122286D5852621 /* OrderedCollections */ = { + isa = XCSwiftPackageProductDependency; + package = 4A268C0F47C89BEF1B5B794F /* XCRemoteSwiftPackageReference "swift-collections" */; + productName = OrderedCollections; + }; D06169FD4B643952DF59EDAE /* FirebaseAuth */ = { isa = XCSwiftPackageProductDependency; package = AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; diff --git a/Application/DevLogPresentation/Sources/Common/LoadingState.swift b/Application/DevLogPresentation/Sources/Common/LoadingState.swift index 0f47263e..4d60df8e 100644 --- a/Application/DevLogPresentation/Sources/Common/LoadingState.swift +++ b/Application/DevLogPresentation/Sources/Common/LoadingState.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData @MainActor public final class LoadingState { diff --git a/Application/DevLogPresentation/Sources/Extension/Color+Hex.swift b/Application/DevLogPresentation/Sources/Extension/Color+Hex.swift index 8138fea3..98e5e442 100644 --- a/Application/DevLogPresentation/Sources/Extension/Color+Hex.swift +++ b/Application/DevLogPresentation/Sources/Extension/Color+Hex.swift @@ -7,7 +7,7 @@ import SwiftUI import DevLogDomain -import DevLogDataCommon +import DevLogData extension Color { static var randomValue: Color { diff --git a/Application/DevLogPresentation/Sources/Protocol/Store.swift b/Application/DevLogPresentation/Sources/Protocol/Store.swift index 4ad5298d..e76190dc 100644 --- a/Application/DevLogPresentation/Sources/Protocol/Store.swift +++ b/Application/DevLogPresentation/Sources/Protocol/Store.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData @MainActor public protocol Store: AnyObject { diff --git a/Application/DevLogPresentation/Sources/Structure/Profile/ActivityKindItem.swift b/Application/DevLogPresentation/Sources/Structure/Profile/ActivityKindItem.swift index 37380427..902b4823 100644 --- a/Application/DevLogPresentation/Sources/Structure/Profile/ActivityKindItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Profile/ActivityKindItem.swift @@ -7,7 +7,7 @@ import SwiftUI import DevLogDomain -import DevLogDataCommon +import DevLogData public struct ActivityKindItem: Identifiable, Hashable { private let activityKind: ActivityKind diff --git a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapActivityItem.swift b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapActivityItem.swift index 09804ad8..e842ae38 100644 --- a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapActivityItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapActivityItem.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData public struct HeatmapActivityItem: Identifiable, Hashable, Comparable { public var id: String { todoId } diff --git a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapDay.swift b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapDay.swift index e6d42127..c25bf0da 100644 --- a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapDay.swift +++ b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapDay.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData public struct HeatmapDay: Hashable { public let date: Date diff --git a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapMonth.swift b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapMonth.swift index 30b0a978..99e76e65 100644 --- a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapMonth.swift +++ b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapMonth.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData public struct HeatmapMonth: Identifiable, Hashable { public var id: Date { monthStart } diff --git a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapQuarter.swift b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapQuarter.swift index 07c3bec8..79af2466 100644 --- a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapQuarter.swift +++ b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapQuarter.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData public struct HeatmapQuarter: Identifiable, Hashable { public var id: Date { quarterStart } diff --git a/Application/DevLogPresentation/Sources/Structure/PushNotificationItem.swift b/Application/DevLogPresentation/Sources/Structure/PushNotificationItem.swift index 3ee21875..ff40e746 100644 --- a/Application/DevLogPresentation/Sources/Structure/PushNotificationItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/PushNotificationItem.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData public struct PushNotificationItem: Identifiable, Hashable { public let id: String diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/RecentTodoItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/RecentTodoItem.swift index 85bba2c0..b15ab8f3 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/RecentTodoItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/RecentTodoItem.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData public struct RecentTodoItem: Identifiable, Hashable { public let id: String diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/SystemTodoCategoryItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/SystemTodoCategoryItem.swift index d7874aa5..d1168bed 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/SystemTodoCategoryItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/SystemTodoCategoryItem.swift @@ -7,7 +7,7 @@ import SwiftUI import DevLogDomain -import DevLogDataCommon +import DevLogData public struct SystemTodoCategoryItem: Identifiable, Hashable { public let systemTodoCategory: SystemTodoCategory diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/TodayTodoItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodayTodoItem.swift index 792c411a..0f4f6463 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/TodayTodoItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/TodayTodoItem.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData public struct TodayTodoItem: Identifiable, Hashable { public let id: String diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/TodoCategoryItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodoCategoryItem.swift index 768dbb90..50e2573d 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/TodoCategoryItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/TodoCategoryItem.swift @@ -7,7 +7,7 @@ import SwiftUI import DevLogDomain -import DevLogDataCommon +import DevLogData public struct TodoCategoryItem: Identifiable, Hashable { public var category: TodoCategory diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/TodoIDItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodoIDItem.swift index e19ae21f..c1c74401 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/TodoIDItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/TodoIDItem.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData public struct TodoIdItem: Identifiable, Hashable { public let id: String diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/TodoListItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodoListItem.swift index 0d5f9484..c9dd6a70 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/TodoListItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/TodoListItem.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData public struct TodoListItem: Identifiable, Hashable { public let id: String diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/TodoReferenceItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodoReferenceItem.swift index dcb9ee45..28a54c02 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/TodoReferenceItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/TodoReferenceItem.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData public struct TodoReferenceItem: Equatable { public let id: String diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/UserTodoCategoryItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/UserTodoCategoryItem.swift index 2d5d00c2..d464f6e7 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/UserTodoCategoryItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/UserTodoCategoryItem.swift @@ -7,7 +7,7 @@ import SwiftUI import DevLogDomain -import DevLogDataCommon +import DevLogData public struct UserTodoCategoryItem: Identifiable, Hashable { public let userTodoCategory: UserTodoCategory diff --git a/Application/DevLogPresentation/Sources/Structure/WebPageItem.swift b/Application/DevLogPresentation/Sources/Structure/WebPageItem.swift index f3bef92d..78ab9b98 100644 --- a/Application/DevLogPresentation/Sources/Structure/WebPageItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/WebPageItem.swift @@ -7,7 +7,7 @@ import SwiftUI import DevLogDomain -import DevLogDataCommon +import DevLogData public struct WebPageItem: Identifiable, Hashable { private let metadata: WebPage diff --git a/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift index e7b469d4..0c68abef 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class AccountViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/HomeViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/HomeViewModel.swift index 3db9908f..cfcdaca3 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/HomeViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/HomeViewModel.swift @@ -8,7 +8,7 @@ import Foundation import Combine import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class HomeViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift index b09444a4..a251a0f4 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class LoginViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/MainViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/MainViewModel.swift index 567a53c6..c9bc7756 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/MainViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/MainViewModel.swift @@ -9,7 +9,7 @@ import Foundation import Combine import UserNotifications import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class MainViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/ProfileViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/ProfileViewModel.swift index 9431cdcf..49e7c9dd 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/ProfileViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/ProfileViewModel.swift @@ -8,7 +8,7 @@ import Foundation import Combine import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class ProfileViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/PushNotificationListViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/PushNotificationListViewModel.swift index 531b042c..c1d1d4c1 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/PushNotificationListViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/PushNotificationListViewModel.swift @@ -8,7 +8,7 @@ import Foundation import Combine import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class PushNotificationListViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/PushNotificationSettingsViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/PushNotificationSettingsViewModel.swift index 7c7ad65f..068d5f93 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/PushNotificationSettingsViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/PushNotificationSettingsViewModel.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class PushNotificationSettingsViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/RootViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/RootViewModel.swift index 752628e0..736e1e6c 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/RootViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/RootViewModel.swift @@ -9,7 +9,7 @@ import Foundation import Combine import UserNotifications import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class RootViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/SearchViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/SearchViewModel.swift index ad17d5fb..db1c6835 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/SearchViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/SearchViewModel.swift @@ -8,7 +8,7 @@ import Foundation import OrderedCollections import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class SearchViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/SettingViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/SettingViewModel.swift index be625ab4..584632fb 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/SettingViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/SettingViewModel.swift @@ -8,7 +8,7 @@ import Foundation import Combine import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class SettingViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/TodayViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodayViewModel.swift index 8d9b4aa1..5274ff28 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/TodayViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/TodayViewModel.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class TodayViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/TodoDetailViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodoDetailViewModel.swift index e34ce913..0973130b 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/TodoDetailViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/TodoDetailViewModel.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class TodoDetailViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/TodoEditorViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodoEditorViewModel.swift index deb1afb3..7dd35f7d 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/TodoEditorViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/TodoEditorViewModel.swift @@ -8,7 +8,7 @@ import Foundation import OrderedCollections import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class TodoEditorViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/TodoListViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodoListViewModel.swift index 2e167104..b3b6f2f0 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/TodoListViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/TodoListViewModel.swift @@ -7,7 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class TodoListViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/TodoManageViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodoManageViewModel.swift index 5f235e67..f741f19c 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/TodoManageViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/TodoManageViewModel.swift @@ -7,7 +7,7 @@ import SwiftUI import DevLogDomain -import DevLogDataCommon +import DevLogData @Observable final class TodoManageViewModel: Store { diff --git a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj index 9e062a95..66e7c3b9 100644 --- a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj +++ b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj @@ -9,32 +9,17 @@ /* Begin PBXBuildFile section */ 041CEED3822FCBD881DF75CD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 98B16FCDA8A71E2E4E1DC05E /* Foundation.framework */; }; 0B318F82A17C708D399761BB /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A901500062F184A55322ED05 /* DevLogWidgetShared.framework */; }; + 3B8FAEC025F373D4CFC262D4 /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 493A5D0B4274807F2B948AB3 /* DevLogData.framework */; }; 50BBA1C19A7C61B8B8F3A68B /* WebPageImageStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */; }; 5967B32779F22DD0E3C2D247 /* UserDefaultsStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */; }; 7044FCFCA32C8AA8F6FF4474 /* ThemeStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */; }; 7D8DE74BD24B456D42B04806 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F334BCFC52C730D5901F6051 /* DevLogDomain.framework */; }; - 809200C32B4373978AEB0E9C /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E11B536BC8D874B485E853C1 /* DevLogDataCommon.framework */; }; 9814DBF1A0DCD650FEF5A376 /* WidgetSnapshotUpdaterImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */; }; B1EAEC66B3C4F0B16072F5BE /* WidgetSnapshotPreferenceStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */; }; E53E13B73BFAF0C51013ECA2 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */; }; - FD5714A26C340EB6EA8EDF20 /* DevLogDataProtocol.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B82421EAA10239DFA7F2BC87 /* DevLogDataProtocol.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 1E8A0ECBDDDDE7B102E9CE1B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 690289F520872AC78D6C95D3; - remoteInfo = Subproject; - }; - 60C2DA2FC710E0E17F04FE38 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 80A60CC195BD79C638F5B405; - remoteInfo = DevLogDataCommon; - }; 6556E45987F0D11205D84D04 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */; @@ -63,13 +48,6 @@ remoteGlobalIDString = 6AF1B307A7E7CC03AA2BABB1; remoteInfo = Subproject; }; - B483D32B2CE2C7866C3D2B67 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = C063BD562070CA11C2AA4EDF; - remoteInfo = Subproject; - }; B5FF9EF1399BA2E5A9D85D03 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */; @@ -84,33 +62,19 @@ remoteGlobalIDString = 7D1E74925088998D68BBFBBB; remoteInfo = DevLogDomain; }; - D4D5E6A626F52A82593C41A7 /* PBXContainerItemProxy */ = { + C3709692ED10C6BFC0F41348 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; proxyType = 2; remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; remoteInfo = Subproject; }; - EF59A8B8BF9427A9CCBFDED7 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 92502C9F074520D19CC451EF; - remoteInfo = Subproject; - }; - F6327665FB1D25A5C222EAC8 /* PBXContainerItemProxy */ = { + D43AB7BB6E43AEF760FBB23C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; proxyType = 1; - remoteGlobalIDString = 6D02EDBA887507AC7BA79658; - remoteInfo = DevLogDataProtocol; - }; - FEC02A9EDC4A1473ED0A43B5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 44466B71BA6B67309210A7BB; - remoteInfo = Subproject; + remoteGlobalIDString = D9D76C33D8B4790694BD3488; + remoteInfo = DevLogData; }; /* End PBXContainerItemProxy section */ @@ -135,10 +99,9 @@ files = ( 041CEED3822FCBD881DF75CD /* Foundation.framework in Frameworks */, 7D8DE74BD24B456D42B04806 /* DevLogDomain.framework in Frameworks */, - 809200C32B4373978AEB0E9C /* DevLogDataCommon.framework in Frameworks */, - FD5714A26C340EB6EA8EDF20 /* DevLogDataProtocol.framework in Frameworks */, E53E13B73BFAF0C51013ECA2 /* DevLogWidgetCore.framework in Frameworks */, 0B318F82A17C708D399761BB /* DevLogWidgetShared.framework in Frameworks */, + 3B8FAEC025F373D4CFC262D4 /* DevLogData.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -196,13 +159,9 @@ children = ( 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */, F334BCFC52C730D5901F6051 /* DevLogDomain.framework */, - E11B536BC8D874B485E853C1 /* DevLogDataCommon.framework */, - D300944DB7E80C6114C3B3CC /* DevLogDataDTO.framework */, - B82421EAA10239DFA7F2BC87 /* DevLogDataProtocol.framework */, - C44C541F40188C5D426687A9 /* DevLogDataMapper.framework */, - 85C80A6D5C01B14BC8BA3898 /* DevLogDataRepository.framework */, 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */, A901500062F184A55322ED05 /* DevLogWidgetShared.framework */, + 493A5D0B4274807F2B948AB3 /* DevLogData.framework */, ); name = Products; sourceTree = ""; @@ -244,10 +203,9 @@ ); dependencies = ( 083FDD9BBD997A11EED7ACA9 /* PBXTargetDependency */, - 4E20E0F4BBBBD8A8C0B4C71F /* PBXTargetDependency */, - 990E65E094C3CCFB4C1E1A8B /* PBXTargetDependency */, 8C9EB60C8E58A67726AF0EF1 /* PBXTargetDependency */, 79C71E38CBE3984287E4AC6A /* PBXTargetDependency */, + 65214D4CBB998A4369598E01 /* PBXTargetDependency */, ); name = DevLogStorage; productName = DevLogStorage; @@ -302,18 +260,18 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */ = { + 493A5D0B4274807F2B948AB3 /* DevLogData.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = DevLogWidgetCore.framework; - remoteRef = 7CD34B27DE3CD401A888D01C /* PBXContainerItemProxy */; + path = DevLogData.framework; + remoteRef = C3709692ED10C6BFC0F41348 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 85C80A6D5C01B14BC8BA3898 /* DevLogDataRepository.framework */ = { + 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = DevLogDataRepository.framework; - remoteRef = D4D5E6A626F52A82593C41A7 /* PBXContainerItemProxy */; + path = DevLogWidgetCore.framework; + remoteRef = 7CD34B27DE3CD401A888D01C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; A901500062F184A55322ED05 /* DevLogWidgetShared.framework */ = { @@ -323,34 +281,6 @@ remoteRef = 702B915FA3D211548F1624EC /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - B82421EAA10239DFA7F2BC87 /* DevLogDataProtocol.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataProtocol.framework; - remoteRef = B483D32B2CE2C7866C3D2B67 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - C44C541F40188C5D426687A9 /* DevLogDataMapper.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataMapper.framework; - remoteRef = FEC02A9EDC4A1473ED0A43B5 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - D300944DB7E80C6114C3B3CC /* DevLogDataDTO.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataDTO.framework; - remoteRef = EF59A8B8BF9427A9CCBFDED7 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E11B536BC8D874B485E853C1 /* DevLogDataCommon.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataCommon.framework; - remoteRef = 1E8A0ECBDDDDE7B102E9CE1B /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; F334BCFC52C730D5901F6051 /* DevLogDomain.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -391,10 +321,10 @@ name = DevLogDomain; targetProxy = C118DECC34A0AE1E3085D4AB /* PBXContainerItemProxy */; }; - 4E20E0F4BBBBD8A8C0B4C71F /* PBXTargetDependency */ = { + 65214D4CBB998A4369598E01 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DevLogDataCommon; - targetProxy = 60C2DA2FC710E0E17F04FE38 /* PBXContainerItemProxy */; + name = DevLogData; + targetProxy = D43AB7BB6E43AEF760FBB23C /* PBXContainerItemProxy */; }; 79C71E38CBE3984287E4AC6A /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -406,11 +336,6 @@ name = DevLogWidgetCore; targetProxy = 6556E45987F0D11205D84D04 /* PBXContainerItemProxy */; }; - 990E65E094C3CCFB4C1E1A8B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataProtocol; - targetProxy = F6327665FB1D25A5C222EAC8 /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ diff --git a/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift index 313a26d1..2f95c540 100644 --- a/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift @@ -7,8 +7,7 @@ import Combine import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetCore import DevLogWidgetShared diff --git a/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift index c96d97bc..aa48f2d2 100644 --- a/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift @@ -7,8 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetCore import DevLogWidgetShared diff --git a/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift index 2f179aca..e82493e8 100644 --- a/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift @@ -8,8 +8,7 @@ import CryptoKit import Foundation import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetCore import DevLogWidgetShared diff --git a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift index 262f126e..020b8bb8 100644 --- a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift @@ -7,8 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetCore import DevLogWidgetShared diff --git a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift index 3ccf3cba..b4390b9f 100644 --- a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift @@ -8,8 +8,7 @@ import Foundation import WidgetKit import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetCore import DevLogWidgetShared diff --git a/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj index 6ccd32a7..4981e30f 100644 --- a/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj +++ b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj @@ -7,17 +7,16 @@ objects = { /* Begin PBXBuildFile section */ - 0404C6CCF356EE25271EF71F /* DevLogDataProtocol.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B7FBF3D9169BF38CAE0CEF09 /* DevLogDataProtocol.framework */; }; 13912C8BE3310B5BCCE71ED8 /* WidgetSharedDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */; }; 1E316639D5B48E091F18C91D /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E46E84150C232E2525F648D1 /* DevLogWidgetShared.framework */; }; 3BF3B864B5A91686CFA17EDD /* WidgetSyncEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */; }; 5C7FE28461303EC8CE211B57 /* WidgetSyncEventBusImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 489FB48B79E61FF3332C9F3F /* WidgetSyncEventBusImpl.swift */; }; 641BA820F65E8F78F200EDCF /* HeatmapWidgetSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */; }; 75C99AB35C6DF930E824185E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBD260F923A87C1577DBFF0F /* Foundation.framework */; }; + 80423C5F6B880409E39FD20F /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C18996E00A69C4BCB0F63AE /* DevLogData.framework */; }; A1DEB84CF3B18EC2005382C5 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B108898FD3650BE0C116BD3C /* DevLogDomain.framework */; }; A839995EF6B607DBECF11933 /* HeatmapWidgetSnapshotFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */; }; B2223843996C9D11E0193B16 /* WidgetSnapshotStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */; }; - B5136D8DCBDD2122668F36C5 /* DevLogDataCommon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EECF1D1D174C83D0E82EEC37 /* DevLogDataCommon.framework */; }; CD7C54E749A6696CF92AEF71 /* WidgetSyncEventBus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */; }; F29C18438886406B532B926B /* TodayWidgetSnapshotFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */; }; F9D4F24C64D75DC51F89BBC5 /* TodayWidgetSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */; }; @@ -25,18 +24,11 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 02A96B900FAA51A0B74AD834 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 80A60CC195BD79C638F5B405; - remoteInfo = DevLogDataCommon; - }; - 2AF199A550338B69B3A014E5 /* PBXContainerItemProxy */ = { + 2B73D2B2E8B97FFF71977120 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 92502C9F074520D19CC451EF; + remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; remoteInfo = Subproject; }; 3021BF47C2FDC8E6FA84B229 /* PBXContainerItemProxy */ = { @@ -60,27 +52,6 @@ remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; remoteInfo = Subproject; }; - 4B20675D0FE2BD86C96476FB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 690289F520872AC78D6C95D3; - remoteInfo = Subproject; - }; - 56094523CC7D9BCC66E74586 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 44466B71BA6B67309210A7BB; - remoteInfo = Subproject; - }; - 61D01BA6685628EE0C85CC5F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = C063BD562070CA11C2AA4EDF; - remoteInfo = Subproject; - }; 6B58A164E93F51C78CBAE314 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */; @@ -88,19 +59,12 @@ remoteGlobalIDString = 7D1E74925088998D68BBFBBB; remoteInfo = DevLogDomain; }; - 9AD37FC80466FDCF48198BE8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; - remoteInfo = Subproject; - }; - 9DA942D7975F9DD9E204BA52 /* PBXContainerItemProxy */ = { + D3B6228D01FFA20503CC1CC5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; proxyType = 1; - remoteGlobalIDString = 6D02EDBA887507AC7BA79658; - remoteInfo = DevLogDataProtocol; + remoteGlobalIDString = D9D76C33D8B4790694BD3488; + remoteInfo = DevLogData; }; /* End PBXContainerItemProxy section */ @@ -129,9 +93,8 @@ files = ( 75C99AB35C6DF930E824185E /* Foundation.framework in Frameworks */, A1DEB84CF3B18EC2005382C5 /* DevLogDomain.framework in Frameworks */, - B5136D8DCBDD2122668F36C5 /* DevLogDataCommon.framework in Frameworks */, - 0404C6CCF356EE25271EF71F /* DevLogDataProtocol.framework in Frameworks */, 1E316639D5B48E091F18C91D /* DevLogWidgetShared.framework in Frameworks */, + 80423C5F6B880409E39FD20F /* DevLogData.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -171,12 +134,8 @@ children = ( 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */, B108898FD3650BE0C116BD3C /* DevLogDomain.framework */, - EECF1D1D174C83D0E82EEC37 /* DevLogDataCommon.framework */, - 55250D20C9A4B42D2FF1334C /* DevLogDataDTO.framework */, - B7FBF3D9169BF38CAE0CEF09 /* DevLogDataProtocol.framework */, - 6D0A229E66EFF934401E5C41 /* DevLogDataMapper.framework */, - E0C97D1D94352CA4F40DB4C9 /* DevLogDataRepository.framework */, E46E84150C232E2525F648D1 /* DevLogWidgetShared.framework */, + 7C18996E00A69C4BCB0F63AE /* DevLogData.framework */, ); name = Products; sourceTree = ""; @@ -264,9 +223,8 @@ ); dependencies = ( 504FAABF657F1D901A2B6BB9 /* PBXTargetDependency */, - 4036ECCB1366A3CEC681FEB9 /* PBXTargetDependency */, - FAB7CF08795995774C902DE1 /* PBXTargetDependency */, 5A7DA83CEEE7600394C47846 /* PBXTargetDependency */, + F1C4B031EE5FEF47898D9562 /* PBXTargetDependency */, ); name = DevLogWidgetCore; productName = DevLogWidgetCore; @@ -317,18 +275,11 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - 55250D20C9A4B42D2FF1334C /* DevLogDataDTO.framework */ = { + 7C18996E00A69C4BCB0F63AE /* DevLogData.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = DevLogDataDTO.framework; - remoteRef = 2AF199A550338B69B3A014E5 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6D0A229E66EFF934401E5C41 /* DevLogDataMapper.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataMapper.framework; - remoteRef = 56094523CC7D9BCC66E74586 /* PBXContainerItemProxy */; + path = DevLogData.framework; + remoteRef = 2B73D2B2E8B97FFF71977120 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; B108898FD3650BE0C116BD3C /* DevLogDomain.framework */ = { @@ -338,20 +289,6 @@ remoteRef = 406A7B367DEC67D4F9E38522 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - B7FBF3D9169BF38CAE0CEF09 /* DevLogDataProtocol.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataProtocol.framework; - remoteRef = 61D01BA6685628EE0C85CC5F /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - E0C97D1D94352CA4F40DB4C9 /* DevLogDataRepository.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataRepository.framework; - remoteRef = 9AD37FC80466FDCF48198BE8 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; E46E84150C232E2525F648D1 /* DevLogWidgetShared.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -359,13 +296,6 @@ remoteRef = 42BDD2F44A35E6964E4E3FF2 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - EECF1D1D174C83D0E82EEC37 /* DevLogDataCommon.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogDataCommon.framework; - remoteRef = 4B20675D0FE2BD86C96476FB /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -399,11 +329,6 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 4036ECCB1366A3CEC681FEB9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogDataCommon; - targetProxy = 02A96B900FAA51A0B74AD834 /* PBXContainerItemProxy */; - }; 504FAABF657F1D901A2B6BB9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDomain; @@ -414,10 +339,10 @@ name = DevLogWidgetShared; targetProxy = 3021BF47C2FDC8E6FA84B229 /* PBXContainerItemProxy */; }; - FAB7CF08795995774C902DE1 /* PBXTargetDependency */ = { + F1C4B031EE5FEF47898D9562 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DevLogDataProtocol; - targetProxy = 9DA942D7975F9DD9E204BA52 /* PBXContainerItemProxy */; + name = DevLogData; + targetProxy = D3B6228D01FFA20503CC1CC5 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ diff --git a/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift index 89f6b51b..0acbe506 100644 --- a/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift +++ b/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift @@ -7,8 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetShared final class WidgetSharedDefaultsStore { diff --git a/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift index 050d2d96..a70b43c8 100644 --- a/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift +++ b/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift @@ -7,8 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetShared public final class WidgetSnapshotStore { diff --git a/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift index eef43c6f..46608d5b 100644 --- a/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift +++ b/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift @@ -6,8 +6,7 @@ // import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetShared enum WidgetSyncEvent: Equatable { diff --git a/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift b/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift index 4c96bead..c9fb485e 100644 --- a/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift +++ b/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift @@ -7,8 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetShared public struct HeatmapWidgetSnapshot: Codable, Equatable { diff --git a/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift b/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift index d25927be..ab7c8998 100644 --- a/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift +++ b/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift @@ -7,8 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetShared public struct HeatmapWidgetSnapshotFactory { diff --git a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift index 26183eea..1c47cf17 100644 --- a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift +++ b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift @@ -7,8 +7,7 @@ import Combine import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetShared protocol WidgetSyncEventBus { diff --git a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift index e24e688a..2c8b7d35 100644 --- a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift +++ b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift @@ -7,8 +7,7 @@ import Combine import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetShared final class WidgetSyncEventBusImpl: WidgetSyncEventBus { diff --git a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift index 4dfc2940..46ff1d73 100644 --- a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift +++ b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift @@ -8,8 +8,7 @@ import Combine import Foundation import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetShared final class WidgetSyncEventHandler { diff --git a/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift b/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift index 3ddd1e8d..58063810 100644 --- a/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift +++ b/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift @@ -7,8 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetShared public struct TodayWidgetSnapshot: Codable, Equatable { diff --git a/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift b/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift index 46506435..dd309f51 100644 --- a/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift +++ b/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift @@ -7,8 +7,7 @@ import Foundation import DevLogDomain -import DevLogDataCommon -import DevLogDataProtocol +import DevLogData import DevLogWidgetShared public struct TodayWidgetSnapshotFactory { From 8b5660f3714125a8b2159d680115379fc0b4eb21 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 15:34:42 +0900 Subject: [PATCH 21/46] =?UTF-8?q?refactor:=20WidgetShared=20=EB=AA=A8?= =?UTF-8?q?=EB=93=88=EC=9D=84=20WidgetCore=EB=A1=9C=20=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogApp.xcodeproj/project.pbxproj | 111 ++---- .../App/Assembler/AppLayerAssembler.swift | 2 + .../Sources/App/Assembler/DataAssembler.swift | 1 + .../App/Assembler/DomainAssembler.swift | 1 + .../App/Assembler/InfraAssembler.swift | 1 + .../App/Assembler/PersistenceAssembler.swift | 2 + .../Sources/App/Delegate/AppDelegate.swift | 1 + .../DevLogApp/Sources/App/DevLogApp.swift | 2 + .../App/Routing/MainTab+WidgetDeepLink.swift | 2 +- .../DevLogStorage.xcodeproj/project.pbxproj | 68 +--- .../Sources/Persistence/ThemeStoreImpl.swift | 1 - .../Persistence/UserDefaultsStoreImpl.swift | 1 - .../Persistence/WebPageImageStoreImpl.swift | 1 - .../WidgetSnapshotPreferenceStoreImpl.swift | 1 - .../WidgetSnapshotUpdaterImpl.swift | 1 - DevLog.xcworkspace/contents.xcworkspacedata | 3 - .../project.pbxproj | 88 ++--- .../Sources/Common}/Calendar.swift | 0 .../Sources/Common}/WidgetAppGroup.swift | 0 .../Sources/Common}/WidgetDeepLink.swift | 0 .../WidgetHeatmapPlaceholderShape.swift | 0 .../Sources/Common}/WidgetKind.swift | 0 .../Common/WidgetSharedDefaultsStore.swift | 5 +- .../Sources/Common}/WidgetSnapshotKey.swift | 0 .../Sources/Common/WidgetSnapshotStore.swift | 3 +- .../Sources/Common/WidgetSyncEvent.swift | 3 +- .../Heatmap/HeatmapWidgetSnapshot.swift | 1 - .../HeatmapWidgetSnapshotFactory.swift | 1 - .../Sources/Sync/WidgetSyncEventBus.swift | 3 +- .../Sources/Sync/WidgetSyncEventBusImpl.swift | 9 +- .../Sources/Sync/WidgetSyncEventHandler.swift | 5 +- .../Sources/Today/TodayWidgetSnapshot.swift | 1 - .../Today/TodayWidgetSnapshotFactory.swift | 1 - .../Common/WidgetSharedDefaultsStore.swift | 2 +- .../Common/WidgetSnapshotStore.swift | 2 +- .../Heatmap/HeatmapWidget.swift | 2 +- .../Heatmap/HeatmapWidgetEntryView.swift | 2 +- .../Heatmap/WidgetHeatmapGrid.swift | 2 +- .../Today/TodayTodoWidget.swift | 2 +- .../project.pbxproj | 363 ------------------ .../xcschemes/DevLogWidgetShared.xcscheme | 58 --- 41 files changed, 124 insertions(+), 628 deletions(-) rename Widget/{DevLogWidgetShared/Sources => DevLogWidgetCore/Sources/Common}/Calendar.swift (100%) rename Widget/{DevLogWidgetShared/Sources => DevLogWidgetCore/Sources/Common}/WidgetAppGroup.swift (100%) rename Widget/{DevLogWidgetShared/Sources => DevLogWidgetCore/Sources/Common}/WidgetDeepLink.swift (100%) rename Widget/{DevLogWidgetShared/Sources => DevLogWidgetCore/Sources/Common}/WidgetHeatmapPlaceholderShape.swift (100%) rename Widget/{DevLogWidgetShared/Sources => DevLogWidgetCore/Sources/Common}/WidgetKind.swift (100%) rename Widget/{DevLogWidgetShared/Sources => DevLogWidgetCore/Sources/Common}/WidgetSnapshotKey.swift (100%) delete mode 100644 Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj delete mode 100644 Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme diff --git a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj index 6ef27047..5719445a 100644 --- a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj +++ b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj @@ -7,15 +7,14 @@ objects = { /* Begin PBXBuildFile section */ - 0957A66CFE9CB98EA302CC22 /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */; }; 1589C1EF4029ECBF15A842F0 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; }; 160E41BDADA3136CD58BE0B4 /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B1B97007E09855108A99428B /* DevLogData.framework */; }; 186E9AB4F0A79C50FE853607 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA49949C677DDE083F7DE29E /* DevLogDomain.framework */; }; 18D57A125ACCF0F6B11A7101 /* GoogleSignIn in Frameworks */ = {isa = PBXBuildFile; productRef = F972F1E8E0F5156FE9651020 /* GoogleSignIn */; }; 26C3DC51F23F9C590FDB282D /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67918B544432C45E63273D84 /* DevLogPresentation.framework */; }; + 618B54224ACD6B35D9A8F841 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; }; 7188DA2B6DFD13F7FF73069E /* DevLogInfra.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */; }; 79134AD67952720CCC5069EA /* DevLogStorage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */; }; - 7A0D2CD79D383F3D256D6065 /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */; }; 8D3BD712CB129F2527B00CFB /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = E72BBE64130E2666E4680E1B /* FirebaseMessaging */; }; AB11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE11B22C33D44E55F6677889 /* DevLogCore.framework */; }; B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */ = {isa = PBXBuildFile; productRef = 0B7D3A68C7E7BF5D4A437D29 /* FirebaseCore */; }; @@ -69,6 +68,13 @@ remoteGlobalIDString = 6AF1B307A7E7CC03AA2BABB1; remoteInfo = Subproject; }; + 8D6BFCB260B27974560B42C6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 687DD42230CC25053ABB5FB8; + remoteInfo = DevLogWidgetCore; + }; 933EF563698CBBA322E4A1FF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */; @@ -132,13 +138,6 @@ remoteGlobalIDString = D9D76C33D8B4790694BD3488; remoteInfo = DevLogData; }; - EA9A577921BC21C5451FCE98 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; - remoteInfo = Subproject; - }; EA9B82690DAF18F719BA42AC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */; @@ -146,13 +145,6 @@ remoteGlobalIDString = 7D1E74925088998D68BBFBBB; remoteInfo = DevLogDomain; }; - F0A01BBA37FA27D63B9D6943 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; - remoteInfo = DevLogWidgetShared; - }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -172,7 +164,6 @@ /* Begin PBXFileReference section */ 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../../Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; - 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../../Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogStorage.xcodeproj; path = ../DevLogStorage/DevLogStorage.xcodeproj; sourceTree = ""; }; AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogInfra.xcodeproj; path = ../DevLogInfra/DevLogInfra.xcodeproj; sourceTree = ""; }; @@ -245,7 +236,7 @@ files = ( DFD3A9742F8E89DD001DA7CD /* SwiftUI.framework in Frameworks */, DFD3A9722F8E89DD001DA7CD /* WidgetKit.framework in Frameworks */, - 7A0D2CD79D383F3D256D6065 /* DevLogWidgetShared.framework in Frameworks */, + 618B54224ACD6B35D9A8F841 /* DevLogWidgetCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -259,7 +250,6 @@ 79134AD67952720CCC5069EA /* DevLogStorage.framework in Frameworks */, 26C3DC51F23F9C590FDB282D /* DevLogPresentation.framework in Frameworks */, 1589C1EF4029ECBF15A842F0 /* DevLogWidgetCore.framework in Frameworks */, - 0957A66CFE9CB98EA302CC22 /* DevLogWidgetShared.framework in Frameworks */, B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */, 8D3BD712CB129F2527B00CFB /* FirebaseMessaging in Frameworks */, 18D57A125ACCF0F6B11A7101 /* GoogleSignIn in Frameworks */, @@ -270,6 +260,23 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 4B47FFC0E73415A65560089A /* Products */ = { + isa = PBXGroup; + children = ( + DF3416492E45F67C00F9312B /* DevLog_Unit.xctest */, + DFD48B002DC4D6E2005905C5 /* DevLog.app */, + DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */, + AE11B22C33D44E55F6677889 /* DevLogCore.framework */, + DA49949C677DDE083F7DE29E /* DevLogDomain.framework */, + 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */, + 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */, + 67918B544432C45E63273D84 /* DevLogPresentation.framework */, + EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */, + B1B97007E09855108A99428B /* DevLogData.framework */, + ); + name = Products; + sourceTree = ""; + }; 4F3D8CEC7F23C3BFF6B9E27B /* Projects */ = { isa = PBXGroup; children = ( @@ -280,7 +287,6 @@ 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */, DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */, 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */, - 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */, ); name = Projects; sourceTree = ""; @@ -294,29 +300,11 @@ DF34164A2E45F67C00F9312B /* ../../DevLog_Unit */, DFD3A9752F8E89DD001DA7CD /* ../../Widget/DevLogWidgetExtension */, DFE28EB62DCCF26300B28FE5 /* Frameworks */, - DFD48B012DC4D6E2005905C5 /* Products */, 4F3D8CEC7F23C3BFF6B9E27B /* Projects */, + 4B47FFC0E73415A65560089A /* Products */, ); sourceTree = ""; }; - DFD48B012DC4D6E2005905C5 /* Products */ = { - isa = PBXGroup; - children = ( - DF3416492E45F67C00F9312B /* DevLog_Unit.xctest */, - DFD48B002DC4D6E2005905C5 /* DevLog.app */, - DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */, - AE11B22C33D44E55F6677889 /* DevLogCore.framework */, - DA49949C677DDE083F7DE29E /* DevLogDomain.framework */, - 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */, - 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */, - 67918B544432C45E63273D84 /* DevLogPresentation.framework */, - EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */, - 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */, - B1B97007E09855108A99428B /* DevLogData.framework */, - ); - name = Products; - sourceTree = ""; - }; DFE28EB62DCCF26300B28FE5 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -361,7 +349,7 @@ buildRules = ( ); dependencies = ( - 0AB29A08B809E8A2E1AD6CA3 /* PBXTargetDependency */, + F7528B3FE01EAD33E2A02C63 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( DFD3A9752F8E89DD001DA7CD /* ../../Widget/DevLogWidgetExtension */, @@ -391,7 +379,6 @@ CD56EF21C39E985CEDBB9165 /* PBXTargetDependency */, F00B1378BDC6B8D7CCD24AB0 /* PBXTargetDependency */, A2A3C286B46BB965A8D4C047 /* PBXTargetDependency */, - 88A796BDB56C53FB2A6CBBB0 /* PBXTargetDependency */, D8C9622EAD15756212C69E6A /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( @@ -445,41 +432,37 @@ 1D75B0AFC69F88110A25217B /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */, ); preferredProjectObjectVersion = 77; - productRefGroup = DFD48B012DC4D6E2005905C5 /* Products */; + productRefGroup = 4B47FFC0E73415A65560089A /* Products */; projectDirPath = ""; projectReferences = ( { - ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProductGroup = 4B47FFC0E73415A65560089A /* Products */; ProjectRef = AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; }, { - ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProductGroup = 4B47FFC0E73415A65560089A /* Products */; ProjectRef = E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */; }, { - ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProductGroup = 4B47FFC0E73415A65560089A /* Products */; ProjectRef = 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */; }, { - ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProductGroup = 4B47FFC0E73415A65560089A /* Products */; ProjectRef = CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */; }, { - ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProductGroup = 4B47FFC0E73415A65560089A /* Products */; ProjectRef = DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */; }, { - ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProductGroup = 4B47FFC0E73415A65560089A /* Products */; ProjectRef = 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */; }, { - ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; + ProductGroup = 4B47FFC0E73415A65560089A /* Products */; ProjectRef = 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */; }, - { - ProductGroup = DFD48B012DC4D6E2005905C5 /* Products */; - ProjectRef = 80A4526EFBD04A013A8BFC08 /* DevLogWidgetShared.xcodeproj */; - }, ); projectRoot = ""; targets = ( @@ -491,13 +474,6 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - 351E9250A1779CBA4D70688E /* DevLogWidgetShared.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogWidgetShared.framework; - remoteRef = EA9A577921BC21C5451FCE98 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 67918B544432C45E63273D84 /* DevLogPresentation.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -600,11 +576,6 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 0AB29A08B809E8A2E1AD6CA3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogWidgetShared; - targetProxy = F0A01BBA37FA27D63B9D6943 /* PBXContainerItemProxy */; - }; 50D25760371BEF13D9781476 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDomain; @@ -615,11 +586,6 @@ name = DevLogInfra; targetProxy = 0F460A6F0F9B74AE847DFD16 /* PBXContainerItemProxy */; }; - 88A796BDB56C53FB2A6CBBB0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogWidgetShared; - targetProxy = F0A01BBA37FA27D63B9D6943 /* PBXContainerItemProxy */; - }; A2A3C286B46BB965A8D4C047 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogWidgetCore; @@ -659,6 +625,11 @@ name = DevLogPresentation; targetProxy = 17E732C4E37D1ADD4E46D669 /* PBXContainerItemProxy */; }; + F7528B3FE01EAD33E2A02C63 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogWidgetCore; + targetProxy = 8D6BFCB260B27974560B42C6 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ diff --git a/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift index e02c2510..8e763f20 100644 --- a/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/AppLayerAssembler.swift @@ -7,6 +7,8 @@ import DevLogCore import DevLogData +import DevLogDomain +import DevLogWidgetCore final class AppLayerAssembler: Assembler { func assemble(_ container: any DIContainer) { diff --git a/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift index b131d37e..ad97c550 100644 --- a/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift @@ -7,6 +7,7 @@ import DevLogCore import DevLogData +import DevLogDomain final class DataAssembler: Assembler { func assemble(_ container: any DIContainer) { diff --git a/Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift index cb5237af..a84c7de6 100644 --- a/Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift @@ -6,6 +6,7 @@ // import DevLogCore +import DevLogDomain final class DomainAssembler: Assembler { func assemble(_ container: any DIContainer) { diff --git a/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift index 3096d5e5..ded4d920 100644 --- a/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift @@ -7,6 +7,7 @@ import DevLogCore import DevLogData +import DevLogInfra final class InfraAssembler: Assembler { func assemble(_ container: any DIContainer) { diff --git a/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift b/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift index 88362f10..afadf801 100644 --- a/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift @@ -7,6 +7,8 @@ import DevLogCore import DevLogData +import DevLogStorage +import DevLogWidgetCore final class PersistenceAssembler: Assembler { func assemble(_ container: any DIContainer) { diff --git a/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift b/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift index bcf1cfb0..02d2f4dd 100644 --- a/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift +++ b/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift @@ -8,6 +8,7 @@ import UIKit import DevLogCore import DevLogData +import DevLogWidgetCore import Firebase import GoogleSignIn diff --git a/Application/DevLogApp/Sources/App/DevLogApp.swift b/Application/DevLogApp/Sources/App/DevLogApp.swift index 637c6549..db923c37 100644 --- a/Application/DevLogApp/Sources/App/DevLogApp.swift +++ b/Application/DevLogApp/Sources/App/DevLogApp.swift @@ -7,7 +7,9 @@ import SwiftUI import DevLogCore +import DevLogDomain import DevLogPresentation +import DevLogWidgetCore @main struct DevLogApp: App { diff --git a/Application/DevLogApp/Sources/App/Routing/MainTab+WidgetDeepLink.swift b/Application/DevLogApp/Sources/App/Routing/MainTab+WidgetDeepLink.swift index 1b65bad0..bc6008b7 100644 --- a/Application/DevLogApp/Sources/App/Routing/MainTab+WidgetDeepLink.swift +++ b/Application/DevLogApp/Sources/App/Routing/MainTab+WidgetDeepLink.swift @@ -7,7 +7,7 @@ import Foundation import DevLogPresentation -import DevLogWidgetShared +import DevLogWidgetCore extension MainTab { init?(widgetURL: URL) { diff --git a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj index 66e7c3b9..209ebbf7 100644 --- a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj +++ b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 041CEED3822FCBD881DF75CD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 98B16FCDA8A71E2E4E1DC05E /* Foundation.framework */; }; - 0B318F82A17C708D399761BB /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A901500062F184A55322ED05 /* DevLogWidgetShared.framework */; }; 3B8FAEC025F373D4CFC262D4 /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 493A5D0B4274807F2B948AB3 /* DevLogData.framework */; }; 50BBA1C19A7C61B8B8F3A68B /* WebPageImageStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */; }; 5967B32779F22DD0E3C2D247 /* UserDefaultsStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */; }; @@ -27,20 +26,6 @@ remoteGlobalIDString = 687DD42230CC25053ABB5FB8; remoteInfo = DevLogWidgetCore; }; - 6AA166FC9277234B4C6E2573 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; - remoteInfo = DevLogWidgetShared; - }; - 702B915FA3D211548F1624EC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; - remoteInfo = Subproject; - }; 7CD34B27DE3CD401A888D01C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */; @@ -81,7 +66,6 @@ /* Begin PBXFileReference section */ 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStoreImpl.swift; path = Sources/Persistence/ThemeStoreImpl.swift; sourceTree = ""; }; 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; - 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../../Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStoreImpl.swift; path = Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift; sourceTree = ""; }; 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStoreImpl.swift; path = Sources/Persistence/UserDefaultsStoreImpl.swift; sourceTree = ""; }; @@ -100,7 +84,6 @@ 041CEED3822FCBD881DF75CD /* Foundation.framework in Frameworks */, 7D8DE74BD24B456D42B04806 /* DevLogDomain.framework in Frameworks */, E53E13B73BFAF0C51013ECA2 /* DevLogWidgetCore.framework in Frameworks */, - 0B318F82A17C708D399761BB /* DevLogWidgetShared.framework in Frameworks */, 3B8FAEC025F373D4CFC262D4 /* DevLogData.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -147,36 +130,34 @@ 9DC6ED43838A6F065422AA8B = { isa = PBXGroup; children = ( - AD653F86B18A4BB73CB50AFE /* Products */, 49F17FD9095E72DC89748471 /* Frameworks */, 63CE47D539EE6F9653C99773 /* DevLogStorage */, C005798DC28F77FF8B0E248A /* Projects */, + C96806E27CED4BE0CA95A9B0 /* Products */, ); sourceTree = ""; }; - AD653F86B18A4BB73CB50AFE /* Products */ = { - isa = PBXGroup; - children = ( - 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */, - F334BCFC52C730D5901F6051 /* DevLogDomain.framework */, - 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */, - A901500062F184A55322ED05 /* DevLogWidgetShared.framework */, - 493A5D0B4274807F2B948AB3 /* DevLogData.framework */, - ); - name = Products; - sourceTree = ""; - }; C005798DC28F77FF8B0E248A /* Projects */ = { isa = PBXGroup; children = ( 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */, 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */, AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */, - 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */, ); name = Projects; sourceTree = ""; }; + C96806E27CED4BE0CA95A9B0 /* Products */ = { + isa = PBXGroup; + children = ( + 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */, + F334BCFC52C730D5901F6051 /* DevLogDomain.framework */, + 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */, + 493A5D0B4274807F2B948AB3 /* DevLogData.framework */, + ); + name = Products; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -204,7 +185,6 @@ dependencies = ( 083FDD9BBD997A11EED7ACA9 /* PBXTargetDependency */, 8C9EB60C8E58A67726AF0EF1 /* PBXTargetDependency */, - 79C71E38CBE3984287E4AC6A /* PBXTargetDependency */, 65214D4CBB998A4369598E01 /* PBXTargetDependency */, ); name = DevLogStorage; @@ -232,25 +212,21 @@ mainGroup = 9DC6ED43838A6F065422AA8B; minimizedProjectReferenceProxies = 0; preferredProjectObjectVersion = 77; - productRefGroup = AD653F86B18A4BB73CB50AFE /* Products */; + productRefGroup = C96806E27CED4BE0CA95A9B0 /* Products */; projectDirPath = ""; projectReferences = ( { - ProductGroup = AD653F86B18A4BB73CB50AFE /* Products */; + ProductGroup = C96806E27CED4BE0CA95A9B0 /* Products */; ProjectRef = 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */; }, { - ProductGroup = AD653F86B18A4BB73CB50AFE /* Products */; + ProductGroup = C96806E27CED4BE0CA95A9B0 /* Products */; ProjectRef = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; }, { - ProductGroup = AD653F86B18A4BB73CB50AFE /* Products */; + ProductGroup = C96806E27CED4BE0CA95A9B0 /* Products */; ProjectRef = AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */; }, - { - ProductGroup = AD653F86B18A4BB73CB50AFE /* Products */; - ProjectRef = 533365AB07447E838048A78B /* DevLogWidgetShared.xcodeproj */; - }, ); projectRoot = ""; targets = ( @@ -274,13 +250,6 @@ remoteRef = 7CD34B27DE3CD401A888D01C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - A901500062F184A55322ED05 /* DevLogWidgetShared.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogWidgetShared.framework; - remoteRef = 702B915FA3D211548F1624EC /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; F334BCFC52C730D5901F6051 /* DevLogDomain.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -326,11 +295,6 @@ name = DevLogData; targetProxy = D43AB7BB6E43AEF760FBB23C /* PBXContainerItemProxy */; }; - 79C71E38CBE3984287E4AC6A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogWidgetShared; - targetProxy = 6AA166FC9277234B4C6E2573 /* PBXContainerItemProxy */; - }; 8C9EB60C8E58A67726AF0EF1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogWidgetCore; diff --git a/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift index 2f95c540..adea8271 100644 --- a/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift @@ -9,7 +9,6 @@ import Combine import DevLogDomain import DevLogData import DevLogWidgetCore -import DevLogWidgetShared final class ThemeStoreImpl: ThemeStore { private let subject = CurrentValueSubject(.automatic) diff --git a/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift index aa48f2d2..58790fd2 100644 --- a/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift @@ -9,7 +9,6 @@ import Foundation import DevLogDomain import DevLogData import DevLogWidgetCore -import DevLogWidgetShared final class UserDefaultsStoreImpl: UserDefaultsStore { private let userDefaults: UserDefaults diff --git a/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift index e82493e8..7a745cac 100644 --- a/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift @@ -10,7 +10,6 @@ import Foundation import DevLogDomain import DevLogData import DevLogWidgetCore -import DevLogWidgetShared actor WebPageImageStoreImpl: WebPageImageStore { func cachedImageURL(for url: URL) async throws -> URL { diff --git a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift index 020b8bb8..fb65d30c 100644 --- a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift @@ -9,7 +9,6 @@ import Foundation import DevLogDomain import DevLogData import DevLogWidgetCore -import DevLogWidgetShared final class WidgetSnapshotPreferenceStoreImpl: WidgetSnapshotPreferenceStore { private enum Key: String, CaseIterable { diff --git a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift index b4390b9f..27186785 100644 --- a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift @@ -10,7 +10,6 @@ import WidgetKit import DevLogDomain import DevLogData import DevLogWidgetCore -import DevLogWidgetShared final class WidgetSnapshotUpdaterImpl: WidgetSnapshotUpdater { private let snapshotStore: WidgetSnapshotStore diff --git a/DevLog.xcworkspace/contents.xcworkspacedata b/DevLog.xcworkspace/contents.xcworkspacedata index 49839dc1..e2ff3079 100644 --- a/DevLog.xcworkspace/contents.xcworkspacedata +++ b/DevLog.xcworkspace/contents.xcworkspacedata @@ -25,7 +25,4 @@ - - diff --git a/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj index 4981e30f..ee4d926b 100644 --- a/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj +++ b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj @@ -8,16 +8,21 @@ /* Begin PBXBuildFile section */ 13912C8BE3310B5BCCE71ED8 /* WidgetSharedDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */; }; - 1E316639D5B48E091F18C91D /* DevLogWidgetShared.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E46E84150C232E2525F648D1 /* DevLogWidgetShared.framework */; }; + 20835D8A267CC408B23301A7 /* WidgetSnapshotKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 972B4258F31014D567D84C97 /* WidgetSnapshotKey.swift */; }; + 2C60DC971EC65AD91A40E790 /* WidgetKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81B6C43B59E810D0CD5BC507 /* WidgetKind.swift */; }; 3BF3B864B5A91686CFA17EDD /* WidgetSyncEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */; }; + 54CBD3BDE2DE86D68291FF5D /* WidgetHeatmapPlaceholderShape.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08FE1A3A6AAAB25C26F0FC43 /* WidgetHeatmapPlaceholderShape.swift */; }; 5C7FE28461303EC8CE211B57 /* WidgetSyncEventBusImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 489FB48B79E61FF3332C9F3F /* WidgetSyncEventBusImpl.swift */; }; 641BA820F65E8F78F200EDCF /* HeatmapWidgetSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */; }; 75C99AB35C6DF930E824185E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBD260F923A87C1577DBFF0F /* Foundation.framework */; }; 80423C5F6B880409E39FD20F /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C18996E00A69C4BCB0F63AE /* DevLogData.framework */; }; + A14D5069306E93272F138551 /* Calendar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DF1E781780B7BC63E38230 /* Calendar.swift */; }; A1DEB84CF3B18EC2005382C5 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B108898FD3650BE0C116BD3C /* DevLogDomain.framework */; }; A839995EF6B607DBECF11933 /* HeatmapWidgetSnapshotFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */; }; B2223843996C9D11E0193B16 /* WidgetSnapshotStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */; }; CD7C54E749A6696CF92AEF71 /* WidgetSyncEventBus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */; }; + DE6586C0349C991B7AB9B732 /* WidgetAppGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = F938E87841D0E3147CC73238 /* WidgetAppGroup.swift */; }; + E22B5DAAF713E374BAAAF6DE /* WidgetDeepLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEEECB9CFCE00F6DF5262C31 /* WidgetDeepLink.swift */; }; F29C18438886406B532B926B /* TodayWidgetSnapshotFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */; }; F9D4F24C64D75DC51F89BBC5 /* TodayWidgetSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */; }; FF161CCB92AC2C2C754DDA8C /* WidgetSyncEventHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */; }; @@ -31,13 +36,6 @@ remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; remoteInfo = Subproject; }; - 3021BF47C2FDC8E6FA84B229 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; - remoteInfo = DevLogWidgetShared; - }; 406A7B367DEC67D4F9E38522 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */; @@ -45,13 +43,6 @@ remoteGlobalIDString = 3F08F6B94839E9021FCFC466; remoteInfo = Subproject; }; - 42BDD2F44A35E6964E4E3FF2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; - remoteInfo = Subproject; - }; 6B58A164E93F51C78CBAE314 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */; @@ -69,20 +60,25 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 08FE1A3A6AAAB25C26F0FC43 /* WidgetHeatmapPlaceholderShape.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetHeatmapPlaceholderShape.swift; path = Sources/Common/WidgetHeatmapPlaceholderShape.swift; sourceTree = ""; }; 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventBus.swift; path = Sources/Sync/WidgetSyncEventBus.swift; sourceTree = ""; }; 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshotFactory.swift; path = Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift; sourceTree = ""; }; 389BB07F08F830F06F8F536E /* TodayWidgetSnapshotFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshotFactory.swift; path = Sources/Today/TodayWidgetSnapshotFactory.swift; sourceTree = ""; }; 489FB48B79E61FF3332C9F3F /* WidgetSyncEventBusImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventBusImpl.swift; path = Sources/Sync/WidgetSyncEventBusImpl.swift; sourceTree = ""; }; 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEvent.swift; path = Sources/Common/WidgetSyncEvent.swift; sourceTree = ""; }; 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotStore.swift; path = Sources/Common/WidgetSnapshotStore.swift; sourceTree = ""; }; - 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetShared.xcodeproj; path = ../DevLogWidgetShared/DevLogWidgetShared.xcodeproj; sourceTree = ""; }; 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshot.swift; path = Sources/Today/TodayWidgetSnapshot.swift; sourceTree = ""; }; + 65DF1E781780B7BC63E38230 /* Calendar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Calendar.swift; path = Sources/Common/Calendar.swift; sourceTree = ""; }; 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogWidgetCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshot.swift; path = Sources/Heatmap/HeatmapWidgetSnapshot.swift; sourceTree = ""; }; + 81B6C43B59E810D0CD5BC507 /* WidgetKind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetKind.swift; path = Sources/Common/WidgetKind.swift; sourceTree = ""; }; 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSharedDefaultsStore.swift; path = Sources/Common/WidgetSharedDefaultsStore.swift; sourceTree = ""; }; + 972B4258F31014D567D84C97 /* WidgetSnapshotKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotKey.swift; path = Sources/Common/WidgetSnapshotKey.swift; sourceTree = ""; }; ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../../Application/DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../../Application/DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventHandler.swift; path = Sources/Sync/WidgetSyncEventHandler.swift; sourceTree = ""; }; + EEEECB9CFCE00F6DF5262C31 /* WidgetDeepLink.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetDeepLink.swift; path = Sources/Common/WidgetDeepLink.swift; sourceTree = ""; }; + F938E87841D0E3147CC73238 /* WidgetAppGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetAppGroup.swift; path = Sources/Common/WidgetAppGroup.swift; sourceTree = ""; }; FBD260F923A87C1577DBFF0F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; /* End PBXFileReference section */ @@ -93,7 +89,6 @@ files = ( 75C99AB35C6DF930E824185E /* Foundation.framework in Frameworks */, A1DEB84CF3B18EC2005382C5 /* DevLogDomain.framework in Frameworks */, - 1E316639D5B48E091F18C91D /* DevLogWidgetShared.framework in Frameworks */, 80423C5F6B880409E39FD20F /* DevLogData.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -107,6 +102,12 @@ 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */, 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */, 504A164843100A1DC6A74661 /* WidgetSyncEvent.swift */, + 65DF1E781780B7BC63E38230 /* Calendar.swift */, + F938E87841D0E3147CC73238 /* WidgetAppGroup.swift */, + EEEECB9CFCE00F6DF5262C31 /* WidgetDeepLink.swift */, + 08FE1A3A6AAAB25C26F0FC43 /* WidgetHeatmapPlaceholderShape.swift */, + 81B6C43B59E810D0CD5BC507 /* WidgetKind.swift */, + 972B4258F31014D567D84C97 /* WidgetSnapshotKey.swift */, ); name = Common; sourceTree = ""; @@ -124,29 +125,17 @@ children = ( B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */, ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */, - 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */, ); name = Projects; sourceTree = ""; }; - 573F3011EB6718B39FCF276F /* Products */ = { - isa = PBXGroup; - children = ( - 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */, - B108898FD3650BE0C116BD3C /* DevLogDomain.framework */, - E46E84150C232E2525F648D1 /* DevLogWidgetShared.framework */, - 7C18996E00A69C4BCB0F63AE /* DevLogData.framework */, - ); - name = Products; - sourceTree = ""; - }; 6AE182A73B6A9D0A2981CE97 = { isa = PBXGroup; children = ( - 573F3011EB6718B39FCF276F /* Products */, 22B18020E715C5AFC73F00FA /* Frameworks */, B60F0C6B052E1EF8CC827AD9 /* DevLogWidgetCore */, 23F6B7BB30A8782BF2FB2D92 /* Projects */, + A71745ED0B0D9E29633DB923 /* Products */, ); sourceTree = ""; }; @@ -159,6 +148,16 @@ name = Heatmap; sourceTree = ""; }; + A71745ED0B0D9E29633DB923 /* Products */ = { + isa = PBXGroup; + children = ( + 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */, + B108898FD3650BE0C116BD3C /* DevLogDomain.framework */, + 7C18996E00A69C4BCB0F63AE /* DevLogData.framework */, + ); + name = Products; + sourceTree = ""; + }; B60F0C6B052E1EF8CC827AD9 /* DevLogWidgetCore */ = { isa = PBXGroup; children = ( @@ -223,7 +222,6 @@ ); dependencies = ( 504FAABF657F1D901A2B6BB9 /* PBXTargetDependency */, - 5A7DA83CEEE7600394C47846 /* PBXTargetDependency */, F1C4B031EE5FEF47898D9562 /* PBXTargetDependency */, ); name = DevLogWidgetCore; @@ -251,21 +249,17 @@ mainGroup = 6AE182A73B6A9D0A2981CE97; minimizedProjectReferenceProxies = 0; preferredProjectObjectVersion = 77; - productRefGroup = 573F3011EB6718B39FCF276F /* Products */; + productRefGroup = A71745ED0B0D9E29633DB923 /* Products */; projectDirPath = ""; projectReferences = ( { - ProductGroup = 573F3011EB6718B39FCF276F /* Products */; + ProductGroup = A71745ED0B0D9E29633DB923 /* Products */; ProjectRef = B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */; }, { - ProductGroup = 573F3011EB6718B39FCF276F /* Products */; + ProductGroup = A71745ED0B0D9E29633DB923 /* Products */; ProjectRef = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; }, - { - ProductGroup = 573F3011EB6718B39FCF276F /* Products */; - ProjectRef = 6132E3181090167467D26A41 /* DevLogWidgetShared.xcodeproj */; - }, ); projectRoot = ""; targets = ( @@ -289,13 +283,6 @@ remoteRef = 406A7B367DEC67D4F9E38522 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - E46E84150C232E2525F648D1 /* DevLogWidgetShared.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogWidgetShared.framework; - remoteRef = 42BDD2F44A35E6964E4E3FF2 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -323,6 +310,12 @@ FF161CCB92AC2C2C754DDA8C /* WidgetSyncEventHandler.swift in Sources */, F9D4F24C64D75DC51F89BBC5 /* TodayWidgetSnapshot.swift in Sources */, F29C18438886406B532B926B /* TodayWidgetSnapshotFactory.swift in Sources */, + A14D5069306E93272F138551 /* Calendar.swift in Sources */, + DE6586C0349C991B7AB9B732 /* WidgetAppGroup.swift in Sources */, + E22B5DAAF713E374BAAAF6DE /* WidgetDeepLink.swift in Sources */, + 54CBD3BDE2DE86D68291FF5D /* WidgetHeatmapPlaceholderShape.swift in Sources */, + 2C60DC971EC65AD91A40E790 /* WidgetKind.swift in Sources */, + 20835D8A267CC408B23301A7 /* WidgetSnapshotKey.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -334,11 +327,6 @@ name = DevLogDomain; targetProxy = 6B58A164E93F51C78CBAE314 /* PBXContainerItemProxy */; }; - 5A7DA83CEEE7600394C47846 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogWidgetShared; - targetProxy = 3021BF47C2FDC8E6FA84B229 /* PBXContainerItemProxy */; - }; F1C4B031EE5FEF47898D9562 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogData; diff --git a/Widget/DevLogWidgetShared/Sources/Calendar.swift b/Widget/DevLogWidgetCore/Sources/Common/Calendar.swift similarity index 100% rename from Widget/DevLogWidgetShared/Sources/Calendar.swift rename to Widget/DevLogWidgetCore/Sources/Common/Calendar.swift diff --git a/Widget/DevLogWidgetShared/Sources/WidgetAppGroup.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetAppGroup.swift similarity index 100% rename from Widget/DevLogWidgetShared/Sources/WidgetAppGroup.swift rename to Widget/DevLogWidgetCore/Sources/Common/WidgetAppGroup.swift diff --git a/Widget/DevLogWidgetShared/Sources/WidgetDeepLink.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetDeepLink.swift similarity index 100% rename from Widget/DevLogWidgetShared/Sources/WidgetDeepLink.swift rename to Widget/DevLogWidgetCore/Sources/Common/WidgetDeepLink.swift diff --git a/Widget/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetHeatmapPlaceholderShape.swift similarity index 100% rename from Widget/DevLogWidgetShared/Sources/WidgetHeatmapPlaceholderShape.swift rename to Widget/DevLogWidgetCore/Sources/Common/WidgetHeatmapPlaceholderShape.swift diff --git a/Widget/DevLogWidgetShared/Sources/WidgetKind.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetKind.swift similarity index 100% rename from Widget/DevLogWidgetShared/Sources/WidgetKind.swift rename to Widget/DevLogWidgetCore/Sources/Common/WidgetKind.swift diff --git a/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift index 0acbe506..86179d64 100644 --- a/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift +++ b/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift @@ -8,12 +8,11 @@ import Foundation import DevLogDomain import DevLogData -import DevLogWidgetShared -final class WidgetSharedDefaultsStore { +public final class WidgetSharedDefaultsStore { private let userDefaults: UserDefaults - init(userDefaults: UserDefaults = UserDefaults(suiteName: WidgetAppGroup.identifier) ?? .standard) { + public init(userDefaults: UserDefaults = UserDefaults(suiteName: WidgetAppGroup.identifier) ?? .standard) { self.userDefaults = userDefaults } diff --git a/Widget/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotKey.swift similarity index 100% rename from Widget/DevLogWidgetShared/Sources/WidgetSnapshotKey.swift rename to Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotKey.swift diff --git a/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift index a70b43c8..111a97ca 100644 --- a/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift +++ b/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift @@ -8,7 +8,6 @@ import Foundation import DevLogDomain import DevLogData -import DevLogWidgetShared public final class WidgetSnapshotStore { private let store: WidgetSharedDefaultsStore @@ -19,7 +18,7 @@ public final class WidgetSnapshotStore { self.store = WidgetSharedDefaultsStore() } - init(store: WidgetSharedDefaultsStore) { + public init(store: WidgetSharedDefaultsStore) { self.store = store } diff --git a/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift index 46608d5b..b0ed4fc6 100644 --- a/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift +++ b/Widget/DevLogWidgetCore/Sources/Common/WidgetSyncEvent.swift @@ -7,8 +7,7 @@ import DevLogDomain import DevLogData -import DevLogWidgetShared -enum WidgetSyncEvent: Equatable { +public enum WidgetSyncEvent: Equatable { case syncRequested } diff --git a/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift b/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift index c9fb485e..ad38e857 100644 --- a/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift +++ b/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshot.swift @@ -8,7 +8,6 @@ import Foundation import DevLogDomain import DevLogData -import DevLogWidgetShared public struct HeatmapWidgetSnapshot: Codable, Equatable { let generatedAt: Date diff --git a/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift b/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift index ab7c8998..061cca23 100644 --- a/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift +++ b/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift @@ -8,7 +8,6 @@ import Foundation import DevLogDomain import DevLogData -import DevLogWidgetShared public struct HeatmapWidgetSnapshotFactory { fileprivate struct DailyCounts { diff --git a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift index 1c47cf17..388257b7 100644 --- a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift +++ b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBus.swift @@ -8,9 +8,8 @@ import Combine import DevLogDomain import DevLogData -import DevLogWidgetShared -protocol WidgetSyncEventBus { +public protocol WidgetSyncEventBus { func publish(_ event: WidgetSyncEvent) func observe() -> AnyPublisher } diff --git a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift index 2c8b7d35..6dc9c92e 100644 --- a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift +++ b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventBusImpl.swift @@ -8,16 +8,17 @@ import Combine import DevLogDomain import DevLogData -import DevLogWidgetShared -final class WidgetSyncEventBusImpl: WidgetSyncEventBus { +public final class WidgetSyncEventBusImpl: WidgetSyncEventBus { private let subject = PassthroughSubject() - func publish(_ event: WidgetSyncEvent) { + public init() { } + + public func publish(_ event: WidgetSyncEvent) { subject.send(event) } - func observe() -> AnyPublisher { + public func observe() -> AnyPublisher { subject.eraseToAnyPublisher() } } diff --git a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift index 46ff1d73..6f640928 100644 --- a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift +++ b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift @@ -9,16 +9,15 @@ import Combine import Foundation import DevLogDomain import DevLogData -import DevLogWidgetShared -final class WidgetSyncEventHandler { +public final class WidgetSyncEventHandler { private let repository: TodoRepository private let snapshotUpdater: WidgetSnapshotUpdater private let pageSize = 100 private let logger = Logger(category: "WidgetSyncEventHandler") private var cancellables = Set() - init( + public init( eventBus: WidgetSyncEventBus, repository: TodoRepository, snapshotUpdater: WidgetSnapshotUpdater diff --git a/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift b/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift index 58063810..c13d3243 100644 --- a/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift +++ b/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshot.swift @@ -8,7 +8,6 @@ import Foundation import DevLogDomain import DevLogData -import DevLogWidgetShared public struct TodayWidgetSnapshot: Codable, Equatable { let generatedAt: Date diff --git a/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift b/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift index dd309f51..c54cb5b1 100644 --- a/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift +++ b/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift @@ -8,7 +8,6 @@ import Foundation import DevLogDomain import DevLogData -import DevLogWidgetShared public struct TodayWidgetSnapshotFactory { private enum SectionCategory: String, CaseIterable { diff --git a/Widget/DevLogWidgetExtension/Common/WidgetSharedDefaultsStore.swift b/Widget/DevLogWidgetExtension/Common/WidgetSharedDefaultsStore.swift index 6dd471e9..6605449c 100644 --- a/Widget/DevLogWidgetExtension/Common/WidgetSharedDefaultsStore.swift +++ b/Widget/DevLogWidgetExtension/Common/WidgetSharedDefaultsStore.swift @@ -6,7 +6,7 @@ // import Foundation -import DevLogWidgetShared +import DevLogWidgetCore final class WidgetSharedDefaultsStore { private let userDefaults: UserDefaults diff --git a/Widget/DevLogWidgetExtension/Common/WidgetSnapshotStore.swift b/Widget/DevLogWidgetExtension/Common/WidgetSnapshotStore.swift index d8ea6ff3..84baf89d 100644 --- a/Widget/DevLogWidgetExtension/Common/WidgetSnapshotStore.swift +++ b/Widget/DevLogWidgetExtension/Common/WidgetSnapshotStore.swift @@ -6,7 +6,7 @@ // import Foundation -import DevLogWidgetShared +import DevLogWidgetCore final class WidgetSnapshotStore { private let store: WidgetSharedDefaultsStore diff --git a/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidget.swift b/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidget.swift index d8f28968..06358e0d 100644 --- a/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidget.swift +++ b/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidget.swift @@ -8,7 +8,7 @@ import SwiftUI import AppIntents import WidgetKit -import DevLogWidgetShared +import DevLogWidgetCore struct HeatmapWidget: Widget { let kind = WidgetKind.heatmap diff --git a/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntryView.swift b/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntryView.swift index 62e59e0b..aa12a877 100644 --- a/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntryView.swift +++ b/Widget/DevLogWidgetExtension/Heatmap/HeatmapWidgetEntryView.swift @@ -7,7 +7,7 @@ import SwiftUI import WidgetKit -import DevLogWidgetShared +import DevLogWidgetCore struct HeatmapWidgetEntryView: View { let entry: HeatmapWidgetEntry diff --git a/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapGrid.swift b/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapGrid.swift index 8f5976a1..757d293b 100644 --- a/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapGrid.swift +++ b/Widget/DevLogWidgetExtension/Heatmap/WidgetHeatmapGrid.swift @@ -6,7 +6,7 @@ // import SwiftUI -import DevLogWidgetShared +import DevLogWidgetCore struct WidgetHeatmapGrid: View { let months: [WidgetHeatmapMonthSnapshot] diff --git a/Widget/DevLogWidgetExtension/Today/TodayTodoWidget.swift b/Widget/DevLogWidgetExtension/Today/TodayTodoWidget.swift index 9be7e2e1..66a9665b 100644 --- a/Widget/DevLogWidgetExtension/Today/TodayTodoWidget.swift +++ b/Widget/DevLogWidgetExtension/Today/TodayTodoWidget.swift @@ -8,7 +8,7 @@ import SwiftUI import AppIntents import WidgetKit -import DevLogWidgetShared +import DevLogWidgetCore struct TodayTodoWidget: Widget { let kind = WidgetKind.todayTodo diff --git a/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj b/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj deleted file mode 100644 index b62e3bc7..00000000 --- a/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/project.pbxproj +++ /dev/null @@ -1,363 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 18BA78C685175B1BC0DEFCCB /* Calendar.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2B11CDF5A711E473115E8E3 /* Calendar.swift */; }; - 2D055D7F21B321D6CCD40A16 /* WidgetAppGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEF84B2C1BD8C8ED1F6A5A36 /* WidgetAppGroup.swift */; }; - 52EDCA6F95F360B0075E8708 /* WidgetKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = E75E718B8308165441EB1A8A /* WidgetKind.swift */; }; - 6C3457965AC3DE2CD7E8F88B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 814ECC408D237131E365FC92 /* Foundation.framework */; }; - 9393A3FE5F2FABEFF02AACC7 /* WidgetSnapshotKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6B67DC942FD2230C2E3C8EC /* WidgetSnapshotKey.swift */; }; - BEB9B8FDDC40DFEAE23FF15C /* WidgetHeatmapPlaceholderShape.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0BDD8E4BCD4F432B11496E0 /* WidgetHeatmapPlaceholderShape.swift */; }; - FF8B0BCB371AA1459B70C6D4 /* WidgetDeepLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 286D442FAA18B8D52A6845FF /* WidgetDeepLink.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 286D442FAA18B8D52A6845FF /* WidgetDeepLink.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetDeepLink.swift; path = Sources/WidgetDeepLink.swift; sourceTree = ""; }; - 814ECC408D237131E365FC92 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 9E9FD7B09D0D7EAB8B828A5E /* DevLogWidgetShared.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogWidgetShared.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A0BDD8E4BCD4F432B11496E0 /* WidgetHeatmapPlaceholderShape.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetHeatmapPlaceholderShape.swift; path = Sources/WidgetHeatmapPlaceholderShape.swift; sourceTree = ""; }; - C2B11CDF5A711E473115E8E3 /* Calendar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Calendar.swift; path = Sources/Calendar.swift; sourceTree = ""; }; - C6B67DC942FD2230C2E3C8EC /* WidgetSnapshotKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotKey.swift; path = Sources/WidgetSnapshotKey.swift; sourceTree = ""; }; - DEF84B2C1BD8C8ED1F6A5A36 /* WidgetAppGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetAppGroup.swift; path = Sources/WidgetAppGroup.swift; sourceTree = ""; }; - E75E718B8308165441EB1A8A /* WidgetKind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetKind.swift; path = Sources/WidgetKind.swift; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - B36EC59A07DCF6BD1DCD4667 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 6C3457965AC3DE2CD7E8F88B /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 3A2B4275F79E5911D714CC6A /* Frameworks */ = { - isa = PBXGroup; - children = ( - CC38F8B599D9AFD777F4CF21 /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - B66C037F848BDEE68DAC8902 /* Products */ = { - isa = PBXGroup; - children = ( - 9E9FD7B09D0D7EAB8B828A5E /* DevLogWidgetShared.framework */, - ); - name = Products; - sourceTree = ""; - }; - C0DE4BE90CB1A6B4CEDFCA61 = { - isa = PBXGroup; - children = ( - B66C037F848BDEE68DAC8902 /* Products */, - 3A2B4275F79E5911D714CC6A /* Frameworks */, - DA0865721A6D430B66025E66 /* DevLogWidgetShared */, - ); - sourceTree = ""; - }; - CC38F8B599D9AFD777F4CF21 /* iOS */ = { - isa = PBXGroup; - children = ( - 814ECC408D237131E365FC92 /* Foundation.framework */, - ); - name = iOS; - sourceTree = ""; - }; - DA0865721A6D430B66025E66 /* DevLogWidgetShared */ = { - isa = PBXGroup; - children = ( - C2B11CDF5A711E473115E8E3 /* Calendar.swift */, - DEF84B2C1BD8C8ED1F6A5A36 /* WidgetAppGroup.swift */, - 286D442FAA18B8D52A6845FF /* WidgetDeepLink.swift */, - A0BDD8E4BCD4F432B11496E0 /* WidgetHeatmapPlaceholderShape.swift */, - E75E718B8308165441EB1A8A /* WidgetKind.swift */, - C6B67DC942FD2230C2E3C8EC /* WidgetSnapshotKey.swift */, - ); - name = DevLogWidgetShared; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 345C56D731B240D9209C739D /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 5755BDB768C11CE0FDEA4828 /* DevLogWidgetShared */ = { - isa = PBXNativeTarget; - buildConfigurationList = 619CC6CBC0D2FBA1B1D3AD2B /* Build configuration list for PBXNativeTarget "DevLogWidgetShared" */; - buildPhases = ( - 345C56D731B240D9209C739D /* Headers */, - A7C9D6BE813475D614E5A95D /* Sources */, - B36EC59A07DCF6BD1DCD4667 /* Frameworks */, - 6DAD9D3DB11C5C6B2F92C1F0 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = DevLogWidgetShared; - productName = DevLogWidgetShared; - productReference = 9E9FD7B09D0D7EAB8B828A5E /* DevLogWidgetShared.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 3CF16EA616D3B65329E78465 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1600; - LastUpgradeCheck = 1600; - }; - buildConfigurationList = FAE9B719E52217CA1B55B989 /* Build configuration list for PBXProject "DevLogWidgetShared" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = C0DE4BE90CB1A6B4CEDFCA61; - minimizedProjectReferenceProxies = 0; - preferredProjectObjectVersion = 77; - productRefGroup = B66C037F848BDEE68DAC8902 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 5755BDB768C11CE0FDEA4828 /* DevLogWidgetShared */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 6DAD9D3DB11C5C6B2F92C1F0 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - A7C9D6BE813475D614E5A95D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 18BA78C685175B1BC0DEFCCB /* Calendar.swift in Sources */, - 2D055D7F21B321D6CCD40A16 /* WidgetAppGroup.swift in Sources */, - FF8B0BCB371AA1459B70C6D4 /* WidgetDeepLink.swift in Sources */, - BEB9B8FDDC40DFEAE23FF15C /* WidgetHeatmapPlaceholderShape.swift in Sources */, - 52EDCA6F95F360B0075E8708 /* WidgetKind.swift in Sources */, - 9393A3FE5F2FABEFF02AACC7 /* WidgetSnapshotKey.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 0095EA3D0E3FC18B545418BE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogWidgetShared; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - B22A027E657DD85A9516F14C /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; - CE0953D10C4F8C380398A44D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - GENERATE_INFOPLIST_FILE = YES; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogWidgetShared; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - CEBA7A8B66FE2E8ED4AEDF32 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 619CC6CBC0D2FBA1B1D3AD2B /* Build configuration list for PBXNativeTarget "DevLogWidgetShared" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - CE0953D10C4F8C380398A44D /* Release */, - 0095EA3D0E3FC18B545418BE /* Debug */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - FAE9B719E52217CA1B55B989 /* Build configuration list for PBXProject "DevLogWidgetShared" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - CEBA7A8B66FE2E8ED4AEDF32 /* Debug */, - B22A027E657DD85A9516F14C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 3CF16EA616D3B65329E78465 /* Project object */; -} diff --git a/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme b/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme deleted file mode 100644 index 3fa6a459..00000000 --- a/Widget/DevLogWidgetShared/DevLogWidgetShared.xcodeproj/xcshareddata/xcschemes/DevLogWidgetShared.xcscheme +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - From 3f060cee899a1b9991bd45d030dfd2e19de873c5 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 15:50:18 +0900 Subject: [PATCH 22/46] =?UTF-8?q?refactor:=20DomainAssembler=EB=A5=BC=20Do?= =?UTF-8?q?main=20=EB=A0=88=EC=9D=B4=EC=96=B4=EB=A1=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/App/Assembler/Assembler.swift | 1 + .../DevLogDomain.xcodeproj/project.pbxproj | 86 ++++++++++++++++++- .../Sources}/DomainAssembler.swift | 7 +- 3 files changed, 87 insertions(+), 7 deletions(-) rename Application/{DevLogApp/Sources/App/Assembler => DevLogDomain/Sources}/DomainAssembler.swift (98%) diff --git a/Application/DevLogApp/Sources/App/Assembler/Assembler.swift b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift index 92693f9f..326371bb 100644 --- a/Application/DevLogApp/Sources/App/Assembler/Assembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift @@ -6,6 +6,7 @@ // import DevLogCore +import DevLogDomain final class AppAssembler: Assembler { private let assemblers: [Assembler] = [ diff --git a/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj b/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj index 03758da8..281e6858 100644 --- a/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj +++ b/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj @@ -59,10 +59,12 @@ 6941CE2F8E390A78BA99EB2F /* UIFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CE5DDD90F87E43F27311D31 /* UIFont.swift */; }; 6CCA27E186BA818C36FCD69A /* AuthProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9A9B5170723706520E75DC7 /* AuthProvider.swift */; }; 6E9DF84535092F43786277E9 /* UpdateRecentSearchQueriesUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4721FC0DF30EE97CCFD8AEB2 /* UpdateRecentSearchQueriesUseCase.swift */; }; + 7179FD5B4EBF8C744819A8DE /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A255290C54315FBBFEE3D5C /* DevLogCore.framework */; }; 71BAC4D47D7B9351E59745F0 /* AddWebPageUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B0536F975D3FE76D0B58F /* AddWebPageUseCaseImpl.swift */; }; 73969D227D8103F45DFD546D /* TodoQuery.swift in Sources */ = {isa = PBXBuildFile; fileRef = F528B902B4AC945DE2357AF4 /* TodoQuery.swift */; }; 740D49EA35D555A5CC0B740C /* FetchReferenceItemsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = A403DFBCDB028B255F8B9EC5 /* FetchReferenceItemsUseCase.swift */; }; 76DE905274DA17536AC07024 /* FetchPushNotificationSettingsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65FE1967BCA4B1FF8D517617 /* FetchPushNotificationSettingsUseCase.swift */; }; + 76E68B1719213F527010811E /* DomainAssembler.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFEB9043B95C0711DFB83006 /* DomainAssembler.swift */; }; 79E0CF57B7A79A24A2D7C030 /* SignInUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 517E1CF92FE5C7461C24F2F2 /* SignInUseCase.swift */; }; 7B8CBBEFB51817FB36B0F02E /* ActivityKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3C71ECDDDA08716A716D9B2 /* ActivityKind.swift */; }; 7DE9D23DA294DD0A2E247B55 /* TodoCategory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7697A8469158261B1299B121 /* TodoCategory.swift */; }; @@ -126,6 +128,30 @@ FC9F3DE1D0F3D83CF07D4935 /* PushNotificationSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = A86771BA0A9014E81E93B8C0 /* PushNotificationSettings.swift */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 382F8B0169E4B5594A5A0CB5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 984FA2FF512E3A17EC214CAD /* DevLogCore.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; + remoteInfo = Subproject; + }; + 3FA49F27369B1E23BB63D104 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 984FA2FF512E3A17EC214CAD /* DevLogCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogCore; + }; + DF4F66BE2FB6F8F900ED4BA9 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 984FA2FF512E3A17EC214CAD /* DevLogCore.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; + remoteInfo = DevLogCore; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ 01351069EBDFEFE9BEB4E26F /* ObserveSystemThemeUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveSystemThemeUseCaseImpl.swift; path = Sources/UseCase/UserPreferences/Theme/ObserveSystemThemeUseCaseImpl.swift; sourceTree = ""; }; 0135F093DDF8F5DB4D320010 /* FetchTodoCategoryPreferencesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoCategoryPreferencesUseCaseImpl.swift; path = Sources/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift; sourceTree = ""; }; @@ -200,6 +226,7 @@ 931E348B8445B611C6486B0D /* UndoDeleteWebPageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeleteWebPageUseCase.swift; path = Sources/UseCase/WebPage/Upsert/UndoDeleteWebPageUseCase.swift; sourceTree = ""; }; 9594B66FCEF77D951B887634 /* DeleteWebPageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteWebPageUseCase.swift; path = Sources/UseCase/WebPage/Upsert/DeleteWebPageUseCase.swift; sourceTree = ""; }; 975B88E82CD480E408410A60 /* FetchAuthProvidersUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchAuthProvidersUseCase.swift; path = Sources/UseCase/Auth/Provider/FetchAuthProvidersUseCase.swift; sourceTree = ""; }; + 984FA2FF512E3A17EC214CAD /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; 9B2B36142EDE421CE4CAF82E /* UpdateRecentSearchQueriesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateRecentSearchQueriesUseCaseImpl.swift; path = Sources/UseCase/UserPreferences/Search/UpdateRecentSearchQueriesUseCaseImpl.swift; sourceTree = ""; }; A0FB230E9723243D9C16E1C3 /* UpdatePushSettingsUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdatePushSettingsUseCase.swift; path = Sources/UseCase/UserData/Update/PushNotification/UpdatePushSettingsUseCase.swift; sourceTree = ""; }; A10FD608ACEAFA303C7743BA /* DeletePushNotificationUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeletePushNotificationUseCase.swift; path = Sources/UseCase/PushNotification/Delete/DeletePushNotificationUseCase.swift; sourceTree = ""; }; @@ -237,6 +264,7 @@ E4ED6069D8B0C24A2C3E295C /* UpdateTodoCategoryPreferencesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpdateTodoCategoryPreferencesUseCase.swift; path = Sources/UseCase/TodoCategory/Update/UpdateTodoCategoryPreferencesUseCase.swift; sourceTree = ""; }; E8C9C99957DF94BCF349AEE8 /* TodoPage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoPage.swift; path = Sources/Entity/TodoPage.swift; sourceTree = ""; }; EFCB23F0E622C1872DA543DB /* TogglePushNotificationReadUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TogglePushNotificationReadUseCaseImpl.swift; path = Sources/UseCase/PushNotification/Read/TogglePushNotificationReadUseCaseImpl.swift; sourceTree = ""; }; + EFEB9043B95C0711DFB83006 /* DomainAssembler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DomainAssembler.swift; path = Sources/DomainAssembler.swift; sourceTree = ""; }; F0378EC4E10380BAE247185B /* FetchWebPagesUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchWebPagesUseCase.swift; path = Sources/UseCase/WebPage/Fetch/FetchWebPagesUseCase.swift; sourceTree = ""; }; F276F5D3E9AD8963189E58AC /* DeleteWebPageUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DeleteWebPageUseCaseImpl.swift; path = Sources/UseCase/WebPage/Upsert/DeleteWebPageUseCaseImpl.swift; sourceTree = ""; }; F28AC36CBBB716A8B3C6FDDD /* WebPageRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageRepository.swift; path = Sources/Protocol/WebPageRepository.swift; sourceTree = ""; }; @@ -253,6 +281,7 @@ buildActionMask = 2147483647; files = ( 5044FDD5ED149194C21F45DD /* Foundation.framework in Frameworks */, + 7179FD5B4EBF8C744819A8DE /* DevLogCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -394,6 +423,7 @@ 8B8F6BA8BF451E1CBC307D0C /* Extension */, DE798AF67BA388CA15458757 /* Protocol */, 0AB4C554FD913FAB4BF9254D /* UseCase */, + EFEB9043B95C0711DFB83006 /* DomainAssembler.swift */, ); name = DevLogDomain; sourceTree = ""; @@ -404,6 +434,7 @@ B4BFBC14E31354BAE25BA2A4 /* Products */, 40116A7CE17130969F51069D /* Frameworks */, 534E4B81FFFA3D0023139ACE /* DevLogDomain */, + 88BF7FD280466FBA9905EAF1 /* Projects */, ); sourceTree = ""; }; @@ -472,6 +503,14 @@ name = Auth; sourceTree = ""; }; + 88BF7FD280466FBA9905EAF1 /* Projects */ = { + isa = PBXGroup; + children = ( + 984FA2FF512E3A17EC214CAD /* DevLogCore.xcodeproj */, + ); + name = Projects; + sourceTree = ""; + }; 8B8F6BA8BF451E1CBC307D0C /* Extension */ = { isa = PBXGroup; children = ( @@ -525,6 +564,7 @@ isa = PBXGroup; children = ( 3F08F6B94839E9021FCFC466 /* DevLogDomain.framework */, + 1A255290C54315FBBFEE3D5C /* DevLogCore.framework */, ); name = Products; sourceTree = ""; @@ -641,6 +681,14 @@ name = Protocol; sourceTree = ""; }; + DF4F66BB2FB6F8F800ED4BA9 /* Products */ = { + isa = PBXGroup; + children = ( + DF4F66BF2FB6F8F900ED4BA9 /* DevLogCore.framework */, + ); + name = Products; + sourceTree = ""; + }; E2AC2F400228CA6C5B5FCA33 /* PushNotification */ = { isa = PBXGroup; children = ( @@ -744,6 +792,7 @@ buildRules = ( ); dependencies = ( + C87AAAC2357E4D2820F6470A /* PBXTargetDependency */, ); name = DevLogDomain; productName = DevLogDomain; @@ -768,10 +817,14 @@ Base, ); mainGroup = 63B68BC59AF32C52B6CBF85B; - minimizedProjectReferenceProxies = 0; - preferredProjectObjectVersion = 77; productRefGroup = B4BFBC14E31354BAE25BA2A4 /* Products */; projectDirPath = ""; + projectReferences = ( + { + ProductGroup = DF4F66BB2FB6F8F800ED4BA9 /* Products */; + ProjectRef = 984FA2FF512E3A17EC214CAD /* DevLogCore.xcodeproj */; + }, + ); projectRoot = ""; targets = ( 7D1E74925088998D68BBFBBB /* DevLogDomain */, @@ -779,6 +832,23 @@ }; /* End PBXProject section */ +/* Begin PBXReferenceProxy section */ + 1A255290C54315FBBFEE3D5C /* DevLogCore.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogCore.framework; + remoteRef = 382F8B0169E4B5594A5A0CB5 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + DF4F66BF2FB6F8F900ED4BA9 /* DevLogCore.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogCore.framework; + remoteRef = DF4F66BE2FB6F8F900ED4BA9 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + /* Begin PBXResourcesBuildPhase section */ 0A4716162D54F03993DEF290 /* Resources */ = { isa = PBXResourcesBuildPhase; @@ -910,11 +980,20 @@ 9D39B3BEA4F1EC0A7AEB4927 /* DeleteWebPageUseCaseImpl.swift in Sources */, E821A95E218A4B131EAF7906 /* UndoDeleteWebPageUseCase.swift in Sources */, 4DF153046EACFF1116D0B084 /* UndoDeleteWebPageUseCaseImpl.swift in Sources */, + 76E68B1719213F527010811E /* DomainAssembler.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + C87AAAC2357E4D2820F6470A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogCore; + targetProxy = 3FA49F27369B1E23BB63D104 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ 3A4C7479653B809907982EE0 /* Debug */ = { isa = XCBuildConfiguration; @@ -1025,8 +1104,7 @@ MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 5.0; }; name = Release; diff --git a/Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift b/Application/DevLogDomain/Sources/DomainAssembler.swift similarity index 98% rename from Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift rename to Application/DevLogDomain/Sources/DomainAssembler.swift index a84c7de6..e0f3ad73 100644 --- a/Application/DevLogApp/Sources/App/Assembler/DomainAssembler.swift +++ b/Application/DevLogDomain/Sources/DomainAssembler.swift @@ -6,10 +6,11 @@ // import DevLogCore -import DevLogDomain -final class DomainAssembler: Assembler { - func assemble(_ container: any DIContainer) { +public final class DomainAssembler: Assembler { + public init() { } + + public func assemble(_ container: any DIContainer) { registerAuthUseCases(container) registerConnectivityUseCases(container) registerAuthProviderUseCases(container) From e72eb6c88659374d3472ac4cb61a42c5f4673202 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 15:59:23 +0900 Subject: [PATCH 23/46] =?UTF-8?q?refactor:=20DataAssembler=EB=A5=BC=20Data?= =?UTF-8?q?=20=EB=A0=88=EC=9D=B4=EC=96=B4=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/App/Assembler/Assembler.swift | 1 + .../DevLogData.xcodeproj/project.pbxproj | 40 +++++++++++++++++++ .../Sources}/DataAssembler.swift | 7 ++-- 3 files changed, 45 insertions(+), 3 deletions(-) rename Application/{DevLogApp/Sources/App/Assembler => DevLogData/Sources}/DataAssembler.swift (96%) diff --git a/Application/DevLogApp/Sources/App/Assembler/Assembler.swift b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift index 326371bb..10c62da6 100644 --- a/Application/DevLogApp/Sources/App/Assembler/Assembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift @@ -6,6 +6,7 @@ // import DevLogCore +import DevLogData import DevLogDomain final class AppAssembler: Assembler { diff --git a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj index d6cd444d..23303084 100644 --- a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj +++ b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj @@ -29,6 +29,7 @@ 3774F15D0E51BAE1445550C8 /* WebPageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE1FE53786D11AC7B192698 /* WebPageService.swift */; }; 3E47658FDC0F074222D07B2C /* AuthDataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */; }; 3F09F91345793F8C14F5CC05 /* WidgetSnapshotUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */; }; + 410CB3F18CADB18146AE82B7 /* DataAssembler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29CDDE9287D2855E4AF14021 /* DataAssembler.swift */; }; 41371B777FE701652CA2E798 /* AuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7154773B586C2D41307CD49 /* AuthenticationService.swift */; }; 415FA233A97D67108CA8FA60 /* ThemeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */; }; 48520BBB5EAEF3DB9D65CAE8 /* TodoPageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1ABB0ED51067433D3C90F02 /* TodoPageResponse.swift */; }; @@ -84,6 +85,7 @@ D5A27B2AC5CDF6C4878CC5FF /* PushNotificationPageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE96D070821D1FB62A155AB5 /* PushNotificationPageResponse.swift */; }; D7D9BD96D0F8E1647775A61A /* TodoService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E716EC015A5805DD7C949B /* TodoService.swift */; }; D910214884BD6503097E03F6 /* TodoCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */; }; + DCB68C9605BC30C11D84C5CD /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AECA90DBE02246762CB1ED1 /* DevLogCore.framework */; }; E00C306546BD8A52E12D2296 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; E5772C4226F405A20B26ED3B /* WebPageMetadataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */; }; E671A77745F90F217E091010 /* UserDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */; }; @@ -96,6 +98,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + 0AB04633AFB4B3F0B9AC60DC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 63198F8EBCD1DCBB407926F8 /* DevLogCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogCore; + }; 1981B85192DAF367924DB34F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */; @@ -110,6 +119,13 @@ remoteGlobalIDString = 7D1E74925088998D68BBFBBB; remoteInfo = DevLogDomain; }; + 2DF60F9020F11CA533852162 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 63198F8EBCD1DCBB407926F8 /* DevLogCore.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; + remoteInfo = Subproject; + }; 345F8284E22699C65B7FF89B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */; @@ -142,6 +158,7 @@ 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStore.swift; path = Sources/Protocol/UserDefaultsStore.swift; sourceTree = ""; }; 1AAF764A3F6E025A18E6A0BC /* WebPageRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageRepositoryImpl.swift; path = Sources/Repository/WebPageRepositoryImpl.swift; sourceTree = ""; }; 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStore.swift; path = Sources/Protocol/ThemeStore.swift; sourceTree = ""; }; + 29CDDE9287D2855E4AF14021 /* DataAssembler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataAssembler.swift; path = Sources/DataAssembler.swift; sourceTree = ""; }; 2DF12B44E80793EF948B211B /* PushNotificationCursorDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationCursorDTO.swift; path = Sources/DTO/PushNotificationCursorDTO.swift; sourceTree = ""; }; 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationService.swift; path = Sources/Protocol/PushNotificationService.swift; sourceTree = ""; }; 36E09221F6FBF67359105995 /* TodoCategoryRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryRepositoryImpl.swift; path = Sources/Repository/TodoCategoryRepositoryImpl.swift; sourceTree = ""; }; @@ -159,6 +176,7 @@ 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageDTO.swift; path = Sources/DTO/WebPageDTO.swift; sourceTree = ""; }; 60E716EC015A5805DD7C949B /* TodoService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoService.swift; path = Sources/Protocol/TodoService.swift; sourceTree = ""; }; 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationResponse.swift; path = Sources/DTO/PushNotificationResponse.swift; sourceTree = ""; }; + 63198F8EBCD1DCBB407926F8 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; 67FC3A5288FABA7441F4D6AA /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Logger.swift; path = Sources/Common/Logger.swift; sourceTree = ""; }; 7559825C27ED42F9F86EBAC1 /* AuthService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthService.swift; path = Sources/Protocol/AuthService.swift; sourceTree = ""; }; 78DB5B22BE2E31B18173E89E /* NetworkConnectivityRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkConnectivityRepositoryImpl.swift; path = Sources/Repository/NetworkConnectivityRepositoryImpl.swift; sourceTree = ""; }; @@ -190,6 +208,7 @@ files = ( E8FA3EF7AE26AA96A2168FEE /* Foundation.framework in Frameworks */, 7FD388EB6C3123479B304478 /* DevLogDomain.framework in Frameworks */, + DCB68C9605BC30C11D84C5CD /* DevLogCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -221,6 +240,7 @@ children = ( 4AB6E00A38C37CDBF82B57FD /* DevLogData.framework */, 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */, + 3AECA90DBE02246762CB1ED1 /* DevLogCore.framework */, ); name = Products; sourceTree = ""; @@ -267,6 +287,7 @@ isa = PBXGroup; children = ( F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */, + 63198F8EBCD1DCBB407926F8 /* DevLogCore.xcodeproj */, ); name = Projects; sourceTree = ""; @@ -279,6 +300,7 @@ 7FB2D81FB32074F3D7A657A3 /* Mapper */, 28BA3BE754C65F0ABE0B18D3 /* Protocol */, 934C5041615819F6B6124803 /* Repository */, + 29CDDE9287D2855E4AF14021 /* DataAssembler.swift */, ); name = DevLogData; sourceTree = ""; @@ -356,6 +378,7 @@ ); dependencies = ( C2D9D7E526019AEF507D8EFD /* PBXTargetDependency */, + EAD8C47A731CEFD89B8D06EF /* PBXTargetDependency */, ); name = DevLogData; productName = DevLogData; @@ -389,6 +412,10 @@ ProductGroup = 27CDFCFF9F1093391B8566A1 /* Products */; ProjectRef = F7FCB65CAFCBF2BF1791B45B /* DevLogDomain.xcodeproj */; }, + { + ProductGroup = 27CDFCFF9F1093391B8566A1 /* Products */; + ProjectRef = 63198F8EBCD1DCBB407926F8 /* DevLogCore.xcodeproj */; + }, ); projectRoot = ""; targets = ( @@ -405,6 +432,13 @@ remoteRef = 6E927734EC01B34C7A7B01C2 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 3AECA90DBE02246762CB1ED1 /* DevLogCore.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogCore.framework; + remoteRef = 2DF60F9020F11CA533852162 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -466,6 +500,7 @@ B35B7FCCDD45C7C302B3E94D /* TodoMapping.swift in Sources */, 7A1360E04BA36E6476DB4430 /* UserProfileMapping.swift in Sources */, 7C9171AA49A09F0D8F8A4419 /* WebPageMapping.swift in Sources */, + 410CB3F18CADB18146AE82B7 /* DataAssembler.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -477,6 +512,11 @@ name = DevLogDomain; targetProxy = 1981B85192DAF367924DB34F /* PBXContainerItemProxy */; }; + EAD8C47A731CEFD89B8D06EF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogCore; + targetProxy = 0AB04633AFB4B3F0B9AC60DC /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ diff --git a/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift b/Application/DevLogData/Sources/DataAssembler.swift similarity index 96% rename from Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift rename to Application/DevLogData/Sources/DataAssembler.swift index ad97c550..eca40781 100644 --- a/Application/DevLogApp/Sources/App/Assembler/DataAssembler.swift +++ b/Application/DevLogData/Sources/DataAssembler.swift @@ -6,11 +6,12 @@ // import DevLogCore -import DevLogData import DevLogDomain -final class DataAssembler: Assembler { - func assemble(_ container: any DIContainer) { +public final class DataAssembler: Assembler { + public init() { } + + public func assemble(_ container: any DIContainer) { container.register(AuthenticationRepository.self) { AuthenticationRepositoryImpl( authService: container.resolve(AuthService.self), From 43b28e81311543a2170a7206ad2290ab180fcc44 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 16:10:20 +0900 Subject: [PATCH 24/46] =?UTF-8?q?refactor:=20PersistenceAssembler=EB=A5=BC?= =?UTF-8?q?=20Storage=20=EB=A0=88=EC=9D=B4=EC=96=B4=EB=A1=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/App/Assembler/Assembler.swift | 1 + .../DevLogStorage.xcodeproj/project.pbxproj | 40 +++++++++++++++++++ .../Sources}/PersistenceAssembler.swift | 7 ++-- 3 files changed, 45 insertions(+), 3 deletions(-) rename Application/{DevLogApp/Sources/App/Assembler => DevLogStorage/Sources}/PersistenceAssembler.swift (89%) diff --git a/Application/DevLogApp/Sources/App/Assembler/Assembler.swift b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift index 10c62da6..e911acdf 100644 --- a/Application/DevLogApp/Sources/App/Assembler/Assembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift @@ -8,6 +8,7 @@ import DevLogCore import DevLogData import DevLogDomain +import DevLogStorage final class AppAssembler: Assembler { private let assemblers: [Assembler] = [ diff --git a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj index 209ebbf7..6ed79d71 100644 --- a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj +++ b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj @@ -14,6 +14,8 @@ 7044FCFCA32C8AA8F6FF4474 /* ThemeStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */; }; 7D8DE74BD24B456D42B04806 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F334BCFC52C730D5901F6051 /* DevLogDomain.framework */; }; 9814DBF1A0DCD650FEF5A376 /* WidgetSnapshotUpdaterImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */; }; + A11111111111111111111111 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A55555555555555555555555 /* DevLogCore.framework */; }; + A33333333333333333333333 /* PersistenceAssembler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A22222222222222222222222 /* PersistenceAssembler.swift */; }; B1EAEC66B3C4F0B16072F5BE /* WidgetSnapshotPreferenceStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */; }; E53E13B73BFAF0C51013ECA2 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */; }; /* End PBXBuildFile section */ @@ -26,6 +28,20 @@ remoteGlobalIDString = 687DD42230CC25053ABB5FB8; remoteInfo = DevLogWidgetCore; }; + A66666666666666666666666 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A44444444444444444444444 /* DevLogCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogCore; + }; + A77777777777777777777777 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A44444444444444444444444 /* DevLogCore.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; + remoteInfo = Subproject; + }; 7CD34B27DE3CD401A888D01C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */; @@ -72,6 +88,8 @@ 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdaterImpl.swift; path = Sources/Persistence/WidgetSnapshotUpdaterImpl.swift; sourceTree = ""; }; 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogStorage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 98B16FCDA8A71E2E4E1DC05E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + A22222222222222222222222 /* PersistenceAssembler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PersistenceAssembler.swift; path = Sources/PersistenceAssembler.swift; sourceTree = ""; }; + A44444444444444444444444 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../../Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStoreImpl.swift; path = Sources/Persistence/WebPageImageStoreImpl.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -85,6 +103,7 @@ 7D8DE74BD24B456D42B04806 /* DevLogDomain.framework in Frameworks */, E53E13B73BFAF0C51013ECA2 /* DevLogWidgetCore.framework in Frameworks */, 3B8FAEC025F373D4CFC262D4 /* DevLogData.framework in Frameworks */, + A11111111111111111111111 /* DevLogCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -110,6 +129,7 @@ 63CE47D539EE6F9653C99773 /* DevLogStorage */ = { isa = PBXGroup; children = ( + A22222222222222222222222 /* PersistenceAssembler.swift */, 721064495EFC6DDBA559F465 /* Persistence */, ); name = DevLogStorage; @@ -143,6 +163,7 @@ 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */, 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */, AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */, + A44444444444444444444444 /* DevLogCore.xcodeproj */, ); name = Projects; sourceTree = ""; @@ -154,6 +175,7 @@ F334BCFC52C730D5901F6051 /* DevLogDomain.framework */, 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */, 493A5D0B4274807F2B948AB3 /* DevLogData.framework */, + A55555555555555555555555 /* DevLogCore.framework */, ); name = Products; sourceTree = ""; @@ -186,6 +208,7 @@ 083FDD9BBD997A11EED7ACA9 /* PBXTargetDependency */, 8C9EB60C8E58A67726AF0EF1 /* PBXTargetDependency */, 65214D4CBB998A4369598E01 /* PBXTargetDependency */, + A88888888888888888888888 /* PBXTargetDependency */, ); name = DevLogStorage; productName = DevLogStorage; @@ -227,6 +250,10 @@ ProductGroup = C96806E27CED4BE0CA95A9B0 /* Products */; ProjectRef = AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */; }, + { + ProductGroup = C96806E27CED4BE0CA95A9B0 /* Products */; + ProjectRef = A44444444444444444444444 /* DevLogCore.xcodeproj */; + }, ); projectRoot = ""; targets = ( @@ -250,6 +277,13 @@ remoteRef = 7CD34B27DE3CD401A888D01C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + A55555555555555555555555 /* DevLogCore.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogCore.framework; + remoteRef = A77777777777777777777777 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; F334BCFC52C730D5901F6051 /* DevLogDomain.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -279,6 +313,7 @@ 50BBA1C19A7C61B8B8F3A68B /* WebPageImageStoreImpl.swift in Sources */, B1EAEC66B3C4F0B16072F5BE /* WidgetSnapshotPreferenceStoreImpl.swift in Sources */, 9814DBF1A0DCD650FEF5A376 /* WidgetSnapshotUpdaterImpl.swift in Sources */, + A33333333333333333333333 /* PersistenceAssembler.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -300,6 +335,11 @@ name = DevLogWidgetCore; targetProxy = 6556E45987F0D11205D84D04 /* PBXContainerItemProxy */; }; + A88888888888888888888888 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogCore; + targetProxy = A66666666666666666666666 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ diff --git a/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift b/Application/DevLogStorage/Sources/PersistenceAssembler.swift similarity index 89% rename from Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift rename to Application/DevLogStorage/Sources/PersistenceAssembler.swift index afadf801..9898c3e6 100644 --- a/Application/DevLogApp/Sources/App/Assembler/PersistenceAssembler.swift +++ b/Application/DevLogStorage/Sources/PersistenceAssembler.swift @@ -7,11 +7,12 @@ import DevLogCore import DevLogData -import DevLogStorage import DevLogWidgetCore -final class PersistenceAssembler: Assembler { - func assemble(_ container: any DIContainer) { +public final class PersistenceAssembler: Assembler { + public init() { } + + public func assemble(_ container: any DIContainer) { container.register(UserDefaultsStore.self) { UserDefaultsStoreImpl() } From 72d7bec7868f7abb1d4e690e79b7699243014701 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 16:27:04 +0900 Subject: [PATCH 25/46] =?UTF-8?q?refactor:=20InfraAssembler=EB=A5=BC=20Inf?= =?UTF-8?q?ra=20=EB=A0=88=EC=9D=B4=EC=96=B4=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/App/Assembler/Assembler.swift | 1 + .../DevLogInfra.xcodeproj/project.pbxproj | 40 +++++++++++++++++++ .../Sources}/InfraAssembler.swift | 7 ++-- 3 files changed, 45 insertions(+), 3 deletions(-) rename Application/{DevLogApp/Sources/App/Assembler => DevLogInfra/Sources}/InfraAssembler.swift (92%) diff --git a/Application/DevLogApp/Sources/App/Assembler/Assembler.swift b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift index e911acdf..8f865d40 100644 --- a/Application/DevLogApp/Sources/App/Assembler/Assembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift @@ -8,6 +8,7 @@ import DevLogCore import DevLogData import DevLogDomain +import DevLogInfra import DevLogStorage final class AppAssembler: Assembler { diff --git a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj index 7b54552d..1668ea17 100644 --- a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj +++ b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj @@ -24,6 +24,8 @@ 87F2CCAD35FD485467397CCC /* WebPageServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = E93766DC3248CC084F8CFA73 /* WebPageServiceImpl.swift */; }; 93D79429D184808FB702BF2D /* AppleAuthenticationServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E56286B1275FC5BD988C94B /* AppleAuthenticationServiceImpl.swift */; }; 9529B735E38CE98A8EC12AC3 /* TopViewControllerProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED31F0EEEF764BB7538C585 /* TopViewControllerProvider.swift */; }; + B11111111111111111111111 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B55555555555555555555555 /* DevLogCore.framework */; }; + B33333333333333333333333 /* InfraAssembler.swift in Sources */ = {isa = PBXBuildFile; fileRef = B22222222222222222222222 /* InfraAssembler.swift */; }; D6A1524366DC5CF153821979 /* NWPathConnectivityProviderImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */; }; E747320CAD03A579976E87F8 /* FirebaseFunctions in Frameworks */ = {isa = PBXBuildFile; productRef = 172AF9DE3BC54E9E0B4EFD19 /* FirebaseFunctions */; }; EA3F834C61E50B4F60789473 /* TodoCategoryServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */; }; @@ -44,6 +46,20 @@ remoteGlobalIDString = D9D76C33D8B4790694BD3488; remoteInfo = DevLogData; }; + B66666666666666666666666 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B44444444444444444444444 /* DevLogCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogCore; + }; + B77777777777777777777777 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B44444444444444444444444 /* DevLogCore.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; + remoteInfo = Subproject; + }; 3941472A0F8E4DA796217D2B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = A748C00357094C72BA72DC72 /* DevLogDomain.xcodeproj */; @@ -80,7 +96,9 @@ 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FirestorePath.swift; path = Sources/Common/FirestorePath.swift; sourceTree = ""; }; 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; A748C00357094C72BA72DC72 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; + B22222222222222222222222 /* InfraAssembler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = InfraAssembler.swift; path = Sources/InfraAssembler.swift; sourceTree = ""; }; B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NWPathConnectivityProviderImpl.swift; path = Sources/Service/NWPathConnectivityProviderImpl.swift; sourceTree = ""; }; + B44444444444444444444444 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoServiceImpl.swift; path = Sources/Service/TodoServiceImpl.swift; sourceTree = ""; }; C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationServiceImpl.swift; path = Sources/Service/PushNotificationServiceImpl.swift; sourceTree = ""; }; CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryServiceImpl.swift; path = Sources/Service/TodoCategoryServiceImpl.swift; sourceTree = ""; }; @@ -106,6 +124,7 @@ EE62AAD289D9CED31CC9E05D /* GoogleSignIn in Frameworks */, FEBF252AD70A910C914D3D22 /* Nexa in Frameworks */, F085DED20E80F63AE071D8BA /* DevLogData.framework in Frameworks */, + B11111111111111111111111 /* DevLogCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -118,6 +137,7 @@ 592C8B7B099933759AB316A5 /* DevLogInfra.framework */, 8C4421AE6B9E4E419E73297F /* DevLogDomain.framework */, A4F874032FD57C0BBCC41C64 /* DevLogData.framework */, + B55555555555555555555555 /* DevLogCore.framework */, ); name = Products; sourceTree = ""; @@ -190,6 +210,7 @@ 959D79D1263CC74E32B40D78 /* DevLogInfra */ = { isa = PBXGroup; children = ( + B22222222222222222222222 /* InfraAssembler.swift */, 244A3B94B9BD4908079A38FB /* Common */, 3B9BF1B497E846541A8B6685 /* Extension */, 66108C2B6459C7D70E0EF39E /* Service */, @@ -202,6 +223,7 @@ children = ( DC20615F7FBF2DEEB480D826 /* DevLogData.xcodeproj */, A748C00357094C72BA72DC72 /* DevLogDomain.xcodeproj */, + B44444444444444444444444 /* DevLogCore.xcodeproj */, ); name = Projects; sourceTree = ""; @@ -241,6 +263,7 @@ dependencies = ( 342FB70B2E884012B67F8B38 /* PBXTargetDependency */, B62EE119F71162DAB0F9D034 /* PBXTargetDependency */, + B88888888888888888888888 /* PBXTargetDependency */, ); name = DevLogInfra; packageProductDependencies = ( @@ -291,6 +314,10 @@ ProductGroup = 0488BFD2A2F470EEE29679F1 /* Products */; ProjectRef = A748C00357094C72BA72DC72 /* DevLogDomain.xcodeproj */; }, + { + ProductGroup = 0488BFD2A2F470EEE29679F1 /* Products */; + ProjectRef = B44444444444444444444444 /* DevLogCore.xcodeproj */; + }, ); projectRoot = ""; targets = ( @@ -314,6 +341,13 @@ remoteRef = 92ED4507B81AC42C599EE7EE /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + B55555555555555555555555 /* DevLogCore.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogCore.framework; + remoteRef = B77777777777777777777777 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -349,6 +383,7 @@ 4A36236096C643DA1FF29771 /* UserServiceImpl.swift in Sources */, 70CDB738E0DE3895B7539B16 /* WebPageMetadataServiceImpl.swift in Sources */, 87F2CCAD35FD485467397CCC /* WebPageServiceImpl.swift in Sources */, + B33333333333333333333333 /* InfraAssembler.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -365,6 +400,11 @@ name = DevLogData; targetProxy = 242875057F793AB5E271751C /* PBXContainerItemProxy */; }; + B88888888888888888888888 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogCore; + targetProxy = B66666666666666666666666 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ diff --git a/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift b/Application/DevLogInfra/Sources/InfraAssembler.swift similarity index 92% rename from Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift rename to Application/DevLogInfra/Sources/InfraAssembler.swift index ded4d920..73ec991a 100644 --- a/Application/DevLogApp/Sources/App/Assembler/InfraAssembler.swift +++ b/Application/DevLogInfra/Sources/InfraAssembler.swift @@ -7,10 +7,11 @@ import DevLogCore import DevLogData -import DevLogInfra -final class InfraAssembler: Assembler { - func assemble(_ container: any DIContainer) { +public final class InfraAssembler: Assembler { + public init() { } + + public func assemble(_ container: any DIContainer) { container.register( AuthenticationService.self, name: "AppleAuthenticationService" From 768284048a801599c2223dde4a9c7e6722fee20e Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 16:33:58 +0900 Subject: [PATCH 26/46] =?UTF-8?q?chore:=20xcproj=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=A6=AC=EB=93=9C=EB=AF=B8,=20gitignore=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj | 8 -------- 1 file changed, 8 deletions(-) diff --git a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj index 5719445a..ed8cc78c 100644 --- a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj +++ b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj @@ -21,8 +21,6 @@ DFD3A9722F8E89DD001DA7CD /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9712F8E89DD001DA7CD /* WidgetKit.framework */; }; DFD3A9742F8E89DD001DA7CD /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9732F8E89DD001DA7CD /* SwiftUI.framework */; }; DFD3A97F2F8E89DF001DA7CD /* DevLogWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - DFD645402EC827A10073E133 /* .gitignore in Resources */ = {isa = PBXBuildFile; fileRef = DFD6453F2EC827A10073E133 /* .gitignore */; }; - DFD74E2F2E423EA700613803 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = DFD74E2E2E423EA700613803 /* README.md */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -173,8 +171,6 @@ DFD3A9712F8E89DD001DA7CD /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; DFD3A9732F8E89DD001DA7CD /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; DFD48B002DC4D6E2005905C5 /* DevLog.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DevLog.app; sourceTree = BUILT_PRODUCTS_DIR; }; - DFD6453F2EC827A10073E133 /* .gitignore */ = {isa = PBXFileReference; lastKnownFileType = text; path = ../../.gitignore; sourceTree = ""; }; - DFD74E2E2E423EA700613803 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = ../../README.md; sourceTree = ""; }; E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; /* End PBXFileReference section */ @@ -294,8 +290,6 @@ DFD48AF72DC4D6E2005905C5 = { isa = PBXGroup; children = ( - DFD74E2E2E423EA700613803 /* README.md */, - DFD6453F2EC827A10073E133 /* .gitignore */, DF8AB7982E938B0B00E50BBF /* Sources */, DF34164A2E45F67C00F9312B /* ../../DevLog_Unit */, DFD3A9752F8E89DD001DA7CD /* ../../Widget/DevLogWidgetExtension */, @@ -544,8 +538,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - DFD645402EC827A10073E133 /* .gitignore in Resources */, - DFD74E2F2E423EA700613803 /* README.md in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From a77d4811ec14ca15ff8a5aa28d630a82717630e4 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 17:43:38 +0900 Subject: [PATCH 27/46] =?UTF-8?q?refactor:=20Presentation=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=EC=9D=98=20Data=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 40 ++----------------- .../Sources/Common/LoadingState.swift | 1 - .../Sources/Extension/Color+Hex.swift | 1 - .../Sources/Extension/Error+SocialLogin.swift | 23 +++++++++++ .../Sources/Protocol/Store.swift | 1 - .../Structure/Profile/ActivityKindItem.swift | 1 - .../Profile/HeatmapActivityItem.swift | 1 - .../Structure/Profile/HeatmapDay.swift | 1 - .../Structure/Profile/HeatmapMonth.swift | 1 - .../Structure/Profile/HeatmapQuarter.swift | 1 - .../Structure/PushNotificationItem.swift | 1 - .../Structure/Todo/RecentTodoItem.swift | 1 - .../Todo/SystemTodoCategoryItem.swift | 1 - .../Structure/Todo/TodayTodoItem.swift | 1 - .../Structure/Todo/TodoCategoryItem.swift | 1 - .../Sources/Structure/Todo/TodoIDItem.swift | 1 - .../Sources/Structure/Todo/TodoListItem.swift | 1 - .../Structure/Todo/TodoReferenceItem.swift | 1 - .../Structure/Todo/UserTodoCategoryItem.swift | 1 - .../Sources/Structure/WebPageItem.swift | 1 - .../Sources/ViewModel/AccountViewModel.swift | 1 - .../Sources/ViewModel/HomeViewModel.swift | 1 - .../Sources/ViewModel/LoginViewModel.swift | 1 - .../Sources/ViewModel/MainViewModel.swift | 2 +- .../Sources/ViewModel/ProfileViewModel.swift | 1 - .../PushNotificationListViewModel.swift | 1 - .../PushNotificationSettingsViewModel.swift | 1 - .../Sources/ViewModel/RootViewModel.swift | 1 - .../Sources/ViewModel/SearchViewModel.swift | 1 - .../Sources/ViewModel/SettingViewModel.swift | 1 - .../Sources/ViewModel/TodayViewModel.swift | 1 - .../ViewModel/TodoDetailViewModel.swift | 1 - .../ViewModel/TodoEditorViewModel.swift | 1 - .../Sources/ViewModel/TodoListViewModel.swift | 1 - .../ViewModel/TodoManageViewModel.swift | 1 - 35 files changed, 28 insertions(+), 69 deletions(-) create mode 100644 Application/DevLogPresentation/Sources/Extension/Error+SocialLogin.swift diff --git a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj index c9fcd9eb..1b574696 100644 --- a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj +++ b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj @@ -41,8 +41,8 @@ 5417F145841A7CAF38C83F35 /* TodoListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B45C610096E5AC2967606A6 /* TodoListView.swift */; }; 54FB7AB76BCAED80E9CB742D /* WebItemRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9A20E0402D598F5587EAFFE /* WebItemRow.swift */; }; 55F93EBF8B32C5B838DC13A3 /* TodoDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A21824C2F6D3F1903489FFF2 /* TodoDetailViewModel.swift */; }; - 579CB25DE472412C0223A8CD /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB1FD32F1E8C4D75A63D26B9 /* DevLogData.framework */; }; 59A456649207F4FA33CCD747 /* TodoManageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */; }; + 5AEA41661900EE365204FD79 /* Error+SocialLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1C3E84C523AD6F3484EE748 /* Error+SocialLogin.swift */; }; 5C687AA63F317542D6EBAC59 /* LoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C39861EE0C254CCC9A608201 /* LoginViewModel.swift */; }; 5E60673D981843248E402D54 /* RootViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1907637E4162396EEDF058C2 /* RootViewModel.swift */; }; 72DEE86FF7C989E685B4AC0B /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */; }; @@ -90,13 +90,6 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0400B17B467B3D0D2BA03C31 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; - remoteInfo = Subproject; - }; 0B11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; @@ -104,13 +97,6 @@ remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; remoteInfo = DevLogCore; }; - 0B2037A08C974203C72B35DD /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = D9D76C33D8B4790694BD3488; - remoteInfo = DevLogData; - }; 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; @@ -169,7 +155,6 @@ 7E39559C85F238BBE47342B5 /* HomeViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewModel.swift; path = Sources/ViewModel/HomeViewModel.swift; sourceTree = ""; }; 7F04A173095F3737E4487EF7 /* ProfileView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileView.swift; path = Sources/Profile/ProfileView.swift; sourceTree = ""; }; 8D21657B3F9D63E2BE6DD6B4 /* HeatmapView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapView.swift; path = Sources/Profile/HeatmapView.swift; sourceTree = ""; }; - 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; 9305330DB8199E1911FAAF49 /* TodoIDItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoIDItem.swift; path = Sources/Structure/Todo/TodoIDItem.swift; sourceTree = ""; }; 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "EnvironmentValues+.swift"; path = "Sources/Extension/EnvironmentValues+.swift"; sourceTree = ""; }; 9340555B2B620464698851A5 /* TodoManageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageView.swift; path = Sources/Home/TodoManageView.swift; sourceTree = ""; }; @@ -206,6 +191,7 @@ D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Color+Hex.swift"; path = "Sources/Extension/Color+Hex.swift"; sourceTree = ""; }; E06ED9387372D891F65B1CAD /* LoadingState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingState.swift; path = Sources/Common/LoadingState.swift; sourceTree = ""; }; E0C555707203C5E83B5B5D7B /* Tag+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Tag+.swift"; path = "Sources/Common/Component/Tag+.swift"; sourceTree = ""; }; + E1C3E84C523AD6F3484EE748 /* Error+SocialLogin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Error+SocialLogin.swift"; path = "Sources/Extension/Error+SocialLogin.swift"; sourceTree = ""; }; E272AFC7BED9E140B0BC0C5B /* TodoEditorViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoEditorViewModel.swift; path = Sources/ViewModel/TodoEditorViewModel.swift; sourceTree = ""; }; E6D3BFDF45BC61BF099D5E0A /* PushNotificationListViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationListViewModel.swift; path = Sources/ViewModel/PushNotificationListViewModel.swift; sourceTree = ""; }; F2B9AAA5D7DDF4A39E678406 /* UserTodoCategoryItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserTodoCategoryItem.swift; path = Sources/Structure/Todo/UserTodoCategoryItem.swift; sourceTree = ""; }; @@ -226,7 +212,6 @@ CC36598B842BA60E284D4A9E /* Foundation.framework in Frameworks */, E91B53D33C90B9298E0B2EA1 /* DevLogDomain.framework in Frameworks */, 1B8D0C5D8C506642FFB8F9FA /* OrderedCollections in Frameworks */, - 579CB25DE472412C0223A8CD /* DevLogData.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -248,7 +233,6 @@ 0E11B22C33D44E55F6677889 /* DevLogCore.framework */, 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */, 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */, - AB1FD32F1E8C4D75A63D26B9 /* DevLogData.framework */, ); name = Products; sourceTree = ""; @@ -257,6 +241,7 @@ isa = PBXGroup; children = ( D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */, + E1C3E84C523AD6F3484EE748 /* Error+SocialLogin.swift */, ); name = Extension; sourceTree = ""; @@ -338,7 +323,6 @@ children = ( 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */, B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */, - 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */, ); name = Projects; sourceTree = ""; @@ -555,7 +539,6 @@ dependencies = ( 0F11B22C33D44E55F6677889 /* PBXTargetDependency */, C8EA2345A40DFA6BCCD803EE /* PBXTargetDependency */, - CB6DAEBD19915F981BA92139 /* PBXTargetDependency */, ); name = DevLogPresentation; packageProductDependencies = ( @@ -603,10 +586,6 @@ ProductGroup = 03D4331F04C462F4C642860F /* Products */; ProjectRef = B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */; }, - { - ProductGroup = 03D4331F04C462F4C642860F /* Products */; - ProjectRef = 8ECF3A755EF0EF7F7BAEF5EC /* DevLogData.xcodeproj */; - }, ); projectRoot = ""; targets = ( @@ -630,13 +609,6 @@ remoteRef = F62246BFB23AD8069C3C9A25 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - AB1FD32F1E8C4D75A63D26B9 /* DevLogData.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogData.framework; - remoteRef = 0400B17B467B3D0D2BA03C31 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ @@ -727,6 +699,7 @@ AB242EFD5B25055A0F4B3436 /* TodoEditorViewModel.swift in Sources */, 246479E87ECFD0B2DDDA1F75 /* TodoListViewModel.swift in Sources */, 59A456649207F4FA33CCD747 /* TodoManageViewModel.swift in Sources */, + 5AEA41661900EE365204FD79 /* Error+SocialLogin.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -743,11 +716,6 @@ name = DevLogDomain; targetProxy = 63A78AEC0654C9B6030C055B /* PBXContainerItemProxy */; }; - CB6DAEBD19915F981BA92139 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DevLogData; - targetProxy = 0B2037A08C974203C72B35DD /* PBXContainerItemProxy */; - }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ diff --git a/Application/DevLogPresentation/Sources/Common/LoadingState.swift b/Application/DevLogPresentation/Sources/Common/LoadingState.swift index 4d60df8e..be02ec59 100644 --- a/Application/DevLogPresentation/Sources/Common/LoadingState.swift +++ b/Application/DevLogPresentation/Sources/Common/LoadingState.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData @MainActor public final class LoadingState { diff --git a/Application/DevLogPresentation/Sources/Extension/Color+Hex.swift b/Application/DevLogPresentation/Sources/Extension/Color+Hex.swift index 98e5e442..b511f953 100644 --- a/Application/DevLogPresentation/Sources/Extension/Color+Hex.swift +++ b/Application/DevLogPresentation/Sources/Extension/Color+Hex.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogData extension Color { static var randomValue: Color { diff --git a/Application/DevLogPresentation/Sources/Extension/Error+SocialLogin.swift b/Application/DevLogPresentation/Sources/Extension/Error+SocialLogin.swift new file mode 100644 index 00000000..22c11e28 --- /dev/null +++ b/Application/DevLogPresentation/Sources/Extension/Error+SocialLogin.swift @@ -0,0 +1,23 @@ +// +// Error+SocialLogin.swift +// DevLog +// +// Created by opfic on 5/15/26. +// + +import AuthenticationServices +import Foundation + +extension Error { + var isSocialLoginCancelled: Bool { + switch self { + case let authError as ASAuthorizationError: + return authError.code == .canceled + case let webAuthError as ASWebAuthenticationSessionError: + return webAuthError.code == .canceledLogin + default: + let nsError = self as NSError + return nsError.domain == "com.google.GIDSignIn" && nsError.code == -5 + } + } +} diff --git a/Application/DevLogPresentation/Sources/Protocol/Store.swift b/Application/DevLogPresentation/Sources/Protocol/Store.swift index e76190dc..d3b5360e 100644 --- a/Application/DevLogPresentation/Sources/Protocol/Store.swift +++ b/Application/DevLogPresentation/Sources/Protocol/Store.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData @MainActor public protocol Store: AnyObject { diff --git a/Application/DevLogPresentation/Sources/Structure/Profile/ActivityKindItem.swift b/Application/DevLogPresentation/Sources/Structure/Profile/ActivityKindItem.swift index 902b4823..90943706 100644 --- a/Application/DevLogPresentation/Sources/Structure/Profile/ActivityKindItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Profile/ActivityKindItem.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogData public struct ActivityKindItem: Identifiable, Hashable { private let activityKind: ActivityKind diff --git a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapActivityItem.swift b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapActivityItem.swift index e842ae38..65ca0449 100644 --- a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapActivityItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapActivityItem.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData public struct HeatmapActivityItem: Identifiable, Hashable, Comparable { public var id: String { todoId } diff --git a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapDay.swift b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapDay.swift index c25bf0da..d728c0bd 100644 --- a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapDay.swift +++ b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapDay.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData public struct HeatmapDay: Hashable { public let date: Date diff --git a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapMonth.swift b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapMonth.swift index 99e76e65..84d150d8 100644 --- a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapMonth.swift +++ b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapMonth.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData public struct HeatmapMonth: Identifiable, Hashable { public var id: Date { monthStart } diff --git a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapQuarter.swift b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapQuarter.swift index 79af2466..5b9881db 100644 --- a/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapQuarter.swift +++ b/Application/DevLogPresentation/Sources/Structure/Profile/HeatmapQuarter.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData public struct HeatmapQuarter: Identifiable, Hashable { public var id: Date { quarterStart } diff --git a/Application/DevLogPresentation/Sources/Structure/PushNotificationItem.swift b/Application/DevLogPresentation/Sources/Structure/PushNotificationItem.swift index ff40e746..9409cdef 100644 --- a/Application/DevLogPresentation/Sources/Structure/PushNotificationItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/PushNotificationItem.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData public struct PushNotificationItem: Identifiable, Hashable { public let id: String diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/RecentTodoItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/RecentTodoItem.swift index b15ab8f3..d2d0fd71 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/RecentTodoItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/RecentTodoItem.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData public struct RecentTodoItem: Identifiable, Hashable { public let id: String diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/SystemTodoCategoryItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/SystemTodoCategoryItem.swift index d1168bed..8ed18fc5 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/SystemTodoCategoryItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/SystemTodoCategoryItem.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogData public struct SystemTodoCategoryItem: Identifiable, Hashable { public let systemTodoCategory: SystemTodoCategory diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/TodayTodoItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodayTodoItem.swift index 0f4f6463..cd1e65ef 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/TodayTodoItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/TodayTodoItem.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData public struct TodayTodoItem: Identifiable, Hashable { public let id: String diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/TodoCategoryItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodoCategoryItem.swift index 50e2573d..f6ca4bf0 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/TodoCategoryItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/TodoCategoryItem.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogData public struct TodoCategoryItem: Identifiable, Hashable { public var category: TodoCategory diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/TodoIDItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodoIDItem.swift index c1c74401..1985c1b9 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/TodoIDItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/TodoIDItem.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData public struct TodoIdItem: Identifiable, Hashable { public let id: String diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/TodoListItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodoListItem.swift index c9dd6a70..b8087753 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/TodoListItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/TodoListItem.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData public struct TodoListItem: Identifiable, Hashable { public let id: String diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/TodoReferenceItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/TodoReferenceItem.swift index 28a54c02..f2538645 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/TodoReferenceItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/TodoReferenceItem.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData public struct TodoReferenceItem: Equatable { public let id: String diff --git a/Application/DevLogPresentation/Sources/Structure/Todo/UserTodoCategoryItem.swift b/Application/DevLogPresentation/Sources/Structure/Todo/UserTodoCategoryItem.swift index d464f6e7..02ed8d7e 100644 --- a/Application/DevLogPresentation/Sources/Structure/Todo/UserTodoCategoryItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/Todo/UserTodoCategoryItem.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogData public struct UserTodoCategoryItem: Identifiable, Hashable { public let userTodoCategory: UserTodoCategory diff --git a/Application/DevLogPresentation/Sources/Structure/WebPageItem.swift b/Application/DevLogPresentation/Sources/Structure/WebPageItem.swift index 78ab9b98..c4d45d6a 100644 --- a/Application/DevLogPresentation/Sources/Structure/WebPageItem.swift +++ b/Application/DevLogPresentation/Sources/Structure/WebPageItem.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogData public struct WebPageItem: Identifiable, Hashable { private let metadata: WebPage diff --git a/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift index 0c68abef..aefc4eb7 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData @Observable final class AccountViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/HomeViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/HomeViewModel.swift index cfcdaca3..c98bb182 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/HomeViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/HomeViewModel.swift @@ -8,7 +8,6 @@ import Foundation import Combine import DevLogDomain -import DevLogData @Observable final class HomeViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift index a251a0f4..55864dc1 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData @Observable final class LoginViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/MainViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/MainViewModel.swift index c9bc7756..2f94f7d6 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/MainViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/MainViewModel.swift @@ -9,7 +9,7 @@ import Foundation import Combine import UserNotifications import DevLogDomain -import DevLogData +import DevLogCore @Observable final class MainViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/ProfileViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/ProfileViewModel.swift index 49e7c9dd..8216c05e 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/ProfileViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/ProfileViewModel.swift @@ -8,7 +8,6 @@ import Foundation import Combine import DevLogDomain -import DevLogData @Observable final class ProfileViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/PushNotificationListViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/PushNotificationListViewModel.swift index c1d1d4c1..bd473ec4 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/PushNotificationListViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/PushNotificationListViewModel.swift @@ -8,7 +8,6 @@ import Foundation import Combine import DevLogDomain -import DevLogData @Observable final class PushNotificationListViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/PushNotificationSettingsViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/PushNotificationSettingsViewModel.swift index 068d5f93..7619b8b0 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/PushNotificationSettingsViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/PushNotificationSettingsViewModel.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData @Observable final class PushNotificationSettingsViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/RootViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/RootViewModel.swift index 736e1e6c..89afeb55 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/RootViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/RootViewModel.swift @@ -9,7 +9,6 @@ import Foundation import Combine import UserNotifications import DevLogDomain -import DevLogData @Observable final class RootViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/SearchViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/SearchViewModel.swift index db1c6835..d7c2aaa7 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/SearchViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/SearchViewModel.swift @@ -8,7 +8,6 @@ import Foundation import OrderedCollections import DevLogDomain -import DevLogData @Observable final class SearchViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/SettingViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/SettingViewModel.swift index 584632fb..2eb1d990 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/SettingViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/SettingViewModel.swift @@ -8,7 +8,6 @@ import Foundation import Combine import DevLogDomain -import DevLogData @Observable final class SettingViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/TodayViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodayViewModel.swift index 5274ff28..a625f210 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/TodayViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/TodayViewModel.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData @Observable final class TodayViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/TodoDetailViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodoDetailViewModel.swift index 0973130b..cbbf6fc3 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/TodoDetailViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/TodoDetailViewModel.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData @Observable final class TodoDetailViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/TodoEditorViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodoEditorViewModel.swift index 7dd35f7d..e293f3a1 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/TodoEditorViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/TodoEditorViewModel.swift @@ -8,7 +8,6 @@ import Foundation import OrderedCollections import DevLogDomain -import DevLogData @Observable final class TodoEditorViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/TodoListViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodoListViewModel.swift index b3b6f2f0..1536e79f 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/TodoListViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/TodoListViewModel.swift @@ -7,7 +7,6 @@ import Foundation import DevLogDomain -import DevLogData @Observable final class TodoListViewModel: Store { diff --git a/Application/DevLogPresentation/Sources/ViewModel/TodoManageViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/TodoManageViewModel.swift index f741f19c..5d938b8f 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/TodoManageViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/TodoManageViewModel.swift @@ -7,7 +7,6 @@ import SwiftUI import DevLogDomain -import DevLogData @Observable final class TodoManageViewModel: Store { From 4a492cdbe9a253697184be67db6594336ab328a7 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 18:08:00 +0900 Subject: [PATCH 28/46] =?UTF-8?q?refactor:=20Logger=EB=A5=BC=20Core=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../App/Handler/FCMTokenSyncHandler.swift | 1 + .../App/Handler/UserTimeZoneSyncHandler.swift | 1 + .../DevLogCore.xcodeproj/project.pbxproj | 4 +++ .../Sources}/Logger.swift | 12 +++---- .../DevLogData.xcodeproj/project.pbxproj | 5 --- .../Sources/Common/DataLayerError.swift | 1 + .../Sources/Service/AuthServiceImpl.swift | 1 + .../Service/PushNotificationServiceImpl.swift | 1 + .../AppleAuthenticationServiceImpl.swift | 1 + .../GithubAuthenticationServiceImpl.swift | 1 + .../GoogleAuthenticationServiceImpl.swift | 1 + .../Service/TodoCategoryServiceImpl.swift | 1 + .../Sources/Service/TodoServiceImpl.swift | 1 + .../Sources/Service/UserServiceImpl.swift | 1 + .../Service/WebPageMetadataServiceImpl.swift | 1 + .../Sources/Service/WebPageServiceImpl.swift | 1 + .../WidgetSnapshotUpdaterImpl.swift | 1 + .../project.pbxproj | 36 +++++++++++++++++++ .../Sources/Sync/WidgetSyncEventHandler.swift | 1 + 19 files changed, 61 insertions(+), 11 deletions(-) rename Application/{DevLogData/Sources/Common => DevLogCore/Sources}/Logger.swift (98%) diff --git a/Application/DevLogApp/Sources/App/Handler/FCMTokenSyncHandler.swift b/Application/DevLogApp/Sources/App/Handler/FCMTokenSyncHandler.swift index b2a25d0b..b631c8a1 100644 --- a/Application/DevLogApp/Sources/App/Handler/FCMTokenSyncHandler.swift +++ b/Application/DevLogApp/Sources/App/Handler/FCMTokenSyncHandler.swift @@ -6,6 +6,7 @@ // import Combine +import DevLogCore import DevLogData import Foundation diff --git a/Application/DevLogApp/Sources/App/Handler/UserTimeZoneSyncHandler.swift b/Application/DevLogApp/Sources/App/Handler/UserTimeZoneSyncHandler.swift index 8ae0c82d..619ea5ac 100644 --- a/Application/DevLogApp/Sources/App/Handler/UserTimeZoneSyncHandler.swift +++ b/Application/DevLogApp/Sources/App/Handler/UserTimeZoneSyncHandler.swift @@ -6,6 +6,7 @@ // import Combine +import DevLogCore import DevLogData import UIKit diff --git a/Application/DevLogCore/DevLogCore.xcodeproj/project.pbxproj b/Application/DevLogCore/DevLogCore.xcodeproj/project.pbxproj index b19d8fff..e079e3fb 100644 --- a/Application/DevLogCore/DevLogCore.xcodeproj/project.pbxproj +++ b/Application/DevLogCore/DevLogCore.xcodeproj/project.pbxproj @@ -9,6 +9,7 @@ /* Begin PBXBuildFile section */ 18BA78C685175B1BC0DEFCCB /* DIContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2B11CDF5A711E473115E8E3 /* DIContainer.swift */; }; 2D055D7F21B321D6CCD40A16 /* Assembler.swift in Sources */ = {isa = PBXBuildFile; fileRef = DEF84B2C1BD8C8ED1F6A5A36 /* Assembler.swift */; }; + 426DCA0450FA71859C097406 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B24157E06FA40FD0AC6DB568 /* Logger.swift */; }; 6C3457965AC3DE2CD7E8F88B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 814ECC408D237131E365FC92 /* Foundation.framework */; }; 83B6C8EF4EC3C621C760D1D9 /* DIContainerKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = F73A6F95CE0B1E3E95F0E38C /* DIContainerKey.swift */; }; 9F2C5C9D87F694B2E82DD1F6 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D2BC15A37223F5B128C8DE92 /* SwiftUI.framework */; }; @@ -17,6 +18,7 @@ /* Begin PBXFileReference section */ 814ECC408D237131E365FC92 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; 9E9FD7B09D0D7EAB8B828A5E /* DevLogCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + B24157E06FA40FD0AC6DB568 /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Logger.swift; path = Sources/Logger.swift; sourceTree = ""; }; C2B11CDF5A711E473115E8E3 /* DIContainer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DIContainer.swift; path = Sources/DIContainer.swift; sourceTree = ""; }; D2BC15A37223F5B128C8DE92 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/SwiftUI.framework; sourceTree = DEVELOPER_DIR; }; DEF84B2C1BD8C8ED1F6A5A36 /* Assembler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Assembler.swift; path = Sources/Assembler.swift; sourceTree = ""; }; @@ -76,6 +78,7 @@ DEF84B2C1BD8C8ED1F6A5A36 /* Assembler.swift */, C2B11CDF5A711E473115E8E3 /* DIContainer.swift */, F73A6F95CE0B1E3E95F0E38C /* DIContainerKey.swift */, + B24157E06FA40FD0AC6DB568 /* Logger.swift */, ); name = DevLogCore; sourceTree = ""; @@ -158,6 +161,7 @@ 2D055D7F21B321D6CCD40A16 /* Assembler.swift in Sources */, 18BA78C685175B1BC0DEFCCB /* DIContainer.swift in Sources */, 83B6C8EF4EC3C621C760D1D9 /* DIContainerKey.swift in Sources */, + 426DCA0450FA71859C097406 /* Logger.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Application/DevLogData/Sources/Common/Logger.swift b/Application/DevLogCore/Sources/Logger.swift similarity index 98% rename from Application/DevLogData/Sources/Common/Logger.swift rename to Application/DevLogCore/Sources/Logger.swift index c6072a2b..553677c2 100644 --- a/Application/DevLogData/Sources/Common/Logger.swift +++ b/Application/DevLogCore/Sources/Logger.swift @@ -12,7 +12,7 @@ public final class Logger { private let subsystem: String private let category: String private let osLog: OSLog - + public init(subsystem: String = Bundle.main.bundleIdentifier ?? "DevLog", category: String) { self.subsystem = subsystem self.category = category @@ -27,7 +27,7 @@ public final class Logger { ) { log(message, type: .debug, file: file, function: function, line: line) } - + public func info( _ message: String, file: String = #file, @@ -36,7 +36,7 @@ public final class Logger { ) { log(message, type: .info, file: file, function: function, line: line) } - + public func warning( _ message: String, file: String = #file, @@ -45,7 +45,7 @@ public final class Logger { ) { log(message, type: .default, file: file, function: function, line: line) } - + public func error( _ message: String, error: Error? = nil, @@ -59,7 +59,7 @@ public final class Logger { } log(fullMessage, type: .error, file: file, function: function, line: line) } - + public func fault( _ message: String, error: Error? = nil, @@ -83,7 +83,7 @@ public final class Logger { ) { let fileName = (file as NSString).lastPathComponent let logMessage = "[\(fileName):\(line)] \(function) - \(message)" - + #if DEBUG os_log("%{public}@", log: osLog, type: type, logMessage) #else diff --git a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj index 23303084..64cc38ee 100644 --- a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj +++ b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj @@ -15,7 +15,6 @@ 0C8E1C07EF01FB22BF8B80B9 /* PushNotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */; }; 14D1BF4D1F50FB067DA875B3 /* WebPageDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */; }; 159FADC56D29B32B0613BB77 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; - 18C2B39408BF745FE0BFC810 /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67FC3A5288FABA7441F4D6AA /* Logger.swift */; }; 18D37737A07ECBDA79EA9270 /* WidgetSnapshotPreferenceStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */; }; 2068F0B84A3BC53EEB156D82 /* WebPageMetadataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */; }; 238E950C1B6FF60F0840EA35 /* TodoCursorDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */; }; @@ -91,7 +90,6 @@ E671A77745F90F217E091010 /* UserDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */; }; E860E8E59EE2F714EF7F0FD8 /* UserProfileResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 387E711B7A3BA319D3E7C2AB /* UserProfileResponse.swift */; }; E8FA3EF7AE26AA96A2168FEE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; - E9D070C8D3644AA9E7AB7EEA /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67FC3A5288FABA7441F4D6AA /* Logger.swift */; }; EB5E684FF9C0430609D41D24 /* WidgetSnapshotUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */; }; F515D3BD025E835AFFFAE8F6 /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7559825C27ED42F9F86EBAC1 /* AuthService.swift */; }; FB654D9A5FD611C1CC1F9C15 /* PushNotificationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */; }; @@ -177,7 +175,6 @@ 60E716EC015A5805DD7C949B /* TodoService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoService.swift; path = Sources/Protocol/TodoService.swift; sourceTree = ""; }; 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationResponse.swift; path = Sources/DTO/PushNotificationResponse.swift; sourceTree = ""; }; 63198F8EBCD1DCBB407926F8 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; - 67FC3A5288FABA7441F4D6AA /* Logger.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Logger.swift; path = Sources/Common/Logger.swift; sourceTree = ""; }; 7559825C27ED42F9F86EBAC1 /* AuthService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthService.swift; path = Sources/Protocol/AuthService.swift; sourceTree = ""; }; 78DB5B22BE2E31B18173E89E /* NetworkConnectivityRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkConnectivityRepositoryImpl.swift; path = Sources/Repository/NetworkConnectivityRepositoryImpl.swift; sourceTree = ""; }; 7B3ED1B2326966F84851DFDD /* AuthDataRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataRepositoryImpl.swift; path = Sources/Repository/AuthDataRepositoryImpl.swift; sourceTree = ""; }; @@ -270,7 +267,6 @@ isa = PBXGroup; children = ( A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */, - 67FC3A5288FABA7441F4D6AA /* Logger.swift */, ); name = Common; sourceTree = ""; @@ -468,7 +464,6 @@ 9B584555CC7504BEDF5F8008 /* WebPageImageRepositoryImpl.swift in Sources */, 4BD06832F56598B25183EF06 /* WebPageRepositoryImpl.swift in Sources */, 58FFF761F471A091E5A8BCF5 /* DataLayerError.swift in Sources */, - E9D070C8D3644AA9E7AB7EEA /* Logger.swift in Sources */, 5168B6165545231B3E9CB52D /* AuthDataResponse.swift in Sources */, B73F5314433AE44F09034914 /* NotificationKind.swift in Sources */, B77ADC0FB7F0CEE46F3D46BB /* PushNotificationCursorDTO.swift in Sources */, diff --git a/Application/DevLogData/Sources/Common/DataLayerError.swift b/Application/DevLogData/Sources/Common/DataLayerError.swift index bda83e73..e873d372 100644 --- a/Application/DevLogData/Sources/Common/DataLayerError.swift +++ b/Application/DevLogData/Sources/Common/DataLayerError.swift @@ -7,6 +7,7 @@ import AuthenticationServices import Foundation +import DevLogCore public enum AuthError: Error { case notAuthenticated diff --git a/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift b/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift index 53e9aeb4..60d8a7e0 100644 --- a/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift @@ -9,6 +9,7 @@ import Combine import FirebaseAuth import FirebaseFirestore import FirebaseMessaging +import DevLogCore import DevLogData final class AuthServiceImpl: AuthService { diff --git a/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift index 268f769d..c4827b9f 100644 --- a/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/PushNotificationServiceImpl.swift @@ -9,6 +9,7 @@ import FirebaseAuth import Combine import FirebaseFirestore import FirebaseFunctions +import DevLogCore import DevLogDomain import DevLogData diff --git a/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift index 852d276b..54be0acb 100644 --- a/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift @@ -12,6 +12,7 @@ import FirebaseFirestore import FirebaseFunctions import FirebaseMessaging import Foundation +import DevLogCore import DevLogData final class AppleAuthenticationServiceImpl: AuthenticationService { diff --git a/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift index d15a78df..cce142bc 100644 --- a/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift @@ -12,6 +12,7 @@ import FirebaseFirestore import FirebaseFunctions import FirebaseMessaging import Nexa +import DevLogCore import DevLogData final class GithubAuthenticationServiceImpl: NSObject, AuthenticationService { diff --git a/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift index 9ebb4f17..f96c305f 100644 --- a/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift @@ -10,6 +10,7 @@ import FirebaseFirestore import FirebaseMessaging import Foundation import GoogleSignIn +import DevLogCore import DevLogData final class GoogleAuthenticationServiceImpl: AuthenticationService { diff --git a/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift b/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift index f946030a..d77c8ba1 100644 --- a/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/TodoCategoryServiceImpl.swift @@ -7,6 +7,7 @@ import FirebaseAuth import FirebaseFirestore +import DevLogCore import DevLogDomain import DevLogData diff --git a/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift b/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift index 340a59ea..7362cf87 100644 --- a/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/TodoServiceImpl.swift @@ -8,6 +8,7 @@ import FirebaseAuth import FirebaseFirestore import FirebaseFunctions +import DevLogCore import DevLogDomain import DevLogData diff --git a/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift b/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift index e92f9b67..6cab6f61 100644 --- a/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift @@ -7,6 +7,7 @@ import FirebaseAuth import FirebaseFirestore +import DevLogCore import DevLogData final class UserServiceImpl: UserService { diff --git a/Application/DevLogInfra/Sources/Service/WebPageMetadataServiceImpl.swift b/Application/DevLogInfra/Sources/Service/WebPageMetadataServiceImpl.swift index 1b4ae2f7..84defbda 100644 --- a/Application/DevLogInfra/Sources/Service/WebPageMetadataServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/WebPageMetadataServiceImpl.swift @@ -8,6 +8,7 @@ import Foundation import LinkPresentation import UIKit +import DevLogCore import DevLogData final class WebPageMetadataServiceImpl: WebPageMetadataService { diff --git a/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift b/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift index b331c31b..878fa87a 100644 --- a/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift @@ -8,6 +8,7 @@ import FirebaseAuth import FirebaseFirestore import FirebaseFunctions +import DevLogCore import DevLogData final class WebPageServiceImpl: WebPageService { diff --git a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift index 27186785..04b12324 100644 --- a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift +++ b/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift @@ -7,6 +7,7 @@ import Foundation import WidgetKit +import DevLogCore import DevLogDomain import DevLogData import DevLogWidgetCore diff --git a/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj index ee4d926b..07e437ab 100644 --- a/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj +++ b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj @@ -19,6 +19,7 @@ A14D5069306E93272F138551 /* Calendar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DF1E781780B7BC63E38230 /* Calendar.swift */; }; A1DEB84CF3B18EC2005382C5 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B108898FD3650BE0C116BD3C /* DevLogDomain.framework */; }; A839995EF6B607DBECF11933 /* HeatmapWidgetSnapshotFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */; }; + B11111111111111111111111 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B55555555555555555555555 /* DevLogCore.framework */; }; B2223843996C9D11E0193B16 /* WidgetSnapshotStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5283608C47D4283E39B5991B /* WidgetSnapshotStore.swift */; }; CD7C54E749A6696CF92AEF71 /* WidgetSyncEventBus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C16C61F9C1CC6EE71773E0D /* WidgetSyncEventBus.swift */; }; DE6586C0349C991B7AB9B732 /* WidgetAppGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = F938E87841D0E3147CC73238 /* WidgetAppGroup.swift */; }; @@ -43,6 +44,20 @@ remoteGlobalIDString = 3F08F6B94839E9021FCFC466; remoteInfo = Subproject; }; + B22222222222222222222222 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B44444444444444444444444 /* DevLogCore.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; + remoteInfo = Subproject; + }; + B33333333333333333333333 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B44444444444444444444444 /* DevLogCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogCore; + }; 6B58A164E93F51C78CBAE314 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */; @@ -76,6 +91,7 @@ 972B4258F31014D567D84C97 /* WidgetSnapshotKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotKey.swift; path = Sources/Common/WidgetSnapshotKey.swift; sourceTree = ""; }; ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../../Application/DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../../Application/DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; + B44444444444444444444444 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../../Application/DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventHandler.swift; path = Sources/Sync/WidgetSyncEventHandler.swift; sourceTree = ""; }; EEEECB9CFCE00F6DF5262C31 /* WidgetDeepLink.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetDeepLink.swift; path = Sources/Common/WidgetDeepLink.swift; sourceTree = ""; }; F938E87841D0E3147CC73238 /* WidgetAppGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetAppGroup.swift; path = Sources/Common/WidgetAppGroup.swift; sourceTree = ""; }; @@ -88,6 +104,7 @@ buildActionMask = 2147483647; files = ( 75C99AB35C6DF930E824185E /* Foundation.framework in Frameworks */, + B11111111111111111111111 /* DevLogCore.framework in Frameworks */, A1DEB84CF3B18EC2005382C5 /* DevLogDomain.framework in Frameworks */, 80423C5F6B880409E39FD20F /* DevLogData.framework in Frameworks */, ); @@ -123,6 +140,7 @@ 23F6B7BB30A8782BF2FB2D92 /* Projects */ = { isa = PBXGroup; children = ( + B44444444444444444444444 /* DevLogCore.xcodeproj */, B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */, ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */, ); @@ -152,6 +170,7 @@ isa = PBXGroup; children = ( 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */, + B55555555555555555555555 /* DevLogCore.framework */, B108898FD3650BE0C116BD3C /* DevLogDomain.framework */, 7C18996E00A69C4BCB0F63AE /* DevLogData.framework */, ); @@ -221,6 +240,7 @@ buildRules = ( ); dependencies = ( + B66666666666666666666666 /* PBXTargetDependency */, 504FAABF657F1D901A2B6BB9 /* PBXTargetDependency */, F1C4B031EE5FEF47898D9562 /* PBXTargetDependency */, ); @@ -252,6 +272,10 @@ productRefGroup = A71745ED0B0D9E29633DB923 /* Products */; projectDirPath = ""; projectReferences = ( + { + ProductGroup = A71745ED0B0D9E29633DB923 /* Products */; + ProjectRef = B44444444444444444444444 /* DevLogCore.xcodeproj */; + }, { ProductGroup = A71745ED0B0D9E29633DB923 /* Products */; ProjectRef = B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */; @@ -269,6 +293,13 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + B55555555555555555555555 /* DevLogCore.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = DevLogCore.framework; + remoteRef = B22222222222222222222222 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 7C18996E00A69C4BCB0F63AE /* DevLogData.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -322,6 +353,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + B66666666666666666666666 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogCore; + targetProxy = B33333333333333333333333 /* PBXContainerItemProxy */; + }; 504FAABF657F1D901A2B6BB9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDomain; diff --git a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift index 6f640928..7b7e954a 100644 --- a/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift +++ b/Widget/DevLogWidgetCore/Sources/Sync/WidgetSyncEventHandler.swift @@ -7,6 +7,7 @@ import Combine import Foundation +import DevLogCore import DevLogDomain import DevLogData From e6b95b104857e19859249639270ed56f1e0abac1 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 18:19:50 +0900 Subject: [PATCH 29/46] =?UTF-8?q?refactor:=20=EC=9D=B8=EC=A6=9D=20?= =?UTF-8?q?=EC=97=90=EB=9F=AC=EB=A5=BC=20Domain=20=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Common/DataLayerError.swift | 9 --------- .../AuthenticationRepositoryImpl.swift | 13 ++++++++++++- .../DevLogDomain.xcodeproj/project.pbxproj | 4 ++++ .../DevLogDomain/Sources/Entity/AuthError.swift | 16 ++++++++++++++++ .../Sources/Service/AuthServiceImpl.swift | 1 + .../Sources/Service/UserServiceImpl.swift | 1 + .../Sources/Service/WebPageServiceImpl.swift | 1 + .../Sources/ViewModel/AccountViewModel.swift | 2 +- .../Sources/ViewModel/LoginViewModel.swift | 3 +-- 9 files changed, 37 insertions(+), 13 deletions(-) create mode 100644 Application/DevLogDomain/Sources/Entity/AuthError.swift diff --git a/Application/DevLogData/Sources/Common/DataLayerError.swift b/Application/DevLogData/Sources/Common/DataLayerError.swift index e873d372..8f89f00d 100644 --- a/Application/DevLogData/Sources/Common/DataLayerError.swift +++ b/Application/DevLogData/Sources/Common/DataLayerError.swift @@ -9,15 +9,6 @@ import AuthenticationServices import Foundation import DevLogCore -public enum AuthError: Error { - case notAuthenticated - case failedToUnlinkLastProvider - case linkEmailNotFound - case linkEmailMismatch - case linkCredentialAlreadyInUse - case unsupportedProvider -} - public enum EmailFetchError: Error, Equatable { case emailNotFound case emailMismatch diff --git a/Application/DevLogData/Sources/Repository/AuthenticationRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/AuthenticationRepositoryImpl.swift index 99eb849d..0065a08a 100644 --- a/Application/DevLogData/Sources/Repository/AuthenticationRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/AuthenticationRepositoryImpl.swift @@ -53,7 +53,7 @@ final class AuthenticationRepositoryImpl: AuthenticationRepository { } authService.cancelSignIn() - throw error + throw mapSignInError(error) } } @@ -111,3 +111,14 @@ final class AuthenticationRepositoryImpl: AuthenticationRepository { widgetSnapshotUpdater.clear() } } + +private extension AuthenticationRepositoryImpl { + func mapSignInError(_ error: Error) -> Error { + if let emailFetchError = error as? EmailFetchError, + emailFetchError == .emailNotFound { + return AuthError.emailNotFound + } + + return error + } +} diff --git a/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj b/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj index 281e6858..4f9dae47 100644 --- a/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj +++ b/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 0A1111111111111111111111 /* AuthError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A2222222222222222222222 /* AuthError.swift */; }; 077096D1600C7389AE494C8D /* UpdateSystemThemeUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E821078E0E30A646FFFC1F1 /* UpdateSystemThemeUseCase.swift */; }; 108705FB292C48F626E0A5C9 /* AddWebPageUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9F4C2B618DA0B796EC02CF4 /* AddWebPageUseCase.swift */; }; 120C2A8316793FDC3B58FE4E /* FetchPushNotificationQueryUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B498CD874F5AE906BB27898F /* FetchPushNotificationQueryUseCaseImpl.swift */; }; @@ -157,6 +158,7 @@ 0135F093DDF8F5DB4D320010 /* FetchTodoCategoryPreferencesUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchTodoCategoryPreferencesUseCaseImpl.swift; path = Sources/UseCase/TodoCategory/Fetch/FetchTodoCategoryPreferencesUseCaseImpl.swift; sourceTree = ""; }; 015FCD58DFE25D15A98767DD /* UpsertStatusMessageUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UpsertStatusMessageUseCase.swift; path = Sources/UseCase/UserData/Update/StatusMessage/UpsertStatusMessageUseCase.swift; sourceTree = ""; }; 01DC43DAB9ACFA7C5A237F91 /* ClearWebPageImageDirectoryUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ClearWebPageImageDirectoryUseCaseImpl.swift; path = Sources/UseCase/WebPage/Upsert/ClearWebPageImageDirectoryUseCaseImpl.swift; sourceTree = ""; }; + 0A2222222222222222222222 /* AuthError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthError.swift; path = Sources/Entity/AuthError.swift; sourceTree = ""; }; 03910A114D3321A63F692113 /* UndoDeletePushNotificationUseCaseImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UndoDeletePushNotificationUseCaseImpl.swift; path = Sources/UseCase/PushNotification/Delete/UndoDeletePushNotificationUseCaseImpl.swift; sourceTree = ""; }; 05D14CAC89969BC5FB42B8D1 /* String.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = String.swift; path = Sources/Extension/String.swift; sourceTree = ""; }; 06CE556F368F3FFB8F45D19B /* TodoCategoryPreference.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryPreference.swift; path = Sources/Entity/TodoCategoryPreference.swift; sourceTree = ""; }; @@ -711,6 +713,7 @@ isa = PBXGroup; children = ( D3C71ECDDDA08716A716D9B2 /* ActivityKind.swift */, + 0A2222222222222222222222 /* AuthError.swift */, F9A9B5170723706520E75DC7 /* AuthProvider.swift */, C482DCAC8527FFE9767388C8 /* PushNotification.swift */, 741F53346E83DDAB8912B25C /* PushNotificationCursor.swift */, @@ -865,6 +868,7 @@ buildActionMask = 2147483647; files = ( 7B8CBBEFB51817FB36B0F02E /* ActivityKind.swift in Sources */, + 0A1111111111111111111111 /* AuthError.swift in Sources */, 6CCA27E186BA818C36FCD69A /* AuthProvider.swift in Sources */, A7A49D396929B3C1DBBEE572 /* PushNotification.swift in Sources */, 923BA6345B44D68CB47C7CA4 /* PushNotificationCursor.swift in Sources */, diff --git a/Application/DevLogDomain/Sources/Entity/AuthError.swift b/Application/DevLogDomain/Sources/Entity/AuthError.swift new file mode 100644 index 00000000..4e2baa55 --- /dev/null +++ b/Application/DevLogDomain/Sources/Entity/AuthError.swift @@ -0,0 +1,16 @@ +// +// AuthError.swift +// DevLog +// +// Created by opfic on 5/15/26. +// + +public enum AuthError: Error { + case notAuthenticated + case failedToUnlinkLastProvider + case emailNotFound + case linkEmailNotFound + case linkEmailMismatch + case linkCredentialAlreadyInUse + case unsupportedProvider +} diff --git a/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift b/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift index 60d8a7e0..c48dd598 100644 --- a/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift @@ -11,6 +11,7 @@ import FirebaseFirestore import FirebaseMessaging import DevLogCore import DevLogData +import DevLogDomain final class AuthServiceImpl: AuthService { private let store = Firestore.firestore() diff --git a/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift b/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift index 6cab6f61..99ec749e 100644 --- a/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/UserServiceImpl.swift @@ -9,6 +9,7 @@ import FirebaseAuth import FirebaseFirestore import DevLogCore import DevLogData +import DevLogDomain final class UserServiceImpl: UserService { private let store = Firestore.firestore() diff --git a/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift b/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift index 878fa87a..8fa12612 100644 --- a/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/WebPageServiceImpl.swift @@ -10,6 +10,7 @@ import FirebaseFirestore import FirebaseFunctions import DevLogCore import DevLogData +import DevLogDomain final class WebPageServiceImpl: WebPageService { private enum FunctionName: String { diff --git a/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift index aefc4eb7..ec90eb4c 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/AccountViewModel.swift @@ -153,7 +153,7 @@ private extension AccountViewModel { return .linkEmailMismatch case .linkCredentialAlreadyInUse: return .linkCredentialAlreadyInUse - case .notAuthenticated, .failedToUnlinkLastProvider, .unsupportedProvider: + case .notAuthenticated, .failedToUnlinkLastProvider, .emailNotFound, .unsupportedProvider: return .error } } diff --git a/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift b/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift index 55864dc1..3e72d274 100644 --- a/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift +++ b/Application/DevLogPresentation/Sources/ViewModel/LoginViewModel.swift @@ -100,8 +100,7 @@ private extension LoginViewModel { } func alertType(for error: Error) -> AlertType { - if let emailFetchError = error as? EmailFetchError, - emailFetchError == .emailNotFound { + if case AuthError.emailNotFound = error { return .emailUnavailable } From 473859dbb9cb6070e8d40a88c976260ab0c09ad8 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 18:58:22 +0900 Subject: [PATCH 30/46] =?UTF-8?q?chore:=20DevLogData=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=EC=A0=9D=ED=8A=B8=20=ED=8C=8C=EC=9D=BC=EC=9D=98=20=EB=AF=B8?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=20=EC=B0=B8=EC=A1=B0=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogData.xcodeproj/project.pbxproj | 41 +------------------ 1 file changed, 1 insertion(+), 40 deletions(-) diff --git a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj index 64cc38ee..86fa33db 100644 --- a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj +++ b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj @@ -8,61 +8,32 @@ /* Begin PBXBuildFile section */ 014DD58F9A49EF8F613A8512 /* TodoDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = B28D4F60262075223EC096E0 /* TodoDTO.swift */; }; - 02989D2DD8C861339C89EFAB /* TodoReferenceResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F6961039F12AFD8B33F25DF /* TodoReferenceResponse.swift */; }; 02AD0EC1D813FD957B53FBE5 /* PushNotificationRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CEB1EE245302780E69EC631 /* PushNotificationRepositoryImpl.swift */; }; 05E9A2CF2D447750487BDC38 /* WebPageDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */; }; - 06C8405C9CCC37319D16F4D6 /* TodoCursorDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */; }; - 0C8E1C07EF01FB22BF8B80B9 /* PushNotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */; }; - 14D1BF4D1F50FB067DA875B3 /* WebPageDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */; }; - 159FADC56D29B32B0613BB77 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; - 18D37737A07ECBDA79EA9270 /* WidgetSnapshotPreferenceStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */; }; - 2068F0B84A3BC53EEB156D82 /* WebPageMetadataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */; }; 238E950C1B6FF60F0840EA35 /* TodoCursorDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF9FA1F72AAE9808A4800EEA /* TodoCursorDTO.swift */; }; 2A057B6B7F6900E50AC2E031 /* PushNotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */; }; - 2D91812BD78B5FA8DBE2F030 /* NotificationKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13680A4153A719F15E7DFDF6 /* NotificationKind.swift */; }; - 2F0ECAAFBEB7651130A6160A /* AuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7154773B586C2D41307CD49 /* AuthenticationService.swift */; }; 320469937B9BD964D29F5C97 /* TodoRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F8C39E4E51A7A62D716612 /* TodoRepositoryImpl.swift */; }; 326C26B47FCE678C36BE5788 /* AuthenticationRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09310E1D16103C0E6E96C7C7 /* AuthenticationRepositoryImpl.swift */; }; 355537B4107978D346594E6A /* WidgetSnapshotPreferenceStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAFC323115ECC1B37429AC09 /* WidgetSnapshotPreferenceStore.swift */; }; 36A48634DC1A350421118FEB /* NWPathConnectivityProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B67886F72C946CBC709AFCB /* NWPathConnectivityProvider.swift */; }; - 3774F15D0E51BAE1445550C8 /* WebPageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE1FE53786D11AC7B192698 /* WebPageService.swift */; }; - 3E47658FDC0F074222D07B2C /* AuthDataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */; }; 3F09F91345793F8C14F5CC05 /* WidgetSnapshotUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */; }; 410CB3F18CADB18146AE82B7 /* DataAssembler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29CDDE9287D2855E4AF14021 /* DataAssembler.swift */; }; 41371B777FE701652CA2E798 /* AuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7154773B586C2D41307CD49 /* AuthenticationService.swift */; }; - 415FA233A97D67108CA8FA60 /* ThemeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */; }; - 48520BBB5EAEF3DB9D65CAE8 /* TodoPageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1ABB0ED51067433D3C90F02 /* TodoPageResponse.swift */; }; - 49F6E1752300C28F873AE959 /* PushNotificationPageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE96D070821D1FB62A155AB5 /* PushNotificationPageResponse.swift */; }; - 4B18018B63AE2321B8B7761A /* DataLayerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */; }; 4BD06832F56598B25183EF06 /* WebPageRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF764A3F6E025A18E6A0BC /* WebPageRepositoryImpl.swift */; }; 4C0F2F479581D2E091C429B2 /* TodoCategoryRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36E09221F6FBF67359105995 /* TodoCategoryRepositoryImpl.swift */; }; - 4EFB81EBF4C8E68D1219E261 /* UserService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42BC563A225597B3D761253 /* UserService.swift */; }; 50C769615D094189B739F055 /* UserPreferencesRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0202E26A972D5D274AF77C67 /* UserPreferencesRepositoryImpl.swift */; }; 5168B6165545231B3E9CB52D /* AuthDataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */; }; 51F956F957951237D7B09387 /* TodoPageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1ABB0ED51067433D3C90F02 /* TodoPageResponse.swift */; }; - 552E7AC6C92BB3EDA4A3B99B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; 57E1BC53D8D628A254A270A1 /* TodoCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */; }; 58FFF761F471A091E5A8BCF5 /* DataLayerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */; }; - 59FB0D9F7C8C8D1B63EA5880 /* UserProfileResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 387E711B7A3BA319D3E7C2AB /* UserProfileResponse.swift */; }; - 5CC76E5C85D4133B0E2409EC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; - 5D56791D0D2F4F4B299C183C /* PushNotificationCursorDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF12B44E80793EF948B211B /* PushNotificationCursorDTO.swift */; }; - 627A5B276E98C623E7953868 /* WebPageMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C2B7108CD63C65097876046 /* WebPageMapping.swift */; }; - 630C1F917AED059FBE29BDBC /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7559825C27ED42F9F86EBAC1 /* AuthService.swift */; }; 672BED915B5A7A1A0A29B4FD /* TodoReferenceResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F6961039F12AFD8B33F25DF /* TodoReferenceResponse.swift */; }; - 67F3E365DA09012FBBE2012F /* PushNotificationMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44C564559DBDF765945456FA /* PushNotificationMapping.swift */; }; 696ECBF42D3E9504BE9939FB /* AuthDataRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B3ED1B2326966F84851DFDD /* AuthDataRepositoryImpl.swift */; }; 6DACC3B9A91F4B83A51E001C /* NetworkConnectivityRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78DB5B22BE2E31B18173E89E /* NetworkConnectivityRepositoryImpl.swift */; }; - 6F59D30C084D7C827CC50F51 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; 6FB32AA05C08D6C55F7345D7 /* WebPageImageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 454F04A5E5887B163DD7E5A9 /* WebPageImageStore.swift */; }; - 6FB5E632397385B569B5FB5E /* PushNotificationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */; }; 71C83A8D875833719759B1FE /* UserDataRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B167270C81CB76E8F5ED9CA /* UserDataRepositoryImpl.swift */; }; 7A1360E04BA36E6476DB4430 /* UserProfileMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37830EA98EFABE66D2ADBCE9 /* UserProfileMapping.swift */; }; - 7A71FF2428AECD0170B555F7 /* WebPageMetadataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */; }; - 7A74659BAEE980ECCBA0D22A /* UserProfileMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37830EA98EFABE66D2ADBCE9 /* UserProfileMapping.swift */; }; 7C9171AA49A09F0D8F8A4419 /* WebPageMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3C2B7108CD63C65097876046 /* WebPageMapping.swift */; }; 7FD388EB6C3123479B304478 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; - 8744A8E2492B34573A5A1459 /* WebPageImageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 454F04A5E5887B163DD7E5A9 /* WebPageImageStore.swift */; }; - 8F9466853CB478992BFA7762 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; 90776FF719A37EAE1CB1BB1B /* TodoCategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 082E30ECD7061C9E401FF2D0 /* TodoCategoryService.swift */; }; 922EECF001AF1EAC4EE5ACAA /* PushNotificationMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44C564559DBDF765945456FA /* PushNotificationMapping.swift */; }; 94BC00B678F8511CC23BCA17 /* UserDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */; }; @@ -70,27 +41,17 @@ 986DAE304B67FC8F8563FC40 /* AuthSessionRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80CBBE2B99B80E70DCD800ED /* AuthSessionRepositoryImpl.swift */; }; 9B584555CC7504BEDF5F8008 /* WebPageImageRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 914EE1DC0A02968747B6B3A2 /* WebPageImageRepositoryImpl.swift */; }; 9DBA952A12D983B8398F40FB /* WebPageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE1FE53786D11AC7B192698 /* WebPageService.swift */; }; - A6BADE4BA91529F464FBEB0F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; - A99E2FD1B2E157BF7BE9FB5C /* TodoDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = B28D4F60262075223EC096E0 /* TodoDTO.swift */; }; - B2D2F2614E6446B422B42E98 /* TodoService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E716EC015A5805DD7C949B /* TodoService.swift */; }; + B4A86993344617CDA0279841 /* UserService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42BC563A225597B3D761253 /* UserService.swift */; }; B35B7FCCDD45C7C302B3E94D /* TodoMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CB1CEA7122BFEDED0F4370 /* TodoMapping.swift */; }; B3655250BCDBFAFBFA941F63 /* WebPageMetadataResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF0EE2378B0A169F046A70D /* WebPageMetadataResponse.swift */; }; - B4A86993344617CDA0279841 /* UserService.swift in Sources */ = {isa = PBXBuildFile; fileRef = C42BC563A225597B3D761253 /* UserService.swift */; }; - B5F2954F61C8263C3A31B295 /* TodoMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17CB1CEA7122BFEDED0F4370 /* TodoMapping.swift */; }; B73F5314433AE44F09034914 /* NotificationKind.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13680A4153A719F15E7DFDF6 /* NotificationKind.swift */; }; B77ADC0FB7F0CEE46F3D46BB /* PushNotificationCursorDTO.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DF12B44E80793EF948B211B /* PushNotificationCursorDTO.swift */; }; - B8E8AB9B2529E248BF3E9AC5 /* NWPathConnectivityProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B67886F72C946CBC709AFCB /* NWPathConnectivityProvider.swift */; }; - BB7C667A5651F5C5E60C9C65 /* TodoCategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 082E30ECD7061C9E401FF2D0 /* TodoCategoryService.swift */; }; D5A27B2AC5CDF6C4878CC5FF /* PushNotificationPageResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE96D070821D1FB62A155AB5 /* PushNotificationPageResponse.swift */; }; D7D9BD96D0F8E1647775A61A /* TodoService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E716EC015A5805DD7C949B /* TodoService.swift */; }; - D910214884BD6503097E03F6 /* TodoCategoryResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2F02873E48CF8A12FA931F0 /* TodoCategoryResponse.swift */; }; DCB68C9605BC30C11D84C5CD /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AECA90DBE02246762CB1ED1 /* DevLogCore.framework */; }; - E00C306546BD8A52E12D2296 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; E5772C4226F405A20B26ED3B /* WebPageMetadataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */; }; - E671A77745F90F217E091010 /* UserDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */; }; E860E8E59EE2F714EF7F0FD8 /* UserProfileResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 387E711B7A3BA319D3E7C2AB /* UserProfileResponse.swift */; }; E8FA3EF7AE26AA96A2168FEE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; - EB5E684FF9C0430609D41D24 /* WidgetSnapshotUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */; }; F515D3BD025E835AFFFAE8F6 /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7559825C27ED42F9F86EBAC1 /* AuthService.swift */; }; FB654D9A5FD611C1CC1F9C15 /* PushNotificationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */; }; /* End PBXBuildFile section */ From 6d34b9a7f036a1861e4d2710deccbc08ccb70431 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 19:10:27 +0900 Subject: [PATCH 31/46] =?UTF-8?q?refactor:=20Presentation=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=EC=97=90=EC=84=9C=20FirebaseAuth=20=EC=9D=98?= =?UTF-8?q?=EC=A1=B4=EC=84=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 65 +++++-------------- .../Sources/Setting/AccountView.swift | 1 - 2 files changed, 17 insertions(+), 49 deletions(-) diff --git a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj index 1b574696..36d8bcee 100644 --- a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj +++ b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj @@ -3,14 +3,13 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 54; objects = { /* Begin PBXBuildFile section */ 0553E143B544CD7ACD082298 /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2A9C9F3E543201091571C00 /* LoadingView.swift */; }; 071B4E6FE1D0DC0EF26E0705 /* MainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B01ACB5EB0ACD6D3233BA118 /* MainView.swift */; }; 075FA5A9704297F5A51D765D /* ThemeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */; }; - 0A11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0E11B22C33D44E55F6677889 /* DevLogCore.framework */; }; 0A5A148F5EF1BAD010BED113 /* HeatmapMonth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70C952669C86B8EB042ED7CF /* HeatmapMonth.swift */; }; 0CEB2B1729B59439362725A5 /* ToolbarButton+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 378C11F76082EF6BE53A3066 /* ToolbarButton+.swift */; }; 0F4B4A95DBD1219D374B47E3 /* HeatmapActivityItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = A04BEF390A74ECC5558A076F /* HeatmapActivityItem.swift */; }; @@ -79,9 +78,7 @@ D7ED2E08383517AA3E242B0C /* TodayViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */; }; D8DCEA367C54C527295E004F /* HeatmapQuarter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */; }; DB081DF4854E8D445EFE0608 /* ProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */; }; - E69CD0D89DDDF4A68406680D /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = D06169FD4B643952DF59EDAE /* FirebaseAuth */; }; E7EBEBA803A9449A6CBEF11B /* RecentTodoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */; }; - E91B53D33C90B9298E0B2EA1 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */; }; E9BE203BADA107278CFBDD54 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */; }; F0B4DBB89733E466B105CF25 /* EnvironmentValues+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */; }; F1474D4F84693113355B7DA2 /* TodoMarkdownContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */; }; @@ -97,13 +94,6 @@ remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; remoteInfo = DevLogCore; }; - 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0D11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 9E9FD7B09D0D7EAB8B828A5E; - remoteInfo = Subproject; - }; 63A78AEC0654C9B6030C055B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */; @@ -111,12 +101,12 @@ remoteGlobalIDString = 7D1E74925088998D68BBFBBB; remoteInfo = DevLogDomain; }; - F62246BFB23AD8069C3C9A25 /* PBXContainerItemProxy */ = { + DFE459162FB7283400441703 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */; proxyType = 2; remoteGlobalIDString = 3F08F6B94839E9021FCFC466; - remoteInfo = Subproject; + remoteInfo = DevLogDomain; }; /* End PBXContainerItemProxy section */ @@ -146,7 +136,7 @@ 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ProfileViewModel.swift; path = Sources/ViewModel/ProfileViewModel.swift; sourceTree = ""; }; 57F86003764E015A7DBFD9A6 /* HomeViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeViewCoordinator.swift; path = Sources/Home/HomeViewCoordinator.swift; sourceTree = ""; }; 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayViewCoordinator.swift; path = Sources/Today/TodayViewCoordinator.swift; sourceTree = ""; }; - 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogPresentation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DevLogPresentation.framework; path = "/Users/opfic/Desktop/Github/App/SwiftUI_DevLog/Application/DevLogPresentation/build/Debug-iphoneos/DevLogPresentation.framework"; sourceTree = ""; }; 5EF81D9BB299B33C5ED8DB52 /* TodoManageViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageViewModel.swift; path = Sources/ViewModel/TodoManageViewModel.swift; sourceTree = ""; }; 64E49223C6BC0615AC7B9C37 /* ActivityKindItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ActivityKindItem.swift; path = Sources/Structure/Profile/ActivityKindItem.swift; sourceTree = ""; }; 6F5844EB62C68540DD8404C5 /* NavigationBarConfigurator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NavigationBarConfigurator.swift; path = Sources/Common/NavigationBarConfigurator.swift; sourceTree = ""; }; @@ -206,11 +196,8 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0A11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */, 3120506A710A0B6505226C05 /* MarkdownUI in Frameworks */, - E69CD0D89DDDF4A68406680D /* FirebaseAuth in Frameworks */, CC36598B842BA60E284D4A9E /* Foundation.framework in Frameworks */, - E91B53D33C90B9298E0B2EA1 /* DevLogDomain.framework in Frameworks */, 1B8D0C5D8C506642FFB8F9FA /* OrderedCollections in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -230,9 +217,7 @@ 03D4331F04C462F4C642860F /* Products */ = { isa = PBXGroup; children = ( - 0E11B22C33D44E55F6677889 /* DevLogCore.framework */, - 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */, - 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */, + DFE459172FB7283400441703 /* DevLogDomain.framework */, ); name = Products; sourceTree = ""; @@ -543,7 +528,6 @@ name = DevLogPresentation; packageProductDependencies = ( 423A6FE16D5EC7FECF77A31A /* MarkdownUI */, - D06169FD4B643952DF59EDAE /* FirebaseAuth */, 7D6DDD31C1122286D5852621 /* OrderedCollections */, ); productName = DevLogPresentation; @@ -568,13 +552,10 @@ Base, ); mainGroup = 253FAAC4504D4C5E1B11C833; - minimizedProjectReferenceProxies = 0; packageReferences = ( 3268290C30B3BFC6DE469DE1 /* XCRemoteSwiftPackageReference "swift-markdown-ui" */, - AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, 4A268C0F47C89BEF1B5B794F /* XCRemoteSwiftPackageReference "swift-collections" */, ); - preferredProjectObjectVersion = 77; productRefGroup = 03D4331F04C462F4C642860F /* Products */; projectDirPath = ""; projectReferences = ( @@ -595,18 +576,11 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - 0E11B22C33D44E55F6677889 /* DevLogCore.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = DevLogCore.framework; - remoteRef = 0C11B22C33D44E55F6677889 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 6AF2C2F0F0FE28B3D9B45801 /* DevLogDomain.framework */ = { + DFE459172FB7283400441703 /* DevLogDomain.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; path = DevLogDomain.framework; - remoteRef = F62246BFB23AD8069C3C9A25 /* PBXContainerItemProxy */; + remoteRef = DFE459162FB7283400441703 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXReferenceProxy section */ @@ -792,7 +766,11 @@ GENERATE_INFOPLIST_FILE = YES; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogPresentation; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -817,7 +795,11 @@ GENERATE_INFOPLIST_FILE = YES; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 17.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogPresentation; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -923,14 +905,6 @@ minimumVersion = 1.3.0; }; }; - AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 11.15.0; - }; - }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -944,11 +918,6 @@ package = 4A268C0F47C89BEF1B5B794F /* XCRemoteSwiftPackageReference "swift-collections" */; productName = OrderedCollections; }; - D06169FD4B643952DF59EDAE /* FirebaseAuth */ = { - isa = XCSwiftPackageProductDependency; - package = AC62D62F9D1E8C3E3279BC3A /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = FirebaseAuth; - }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 096704712B06C41C6A0FE074 /* Project object */; diff --git a/Application/DevLogPresentation/Sources/Setting/AccountView.swift b/Application/DevLogPresentation/Sources/Setting/AccountView.swift index 4174ae38..9072ca79 100644 --- a/Application/DevLogPresentation/Sources/Setting/AccountView.swift +++ b/Application/DevLogPresentation/Sources/Setting/AccountView.swift @@ -6,7 +6,6 @@ // import SwiftUI -import FirebaseAuth import DevLogDomain struct AccountView: View { From 03d211e05a6ac0c54cb28fdccc424966f9fc4919 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 20:01:18 +0900 Subject: [PATCH 32/46] =?UTF-8?q?chore:=20Domain=20=EB=B6=80=EB=B6=84=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=8A=A4=ED=82=B4=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogDomain.xcodeproj/project.pbxproj | 101 ++++++++++++++++++ .../xcschemes/DevLogDomainTests.xcscheme | 69 ++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 Application/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomainTests.xcscheme diff --git a/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj b/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj index 4f9dae47..24764dec 100644 --- a/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj +++ b/Application/DevLogDomain/DevLogDomain.xcodeproj/project.pbxproj @@ -62,6 +62,7 @@ 6E9DF84535092F43786277E9 /* UpdateRecentSearchQueriesUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4721FC0DF30EE97CCFD8AEB2 /* UpdateRecentSearchQueriesUseCase.swift */; }; 7179FD5B4EBF8C744819A8DE /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A255290C54315FBBFEE3D5C /* DevLogCore.framework */; }; 71BAC4D47D7B9351E59745F0 /* AddWebPageUseCaseImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB6B0536F975D3FE76D0B58F /* AddWebPageUseCaseImpl.swift */; }; + 4FC02B8BD98D4A888C4B9DAA /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F08F6B94839E9021FCFC466 /* DevLogDomain.framework */; }; 73969D227D8103F45DFD546D /* TodoQuery.swift in Sources */ = {isa = PBXBuildFile; fileRef = F528B902B4AC945DE2357AF4 /* TodoQuery.swift */; }; 740D49EA35D555A5CC0B740C /* FetchReferenceItemsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = A403DFBCDB028B255F8B9EC5 /* FetchReferenceItemsUseCase.swift */; }; 76DE905274DA17536AC07024 /* FetchPushNotificationSettingsUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65FE1967BCA4B1FF8D517617 /* FetchPushNotificationSettingsUseCase.swift */; }; @@ -144,6 +145,13 @@ remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; remoteInfo = DevLogCore; }; + 0B3A8BCEA8F240E7A0287892 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 3D911168F99784261C777CF5 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; DF4F66BE2FB6F8F900ED4BA9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 984FA2FF512E3A17EC214CAD /* DevLogCore.xcodeproj */; @@ -186,6 +194,7 @@ 372106128F8BE30DDE0D41E7 /* SystemTodoCategory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SystemTodoCategory.swift; path = Sources/Entity/SystemTodoCategory.swift; sourceTree = ""; }; 3D653CA5AFBA637461B27A7F /* FetchPushNotificationQueryUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FetchPushNotificationQueryUseCase.swift; path = Sources/UseCase/UserPreferences/PushNotification/FetchPushNotificationQueryUseCase.swift; sourceTree = ""; }; 3F08F6B94839E9021FCFC466 /* DevLogDomain.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogDomain.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8FA48D71FB864FBFB25626BE /* DevLogDomainTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLogDomainTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 41B41F22B16C359A70312D77 /* ObserveAuthSessionUseCase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ObserveAuthSessionUseCase.swift; path = Sources/UseCase/Auth/Session/ObserveAuthSessionUseCase.swift; sourceTree = ""; }; 42C7EE23A3F45CFA5C2F7ECE /* TodoCursor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCursor.swift; path = Sources/Entity/TodoCursor.swift; sourceTree = ""; }; 44D430F73E1C4A9F5EC65263 /* UserDataRepository.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDataRepository.swift; path = Sources/Protocol/UserDataRepository.swift; sourceTree = ""; }; @@ -287,6 +296,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 9A1545FED6E346038E0A6D96 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4FC02B8BD98D4A888C4B9DAA /* DevLogDomain.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -566,6 +583,7 @@ isa = PBXGroup; children = ( 3F08F6B94839E9021FCFC466 /* DevLogDomain.framework */, + 8FA48D71FB864FBFB25626BE /* DevLogDomainTests.xctest */, 1A255290C54315FBBFEE3D5C /* DevLogCore.framework */, ); name = Products; @@ -802,6 +820,24 @@ productReference = 3F08F6B94839E9021FCFC466 /* DevLogDomain.framework */; productType = "com.apple.product-type.framework"; }; + B7DE5AF183DE4CED9FEAD8B0 /* DevLogDomainTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = A09236D14D844CFD80483854 /* Build configuration list for PBXNativeTarget "DevLogDomainTests" */; + buildPhases = ( + 0D62B34AFC764A4CBA1F117E /* Sources */, + 9A1545FED6E346038E0A6D96 /* Frameworks */, + FFDD4F1C096448ABB2209219 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + F8E77F4F6B984FA18618FEAF /* PBXTargetDependency */, + ); + name = DevLogDomainTests; + productName = DevLogDomainTests; + productReference = 8FA48D71FB864FBFB25626BE /* DevLogDomainTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -810,6 +846,12 @@ attributes = { LastSwiftUpdateCheck = 1600; LastUpgradeCheck = 1600; + TargetAttributes = { + B7DE5AF183DE4CED9FEAD8B0 = { + CreatedOnToolsVersion = 16.0; + TestTargetID = 7D1E74925088998D68BBFBBB; + }; + }; }; buildConfigurationList = 6AF8ED1DC9D941A4993FB61A /* Build configuration list for PBXProject "DevLogDomain" */; compatibilityVersion = "Xcode 3.2"; @@ -831,6 +873,7 @@ projectRoot = ""; targets = ( 7D1E74925088998D68BBFBBB /* DevLogDomain */, + B7DE5AF183DE4CED9FEAD8B0 /* DevLogDomainTests */, ); }; /* End PBXProject section */ @@ -860,6 +903,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FFDD4F1C096448ABB2209219 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -988,6 +1038,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 0D62B34AFC764A4CBA1F117E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -996,6 +1053,11 @@ name = DevLogCore; targetProxy = 3FA49F27369B1E23BB63D104 /* PBXContainerItemProxy */; }; + F8E77F4F6B984FA18618FEAF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 7D1E74925088998D68BBFBBB /* DevLogDomain */; + targetProxy = 0B3A8BCEA8F240E7A0287892 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -1162,6 +1224,36 @@ }; name = Release; }; + 86C9C00D3F064DB3BBCA4D13 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDomainTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = DevLogDomain; + }; + name = Debug; + }; + DD016DD24E1D491080C4E490 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDomainTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = DevLogDomain; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -1183,6 +1275,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + A09236D14D844CFD80483854 /* Build configuration list for PBXNativeTarget "DevLogDomainTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DD016DD24E1D491080C4E490 /* Release */, + 86C9C00D3F064DB3BBCA4D13 /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 3D911168F99784261C777CF5 /* Project object */; diff --git a/Application/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomainTests.xcscheme b/Application/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomainTests.xcscheme new file mode 100644 index 00000000..5572b9fd --- /dev/null +++ b/Application/DevLogDomain/DevLogDomain.xcodeproj/xcshareddata/xcschemes/DevLogDomainTests.xcscheme @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + From ed69904760ff7842cbcf70387508ed3ccc3ea71e Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 20:04:35 +0900 Subject: [PATCH 33/46] =?UTF-8?q?chore:=20Data=20=EB=B6=80=EB=B6=84=20?= =?UTF-8?q?=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=8A=A4=ED=82=B4=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogData.xcodeproj/project.pbxproj | 101 ++++++++++++++++++ .../xcschemes/DevLogDataTests.xcscheme | 69 ++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataTests.xcscheme diff --git a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj index 86fa33db..59e6c37c 100644 --- a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj +++ b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj @@ -51,6 +51,7 @@ DCB68C9605BC30C11D84C5CD /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3AECA90DBE02246762CB1ED1 /* DevLogCore.framework */; }; E5772C4226F405A20B26ED3B /* WebPageMetadataService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DFB11DECBE7A9F169DE4CD5 /* WebPageMetadataService.swift */; }; E860E8E59EE2F714EF7F0FD8 /* UserProfileResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 387E711B7A3BA319D3E7C2AB /* UserProfileResponse.swift */; }; + E4F40336334B44B89E8A9477 /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4AB6E00A38C37CDBF82B57FD /* DevLogData.framework */; }; E8FA3EF7AE26AA96A2168FEE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD765636013B36A3BCCCF8B7 /* Foundation.framework */; }; F515D3BD025E835AFFFAE8F6 /* AuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7559825C27ED42F9F86EBAC1 /* AuthService.swift */; }; FB654D9A5FD611C1CC1F9C15 /* PushNotificationResponse.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */; }; @@ -106,6 +107,13 @@ remoteGlobalIDString = 7D1E74925088998D68BBFBBB; remoteInfo = DevLogDomain; }; + 47BD70322E2E4BCB864A30D6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = CC7EBB5B45CD6E34221B84D0 /* Project object */; + proxyType = 1; + remoteGlobalIDString = D9D76C33D8B4790694BD3488; + remoteInfo = DevLogData; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -132,6 +140,7 @@ 454F04A5E5887B163DD7E5A9 /* WebPageImageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStore.swift; path = Sources/Protocol/WebPageImageStore.swift; sourceTree = ""; }; 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataResponse.swift; path = Sources/DTO/AuthDataResponse.swift; sourceTree = ""; }; 4AB6E00A38C37CDBF82B57FD /* DevLogData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DevLogData.framework; path = DevLogData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F0A3B72D714B42CDB4E3E905 /* DevLogDataTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLogDataTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageDTO.swift; path = Sources/DTO/WebPageDTO.swift; sourceTree = ""; }; 60E716EC015A5805DD7C949B /* TodoService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoService.swift; path = Sources/Protocol/TodoService.swift; sourceTree = ""; }; 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationResponse.swift; path = Sources/DTO/PushNotificationResponse.swift; sourceTree = ""; }; @@ -170,6 +179,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F336A689EB2D445B97710CA7 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E4F40336334B44B89E8A9477 /* DevLogData.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -197,6 +214,7 @@ isa = PBXGroup; children = ( 4AB6E00A38C37CDBF82B57FD /* DevLogData.framework */, + F0A3B72D714B42CDB4E3E905 /* DevLogDataTests.xctest */, 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */, 3AECA90DBE02246762CB1ED1 /* DevLogCore.framework */, ); @@ -342,6 +360,24 @@ productReference = 4AB6E00A38C37CDBF82B57FD /* DevLogData.framework */; productType = "com.apple.product-type.framework"; }; + 8D39D659A2924AA7AE52714A /* DevLogDataTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8EDB2AA4ACB9422EB4F5522A /* Build configuration list for PBXNativeTarget "DevLogDataTests" */; + buildPhases = ( + 96EB58198C674FDE8CC2DDC0 /* Sources */, + F336A689EB2D445B97710CA7 /* Frameworks */, + 32B3E443D8A04E5AAA101FCA /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 59B3918E35454521A69DAA14 /* PBXTargetDependency */, + ); + name = DevLogDataTests; + productName = DevLogDataTests; + productReference = F0A3B72D714B42CDB4E3E905 /* DevLogDataTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -350,6 +386,12 @@ attributes = { LastSwiftUpdateCheck = 1600; LastUpgradeCheck = 1600; + TargetAttributes = { + 8D39D659A2924AA7AE52714A = { + CreatedOnToolsVersion = 16.0; + TestTargetID = D9D76C33D8B4790694BD3488; + }; + }; }; buildConfigurationList = 7F096A3943F90686072B1DF1 /* Build configuration list for PBXProject "DevLogData" */; compatibilityVersion = "Xcode 3.2"; @@ -377,6 +419,7 @@ projectRoot = ""; targets = ( D9D76C33D8B4790694BD3488 /* DevLogData */, + 8D39D659A2924AA7AE52714A /* DevLogDataTests */, ); }; /* End PBXProject section */ @@ -406,6 +449,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 32B3E443D8A04E5AAA101FCA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -460,6 +510,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 96EB58198C674FDE8CC2DDC0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -473,6 +530,11 @@ name = DevLogCore; targetProxy = 0AB04633AFB4B3F0B9AC60DC /* PBXContainerItemProxy */; }; + 59B3918E35454521A69DAA14 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = D9D76C33D8B4790694BD3488 /* DevLogData */; + targetProxy = 47BD70322E2E4BCB864A30D6 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -640,6 +702,36 @@ }; name = Release; }; + 05D167FC8BE0483DAA2BBD7D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = DevLogData; + }; + name = Debug; + }; + FB689A1988E54A218A8365C7 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogDataTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = DevLogData; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -661,6 +753,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 8EDB2AA4ACB9422EB4F5522A /* Build configuration list for PBXNativeTarget "DevLogDataTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FB689A1988E54A218A8365C7 /* Release */, + 05D167FC8BE0483DAA2BBD7D /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = CC7EBB5B45CD6E34221B84D0 /* Project object */; diff --git a/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataTests.xcscheme b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataTests.xcscheme new file mode 100644 index 00000000..58a458f8 --- /dev/null +++ b/Application/DevLogData/DevLogData.xcodeproj/xcshareddata/xcschemes/DevLogDataTests.xcscheme @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + From 90c9137dfabb2e20c6cd0e819bb14780b050add1 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 20:17:23 +0900 Subject: [PATCH 34/46] =?UTF-8?q?chore:=20Infra=20=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=8A=A4=ED=82=B4=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogInfra.xcodeproj/project.pbxproj | 101 +++++++++++ .../xcshareddata/swiftpm/Package.resolved | 168 ++++++++++++++++++ .../xcschemes/DevLogInfraTests.xcscheme | 69 +++++++ 3 files changed, 338 insertions(+) create mode 100644 Application/DevLogInfra/DevLogInfra.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved create mode 100644 Application/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfraTests.xcscheme diff --git a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj index 1668ea17..7d993832 100644 --- a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj +++ b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj @@ -32,6 +32,7 @@ EE62AAD289D9CED31CC9E05D /* GoogleSignIn in Frameworks */ = {isa = PBXBuildFile; productRef = 7333E70E9D312E56D4A364A6 /* GoogleSignIn */; }; F085DED20E80F63AE071D8BA /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4F874032FD57C0BBCC41C64 /* DevLogData.framework */; }; F75AA9259C6636CF733C4D82 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */; }; + 3CE81EA6CD7444739AC73633 /* DevLogInfra.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 592C8B7B099933759AB316A5 /* DevLogInfra.framework */; }; FB5186BC5A89B7DADAB8A82A /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 2AC59F98E5A6BFA339C3E5BD /* FirebaseAuth */; }; FB8043FF7043AFDA0E3F705B /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = 94394E2197878DD50AF67628 /* FirebaseMessaging */; }; FE130A3E1E85658BD3ECE791 /* FirebaseFunctions+.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9AFF9DAE09B8132A62D6DA8 /* FirebaseFunctions+.swift */; }; @@ -81,6 +82,13 @@ remoteGlobalIDString = 7D1E74925088998D68BBFBBB; remoteInfo = DevLogDomain; }; + 66FBFAC873BD4CEDA5984DD4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = FF22261AB99602DAB8E9B323 /* Project object */; + proxyType = 1; + remoteGlobalIDString = CB9B628AE2E0684C1FCF8840; + remoteInfo = DevLogInfra; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ @@ -92,6 +100,7 @@ 4ED31F0EEEF764BB7538C585 /* TopViewControllerProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TopViewControllerProvider.swift; path = Sources/Common/TopViewControllerProvider.swift; sourceTree = ""; }; 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GoogleAuthenticationServiceImpl.swift; path = Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift; sourceTree = ""; }; 592C8B7B099933759AB316A5 /* DevLogInfra.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogInfra.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AD628A91CC6D40B29D89DEA3 /* DevLogInfraTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLogInfraTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 59E81A47825142881793450F /* FirebaseAuthUser+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FirebaseAuthUser+.swift"; path = "Sources/Extension/FirebaseAuthUser+.swift"; sourceTree = ""; }; 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FirestorePath.swift; path = Sources/Common/FirestorePath.swift; sourceTree = ""; }; 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; @@ -128,6 +137,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + AA4F133C2BE849A5A33F3499 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3CE81EA6CD7444739AC73633 /* DevLogInfra.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -135,6 +152,7 @@ isa = PBXGroup; children = ( 592C8B7B099933759AB316A5 /* DevLogInfra.framework */, + AD628A91CC6D40B29D89DEA3 /* DevLogInfraTests.xctest */, 8C4421AE6B9E4E419E73297F /* DevLogDomain.framework */, A4F874032FD57C0BBCC41C64 /* DevLogData.framework */, B55555555555555555555555 /* DevLogCore.framework */, @@ -278,6 +296,24 @@ productReference = 592C8B7B099933759AB316A5 /* DevLogInfra.framework */; productType = "com.apple.product-type.framework"; }; + 38643C4F96B2449E85275475 /* DevLogInfraTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 66178A1F2D3D41EF921A2B31 /* Build configuration list for PBXNativeTarget "DevLogInfraTests" */; + buildPhases = ( + 70CD76339E5E4F7AA090CCB9 /* Sources */, + AA4F133C2BE849A5A33F3499 /* Frameworks */, + D5817DC8BA6F4C22B1F4D94B /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + DD23C8A4110847EABDCAA271 /* PBXTargetDependency */, + ); + name = DevLogInfraTests; + productName = DevLogInfraTests; + productReference = AD628A91CC6D40B29D89DEA3 /* DevLogInfraTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -286,6 +322,12 @@ attributes = { LastSwiftUpdateCheck = 1600; LastUpgradeCheck = 1600; + TargetAttributes = { + 38643C4F96B2449E85275475 = { + CreatedOnToolsVersion = 16.0; + TestTargetID = CB9B628AE2E0684C1FCF8840; + }; + }; }; buildConfigurationList = C6F3911AA3FBE8FB727B853A /* Build configuration list for PBXProject "DevLogInfra" */; compatibilityVersion = "Xcode 3.2"; @@ -322,6 +364,7 @@ projectRoot = ""; targets = ( CB9B628AE2E0684C1FCF8840 /* DevLogInfra */, + 38643C4F96B2449E85275475 /* DevLogInfraTests */, ); }; /* End PBXProject section */ @@ -358,6 +401,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D5817DC8BA6F4C22B1F4D94B /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -387,6 +437,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 70CD76339E5E4F7AA090CCB9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -405,6 +462,11 @@ name = DevLogCore; targetProxy = B66666666666666666666666 /* PBXContainerItemProxy */; }; + DD23C8A4110847EABDCAA271 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = CB9B628AE2E0684C1FCF8840 /* DevLogInfra */; + targetProxy = 66FBFAC873BD4CEDA5984DD4 /* PBXContainerItemProxy */; + }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ @@ -572,6 +634,36 @@ }; name = Debug; }; + 7F06F2F8F58E4D2AA5A0891E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogInfraTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = DevLogInfra; + }; + name = Debug; + }; + 744098DF376F4E6B9A2736E4 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogInfraTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = DevLogInfra; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -593,6 +685,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 66178A1F2D3D41EF921A2B31 /* Build configuration list for PBXNativeTarget "DevLogInfraTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 744098DF376F4E6B9A2736E4 /* Release */, + 7F06F2F8F58E4D2AA5A0891E /* Debug */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ diff --git a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..64568cd1 --- /dev/null +++ b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,168 @@ +{ + "originHash" : "196bf405f95d97929222ec2d3af72489caafb03f699a5006584c147ddc43a9e5", + "pins" : [ + { + "identity" : "abseil-cpp-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/abseil-cpp-binary.git", + "state" : { + "revision" : "bbe8b69694d7873315fd3a4ad41efe043e1c07c5", + "version" : "1.2024072200.0" + } + }, + { + "identity" : "app-check", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/app-check.git", + "state" : { + "revision" : "61b85103a1aeed8218f17c794687781505fbbef5", + "version" : "11.2.0" + } + }, + { + "identity" : "appauth-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/openid/AppAuth-iOS.git", + "state" : { + "revision" : "145104f5ea9d58ae21b60add007c33c1cc0c948e", + "version" : "2.0.0" + } + }, + { + "identity" : "firebase-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/firebase-ios-sdk", + "state" : { + "revision" : "fdc352fabaf5916e7faa1f96ad02b1957e93e5a5", + "version" : "11.15.0" + } + }, + { + "identity" : "google-ads-on-device-conversion-ios-sdk", + "kind" : "remoteSourceControl", + "location" : "https://github.com/googleads/google-ads-on-device-conversion-ios-sdk", + "state" : { + "revision" : "a2d0f1f1666de591eb1a811f40b1706f5c63a2ed", + "version" : "2.3.0" + } + }, + { + "identity" : "googleappmeasurement", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleAppMeasurement.git", + "state" : { + "revision" : "45ce435e9406d3c674dd249a042b932bee006f60", + "version" : "11.15.0" + } + }, + { + "identity" : "googledatatransport", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleDataTransport.git", + "state" : { + "revision" : "617af071af9aa1d6a091d59a202910ac482128f9", + "version" : "10.1.0" + } + }, + { + "identity" : "googlesignin-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleSignIn-iOS", + "state" : { + "revision" : "913b4005ea26aebe1c97d54e35ad82a515924c71", + "version" : "9.1.0" + } + }, + { + "identity" : "googleutilities", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GoogleUtilities.git", + "state" : { + "revision" : "60da361632d0de02786f709bdc0c4df340f7613e", + "version" : "8.1.0" + } + }, + { + "identity" : "grpc-binary", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/grpc-binary.git", + "state" : { + "revision" : "75b31c842f664a0f46a2e590a570e370249fd8f6", + "version" : "1.69.1" + } + }, + { + "identity" : "gtm-session-fetcher", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/gtm-session-fetcher.git", + "state" : { + "revision" : "a2ab612cb980066ee56d90d60d8462992c07f24b", + "version" : "3.5.0" + } + }, + { + "identity" : "gtmappauth", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/GTMAppAuth.git", + "state" : { + "revision" : "56e0ccf09a6dd29dc7e68bdf729598240ca8aa16", + "version" : "5.0.0" + } + }, + { + "identity" : "interop-ios-for-google-sdks", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/interop-ios-for-google-sdks.git", + "state" : { + "revision" : "040d087ac2267d2ddd4cca36c757d1c6a05fdbfe", + "version" : "101.0.0" + } + }, + { + "identity" : "leveldb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/leveldb.git", + "state" : { + "revision" : "a0bc79961d7be727d258d33d5a6b2f1023270ba1", + "version" : "1.22.5" + } + }, + { + "identity" : "nanopb", + "kind" : "remoteSourceControl", + "location" : "https://github.com/firebase/nanopb.git", + "state" : { + "revision" : "b7e1104502eca3a213b46303391ca4d3bc8ddec1", + "version" : "2.30910.0" + } + }, + { + "identity" : "nexa", + "kind" : "remoteSourceControl", + "location" : "https://github.com/opficdev/Nexa", + "state" : { + "revision" : "a2f3ca9862eb24ffc28bdeb6d67293b4e8ddf3a5", + "version" : "1.1.0" + } + }, + { + "identity" : "promises", + "kind" : "remoteSourceControl", + "location" : "https://github.com/google/promises.git", + "state" : { + "revision" : "540318ecedd63d883069ae7f1ed811a2df00b6ac", + "version" : "2.4.0" + } + }, + { + "identity" : "swift-protobuf", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-protobuf.git", + "state" : { + "revision" : "81558271e243f8f47dfe8e9fdd55f3c2b5413f68", + "version" : "1.37.0" + } + } + ], + "version" : 3 +} diff --git a/Application/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfraTests.xcscheme b/Application/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfraTests.xcscheme new file mode 100644 index 00000000..09ff7b69 --- /dev/null +++ b/Application/DevLogInfra/DevLogInfra.xcodeproj/xcshareddata/xcschemes/DevLogInfraTests.xcscheme @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + From f37fd32b0f14417b2e94b1c81762a7fd21ab0913 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 20:35:39 +0900 Subject: [PATCH 35/46] =?UTF-8?q?chore:=20Presentation=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 174 ++++++++++++++++++ .../DevLogPresentationTests.xcscheme | 70 +++++++ .../DeletePushNotificationTests.swift | 25 ++- .../Tests}/Support/TestSupport.swift | 5 +- .../Tests}/WebPage/DeleteWebPageTests.swift | 23 ++- 5 files changed, 277 insertions(+), 20 deletions(-) create mode 100644 Application/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentationTests.xcscheme rename {DevLog_Unit => Application/DevLogPresentation/Tests}/PushNotification/DeletePushNotificationTests.swift (88%) rename {DevLog_Unit => Application/DevLogPresentation/Tests}/Support/TestSupport.swift (98%) rename {DevLog_Unit => Application/DevLogPresentation/Tests}/WebPage/DeleteWebPageTests.swift (87%) diff --git a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj index 36d8bcee..993180b2 100644 --- a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj +++ b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/project.pbxproj @@ -74,16 +74,21 @@ C85FD011138539C08D18D22F /* RelativeTimeText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A0024EDA21AAFA7DEC7058D /* RelativeTimeText.swift */; }; CC36598B842BA60E284D4A9E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E43EBE726188C58FFB2B6CD /* Foundation.framework */; }; CD1D494C5D0EC118C8BAD491 /* TodayTodoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2BCF82DE8DF3DDEAF78826B5 /* TodayTodoItem.swift */; }; + CDD29A077265459D91A5AE58 /* TestSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97499098B61547C0AF737391 /* TestSupport.swift */; }; D12294635C147B35F3EA3314 /* PushNotificationSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C295FB79B9FCF187708EFF1 /* PushNotificationSettingsView.swift */; }; + D5BCE781F72346A08F831AC3 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFE459172FB7283400441703 /* DevLogDomain.framework */; }; D7ED2E08383517AA3E242B0C /* TodayViewCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5D877FBAD44D5DF8233F0BB3 /* TodayViewCoordinator.swift */; }; D8DCEA367C54C527295E004F /* HeatmapQuarter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */; }; DB081DF4854E8D445EFE0608 /* ProfileViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53B7D1C854833EFD757D7AD4 /* ProfileViewModel.swift */; }; + E3D6A097A4EA44FAB02C83EB /* DeleteWebPageTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 162C22DBA28543BFB70765FD /* DeleteWebPageTests.swift */; }; E7EBEBA803A9449A6CBEF11B /* RecentTodoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39AE1F6609037A277C54DD7 /* RecentTodoItem.swift */; }; E9BE203BADA107278CFBDD54 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */; }; F0B4DBB89733E466B105CF25 /* EnvironmentValues+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 931DDC13F47DBC816EDB17D7 /* EnvironmentValues+.swift */; }; F1474D4F84693113355B7DA2 /* TodoMarkdownContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A119B7970317B27ADC8DC1B3 /* TodoMarkdownContentView.swift */; }; + F5D0F59FAAFD40DAAE032B82 /* DeletePushNotificationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2BBD8816689402F889156AD /* DeletePushNotificationTests.swift */; }; F99147DC6D6F48E3842CD204 /* LoginButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F5DBA50879A2D0E264B8F49 /* LoginButton.swift */; }; FBD395A75EDED059CC021AF3 /* PushNotificationSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A0628537CFB964D5641A5F /* PushNotificationSettingsViewModel.swift */; }; + 0530C4A2CF7B413A831F5EA9 /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -94,6 +99,20 @@ remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; remoteInfo = DevLogCore; }; + 0829BE4E037D4E0C846B6C81 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 096704712B06C41C6A0FE074 /* Project object */; + proxyType = 1; + remoteGlobalIDString = A85D2D7D1D6DAAFBF86C9C34; + remoteInfo = DevLogPresentation; + }; + 3D5C8EE9B4C743CFAC5CAC06 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; 63A78AEC0654C9B6030C055B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = B2511C949378771BDB605CC6 /* DevLogDomain.xcodeproj */; @@ -150,6 +169,7 @@ 9340555B2B620464698851A5 /* TodoManageView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoManageView.swift; path = Sources/Home/TodoManageView.swift; sourceTree = ""; }; 93B72345FA909BFA40078D53 /* CheckBox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CheckBox.swift; path = Sources/Common/Component/CheckBox.swift; sourceTree = ""; }; 941338BD9D01E14CF5CCD53B /* UIKitTextEditor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UIKitTextEditor.swift; path = Sources/Common/Component/UIKitTextEditor.swift; sourceTree = ""; }; + 97499098B61547C0AF737391 /* TestSupport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestSupport.swift; sourceTree = ""; }; 9C6D01FAEAE8EB1FB2D60C7A /* TodoReferenceItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoReferenceItem.swift; path = Sources/Structure/Todo/TodoReferenceItem.swift; sourceTree = ""; }; 9CB6D9970E4286BA9A17C47C /* SettingView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SettingView.swift; path = Sources/Setting/SettingView.swift; sourceTree = ""; }; 9EBEFF93E1CFC9AF98B4B940 /* HomeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HomeView.swift; path = Sources/Home/HomeView.swift; sourceTree = ""; }; @@ -172,6 +192,7 @@ B93F9DFD3646DEC19DB952E0 /* MainViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MainViewModel.swift; path = Sources/ViewModel/MainViewModel.swift; sourceTree = ""; }; BA522CF101F432B37F315C24 /* TodoListViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListViewModel.swift; path = Sources/ViewModel/TodoListViewModel.swift; sourceTree = ""; }; BF28FCF602F6165DC67FE7D6 /* PushNotificationItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationItem.swift; path = Sources/Structure/PushNotificationItem.swift; sourceTree = ""; }; + F8C1C9C28BDE46D39FC79A72 /* DevLogPresentationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLogPresentationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; C2EDDC1E545869FE9C849E4B /* HeatmapQuarter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapQuarter.swift; path = Sources/Structure/Profile/HeatmapQuarter.swift; sourceTree = ""; }; C39861EE0C254CCC9A608201 /* LoginViewModel.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginViewModel.swift; path = Sources/ViewModel/LoginViewModel.swift; sourceTree = ""; }; D2028F13D1316DD7D0229249 /* LoginView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoginView.swift; path = Sources/Login/LoginView.swift; sourceTree = ""; }; @@ -179,6 +200,7 @@ D7258BA3748F0B1BDB1AFFD3 /* TodoListItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoListItem.swift; path = Sources/Structure/Todo/TodoListItem.swift; sourceTree = ""; }; D9273C8C47864D6BE91BECBA /* TodoDetailContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoDetailContentView.swift; path = Sources/Common/TodoDetailContentView.swift; sourceTree = ""; }; D985AFDC4BC28BB5F34D35B1 /* Color+Hex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Color+Hex.swift"; path = "Sources/Extension/Color+Hex.swift"; sourceTree = ""; }; + E2BBD8816689402F889156AD /* DeletePushNotificationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeletePushNotificationTests.swift; sourceTree = ""; }; E06ED9387372D891F65B1CAD /* LoadingState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = LoadingState.swift; path = Sources/Common/LoadingState.swift; sourceTree = ""; }; E0C555707203C5E83B5B5D7B /* Tag+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Tag+.swift"; path = "Sources/Common/Component/Tag+.swift"; sourceTree = ""; }; E1C3E84C523AD6F3484EE748 /* Error+SocialLogin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Error+SocialLogin.swift"; path = "Sources/Extension/Error+SocialLogin.swift"; sourceTree = ""; }; @@ -189,6 +211,7 @@ F51F902DA946EBFEEC4CD14B /* TodayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayView.swift; path = Sources/Today/TodayView.swift; sourceTree = ""; }; F9A20E0402D598F5587EAFFE /* WebItemRow.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebItemRow.swift; path = Sources/Common/Component/WebItemRow.swift; sourceTree = ""; }; FD88694DEEB6DE8DE51EE0B4 /* ThemeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeView.swift; path = Sources/Setting/ThemeView.swift; sourceTree = ""; }; + 162C22DBA28543BFB70765FD /* DeleteWebPageTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeleteWebPageTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -202,6 +225,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 51A82EDFE96F43B8900A3E8C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0530C4A2CF7B413A831F5EA9 /* DevLogPresentation.framework in Frameworks */, + D5BCE781F72346A08F831AC3 /* DevLogDomain.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -217,6 +249,7 @@ 03D4331F04C462F4C642860F /* Products */ = { isa = PBXGroup; children = ( + F8C1C9C28BDE46D39FC79A72 /* DevLogPresentationTests.xctest */, DFE459172FB7283400441703 /* DevLogDomain.framework */, ); name = Products; @@ -256,6 +289,7 @@ 03D4331F04C462F4C642860F /* Products */, 9CC0354538B2A1DF2C74E484 /* Frameworks */, A4A427D518004ED78EB659DE /* DevLogPresentation */, + 4320D5C2F6A44B24BF69A36B /* Tests */, 65C85B83FD4ECCC13F82B90F /* Projects */, ); sourceTree = ""; @@ -274,6 +308,16 @@ name = Common; sourceTree = ""; }; + 4320D5C2F6A44B24BF69A36B /* Tests */ = { + isa = PBXGroup; + children = ( + A2F3BB0BD4CE46CF9110C0B9 /* PushNotification */, + DB5EF73082994CCB8C57468D /* WebPage */, + E1150CDF9E2748F18885904D /* Support */, + ); + path = Tests; + sourceTree = ""; + }; 3E8BE5E7BA89E9C06CB4680E /* Setting */ = { isa = PBXGroup; children = ( @@ -422,6 +466,14 @@ name = Extension; sourceTree = ""; }; + A2F3BB0BD4CE46CF9110C0B9 /* PushNotification */ = { + isa = PBXGroup; + children = ( + E2BBD8816689402F889156AD /* DeletePushNotificationTests.swift */, + ); + path = PushNotification; + sourceTree = ""; + }; A4A427D518004ED78EB659DE /* DevLogPresentation */ = { isa = PBXGroup; children = ( @@ -473,6 +525,22 @@ name = Profile; sourceTree = ""; }; + DB5EF73082994CCB8C57468D /* WebPage */ = { + isa = PBXGroup; + children = ( + 162C22DBA28543BFB70765FD /* DeleteWebPageTests.swift */, + ); + path = WebPage; + sourceTree = ""; + }; + E1150CDF9E2748F18885904D /* Support */ = { + isa = PBXGroup; + children = ( + 97499098B61547C0AF737391 /* TestSupport.swift */, + ); + path = Support; + sourceTree = ""; + }; E4A0DAED0089A38F5494701B /* Todo */ = { isa = PBXGroup; children = ( @@ -534,6 +602,25 @@ productReference = 5E7473315771B5D3030C5003 /* DevLogPresentation.framework */; productType = "com.apple.product-type.framework"; }; + BB5614AE13A04E97AC91BD37 /* DevLogPresentationTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3CED24FB13BD46FD822E6E62 /* Build configuration list for PBXNativeTarget "DevLogPresentationTests" */; + buildPhases = ( + B35683B73EC04117BE5F8A9D /* Sources */, + 51A82EDFE96F43B8900A3E8C /* Frameworks */, + 80C64DD7999B412E8BCF0325 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + A4FB56AD9F854F9D93800AD6 /* PBXTargetDependency */, + 001ED161D33049B18CFB34D9 /* PBXTargetDependency */, + ); + name = DevLogPresentationTests; + productName = DevLogPresentationTests; + productReference = F8C1C9C28BDE46D39FC79A72 /* DevLogPresentationTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -542,6 +629,11 @@ attributes = { LastSwiftUpdateCheck = 1600; LastUpgradeCheck = 1600; + TargetAttributes = { + BB5614AE13A04E97AC91BD37 = { + CreatedOnToolsVersion = 16.0; + }; + }; }; buildConfigurationList = FE8B1D393F1236CFECA60C89 /* Build configuration list for PBXProject "DevLogPresentation" */; compatibilityVersion = "Xcode 3.2"; @@ -571,6 +663,7 @@ projectRoot = ""; targets = ( A85D2D7D1D6DAAFBF86C9C34 /* DevLogPresentation */, + BB5614AE13A04E97AC91BD37 /* DevLogPresentationTests */, ); }; /* End PBXProject section */ @@ -593,6 +686,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 80C64DD7999B412E8BCF0325 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -677,6 +777,16 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + B35683B73EC04117BE5F8A9D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CDD29A077265459D91A5AE58 /* TestSupport.swift in Sources */, + E3D6A097A4EA44FAB02C83EB /* DeleteWebPageTests.swift in Sources */, + F5D0F59FAAFD40DAAE032B82 /* DeletePushNotificationTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -685,6 +795,16 @@ name = DevLogCore; targetProxy = 0B11B22C33D44E55F6677889 /* PBXContainerItemProxy */; }; + 001ED161D33049B18CFB34D9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = 3D5C8EE9B4C743CFAC5CAC06 /* PBXContainerItemProxy */; + }; + A4FB56AD9F854F9D93800AD6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = A85D2D7D1D6DAAFBF86C9C34 /* DevLogPresentation */; + targetProxy = 0829BE4E037D4E0C846B6C81 /* PBXContainerItemProxy */; + }; C8EA2345A40DFA6BCCD803EE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDomain; @@ -783,6 +903,28 @@ }; name = Release; }; + CB9C4E76716149638008AD42 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogPresentationTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = DevLogPresentation; + }; + name = Debug; + }; 8DD7AD0C295CF0638E03F403 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -811,6 +953,29 @@ }; name = Debug; }; + F63EFE6D267A4A16A91F429B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogPresentationTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = DevLogPresentation; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; 973B1093961F1A8F15179643 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -877,6 +1042,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 3CED24FB13BD46FD822E6E62 /* Build configuration list for PBXNativeTarget "DevLogPresentationTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CB9C4E76716149638008AD42 /* Debug */, + F63EFE6D267A4A16A91F429B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; FE8B1D393F1236CFECA60C89 /* Build configuration list for PBXProject "DevLogPresentation" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Application/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentationTests.xcscheme b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentationTests.xcscheme new file mode 100644 index 00000000..88d18abf --- /dev/null +++ b/Application/DevLogPresentation/DevLogPresentation.xcodeproj/xcshareddata/xcschemes/DevLogPresentationTests.xcscheme @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DevLog_Unit/PushNotification/DeletePushNotificationTests.swift b/Application/DevLogPresentation/Tests/PushNotification/DeletePushNotificationTests.swift similarity index 88% rename from DevLog_Unit/PushNotification/DeletePushNotificationTests.swift rename to Application/DevLogPresentation/Tests/PushNotification/DeletePushNotificationTests.swift index 7e221562..ba170d60 100644 --- a/DevLog_Unit/PushNotification/DeletePushNotificationTests.swift +++ b/Application/DevLogPresentation/Tests/PushNotification/DeletePushNotificationTests.swift @@ -1,18 +1,19 @@ // -// PushNotificationListViewModelTests.swift -// DevLog_Unit +// DeletePushNotificationTests.swift +// DevLogPresentationTests // // Created by opfic on 4/6/26. // import Testing import Foundation -@testable import DevLog +import DevLogDomain +@testable import DevLogPresentation @MainActor struct DeletePushNotificationTests { - @Test("삭제하면 항목이 즉시 사라지고 되돌리기 토스트가 표시되며 삭제 유스케이스가 호출된다") - func 삭제하면_항목이_즉시_사라지고_되돌리기_토스트가_표시되며_삭제_유스케이스가_호출된다() async throws { + @Test("삭제하면 항목이 즉시 숨겨지고 되돌리기 토스트가 표시되며 삭제 유스케이스가 호출된다") + func 삭제하면_항목이_즉시_숨겨지고_되돌리기_토스트가_표시되며_삭제_유스케이스가_호출된다() async throws { let fetchPushNotificationsUseCaseSpy = FetchPushNotificationsUseCaseSpy( pushNotificationPage: PushNotificationPage( items: [ @@ -53,7 +54,7 @@ struct DeletePushNotificationTests { pushNotificationListViewModel.send(.deleteNotification(pushNotificationItem)) - #expect(pushNotificationListViewModel.state.notifications.isEmpty) + #expect(pushNotificationListViewModel.state.notifications.filter { !$0.isHidden }.isEmpty) #expect(pushNotificationListViewModel.state.showToast) await waitUntil { @@ -63,8 +64,8 @@ struct DeletePushNotificationTests { #expect(deletePushNotificationUseCaseSpy.calledNotificationIds == ["notification-1"]) } - @Test("삭제를 되돌리면 되돌리기 유스케이스가 호출되고 다시 조회한다") - func 삭제를_되돌리면_되돌리기_유스케이스가_호출되고_다시_조회한다() async throws { + @Test("삭제를 되돌리면 되돌리기 유스케이스가 호출되고 숨김 상태가 해제된다") + func 삭제를_되돌리면_되돌리기_유스케이스가_호출되고_숨김_상태가_해제된다() async throws { let fetchPushNotificationsUseCaseSpy = FetchPushNotificationsUseCaseSpy( pushNotificationPage: PushNotificationPage( items: [ @@ -110,7 +111,13 @@ struct DeletePushNotificationTests { undoDeletePushNotificationUseCaseSpy.calledNotificationIds == ["notification-1"] } + let restoredPushNotificationItem = try #require( + pushNotificationListViewModel.state.notifications.first { + $0.id == "notification-1" + } + ) + #expect(undoDeletePushNotificationUseCaseSpy.calledNotificationIds == ["notification-1"]) - #expect(2 <= fetchPushNotificationsUseCaseSpy.executeCallCount) + #expect(!restoredPushNotificationItem.isHidden) } } diff --git a/DevLog_Unit/Support/TestSupport.swift b/Application/DevLogPresentation/Tests/Support/TestSupport.swift similarity index 98% rename from DevLog_Unit/Support/TestSupport.swift rename to Application/DevLogPresentation/Tests/Support/TestSupport.swift index 8286d2eb..9c3bbd41 100644 --- a/DevLog_Unit/Support/TestSupport.swift +++ b/Application/DevLogPresentation/Tests/Support/TestSupport.swift @@ -1,6 +1,6 @@ // // TestSupport.swift -// DevLog_Unit +// DevLogPresentationTests // // Created by opfic on 4/6/26. // @@ -8,7 +8,8 @@ import Testing import Foundation import Combine -@testable import DevLog +import DevLogDomain +@testable import DevLogPresentation @MainActor func waitUntil( diff --git a/DevLog_Unit/WebPage/DeleteWebPageTests.swift b/Application/DevLogPresentation/Tests/WebPage/DeleteWebPageTests.swift similarity index 87% rename from DevLog_Unit/WebPage/DeleteWebPageTests.swift rename to Application/DevLogPresentation/Tests/WebPage/DeleteWebPageTests.swift index 7793a242..2af51c17 100644 --- a/DevLog_Unit/WebPage/DeleteWebPageTests.swift +++ b/Application/DevLogPresentation/Tests/WebPage/DeleteWebPageTests.swift @@ -1,18 +1,19 @@ // -// HomeViewModelTests.swift -// DevLog_Unit +// DeleteWebPageTests.swift +// DevLogPresentationTests // // Created by opfic on 4/6/26. // import Testing import Foundation -@testable import DevLog +import DevLogDomain +@testable import DevLogPresentation @MainActor struct DeleteWebPageTests { - @Test("웹페이지를 삭제하면 항목이 즉시 사라지고 되돌리기 토스트가 표시되며 삭제 유스케이스가 호출된다") - func 웹페이지를_삭제하면_항목이_즉시_사라지고_되돌리기_토스트가_표시되며_삭제_유스케이스가_호출된다() async throws { + @Test("웹페이지를 삭제하면 항목이 즉시 숨겨지고 되돌리기 토스트가 표시되며 삭제 유스케이스가 호출된다") + func 웹페이지를_삭제하면_항목이_즉시_숨겨지고_되돌리기_토스트가_표시되며_삭제_유스케이스가_호출된다() async throws { let fetchTodoCategoryPreferencesUseCaseSpy = FetchTodoCategoryPreferencesUseCaseSpy() let updateTodoCategoryPreferencesUseCaseSpy = UpdateTodoCategoryPreferencesUseCaseSpy() let addWebPageUseCaseSpy = AddWebPageUseCaseSpy() @@ -53,7 +54,7 @@ struct DeleteWebPageTests { homeViewModel.send(.deleteWebPage(webPageItem)) - #expect(homeViewModel.state.webPages.isEmpty) + #expect(homeViewModel.state.webPages.filter { !$0.isHidden }.isEmpty) #expect(homeViewModel.state.showToast) await waitUntil { @@ -63,8 +64,8 @@ struct DeleteWebPageTests { #expect(deleteWebPageUseCaseSpy.calledUrlStrings == ["https://openai.com"]) } - @Test("웹페이지 삭제를 되돌리면 되돌리기 유스케이스가 호출되고 목록을 다시 조회한다") - func 웹페이지_삭제를_되돌리면_되돌리기_유스케이스가_호출되고_목록을_다시_조회한다() async throws { + @Test("웹페이지 삭제를 되돌리면 되돌리기 유스케이스가 호출되고 숨김 상태가 해제된다") + func 웹페이지_삭제를_되돌리면_되돌리기_유스케이스가_호출되고_숨김_상태가_해제된다() async throws { let fetchTodoCategoryPreferencesUseCaseSpy = FetchTodoCategoryPreferencesUseCaseSpy() let updateTodoCategoryPreferencesUseCaseSpy = UpdateTodoCategoryPreferencesUseCaseSpy() let addWebPageUseCaseSpy = AddWebPageUseCaseSpy() @@ -110,7 +111,11 @@ struct DeleteWebPageTests { undoDeleteWebPageUseCaseSpy.calledUrlStrings == ["https://openai.com"] } + let restoredWebPageItem = try #require(homeViewModel.state.webPages.first { + $0.url.absoluteString == "https://openai.com" + }) + #expect(undoDeleteWebPageUseCaseSpy.calledUrlStrings == ["https://openai.com"]) - #expect(2 <= fetchWebPagesUseCaseSpy.calledQueries.count) + #expect(!restoredWebPageItem.isHidden) } } From 7504cc478970c922ab80b77bd9250d49cf886345 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 21:17:02 +0900 Subject: [PATCH 36/46] =?UTF-8?q?fix:=20'public'=20modifier=20is=20redunda?= =?UTF-8?q?nt=20for=20instance=20method=20declared=20in=20a=20public=20ext?= =?UTF-8?q?ension=20=EA=B2=BD=EA=B3=A0=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sources/Mapper/PushNotificationMapping.swift | 8 ++++---- .../DevLogData/Sources/Mapper/TodoMapping.swift | 10 +++++----- .../DevLogData/Sources/Mapper/UserProfileMapping.swift | 2 +- .../DevLogData/Sources/Mapper/WebPageMapping.swift | 2 +- .../Sources/Entity/PushNotificationQuery.swift | 2 +- Application/DevLogDomain/Sources/Extension/Array.swift | 2 +- .../DevLogDomain/Sources/Extension/String.swift | 2 +- Widget/DevLogWidgetCore/Sources/Common/Calendar.swift | 2 +- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Application/DevLogData/Sources/Mapper/PushNotificationMapping.swift b/Application/DevLogData/Sources/Mapper/PushNotificationMapping.swift index ab694c3c..18d695e0 100644 --- a/Application/DevLogData/Sources/Mapper/PushNotificationMapping.swift +++ b/Application/DevLogData/Sources/Mapper/PushNotificationMapping.swift @@ -8,7 +8,7 @@ import DevLogDomain public extension PushNotificationResponse { - public func toDomain() throws -> PushNotification { + func toDomain() throws -> PushNotification { let todoCategory: TodoCategory switch self.todoCategory { @@ -33,14 +33,14 @@ public extension PushNotificationResponse { } public extension PushNotificationCursorDTO { - public func toDomain() -> PushNotificationCursor { + func toDomain() -> PushNotificationCursor { PushNotificationCursor( receivedAt: self.receivedAt, documentID: self.documentID ) } - public static func fromDomain(_ cursor: PushNotificationCursor) -> Self { + static func fromDomain(_ cursor: PushNotificationCursor) -> Self { PushNotificationCursorDTO( receivedAt: cursor.receivedAt, documentID: cursor.documentID @@ -49,7 +49,7 @@ public extension PushNotificationCursorDTO { } public extension PushNotificationPageResponse { - public func toDomain() throws -> PushNotificationPage { + func toDomain() throws -> PushNotificationPage { let items = try self.items.map { try $0.toDomain() } let nextCursor = self.nextCursor?.toDomain() return PushNotificationPage(items: items, nextCursor: nextCursor) diff --git a/Application/DevLogData/Sources/Mapper/TodoMapping.swift b/Application/DevLogData/Sources/Mapper/TodoMapping.swift index 5404b73e..b3a7d581 100644 --- a/Application/DevLogData/Sources/Mapper/TodoMapping.swift +++ b/Application/DevLogData/Sources/Mapper/TodoMapping.swift @@ -8,7 +8,7 @@ import DevLogDomain public extension TodoRequest { - public static func fromDomain(_ entity: Todo) -> Self { + static func fromDomain(_ entity: Todo) -> Self { TodoRequest( id: entity.id, isPinned: entity.isPinned, @@ -28,7 +28,7 @@ public extension TodoRequest { } public extension TodoResponse { - public func toDomain() throws -> Todo { + func toDomain() throws -> Todo { let todoCategory: TodoCategory switch category { @@ -58,7 +58,7 @@ public extension TodoResponse { } public extension TodoCursorDTO { - public func toDomain() -> TodoCursor { + func toDomain() -> TodoCursor { TodoCursor( primarySortDate: primarySortDate, secondarySortDate: secondarySortDate, @@ -66,7 +66,7 @@ public extension TodoCursorDTO { ) } - public static func fromDomain(_ cursor: TodoCursor) -> Self { + static func fromDomain(_ cursor: TodoCursor) -> Self { TodoCursorDTO( primarySortDate: cursor.primarySortDate, secondarySortDate: cursor.secondarySortDate, @@ -76,7 +76,7 @@ public extension TodoCursorDTO { } public extension TodoPageResponse { - public func toDomain() throws -> TodoPage { + func toDomain() throws -> TodoPage { let items = try items.map { try $0.toDomain() } let cursor = nextCursor?.toDomain() return TodoPage(items: items, nextCursor: cursor) diff --git a/Application/DevLogData/Sources/Mapper/UserProfileMapping.swift b/Application/DevLogData/Sources/Mapper/UserProfileMapping.swift index e6738b97..1690f3e6 100644 --- a/Application/DevLogData/Sources/Mapper/UserProfileMapping.swift +++ b/Application/DevLogData/Sources/Mapper/UserProfileMapping.swift @@ -8,7 +8,7 @@ import DevLogDomain public extension UserProfileResponse { - public func toDomain() -> UserProfile { + func toDomain() -> UserProfile { UserProfile( name: self.name, email: self.email, diff --git a/Application/DevLogData/Sources/Mapper/WebPageMapping.swift b/Application/DevLogData/Sources/Mapper/WebPageMapping.swift index c2d934e9..1b604a2e 100644 --- a/Application/DevLogData/Sources/Mapper/WebPageMapping.swift +++ b/Application/DevLogData/Sources/Mapper/WebPageMapping.swift @@ -9,7 +9,7 @@ import Foundation import DevLogDomain public extension WebPageResponse { - public func toDomain() throws -> WebPage { + func toDomain() throws -> WebPage { guard let url = URL(string: url) else { throw DataError.invalidData("WebPageResponse.url is invalid: \(url)") } diff --git a/Application/DevLogDomain/Sources/Entity/PushNotificationQuery.swift b/Application/DevLogDomain/Sources/Entity/PushNotificationQuery.swift index d8c611ba..1493bbef 100644 --- a/Application/DevLogDomain/Sources/Entity/PushNotificationQuery.swift +++ b/Application/DevLogDomain/Sources/Entity/PushNotificationQuery.swift @@ -67,7 +67,7 @@ public extension PushNotificationQuery.TimeFilter { } } - public var thresholdDate: Date? { + var thresholdDate: Date? { switch self { case .none: return nil diff --git a/Application/DevLogDomain/Sources/Extension/Array.swift b/Application/DevLogDomain/Sources/Extension/Array.swift index 8894d845..4e17ed9c 100644 --- a/Application/DevLogDomain/Sources/Extension/Array.swift +++ b/Application/DevLogDomain/Sources/Extension/Array.swift @@ -30,7 +30,7 @@ extension Array: @retroactive RawRepresentable where Element: Codable { } public extension Array { - public func chunked(maxCount: Int) -> [[Element]] { + func chunked(maxCount: Int) -> [[Element]] { guard 0 < maxCount else { return [] } var chunks = [[Element]]() diff --git a/Application/DevLogDomain/Sources/Extension/String.swift b/Application/DevLogDomain/Sources/Extension/String.swift index e7319029..6811f3ec 100644 --- a/Application/DevLogDomain/Sources/Extension/String.swift +++ b/Application/DevLogDomain/Sources/Extension/String.swift @@ -10,7 +10,7 @@ import Foundation public extension String { private static let todoReferencePattern = #"^([ \t]*)-[ \t]+refs[ \t]+#(\d+)[ \t]*$"# - public var todoReferenceNumbers: [Int] { + var todoReferenceNumbers: [Int] { guard let expression = try? NSRegularExpression( pattern: Self.todoReferencePattern, diff --git a/Widget/DevLogWidgetCore/Sources/Common/Calendar.swift b/Widget/DevLogWidgetCore/Sources/Common/Calendar.swift index 4eb7f208..97b076bb 100644 --- a/Widget/DevLogWidgetCore/Sources/Common/Calendar.swift +++ b/Widget/DevLogWidgetCore/Sources/Common/Calendar.swift @@ -8,7 +8,7 @@ import Foundation public extension Calendar { - public func startOfQuarter(for date: Date) -> Date { + func startOfQuarter(for date: Date) -> Date { let month = component(.month, from: date) let startMonth = ((month - 1) / 3) * 3 + 1 var components = dateComponents([.year], from: date) From aa2e4ec30c0c75553ee9f5402d148c843ba73198 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 21:37:28 +0900 Subject: [PATCH 37/46] =?UTF-8?q?chore:=20WidgetCore=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=8A=A4=ED=82=B4=20=EB=B6=84=EB=A6=AC=20=EB=B0=8F?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=20=EC=9C=84=EC=B9=98=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 220 ++++++++++++++++ .../xcschemes/DevLogWidgetCoreTests.xcscheme | 70 +++++ .../WidgetHeatmapPlaceholderShapeTests.swift | 4 +- .../Common}/WidgetSharedConstantsTests.swift | 4 +- .../Tests/Common}/WidgetSyncEventTests.swift | 4 +- .../HeatmapWidgetSnapshotFactoryTests.swift | 5 +- .../Tests/Sync}/WidgetSyncEventBusTests.swift | 4 +- .../Sync}/WidgetSyncEventHandlerTests.swift | 241 +++++++++++++----- .../TodayWidgetSnapshotFactoryTests.swift | 5 +- 9 files changed, 484 insertions(+), 73 deletions(-) create mode 100644 Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCoreTests.xcscheme rename {DevLog_Unit/Widget => Widget/DevLogWidgetCore/Tests/Common}/WidgetHeatmapPlaceholderShapeTests.swift (97%) rename {DevLog_Unit/Widget => Widget/DevLogWidgetCore/Tests/Common}/WidgetSharedConstantsTests.swift (90%) rename {DevLog_Unit/Widget => Widget/DevLogWidgetCore/Tests/Common}/WidgetSyncEventTests.swift (85%) rename {DevLog_Unit/Widget => Widget/DevLogWidgetCore/Tests/Heatmap}/HeatmapWidgetSnapshotFactoryTests.swift (99%) rename {DevLog_Unit/Widget => Widget/DevLogWidgetCore/Tests/Sync}/WidgetSyncEventBusTests.swift (91%) rename {DevLog_Unit/Widget => Widget/DevLogWidgetCore/Tests/Sync}/WidgetSyncEventHandlerTests.swift (52%) rename {DevLog_Unit/Widget => Widget/DevLogWidgetCore/Tests/Today}/TodayWidgetSnapshotFactoryTests.swift (98%) diff --git a/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj index 07e437ab..f16eb2e7 100644 --- a/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj +++ b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/project.pbxproj @@ -16,6 +16,17 @@ 641BA820F65E8F78F200EDCF /* HeatmapWidgetSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */; }; 75C99AB35C6DF930E824185E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBD260F923A87C1577DBFF0F /* Foundation.framework */; }; 80423C5F6B880409E39FD20F /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C18996E00A69C4BCB0F63AE /* DevLogData.framework */; }; + 8EF4007864D24A1F9074C80A /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */; }; + B69F5362A64E4C8FAA88393A /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B55555555555555555555555 /* DevLogCore.framework */; }; + CE64C1569E684FD7BF6E21E7 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B108898FD3650BE0C116BD3C /* DevLogDomain.framework */; }; + 7E979130578F4839B3C640C1 /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C18996E00A69C4BCB0F63AE /* DevLogData.framework */; }; + 7D04295532E14A0B9D76FFF3 /* WidgetHeatmapPlaceholderShapeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55357DCC323C4D53B1385DC0 /* WidgetHeatmapPlaceholderShapeTests.swift */; }; + 9088FC81711B41E080B7FF3B /* WidgetSharedConstantsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F6A0790B4904D148DD317FE /* WidgetSharedConstantsTests.swift */; }; + FF5C4EC48B1F4D85892F80FA /* WidgetSyncEventTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DF48BE25DA643D4ABCCD75A /* WidgetSyncEventTests.swift */; }; + 606584818D1A49DA9DAB3193 /* HeatmapWidgetSnapshotFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 283740F83F5C4D639E7E78BC /* HeatmapWidgetSnapshotFactoryTests.swift */; }; + D970FF8A2AF44369B8E98448 /* WidgetSyncEventBusTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D58A9C25F76437588144DA6 /* WidgetSyncEventBusTests.swift */; }; + 3737A4044B88452480B031F6 /* WidgetSyncEventHandlerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E1AAE0DFC2E4E3081F5B586 /* WidgetSyncEventHandlerTests.swift */; }; + AEF64ED829024819BB68B5C5 /* TodayWidgetSnapshotFactoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D90C32A7E96147C893ACC821 /* TodayWidgetSnapshotFactoryTests.swift */; }; A14D5069306E93272F138551 /* Calendar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DF1E781780B7BC63E38230 /* Calendar.swift */; }; A1DEB84CF3B18EC2005382C5 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B108898FD3650BE0C116BD3C /* DevLogDomain.framework */; }; A839995EF6B607DBECF11933 /* HeatmapWidgetSnapshotFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D6463570FC81D6C61C16A34 /* HeatmapWidgetSnapshotFactory.swift */; }; @@ -37,6 +48,34 @@ remoteGlobalIDString = 4AB6E00A38C37CDBF82B57FD; remoteInfo = Subproject; }; + 0B7A0A7092BC4744A8B90CF1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 836D58C848CD386B5BF2287A /* Project object */; + proxyType = 1; + remoteGlobalIDString = 687DD42230CC25053ABB5FB8; + remoteInfo = DevLogWidgetCore; + }; + 1080F73A70F4450B8CC531A1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B44444444444444444444444 /* DevLogCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogCore; + }; + D07D2270507C4AEE86205402 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; + D6F4AED74B7541E887C267D4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D9D76C33D8B4790694BD3488; + remoteInfo = DevLogData; + }; 406A7B367DEC67D4F9E38522 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */; @@ -85,13 +124,21 @@ 6525FA954E53789A9D91613A /* TodayWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodayWidgetSnapshot.swift; path = Sources/Today/TodayWidgetSnapshot.swift; sourceTree = ""; }; 65DF1E781780B7BC63E38230 /* Calendar.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Calendar.swift; path = Sources/Common/Calendar.swift; sourceTree = ""; }; 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogWidgetCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 099A7D56A0E544A28733E668 /* DevLogWidgetCoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLogWidgetCoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 7D134BB8FDB16D977E0BCB89 /* HeatmapWidgetSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HeatmapWidgetSnapshot.swift; path = Sources/Heatmap/HeatmapWidgetSnapshot.swift; sourceTree = ""; }; + 7DF48BE25DA643D4ABCCD75A /* WidgetSyncEventTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetSyncEventTests.swift; sourceTree = ""; }; + 7E1AAE0DFC2E4E3081F5B586 /* WidgetSyncEventHandlerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetSyncEventHandlerTests.swift; sourceTree = ""; }; 81B6C43B59E810D0CD5BC507 /* WidgetKind.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetKind.swift; path = Sources/Common/WidgetKind.swift; sourceTree = ""; }; 8613B33284297F26BA6A30C6 /* WidgetSharedDefaultsStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSharedDefaultsStore.swift; path = Sources/Common/WidgetSharedDefaultsStore.swift; sourceTree = ""; }; + 55357DCC323C4D53B1385DC0 /* WidgetHeatmapPlaceholderShapeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetHeatmapPlaceholderShapeTests.swift; sourceTree = ""; }; + 5F6A0790B4904D148DD317FE /* WidgetSharedConstantsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetSharedConstantsTests.swift; sourceTree = ""; }; 972B4258F31014D567D84C97 /* WidgetSnapshotKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotKey.swift; path = Sources/Common/WidgetSnapshotKey.swift; sourceTree = ""; }; ACFE372A6EC5D1CD395230F0 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../../Application/DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; B196335237B8C8EDB5700A7F /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../../Application/DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; B44444444444444444444444 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../../Application/DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; + 283740F83F5C4D639E7E78BC /* HeatmapWidgetSnapshotFactoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeatmapWidgetSnapshotFactoryTests.swift; sourceTree = ""; }; + 9D58A9C25F76437588144DA6 /* WidgetSyncEventBusTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetSyncEventBusTests.swift; sourceTree = ""; }; + D90C32A7E96147C893ACC821 /* TodayWidgetSnapshotFactoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodayWidgetSnapshotFactoryTests.swift; sourceTree = ""; }; DD66A7F2739CB82F98A10A94 /* WidgetSyncEventHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSyncEventHandler.swift; path = Sources/Sync/WidgetSyncEventHandler.swift; sourceTree = ""; }; EEEECB9CFCE00F6DF5262C31 /* WidgetDeepLink.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetDeepLink.swift; path = Sources/Common/WidgetDeepLink.swift; sourceTree = ""; }; F938E87841D0E3147CC73238 /* WidgetAppGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetAppGroup.swift; path = Sources/Common/WidgetAppGroup.swift; sourceTree = ""; }; @@ -110,6 +157,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 3AA539BB51824CBF80B7C94A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8EF4007864D24A1F9074C80A /* DevLogWidgetCore.framework in Frameworks */, + B69F5362A64E4C8FAA88393A /* DevLogCore.framework in Frameworks */, + CE64C1569E684FD7BF6E21E7 /* DevLogDomain.framework in Frameworks */, + 7E979130578F4839B3C640C1 /* DevLogData.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -129,6 +187,16 @@ name = Common; sourceTree = ""; }; + 114245E1B15E45EEB291C0AC /* Common */ = { + isa = PBXGroup; + children = ( + 55357DCC323C4D53B1385DC0 /* WidgetHeatmapPlaceholderShapeTests.swift */, + 5F6A0790B4904D148DD317FE /* WidgetSharedConstantsTests.swift */, + 7DF48BE25DA643D4ABCCD75A /* WidgetSyncEventTests.swift */, + ); + path = Common; + sourceTree = ""; + }; 22B18020E715C5AFC73F00FA /* Frameworks */ = { isa = PBXGroup; children = ( @@ -152,6 +220,7 @@ children = ( 22B18020E715C5AFC73F00FA /* Frameworks */, B60F0C6B052E1EF8CC827AD9 /* DevLogWidgetCore */, + E69EC16509DD43B9A31327C2 /* Tests */, 23F6B7BB30A8782BF2FB2D92 /* Projects */, A71745ED0B0D9E29633DB923 /* Products */, ); @@ -166,10 +235,19 @@ name = Heatmap; sourceTree = ""; }; + 4E47381D32B340F0B5E87F9D /* Heatmap */ = { + isa = PBXGroup; + children = ( + 283740F83F5C4D639E7E78BC /* HeatmapWidgetSnapshotFactoryTests.swift */, + ); + path = Heatmap; + sourceTree = ""; + }; A71745ED0B0D9E29633DB923 /* Products */ = { isa = PBXGroup; children = ( 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */, + 099A7D56A0E544A28733E668 /* DevLogWidgetCoreTests.xctest */, B55555555555555555555555 /* DevLogCore.framework */, B108898FD3650BE0C116BD3C /* DevLogDomain.framework */, 7C18996E00A69C4BCB0F63AE /* DevLogData.framework */, @@ -188,6 +266,15 @@ name = DevLogWidgetCore; sourceTree = ""; }; + A245EBE875FA406391F0CB15 /* Sync */ = { + isa = PBXGroup; + children = ( + 9D58A9C25F76437588144DA6 /* WidgetSyncEventBusTests.swift */, + 7E1AAE0DFC2E4E3081F5B586 /* WidgetSyncEventHandlerTests.swift */, + ); + path = Sync; + sourceTree = ""; + }; E41A9AF45640EBD9FA86BDB5 /* Sync */ = { isa = PBXGroup; children = ( @@ -198,6 +285,17 @@ name = Sync; sourceTree = ""; }; + E69EC16509DD43B9A31327C2 /* Tests */ = { + isa = PBXGroup; + children = ( + 114245E1B15E45EEB291C0AC /* Common */, + 4E47381D32B340F0B5E87F9D /* Heatmap */, + A245EBE875FA406391F0CB15 /* Sync */, + 54CC903F49E2449681CB9A66 /* Today */, + ); + path = Tests; + sourceTree = ""; + }; E4683C4F36BFC412C75D164A /* iOS */ = { isa = PBXGroup; children = ( @@ -215,6 +313,14 @@ name = Today; sourceTree = ""; }; + 54CC903F49E2449681CB9A66 /* Today */ = { + isa = PBXGroup; + children = ( + D90C32A7E96147C893ACC821 /* TodayWidgetSnapshotFactoryTests.swift */, + ); + path = Today; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -249,6 +355,27 @@ productReference = 6AF1B307A7E7CC03AA2BABB1 /* DevLogWidgetCore.framework */; productType = "com.apple.product-type.framework"; }; + F425C01049EE418C85A74D15 /* DevLogWidgetCoreTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6F75FCBA6A204D4FA892DEF2 /* Build configuration list for PBXNativeTarget "DevLogWidgetCoreTests" */; + buildPhases = ( + 7FF66E64B14245E2A5CB8569 /* Sources */, + 3AA539BB51824CBF80B7C94A /* Frameworks */, + 408202E5151E4D7A890F137C /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 0FC02D22248748E49355C84A /* PBXTargetDependency */, + F7745FE3BB124A799D253D66 /* PBXTargetDependency */, + 0DDA8FBB36DE47AA85B6E75E /* PBXTargetDependency */, + 9BECD433C38843B2AF71F106 /* PBXTargetDependency */, + ); + name = DevLogWidgetCoreTests; + productName = DevLogWidgetCoreTests; + productReference = 099A7D56A0E544A28733E668 /* DevLogWidgetCoreTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -257,6 +384,11 @@ attributes = { LastSwiftUpdateCheck = 1600; LastUpgradeCheck = 1600; + TargetAttributes = { + F425C01049EE418C85A74D15 = { + CreatedOnToolsVersion = 16.0; + }; + }; }; buildConfigurationList = ED2CF47A9B589A0852A232E5 /* Build configuration list for PBXProject "DevLogWidgetCore" */; compatibilityVersion = "Xcode 3.2"; @@ -288,6 +420,7 @@ projectRoot = ""; targets = ( 687DD42230CC25053ABB5FB8 /* DevLogWidgetCore */, + F425C01049EE418C85A74D15 /* DevLogWidgetCoreTests */, ); }; /* End PBXProject section */ @@ -324,6 +457,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 408202E5151E4D7A890F137C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -350,6 +490,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7FF66E64B14245E2A5CB8569 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7D04295532E14A0B9D76FFF3 /* WidgetHeatmapPlaceholderShapeTests.swift in Sources */, + 9088FC81711B41E080B7FF3B /* WidgetSharedConstantsTests.swift in Sources */, + FF5C4EC48B1F4D85892F80FA /* WidgetSyncEventTests.swift in Sources */, + 606584818D1A49DA9DAB3193 /* HeatmapWidgetSnapshotFactoryTests.swift in Sources */, + D970FF8A2AF44369B8E98448 /* WidgetSyncEventBusTests.swift in Sources */, + 3737A4044B88452480B031F6 /* WidgetSyncEventHandlerTests.swift in Sources */, + AEF64ED829024819BB68B5C5 /* TodayWidgetSnapshotFactoryTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -358,6 +512,26 @@ name = DevLogCore; targetProxy = B33333333333333333333333 /* PBXContainerItemProxy */; }; + 0FC02D22248748E49355C84A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 687DD42230CC25053ABB5FB8 /* DevLogWidgetCore */; + targetProxy = 0B7A0A7092BC4744A8B90CF1 /* PBXContainerItemProxy */; + }; + F7745FE3BB124A799D253D66 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogCore; + targetProxy = 1080F73A70F4450B8CC531A1 /* PBXContainerItemProxy */; + }; + 0DDA8FBB36DE47AA85B6E75E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = D07D2270507C4AEE86205402 /* PBXContainerItemProxy */; + }; + 9BECD433C38843B2AF71F106 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogData; + targetProxy = D6F4AED74B7541E887C267D4 /* PBXContainerItemProxy */; + }; 504FAABF657F1D901A2B6BB9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogDomain; @@ -396,6 +570,43 @@ }; name = Release; }; + C8AB811EE79C44E18B3C5FDA /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogWidgetCoreTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = DevLogWidgetCore; + }; + name = Debug; + }; + A126E2F5B68D409C837729AA /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogWidgetCoreTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = DevLogWidgetCore; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; C5BA4998DAC2550DE98EA22B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -547,6 +758,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 6F75FCBA6A204D4FA892DEF2 /* Build configuration list for PBXNativeTarget "DevLogWidgetCoreTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C8AB811EE79C44E18B3C5FDA /* Debug */, + A126E2F5B68D409C837729AA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; ED2CF47A9B589A0852A232E5 /* Build configuration list for PBXProject "DevLogWidgetCore" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCoreTests.xcscheme b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCoreTests.xcscheme new file mode 100644 index 00000000..c02a5071 --- /dev/null +++ b/Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj/xcshareddata/xcschemes/DevLogWidgetCoreTests.xcscheme @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DevLog_Unit/Widget/WidgetHeatmapPlaceholderShapeTests.swift b/Widget/DevLogWidgetCore/Tests/Common/WidgetHeatmapPlaceholderShapeTests.swift similarity index 97% rename from DevLog_Unit/Widget/WidgetHeatmapPlaceholderShapeTests.swift rename to Widget/DevLogWidgetCore/Tests/Common/WidgetHeatmapPlaceholderShapeTests.swift index 9c5dbc15..33681455 100644 --- a/DevLog_Unit/Widget/WidgetHeatmapPlaceholderShapeTests.swift +++ b/Widget/DevLogWidgetCore/Tests/Common/WidgetHeatmapPlaceholderShapeTests.swift @@ -1,13 +1,13 @@ // // WidgetHeatmapPlaceholderShapeTests.swift -// DevLog_Unit +// DevLogWidgetCoreTests // // Created by opfic on 4/30/26. // import Foundation import Testing -@testable import DevLog +@testable import DevLogWidgetCore struct WidgetHeatmapPlaceholderShapeTests { @Test("Heatmap 위젯 placeholder는 현재 월과 분기의 실제 날짜 위치를 사용한다") diff --git a/DevLog_Unit/Widget/WidgetSharedConstantsTests.swift b/Widget/DevLogWidgetCore/Tests/Common/WidgetSharedConstantsTests.swift similarity index 90% rename from DevLog_Unit/Widget/WidgetSharedConstantsTests.swift rename to Widget/DevLogWidgetCore/Tests/Common/WidgetSharedConstantsTests.swift index 3a2ba3b3..51439666 100644 --- a/DevLog_Unit/Widget/WidgetSharedConstantsTests.swift +++ b/Widget/DevLogWidgetCore/Tests/Common/WidgetSharedConstantsTests.swift @@ -1,12 +1,12 @@ // // WidgetSharedConstantsTests.swift -// DevLog_Unit +// DevLogWidgetCoreTests // // Created by opfic on 4/29/26. // import Testing -@testable import DevLog +@testable import DevLogWidgetCore struct WidgetSharedConstantsTests { @Test("위젯 kind와 snapshot key는 공유 상수로 관리한다") diff --git a/DevLog_Unit/Widget/WidgetSyncEventTests.swift b/Widget/DevLogWidgetCore/Tests/Common/WidgetSyncEventTests.swift similarity index 85% rename from DevLog_Unit/Widget/WidgetSyncEventTests.swift rename to Widget/DevLogWidgetCore/Tests/Common/WidgetSyncEventTests.swift index e3681a9d..9a7e9a09 100644 --- a/DevLog_Unit/Widget/WidgetSyncEventTests.swift +++ b/Widget/DevLogWidgetCore/Tests/Common/WidgetSyncEventTests.swift @@ -1,13 +1,13 @@ // // WidgetSyncEventTests.swift -// DevLog_Unit +// DevLogWidgetCoreTests // // Created by opfic on 4/29/26. // import Foundation import Testing -@testable import DevLog +@testable import DevLogWidgetCore struct WidgetSyncEventTests { @Test("위젯 동기화 이벤트는 동기화 요청만 표현한다") diff --git a/DevLog_Unit/Widget/HeatmapWidgetSnapshotFactoryTests.swift b/Widget/DevLogWidgetCore/Tests/Heatmap/HeatmapWidgetSnapshotFactoryTests.swift similarity index 99% rename from DevLog_Unit/Widget/HeatmapWidgetSnapshotFactoryTests.swift rename to Widget/DevLogWidgetCore/Tests/Heatmap/HeatmapWidgetSnapshotFactoryTests.swift index 4dbe956a..700964d8 100644 --- a/DevLog_Unit/Widget/HeatmapWidgetSnapshotFactoryTests.swift +++ b/Widget/DevLogWidgetCore/Tests/Heatmap/HeatmapWidgetSnapshotFactoryTests.swift @@ -1,13 +1,14 @@ // // HeatmapWidgetSnapshotFactoryTests.swift -// DevLog_Unit +// DevLogWidgetCoreTests // // Created by opfic on 4/17/26. // import Foundation import Testing -@testable import DevLog +import DevLogDomain +@testable import DevLogWidgetCore struct HeatmapWidgetSnapshotFactoryTests { @Test("Heatmap 위젯 스냅샷은 이번 분기 기준 월과 일별 count를 만든다") diff --git a/DevLog_Unit/Widget/WidgetSyncEventBusTests.swift b/Widget/DevLogWidgetCore/Tests/Sync/WidgetSyncEventBusTests.swift similarity index 91% rename from DevLog_Unit/Widget/WidgetSyncEventBusTests.swift rename to Widget/DevLogWidgetCore/Tests/Sync/WidgetSyncEventBusTests.swift index f8c55ee6..d3ae240a 100644 --- a/DevLog_Unit/Widget/WidgetSyncEventBusTests.swift +++ b/Widget/DevLogWidgetCore/Tests/Sync/WidgetSyncEventBusTests.swift @@ -1,13 +1,13 @@ // // WidgetSyncEventBusTests.swift -// DevLog_Unit +// DevLogWidgetCoreTests // // Created by opfic on 4/30/26. // import Combine import Testing -@testable import DevLog +@testable import DevLogWidgetCore struct WidgetSyncEventBusTests { @Test("WidgetSyncEventBus는 발행된 이벤트를 관찰자에게 전달한다") diff --git a/DevLog_Unit/Widget/WidgetSyncEventHandlerTests.swift b/Widget/DevLogWidgetCore/Tests/Sync/WidgetSyncEventHandlerTests.swift similarity index 52% rename from DevLog_Unit/Widget/WidgetSyncEventHandlerTests.swift rename to Widget/DevLogWidgetCore/Tests/Sync/WidgetSyncEventHandlerTests.swift index e751d5dc..37f514ec 100644 --- a/DevLog_Unit/Widget/WidgetSyncEventHandlerTests.swift +++ b/Widget/DevLogWidgetCore/Tests/Sync/WidgetSyncEventHandlerTests.swift @@ -1,13 +1,15 @@ // // WidgetSyncEventHandlerTests.swift -// DevLog_Unit +// DevLogWidgetCoreTests // // Created by opfic on 4/30/26. // import Foundation import Testing -@testable import DevLog +import DevLogData +import DevLogDomain +@testable import DevLogWidgetCore struct WidgetSyncEventHandlerTests { @Test("위젯 동기화 요청 이벤트는 Today와 Heatmap 스냅샷을 갱신한다") @@ -34,12 +36,18 @@ struct WidgetSyncEventHandlerTests { fixture.bus.publish(.syncRequested) - let todaySnapshot = try await loadTodaySnapshot(from: fixture.snapshotStore) - let heatmapSnapshot = try await loadHeatmapSnapshot(from: fixture.snapshotStore) + try await waitUntil { + fixture.snapshotUpdater.hasTodayUpdate && fixture.snapshotUpdater.hasHeatmapUpdate + } + + let todayUpdates = fixture.snapshotUpdater.todayUpdates + let heatmapUpdates = fixture.snapshotUpdater.heatmapUpdates let queries = await fixture.todoRepository.calledQueries() - #expect(todaySnapshot.totalCount == 1) - #expect(heatmapSnapshot.maxCount == 3) + #expect(todayUpdates.first?.todos.map(\.id) == ["today"]) + #expect(heatmapUpdates.first?.createdTodos.map(\.id) == ["created"]) + #expect(heatmapUpdates.first?.completedTodos.map(\.id) == ["completed"]) + #expect(heatmapUpdates.first?.deletedTodos.map(\.id) == ["deleted"]) #expect(queries.count == 5) #expect(Set(queries.map(\.sortTarget)) == Set([ .dueDate, @@ -73,10 +81,14 @@ struct WidgetSyncEventHandlerTests { fixture.bus.publish(.syncRequested) - let heatmapSnapshot = try await loadHeatmapSnapshot(from: fixture.snapshotStore) + try await waitUntil { + fixture.snapshotUpdater.hasHeatmapUpdate + } - #expect(heatmapSnapshot.maxCount == 3) - #expect(try fixture.snapshotStore.loadTodaySnapshot() == nil) + #expect(fixture.snapshotUpdater.todayUpdates.isEmpty) + #expect(fixture.snapshotUpdater.heatmapUpdates.first?.createdTodos.map(\.id) == ["created"]) + #expect(fixture.snapshotUpdater.heatmapUpdates.first?.completedTodos.map(\.id) == ["completed"]) + #expect(fixture.snapshotUpdater.heatmapUpdates.first?.deletedTodos.map(\.id) == ["deleted"]) _ = fixture.handler } @@ -95,10 +107,12 @@ struct WidgetSyncEventHandlerTests { fixture.bus.publish(.syncRequested) - let todaySnapshot = try await loadTodaySnapshot(from: fixture.snapshotStore) + try await waitUntil { + fixture.snapshotUpdater.hasTodayUpdate + } - #expect(todaySnapshot.totalCount == 1) - #expect(try fixture.snapshotStore.loadHeatmapSnapshot() == nil) + #expect(fixture.snapshotUpdater.todayUpdates.first?.todos.map(\.id) == ["today"]) + #expect(fixture.snapshotUpdater.heatmapUpdates.isEmpty) _ = fixture.handler } @@ -107,58 +121,19 @@ struct WidgetSyncEventHandlerTests { ) -> ( bus: WidgetSyncEventBusImpl, todoRepository: WidgetSyncTodoRepositorySpy, - snapshotStore: WidgetSnapshotStore, + snapshotUpdater: WidgetSnapshotUpdaterSpy, handler: WidgetSyncEventHandler ) { - let suiteName = "WidgetSyncEventHandlerTests.\(UUID().uuidString)" - let userDefaults = UserDefaults(suiteName: suiteName) ?? .standard - userDefaults.removePersistentDomain(forName: suiteName) let bus = WidgetSyncEventBusImpl() let todoRepository = WidgetSyncTodoRepositorySpy() - let snapshotStore = WidgetSnapshotStore( - store: WidgetSharedDefaultsStore(userDefaults: userDefaults) - ) - let preferenceStore = WidgetSnapshotPreferenceStoreImpl( - userDefaults: userDefaults - ) - let updater = WidgetSnapshotUpdaterImpl( - snapshotStore: snapshotStore, - preferenceStore: preferenceStore, - heatmapFactory: HeatmapWidgetSnapshotFactory(calendar: calendar) - ) + let snapshotUpdater = WidgetSnapshotUpdaterSpy() let handler = WidgetSyncEventHandler( eventBus: bus, repository: todoRepository, - snapshotUpdater: updater + snapshotUpdater: snapshotUpdater ) - return (bus, todoRepository, snapshotStore, handler) - } - - private func loadTodaySnapshot( - from snapshotStore: WidgetSnapshotStore - ) async throws -> TodayWidgetSnapshot { - for _ in 0..<20 { - if let snapshot = try snapshotStore.loadTodaySnapshot() { - return snapshot - } - try await Task.sleep(nanoseconds: 50_000_000) - } - - return try #require(try snapshotStore.loadTodaySnapshot()) - } - - private func loadHeatmapSnapshot( - from snapshotStore: WidgetSnapshotStore - ) async throws -> HeatmapWidgetSnapshot { - for _ in 0..<20 { - if let snapshot = try snapshotStore.loadHeatmapSnapshot() { - return snapshot - } - try await Task.sleep(nanoseconds: 50_000_000) - } - - return try #require(try snapshotStore.loadHeatmapSnapshot()) + return (bus, todoRepository, snapshotUpdater, handler) } private func makeTodo( @@ -219,7 +194,7 @@ private actor WidgetSyncTodoRepositorySpy: TodoRepository { queries.append(query) if failingSortTargets.contains(query.sortTarget) { - throw DataError.invalidData("WidgetSyncTodoRepositorySpy.fetchTodos failed") + throw WidgetSyncTodoRepositorySpyError.fetchTodosFailed } let items: [Todo] @@ -240,26 +215,170 @@ private actor WidgetSyncTodoRepositorySpy: TodoRepository { } func fetchTodo(_ todoId: String) async throws -> Todo { - throw DataError.invalidData("WidgetSyncTodoRepositorySpy.fetchTodo should not be called") + throw WidgetSyncTodoRepositorySpyError.unexpectedCall } func fetchReferences(_ numbers: [Int]) async throws -> [Int: TodoReference] { - throw DataError.invalidData("WidgetSyncTodoRepositorySpy.fetchReferences should not be called") + throw WidgetSyncTodoRepositorySpyError.unexpectedCall } func upsertTodo(_ todo: Todo) async throws { - throw DataError.invalidData("WidgetSyncTodoRepositorySpy.upsertTodo should not be called") + throw WidgetSyncTodoRepositorySpyError.unexpectedCall } func deleteTodo(_ todoId: String) async throws { - throw DataError.invalidData("WidgetSyncTodoRepositorySpy.deleteTodo should not be called") + throw WidgetSyncTodoRepositorySpyError.unexpectedCall } func undoDeleteTodo(_ todoId: String) async throws { - throw DataError.invalidData("WidgetSyncTodoRepositorySpy.undoDeleteTodo should not be called") + throw WidgetSyncTodoRepositorySpyError.unexpectedCall } func calledQueries() -> [TodoQuery] { queries } } + +private final class WidgetSnapshotUpdaterSpy: WidgetSnapshotUpdater { + struct TodayUpdate { + let todos: [Todo] + let displayOptions: TodayDisplayOptions? + let now: Date + } + + struct HeatmapUpdate { + let createdTodos: [Todo] + let completedTodos: [Todo] + let deletedTodos: [Todo] + let selectedActivityKinds: Set? + let quarterStart: Date + let now: Date + } + + private let lock = NSRecursiveLock() + private var storedTodayUpdates = [TodayUpdate]() + private var storedHeatmapUpdates = [HeatmapUpdate]() + private(set) var clearCallCount = 0 + + var todayUpdates: [TodayUpdate] { + lock.lock() + defer { lock.unlock() } + return storedTodayUpdates + } + + var heatmapUpdates: [HeatmapUpdate] { + lock.lock() + defer { lock.unlock() } + return storedHeatmapUpdates + } + + var hasTodayUpdate: Bool { + !todayUpdates.isEmpty + } + + var hasHeatmapUpdate: Bool { + !heatmapUpdates.isEmpty + } + + func updateTodaySnapshot( + todos: [Todo], + now: Date + ) { + appendTodayUpdate( + TodayUpdate( + todos: todos, + displayOptions: nil, + now: now + ) + ) + } + + func updateTodaySnapshot( + todos: [Todo], + displayOptions: TodayDisplayOptions, + now: Date + ) { + appendTodayUpdate( + TodayUpdate( + todos: todos, + displayOptions: displayOptions, + now: now + ) + ) + } + + func updateHeatmapSnapshot( + createdTodos: [Todo], + completedTodos: [Todo], + deletedTodos: [Todo], + quarterStart: Date, + now: Date + ) { + appendHeatmapUpdate( + HeatmapUpdate( + createdTodos: createdTodos, + completedTodos: completedTodos, + deletedTodos: deletedTodos, + selectedActivityKinds: nil, + quarterStart: quarterStart, + now: now + ) + ) + } + + func updateHeatmapSnapshot( + createdTodos: [Todo], + completedTodos: [Todo], + deletedTodos: [Todo], + selectedActivityKinds: Set, + quarterStart: Date, + now: Date + ) { + appendHeatmapUpdate( + HeatmapUpdate( + createdTodos: createdTodos, + completedTodos: completedTodos, + deletedTodos: deletedTodos, + selectedActivityKinds: selectedActivityKinds, + quarterStart: quarterStart, + now: now + ) + ) + } + + func clear() { + lock.lock() + defer { lock.unlock() } + clearCallCount += 1 + } + + private func appendTodayUpdate(_ update: TodayUpdate) { + lock.lock() + defer { lock.unlock() } + storedTodayUpdates.append(update) + } + + private func appendHeatmapUpdate(_ update: HeatmapUpdate) { + lock.lock() + defer { lock.unlock() } + storedHeatmapUpdates.append(update) + } +} + +private enum WidgetSyncTodoRepositorySpyError: Error { + case fetchTodosFailed + case unexpectedCall +} + +private func waitUntil( + timeout: Duration = .seconds(1), + pollInterval: Duration = .milliseconds(20), + _ condition: @escaping () -> Bool +) async throws { + let continuousClock = ContinuousClock() + let deadline = continuousClock.now + timeout + + while !condition() && continuousClock.now < deadline { + try await Task.sleep(for: pollInterval) + } +} diff --git a/DevLog_Unit/Widget/TodayWidgetSnapshotFactoryTests.swift b/Widget/DevLogWidgetCore/Tests/Today/TodayWidgetSnapshotFactoryTests.swift similarity index 98% rename from DevLog_Unit/Widget/TodayWidgetSnapshotFactoryTests.swift rename to Widget/DevLogWidgetCore/Tests/Today/TodayWidgetSnapshotFactoryTests.swift index 508df8a8..c81d6da4 100644 --- a/DevLog_Unit/Widget/TodayWidgetSnapshotFactoryTests.swift +++ b/Widget/DevLogWidgetCore/Tests/Today/TodayWidgetSnapshotFactoryTests.swift @@ -1,13 +1,14 @@ // // TodayWidgetSnapshotFactoryTests.swift -// DevLog_Unit +// DevLogWidgetCoreTests // // Created by opfic on 4/17/26. // import Foundation import Testing -@testable import DevLog +import DevLogDomain +@testable import DevLogWidgetCore struct TodayWidgetSnapshotFactoryTests { @Test("Today 위젯 스냅샷은 화면 규칙과 같은 순서로 섹션과 요약 수치를 만든다") From 9fc079ea617bec39be3e73eeecac88b542cbc139 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 21:44:33 +0900 Subject: [PATCH 38/46] =?UTF-8?q?chore:=20Storage=20=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=ED=83=80=EA=B9=83=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogStorage.xcodeproj/project.pbxproj | 191 ++++++++++++++++++ .../xcschemes/DevLogStorageTests.xcscheme | 70 +++++++ .../WidgetSnapshotPreferenceStoreTests.swift | 5 +- .../WidgetSnapshotUpdaterTests.swift | 12 +- 4 files changed, 272 insertions(+), 6 deletions(-) create mode 100644 Application/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorageTests.xcscheme rename {DevLog_Unit/Widget => Application/DevLogStorage/Tests/Persistence}/WidgetSnapshotPreferenceStoreTests.swift (97%) rename {DevLog_Unit/Widget => Application/DevLogStorage/Tests/Persistence}/WidgetSnapshotUpdaterTests.swift (93%) diff --git a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj index 6ed79d71..8be6066d 100644 --- a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj +++ b/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj @@ -11,13 +11,20 @@ 3B8FAEC025F373D4CFC262D4 /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 493A5D0B4274807F2B948AB3 /* DevLogData.framework */; }; 50BBA1C19A7C61B8B8F3A68B /* WebPageImageStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */; }; 5967B32779F22DD0E3C2D247 /* UserDefaultsStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */; }; + 6F16B4E3565C450BBEEE3993 /* WidgetSnapshotPreferenceStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCE32A69CF8C4CA7A121FC8F /* WidgetSnapshotPreferenceStoreTests.swift */; }; 7044FCFCA32C8AA8F6FF4474 /* ThemeStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */; }; 7D8DE74BD24B456D42B04806 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F334BCFC52C730D5901F6051 /* DevLogDomain.framework */; }; + 8A95AB09613C4F54883A7A38 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F334BCFC52C730D5901F6051 /* DevLogDomain.framework */; }; + 95FC6A06F2434722A1B8A7D0 /* WidgetSnapshotUpdaterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34625468B650427AA753F4E6 /* WidgetSnapshotUpdaterTests.swift */; }; 9814DBF1A0DCD650FEF5A376 /* WidgetSnapshotUpdaterImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */; }; A11111111111111111111111 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A55555555555555555555555 /* DevLogCore.framework */; }; A33333333333333333333333 /* PersistenceAssembler.swift in Sources */ = {isa = PBXBuildFile; fileRef = A22222222222222222222222 /* PersistenceAssembler.swift */; }; B1EAEC66B3C4F0B16072F5BE /* WidgetSnapshotPreferenceStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */; }; E53E13B73BFAF0C51013ECA2 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */; }; + F47DBE7D3E7E49F08D4B5530 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A55555555555555555555555 /* DevLogCore.framework */; }; + 4EE7A141A66C408EB8897D4A /* DevLogStorage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */; }; + 5F89EB23199E4ABEA925CF92 /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 493A5D0B4274807F2B948AB3 /* DevLogData.framework */; }; + 4763564ECF9942DCB6A7D3D2 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -28,6 +35,27 @@ remoteGlobalIDString = 687DD42230CC25053ABB5FB8; remoteInfo = DevLogWidgetCore; }; + 025989E371CE4BBE85B584D8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 7D1E74925088998D68BBFBBB; + remoteInfo = DevLogDomain; + }; + 415D6054D61540DB8BBFFB10 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D9D76C33D8B4790694BD3488; + remoteInfo = DevLogData; + }; + 703C7152F23B4FDBBE0A6FD6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = A44444444444444444444444 /* DevLogCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 5755BDB768C11CE0FDEA4828; + remoteInfo = DevLogCore; + }; A66666666666666666666666 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = A44444444444444444444444 /* DevLogCore.xcodeproj */; @@ -49,6 +77,20 @@ remoteGlobalIDString = 6AF1B307A7E7CC03AA2BABB1; remoteInfo = Subproject; }; + E235680901FF45419002A175 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = DF1E7E43C1BA2439E9B82492 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0C205A501EF8E79FA9A73C4B; + remoteInfo = DevLogStorage; + }; + E797C92EB75C449E9AE5F53F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 687DD42230CC25053ABB5FB8; + remoteInfo = DevLogWidgetCore; + }; B5FF9EF1399BA2E5A9D85D03 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */; @@ -83,6 +125,7 @@ 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStoreImpl.swift; path = Sources/Persistence/ThemeStoreImpl.swift; sourceTree = ""; }; 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; + 62B066C5B0714BC3B5F4D9D0 /* DevLogStorageTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLogStorageTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStoreImpl.swift; path = Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift; sourceTree = ""; }; 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStoreImpl.swift; path = Sources/Persistence/UserDefaultsStoreImpl.swift; sourceTree = ""; }; 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdaterImpl.swift; path = Sources/Persistence/WidgetSnapshotUpdaterImpl.swift; sourceTree = ""; }; @@ -91,7 +134,9 @@ A22222222222222222222222 /* PersistenceAssembler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PersistenceAssembler.swift; path = Sources/PersistenceAssembler.swift; sourceTree = ""; }; A44444444444444444444444 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; AEA9DB8D523E749E611B96FA /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../../Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; + BCE32A69CF8C4CA7A121FC8F /* WidgetSnapshotPreferenceStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetSnapshotPreferenceStoreTests.swift; sourceTree = ""; }; C9566895E4A451286246B008 /* WebPageImageStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageStoreImpl.swift; path = Sources/Persistence/WebPageImageStoreImpl.swift; sourceTree = ""; }; + 34625468B650427AA753F4E6 /* WidgetSnapshotUpdaterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WidgetSnapshotUpdaterTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -107,6 +152,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 292BB970C2B54490BD9BFCDA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4EE7A141A66C408EB8897D4A /* DevLogStorage.framework in Frameworks */, + F47DBE7D3E7E49F08D4B5530 /* DevLogCore.framework in Frameworks */, + 8A95AB09613C4F54883A7A38 /* DevLogDomain.framework in Frameworks */, + 5F89EB23199E4ABEA925CF92 /* DevLogData.framework in Frameworks */, + 4763564ECF9942DCB6A7D3D2 /* DevLogWidgetCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -147,11 +204,29 @@ name = Persistence; sourceTree = ""; }; + 1A6D6E26D8E1475E97C67805 /* Persistence */ = { + isa = PBXGroup; + children = ( + BCE32A69CF8C4CA7A121FC8F /* WidgetSnapshotPreferenceStoreTests.swift */, + 34625468B650427AA753F4E6 /* WidgetSnapshotUpdaterTests.swift */, + ); + path = Persistence; + sourceTree = ""; + }; + D5D04ADAA14A44289CF9A22E /* Tests */ = { + isa = PBXGroup; + children = ( + 1A6D6E26D8E1475E97C67805 /* Persistence */, + ); + path = Tests; + sourceTree = ""; + }; 9DC6ED43838A6F065422AA8B = { isa = PBXGroup; children = ( 49F17FD9095E72DC89748471 /* Frameworks */, 63CE47D539EE6F9653C99773 /* DevLogStorage */, + D5D04ADAA14A44289CF9A22E /* Tests */, C005798DC28F77FF8B0E248A /* Projects */, C96806E27CED4BE0CA95A9B0 /* Products */, ); @@ -172,6 +247,7 @@ isa = PBXGroup; children = ( 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */, + 62B066C5B0714BC3B5F4D9D0 /* DevLogStorageTests.xctest */, F334BCFC52C730D5901F6051 /* DevLogDomain.framework */, 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */, 493A5D0B4274807F2B948AB3 /* DevLogData.framework */, @@ -215,6 +291,28 @@ productReference = 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */; productType = "com.apple.product-type.framework"; }; + BE1ADABE58664FAC8B321F12 /* DevLogStorageTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 5D9A9D653D4C471C82E467D2 /* Build configuration list for PBXNativeTarget "DevLogStorageTests" */; + buildPhases = ( + 21B6276975A04D6D8BDC646D /* Sources */, + 292BB970C2B54490BD9BFCDA /* Frameworks */, + 416DF367E7A248D7894F701 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 369778EAD3564AB68A495DA7 /* PBXTargetDependency */, + 91F9976158BA483A8B9BB434 /* PBXTargetDependency */, + E715970F49AF4988A793106D /* PBXTargetDependency */, + 0ADC5DDD59EB427EB1B33FC4 /* PBXTargetDependency */, + 49EA84B99E32462D8FFD9073 /* PBXTargetDependency */, + ); + name = DevLogStorageTests; + productName = DevLogStorageTests; + productReference = 62B066C5B0714BC3B5F4D9D0 /* DevLogStorageTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -223,6 +321,11 @@ attributes = { LastSwiftUpdateCheck = 1600; LastUpgradeCheck = 1600; + TargetAttributes = { + BE1ADABE58664FAC8B321F12 = { + CreatedOnToolsVersion = 16.0; + }; + }; }; buildConfigurationList = 7977F26B747BC5BCE5E0A6B4 /* Build configuration list for PBXProject "DevLogStorage" */; compatibilityVersion = "Xcode 3.2"; @@ -258,6 +361,7 @@ projectRoot = ""; targets = ( 0C205A501EF8E79FA9A73C4B /* DevLogStorage */, + BE1ADABE58664FAC8B321F12 /* DevLogStorageTests */, ); }; /* End PBXProject section */ @@ -301,6 +405,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 416DF367E7A248D7894F701 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -317,6 +428,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 21B6276975A04D6D8BDC646D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6F16B4E3565C450BBEEE3993 /* WidgetSnapshotPreferenceStoreTests.swift in Sources */, + 95FC6A06F2434722A1B8A7D0 /* WidgetSnapshotUpdaterTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -325,16 +445,41 @@ name = DevLogDomain; targetProxy = C118DECC34A0AE1E3085D4AB /* PBXContainerItemProxy */; }; + 0ADC5DDD59EB427EB1B33FC4 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogData; + targetProxy = 415D6054D61540DB8BBFFB10 /* PBXContainerItemProxy */; + }; + 369778EAD3564AB68A495DA7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0C205A501EF8E79FA9A73C4B /* DevLogStorage */; + targetProxy = E235680901FF45419002A175 /* PBXContainerItemProxy */; + }; + 49EA84B99E32462D8FFD9073 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogWidgetCore; + targetProxy = E797C92EB75C449E9AE5F53F /* PBXContainerItemProxy */; + }; 65214D4CBB998A4369598E01 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogData; targetProxy = D43AB7BB6E43AEF760FBB23C /* PBXContainerItemProxy */; }; + 91F9976158BA483A8B9BB434 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogCore; + targetProxy = 703C7152F23B4FDBBE0A6FD6 /* PBXContainerItemProxy */; + }; 8C9EB60C8E58A67726AF0EF1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogWidgetCore; targetProxy = 6556E45987F0D11205D84D04 /* PBXContainerItemProxy */; }; + E715970F49AF4988A793106D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DevLogDomain; + targetProxy = 025989E371CE4BBE85B584D8 /* PBXContainerItemProxy */; + }; A88888888888888888888888 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DevLogCore; @@ -429,6 +574,24 @@ }; name = Release; }; + 318C40EC8339400D9F44404E /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogStorageTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = DevLogStorage; + }; + name = Debug; + }; 6618F205C9EAFE00EB519ADB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -483,6 +646,25 @@ }; name = Release; }; + 8B4A4E1F4687464C8C17B4AF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 17.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogStorageTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = DevLogStorage; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; D36B8CAC0F1A28A54A5C1BFA /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -528,6 +710,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 5D9A9D653D4C471C82E467D2 /* Build configuration list for PBXNativeTarget "DevLogStorageTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 318C40EC8339400D9F44404E /* Debug */, + 8B4A4E1F4687464C8C17B4AF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = DF1E7E43C1BA2439E9B82492 /* Project object */; diff --git a/Application/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorageTests.xcscheme b/Application/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorageTests.xcscheme new file mode 100644 index 00000000..351054d3 --- /dev/null +++ b/Application/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorageTests.xcscheme @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/DevLog_Unit/Widget/WidgetSnapshotPreferenceStoreTests.swift b/Application/DevLogStorage/Tests/Persistence/WidgetSnapshotPreferenceStoreTests.swift similarity index 97% rename from DevLog_Unit/Widget/WidgetSnapshotPreferenceStoreTests.swift rename to Application/DevLogStorage/Tests/Persistence/WidgetSnapshotPreferenceStoreTests.swift index 30a7c347..5a50a941 100644 --- a/DevLog_Unit/Widget/WidgetSnapshotPreferenceStoreTests.swift +++ b/Application/DevLogStorage/Tests/Persistence/WidgetSnapshotPreferenceStoreTests.swift @@ -1,13 +1,14 @@ // // WidgetSnapshotPreferenceStoreTests.swift -// DevLog_Unit +// DevLogStorageTests // // Created by opfic on 4/30/26. // import Foundation +import DevLogDomain import Testing -@testable import DevLog +@testable import DevLogStorage struct WidgetSnapshotPreferenceStoreTests { @Test("Heatmap activity kind 설정이 비어 있으면 전체 kind를 사용한다") diff --git a/DevLog_Unit/Widget/WidgetSnapshotUpdaterTests.swift b/Application/DevLogStorage/Tests/Persistence/WidgetSnapshotUpdaterTests.swift similarity index 93% rename from DevLog_Unit/Widget/WidgetSnapshotUpdaterTests.swift rename to Application/DevLogStorage/Tests/Persistence/WidgetSnapshotUpdaterTests.swift index c02cc4eb..031937bf 100644 --- a/DevLog_Unit/Widget/WidgetSnapshotUpdaterTests.swift +++ b/Application/DevLogStorage/Tests/Persistence/WidgetSnapshotUpdaterTests.swift @@ -1,13 +1,15 @@ // // WidgetSnapshotUpdaterTests.swift -// DevLog_Unit +// DevLogStorageTests // // Created by opfic on 4/30/26. // import Foundation +import DevLogDomain import Testing -@testable import DevLog +@testable import DevLogStorage +@testable import DevLogWidgetCore struct WidgetSnapshotUpdaterTests { @Test("Today 스냅샷 갱신은 Today 스냅샷을 저장한다") @@ -36,6 +38,8 @@ struct WidgetSnapshotUpdaterTests { let calendar = Calendar(identifier: .gregorian) let quarterStart = try #require(calendar.date(from: DateComponents(year: 2026, month: 4, day: 1))) let now = try #require(calendar.date(from: DateComponents(year: 2026, month: 4, day: 30))) + let completedAt = try #require(calendar.date(from: DateComponents(year: 2026, month: 4, day: 3))) + let deletedAt = try #require(calendar.date(from: DateComponents(year: 2026, month: 4, day: 4))) let fixture = makeFixture(calendar: calendar) fixture.updater.updateHeatmapSnapshot( @@ -49,14 +53,14 @@ struct WidgetSnapshotUpdaterTests { makeTodo( id: "completed", createdAt: quarterStart, - completedAt: try #require(calendar.date(from: DateComponents(year: 2026, month: 4, day: 3))) + completedAt: completedAt ) ], deletedTodos: [ makeTodo( id: "deleted", createdAt: quarterStart, - deletedAt: try #require(calendar.date(from: DateComponents(year: 2026, month: 4, day: 4))) + deletedAt: deletedAt ) ], selectedActivityKinds: [.created, .completed], From 14f391120934ce0756075065b3f0e8137f758774 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 21:50:46 +0900 Subject: [PATCH 39/46] =?UTF-8?q?chore:=20App=20=EB=A0=88=EC=9D=B4?= =?UTF-8?q?=EC=96=B4=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=ED=83=80=EA=B9=83,?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogApp.xcodeproj/project.pbxproj | 30 +++++++++---------- .../xcshareddata/xcschemes/DevLog.xcscheme | 4 +-- ..._Unit.xcscheme => DevLogAppTests.xcscheme} | 4 +-- ...letePushNotificationIntegrationTests.swift | 2 +- .../Support/LocalFirebaseRESTSupport.swift | 2 +- .../DeleteWebPageIntegrationTests.swift | 2 +- 6 files changed, 22 insertions(+), 22 deletions(-) rename Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/{DevLog_Unit.xcscheme => DevLogAppTests.xcscheme} (96%) rename {DevLog_Unit => Application/DevLogApp/Tests}/PushNotification/Integration/DeletePushNotificationIntegrationTests.swift (98%) rename {DevLog_Unit => Application/DevLogApp/Tests}/Support/LocalFirebaseRESTSupport.swift (99%) rename {DevLog_Unit => Application/DevLogApp/Tests}/WebPage/Integration/DeleteWebPageIntegrationTests.swift (98%) diff --git a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj index ed8cc78c..99827f41 100644 --- a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj +++ b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj @@ -166,7 +166,7 @@ AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogInfra.xcodeproj; path = ../DevLogInfra/DevLogInfra.xcodeproj; sourceTree = ""; }; DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; - DF3416492E45F67C00F9312B /* DevLog_Unit.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLog_Unit.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + DF3416492E45F67C00F9312B /* DevLogAppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLogAppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = DevLogWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; DFD3A9712F8E89DD001DA7CD /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; DFD3A9732F8E89DD001DA7CD /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; @@ -193,11 +193,11 @@ /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ - DF34164A2E45F67C00F9312B /* ../../DevLog_Unit */ = { + DF34164A2E45F67C00F9312B /* Tests */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( ); - path = ../../DevLog_Unit; + path = Tests; sourceTree = ""; }; DF8AB7982E938B0B00E50BBF /* Sources */ = { @@ -259,7 +259,7 @@ 4B47FFC0E73415A65560089A /* Products */ = { isa = PBXGroup; children = ( - DF3416492E45F67C00F9312B /* DevLog_Unit.xctest */, + DF3416492E45F67C00F9312B /* DevLogAppTests.xctest */, DFD48B002DC4D6E2005905C5 /* DevLog.app */, DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */, AE11B22C33D44E55F6677889 /* DevLogCore.framework */, @@ -291,7 +291,7 @@ isa = PBXGroup; children = ( DF8AB7982E938B0B00E50BBF /* Sources */, - DF34164A2E45F67C00F9312B /* ../../DevLog_Unit */, + DF34164A2E45F67C00F9312B /* Tests */, DFD3A9752F8E89DD001DA7CD /* ../../Widget/DevLogWidgetExtension */, DFE28EB62DCCF26300B28FE5 /* Frameworks */, 4F3D8CEC7F23C3BFF6B9E27B /* Projects */, @@ -311,9 +311,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - DF3416442E45F67C00F9312B /* DevLog_Unit */ = { + DF3416442E45F67C00F9312B /* DevLogAppTests */ = { isa = PBXNativeTarget; - buildConfigurationList = DF3416452E45F67C00F9312B /* Build configuration list for PBXNativeTarget "DevLog_Unit" */; + buildConfigurationList = DF3416452E45F67C00F9312B /* Build configuration list for PBXNativeTarget "DevLogAppTests" */; buildPhases = ( DF3416462E45F67C00F9312B /* Sources */, DF3416472E45F67C00F9312B /* Frameworks */, @@ -325,11 +325,11 @@ DF34164C2E45F67C00F9312B /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - DF34164A2E45F67C00F9312B /* ../../DevLog_Unit */, + DF34164A2E45F67C00F9312B /* Tests */, ); - name = DevLog_Unit; - productName = DevLog_Unit; - productReference = DF3416492E45F67C00F9312B /* DevLog_Unit.xctest */; + name = DevLogAppTests; + productName = DevLogAppTests; + productReference = DF3416492E45F67C00F9312B /* DevLogAppTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; DFD3A96F2F8E89DD001DA7CD /* DevLogWidgetExtension */ = { @@ -460,7 +460,7 @@ ); projectRoot = ""; targets = ( - DF3416442E45F67C00F9312B /* DevLog_Unit */, + DF3416442E45F67C00F9312B /* DevLogAppTests */, DFD48AFF2DC4D6E2005905C5 /* DevLog */, DFD3A96F2F8E89DD001DA7CD /* DevLogWidgetExtension */, ); @@ -635,7 +635,7 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17; MARKETING_VERSION = 1.2; - PRODUCT_BUNDLE_IDENTIFIER = opfic.DevLog_Unit; + PRODUCT_BUNDLE_IDENTIFIER = opfic.DevLogAppTests; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = NO; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -660,7 +660,7 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17; MARKETING_VERSION = 1.2; - PRODUCT_BUNDLE_IDENTIFIER = opfic.DevLog_Unit; + PRODUCT_BUNDLE_IDENTIFIER = opfic.DevLogAppTests; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = NO; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; @@ -975,7 +975,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - DF3416452E45F67C00F9312B /* Build configuration list for PBXNativeTarget "DevLog_Unit" */ = { + DF3416452E45F67C00F9312B /* Build configuration list for PBXNativeTarget "DevLogAppTests" */ = { isa = XCConfigurationList; buildConfigurations = ( DF34164D2E45F67C00F9312B /* Debug */, diff --git a/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog.xcscheme b/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog.xcscheme index b40787db..0a4d1d90 100644 --- a/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog.xcscheme +++ b/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog.xcscheme @@ -36,8 +36,8 @@ diff --git a/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog_Unit.xcscheme b/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLogAppTests.xcscheme similarity index 96% rename from Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog_Unit.xcscheme rename to Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLogAppTests.xcscheme index edb74b69..c740db05 100644 --- a/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLog_Unit.xcscheme +++ b/Application/DevLogApp/DevLogApp.xcodeproj/xcshareddata/xcschemes/DevLogAppTests.xcscheme @@ -20,8 +20,8 @@ diff --git a/DevLog_Unit/PushNotification/Integration/DeletePushNotificationIntegrationTests.swift b/Application/DevLogApp/Tests/PushNotification/Integration/DeletePushNotificationIntegrationTests.swift similarity index 98% rename from DevLog_Unit/PushNotification/Integration/DeletePushNotificationIntegrationTests.swift rename to Application/DevLogApp/Tests/PushNotification/Integration/DeletePushNotificationIntegrationTests.swift index b8d70a6c..a22a6037 100644 --- a/DevLog_Unit/PushNotification/Integration/DeletePushNotificationIntegrationTests.swift +++ b/Application/DevLogApp/Tests/PushNotification/Integration/DeletePushNotificationIntegrationTests.swift @@ -1,6 +1,6 @@ // // DeletePushNotificationIntegrationTests.swift -// DevLog_Unit +// DevLogAppTests // // Created by opfic on 4/6/26. // diff --git a/DevLog_Unit/Support/LocalFirebaseRESTSupport.swift b/Application/DevLogApp/Tests/Support/LocalFirebaseRESTSupport.swift similarity index 99% rename from DevLog_Unit/Support/LocalFirebaseRESTSupport.swift rename to Application/DevLogApp/Tests/Support/LocalFirebaseRESTSupport.swift index 2910556a..210a360e 100644 --- a/DevLog_Unit/Support/LocalFirebaseRESTSupport.swift +++ b/Application/DevLogApp/Tests/Support/LocalFirebaseRESTSupport.swift @@ -1,6 +1,6 @@ // // LocalFirebaseRESTSupport.swift -// DevLog_Unit +// DevLogAppTests // // Created by opfic on 4/6/26. // diff --git a/DevLog_Unit/WebPage/Integration/DeleteWebPageIntegrationTests.swift b/Application/DevLogApp/Tests/WebPage/Integration/DeleteWebPageIntegrationTests.swift similarity index 98% rename from DevLog_Unit/WebPage/Integration/DeleteWebPageIntegrationTests.swift rename to Application/DevLogApp/Tests/WebPage/Integration/DeleteWebPageIntegrationTests.swift index 844c5f0f..f870894f 100644 --- a/DevLog_Unit/WebPage/Integration/DeleteWebPageIntegrationTests.swift +++ b/Application/DevLogApp/Tests/WebPage/Integration/DeleteWebPageIntegrationTests.swift @@ -1,6 +1,6 @@ // // DeleteWebPageIntegrationTests.swift -// DevLog_Unit +// DevLogAppTests // // Created by opfic on 4/6/26. // From 6fb19accb59aed500bc49ccbdab8a6cfb14ea62c Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 21:55:13 +0900 Subject: [PATCH 40/46] =?UTF-8?q?chore:=20=EB=AA=A8=EB=93=88=EB=9F=AC=20?= =?UTF-8?q?=EA=B5=AC=EC=A1=B0=EC=97=90=20=EB=A7=9E=EA=B2=8C=20CI=20?= =?UTF-8?q?=EA=B2=BD=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/install-private-config/action.yml | 4 ++-- .github/workflows/build.yml | 3 +++ .github/workflows/release.yml | 2 +- fastlane/Fastfile | 5 +++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/actions/install-private-config/action.yml b/.github/actions/install-private-config/action.yml index be204906..ba173646 100644 --- a/.github/actions/install-private-config/action.yml +++ b/.github/actions/install-private-config/action.yml @@ -29,8 +29,8 @@ runs: trap 'rm -rf "$privateConfigCheckoutPath"' EXIT configSourcePath="$privateConfigCheckoutPath/resources/DevLog/Config.xcconfig" googleServiceInfoSourcePath="$privateConfigCheckoutPath/resources/DevLog/GoogleService-Info.plist" - configDestinationPath="$GITHUB_WORKSPACE/DevLog/Resource/Config.xcconfig" - googleServiceInfoDestinationPath="$GITHUB_WORKSPACE/DevLog/Resource/GoogleService-Info.plist" + configDestinationPath="$GITHUB_WORKSPACE/Application/DevLogApp/Sources/Resource/Config.xcconfig" + googleServiceInfoDestinationPath="$GITHUB_WORKSPACE/Application/DevLogApp/Sources/Resource/GoogleService-Info.plist" rm -rf "$privateConfigCheckoutPath" mkdir -p "$privateConfigCheckoutPath" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b0e3ad3c..f40236a0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,6 +4,7 @@ on: pull_request: env: + WORKSPACE: DevLog.xcworkspace SCHEME: DevLog XCODE_VERSION: latest MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }} @@ -158,12 +159,14 @@ jobs: set +e echo "== Resolving Swift Package dependencies ==" xcodebuild \ + -workspace "$WORKSPACE" \ -scheme "$SCHEME" \ -configuration Debug \ -clonedSourcePackagesDirPath "$SPM_DIR" \ -resolvePackageDependencies echo "== Starting xcodebuild build ==" xcodebuild \ + -workspace "$WORKSPACE" \ -scheme "$SCHEME" \ -configuration Debug \ -destination "platform=iOS Simulator,OS=${IOS_VER},name=${DEVICE_NAME}" \ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b3b45013..a0d30f8b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: - name: Read release version id: release_version run: | - version=$(ruby -e 'project = File.read("DevLog.xcodeproj/project.pbxproj"); match = project.match(/MARKETING_VERSION = ([^;]+);/); abort("MARKETING_VERSION not found") if match.nil?; puts match[1]') + version=$(ruby -e 'project = File.read("Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj"); match = project.match(/MARKETING_VERSION = ([^;]+);/); abort("MARKETING_VERSION not found") if match.nil?; puts match[1]') echo "version=$version" >> "$GITHUB_OUTPUT" echo "tag=v$version" >> "$GITHUB_OUTPUT" diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 75b16e5e..8c761073 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1,4 +1,5 @@ -XCODE_PROJ = "DevLog.xcodeproj" +XCODE_WORKSPACE = "DevLog.xcworkspace" +XCODE_PROJ = "Application/DevLogApp/DevLogApp.xcodeproj" APP_IDENTIFIER = "opfic.DevLog" WIDGET_IDENTIFIER = "opfic.DevLog.DevLogWidget" APP_IDENTIFIERS = [APP_IDENTIFIER, WIDGET_IDENTIFIER] @@ -108,7 +109,7 @@ platform :ios do end build_app( - project: XCODE_PROJ, + workspace: XCODE_WORKSPACE, scheme: TARGET_NAME, export_method: "app-store", output_directory: TESTFLIGHT_BUILD_OUTPUT_DIRECTORY, From 2e6218d1f0a097c3e591a7b64829b9660da0b398 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 22:02:47 +0900 Subject: [PATCH 41/46] chore: Storage -> Persistence --- .../DevLogApp.xcodeproj/project.pbxproj | 24 +++---- .../Sources/App/Assembler/Assembler.swift | 2 +- .../project.pbxproj | 66 +++++++++---------- .../xcschemes/DevLogPersistence.xcscheme} | 6 +- .../DevLogPersistenceTests.xcscheme} | 12 ++-- .../Sources/Persistence/ThemeStoreImpl.swift | 0 .../Persistence/UserDefaultsStoreImpl.swift | 0 .../Persistence/WebPageImageStoreImpl.swift | 0 .../WidgetSnapshotPreferenceStoreImpl.swift | 0 .../WidgetSnapshotUpdaterImpl.swift | 0 .../Sources/PersistenceAssembler.swift | 0 .../WidgetSnapshotPreferenceStoreTests.swift | 4 +- .../WidgetSnapshotUpdaterTests.swift | 4 +- DevLog.xcworkspace/contents.xcworkspacedata | 2 +- 14 files changed, 60 insertions(+), 60 deletions(-) rename Application/{DevLogStorage/DevLogStorage.xcodeproj => DevLogPersistence/DevLogPersistence.xcodeproj}/project.pbxproj (92%) rename Application/{DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme => DevLogPersistence/DevLogPersistence.xcodeproj/xcshareddata/xcschemes/DevLogPersistence.xcscheme} (90%) rename Application/{DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorageTests.xcscheme => DevLogPersistence/DevLogPersistence.xcodeproj/xcshareddata/xcschemes/DevLogPersistenceTests.xcscheme} (84%) rename Application/{DevLogStorage => DevLogPersistence}/Sources/Persistence/ThemeStoreImpl.swift (100%) rename Application/{DevLogStorage => DevLogPersistence}/Sources/Persistence/UserDefaultsStoreImpl.swift (100%) rename Application/{DevLogStorage => DevLogPersistence}/Sources/Persistence/WebPageImageStoreImpl.swift (100%) rename Application/{DevLogStorage => DevLogPersistence}/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift (100%) rename Application/{DevLogStorage => DevLogPersistence}/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift (100%) rename Application/{DevLogStorage => DevLogPersistence}/Sources/PersistenceAssembler.swift (100%) rename Application/{DevLogStorage => DevLogPersistence}/Tests/Persistence/WidgetSnapshotPreferenceStoreTests.swift (97%) rename Application/{DevLogStorage => DevLogPersistence}/Tests/Persistence/WidgetSnapshotUpdaterTests.swift (98%) diff --git a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj index 99827f41..5e392f04 100644 --- a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj +++ b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj @@ -14,7 +14,7 @@ 26C3DC51F23F9C590FDB282D /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67918B544432C45E63273D84 /* DevLogPresentation.framework */; }; 618B54224ACD6B35D9A8F841 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; }; 7188DA2B6DFD13F7FF73069E /* DevLogInfra.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */; }; - 79134AD67952720CCC5069EA /* DevLogStorage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */; }; + 79134AD67952720CCC5069EA /* DevLogPersistence.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FFA0A819CB16649AC35CCE6 /* DevLogPersistence.framework */; }; 8D3BD712CB129F2527B00CFB /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = E72BBE64130E2666E4680E1B /* FirebaseMessaging */; }; AB11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE11B22C33D44E55F6677889 /* DevLogCore.framework */; }; B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */ = {isa = PBXBuildFile; productRef = 0B7D3A68C7E7BF5D4A437D29 /* FirebaseCore */; }; @@ -47,10 +47,10 @@ }; 3EECE4329ECCA26C0A19337E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */; + containerPortal = 8EEA1D8B1005FDC147585C76 /* DevLogPersistence.xcodeproj */; proxyType = 1; remoteGlobalIDString = 0C205A501EF8E79FA9A73C4B; - remoteInfo = DevLogStorage; + remoteInfo = DevLogPersistence; }; 5AD2E0B85930A1F24ED8888E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -75,7 +75,7 @@ }; 933EF563698CBBA322E4A1FF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */; + containerPortal = 8EEA1D8B1005FDC147585C76 /* DevLogPersistence.xcodeproj */; proxyType = 2; remoteGlobalIDString = 86E8AA2A43914F444BF5A6C2; remoteInfo = Subproject; @@ -162,7 +162,7 @@ /* Begin PBXFileReference section */ 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogWidgetCore.xcodeproj; path = ../../Widget/DevLogWidgetCore/DevLogWidgetCore.xcodeproj; sourceTree = ""; }; 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; - 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogStorage.xcodeproj; path = ../DevLogStorage/DevLogStorage.xcodeproj; sourceTree = ""; }; + 8EEA1D8B1005FDC147585C76 /* DevLogPersistence.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPersistence.xcodeproj; path = ../DevLogPersistence/DevLogPersistence.xcodeproj; sourceTree = ""; }; AA11B22C33D44E55F6677889 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogInfra.xcodeproj; path = ../DevLogInfra/DevLogInfra.xcodeproj; sourceTree = ""; }; DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogPresentation.xcodeproj; path = ../DevLogPresentation/DevLogPresentation.xcodeproj; sourceTree = ""; }; @@ -243,7 +243,7 @@ AB11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */, 186E9AB4F0A79C50FE853607 /* DevLogDomain.framework in Frameworks */, 7188DA2B6DFD13F7FF73069E /* DevLogInfra.framework in Frameworks */, - 79134AD67952720CCC5069EA /* DevLogStorage.framework in Frameworks */, + 79134AD67952720CCC5069EA /* DevLogPersistence.framework in Frameworks */, 26C3DC51F23F9C590FDB282D /* DevLogPresentation.framework in Frameworks */, 1589C1EF4029ECBF15A842F0 /* DevLogWidgetCore.framework in Frameworks */, B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */, @@ -265,7 +265,7 @@ AE11B22C33D44E55F6677889 /* DevLogCore.framework */, DA49949C677DDE083F7DE29E /* DevLogDomain.framework */, 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */, - 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */, + 6FFA0A819CB16649AC35CCE6 /* DevLogPersistence.framework */, 67918B544432C45E63273D84 /* DevLogPresentation.framework */, EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */, B1B97007E09855108A99428B /* DevLogData.framework */, @@ -280,7 +280,7 @@ 76E37401D4B2CBB105E63892 /* DevLogDomain.xcodeproj */, E6378CBE9A1D81625216CF86 /* DevLogData.xcodeproj */, CA2F877790969610EE38BD93 /* DevLogInfra.xcodeproj */, - 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */, + 8EEA1D8B1005FDC147585C76 /* DevLogPersistence.xcodeproj */, DC0CB81C9BF2596ADCE8FB90 /* DevLogPresentation.xcodeproj */, 264087B765CCEA97AB4C0B79 /* DevLogWidgetCore.xcodeproj */, ); @@ -451,7 +451,7 @@ }, { ProductGroup = 4B47FFC0E73415A65560089A /* Products */; - ProjectRef = 8EEA1D8B1005FDC147585C76 /* DevLogStorage.xcodeproj */; + ProjectRef = 8EEA1D8B1005FDC147585C76 /* DevLogPersistence.xcodeproj */; }, { ProductGroup = 4B47FFC0E73415A65560089A /* Products */; @@ -475,10 +475,10 @@ remoteRef = D113DE9A0832A6EB30D402FD /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 6FFA0A819CB16649AC35CCE6 /* DevLogStorage.framework */ = { + 6FFA0A819CB16649AC35CCE6 /* DevLogPersistence.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; - path = DevLogStorage.framework; + path = DevLogPersistence.framework; remoteRef = 933EF563698CBBA322E4A1FF /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -590,7 +590,7 @@ }; CD56EF21C39E985CEDBB9165 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DevLogStorage; + name = DevLogPersistence; targetProxy = 3EECE4329ECCA26C0A19337E /* PBXContainerItemProxy */; }; D8C9622EAD15756212C69E6A /* PBXTargetDependency */ = { diff --git a/Application/DevLogApp/Sources/App/Assembler/Assembler.swift b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift index 8f865d40..d918d5e1 100644 --- a/Application/DevLogApp/Sources/App/Assembler/Assembler.swift +++ b/Application/DevLogApp/Sources/App/Assembler/Assembler.swift @@ -9,7 +9,7 @@ import DevLogCore import DevLogData import DevLogDomain import DevLogInfra -import DevLogStorage +import DevLogPersistence final class AppAssembler: Assembler { private let assemblers: [Assembler] = [ diff --git a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj b/Application/DevLogPersistence/DevLogPersistence.xcodeproj/project.pbxproj similarity index 92% rename from Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj rename to Application/DevLogPersistence/DevLogPersistence.xcodeproj/project.pbxproj index 8be6066d..c1ab0597 100644 --- a/Application/DevLogStorage/DevLogStorage.xcodeproj/project.pbxproj +++ b/Application/DevLogPersistence/DevLogPersistence.xcodeproj/project.pbxproj @@ -22,7 +22,7 @@ B1EAEC66B3C4F0B16072F5BE /* WidgetSnapshotPreferenceStoreImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */; }; E53E13B73BFAF0C51013ECA2 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */; }; F47DBE7D3E7E49F08D4B5530 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A55555555555555555555555 /* DevLogCore.framework */; }; - 4EE7A141A66C408EB8897D4A /* DevLogStorage.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */; }; + 4EE7A141A66C408EB8897D4A /* DevLogPersistence.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86E8AA2A43914F444BF5A6C2 /* DevLogPersistence.framework */; }; 5F89EB23199E4ABEA925CF92 /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 493A5D0B4274807F2B948AB3 /* DevLogData.framework */; }; 4763564ECF9942DCB6A7D3D2 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */; }; /* End PBXBuildFile section */ @@ -82,7 +82,7 @@ containerPortal = DF1E7E43C1BA2439E9B82492 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C205A501EF8E79FA9A73C4B; - remoteInfo = DevLogStorage; + remoteInfo = DevLogPersistence; }; E797C92EB75C449E9AE5F53F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -125,11 +125,11 @@ 04780AD732B7659D3DA1D9AC /* ThemeStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThemeStoreImpl.swift; path = Sources/Persistence/ThemeStoreImpl.swift; sourceTree = ""; }; 52A6964627E9E20D0D6A26B9 /* DevLogData.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogData.xcodeproj; path = ../DevLogData/DevLogData.xcodeproj; sourceTree = ""; }; 596DB8A398F4BCB331775AB9 /* DevLogDomain.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DevLogDomain.xcodeproj; path = ../DevLogDomain/DevLogDomain.xcodeproj; sourceTree = ""; }; - 62B066C5B0714BC3B5F4D9D0 /* DevLogStorageTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLogStorageTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 62B066C5B0714BC3B5F4D9D0 /* DevLogPersistenceTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLogPersistenceTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 6C8A7AA23C4A011F28EB5406 /* WidgetSnapshotPreferenceStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotPreferenceStoreImpl.swift; path = Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift; sourceTree = ""; }; 7DAF91F98F483FF07C38820D /* UserDefaultsStoreImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDefaultsStoreImpl.swift; path = Sources/Persistence/UserDefaultsStoreImpl.swift; sourceTree = ""; }; 85D9D7AE4397A6195D68E3F8 /* WidgetSnapshotUpdaterImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WidgetSnapshotUpdaterImpl.swift; path = Sources/Persistence/WidgetSnapshotUpdaterImpl.swift; sourceTree = ""; }; - 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogStorage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 86E8AA2A43914F444BF5A6C2 /* DevLogPersistence.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogPersistence.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 98B16FCDA8A71E2E4E1DC05E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; A22222222222222222222222 /* PersistenceAssembler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PersistenceAssembler.swift; path = Sources/PersistenceAssembler.swift; sourceTree = ""; }; A44444444444444444444444 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; @@ -156,7 +156,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4EE7A141A66C408EB8897D4A /* DevLogStorage.framework in Frameworks */, + 4EE7A141A66C408EB8897D4A /* DevLogPersistence.framework in Frameworks */, F47DBE7D3E7E49F08D4B5530 /* DevLogCore.framework in Frameworks */, 8A95AB09613C4F54883A7A38 /* DevLogDomain.framework in Frameworks */, 5F89EB23199E4ABEA925CF92 /* DevLogData.framework in Frameworks */, @@ -183,13 +183,13 @@ name = Frameworks; sourceTree = ""; }; - 63CE47D539EE6F9653C99773 /* DevLogStorage */ = { + 63CE47D539EE6F9653C99773 /* DevLogPersistence */ = { isa = PBXGroup; children = ( A22222222222222222222222 /* PersistenceAssembler.swift */, 721064495EFC6DDBA559F465 /* Persistence */, ); - name = DevLogStorage; + name = DevLogPersistence; sourceTree = ""; }; 721064495EFC6DDBA559F465 /* Persistence */ = { @@ -225,7 +225,7 @@ isa = PBXGroup; children = ( 49F17FD9095E72DC89748471 /* Frameworks */, - 63CE47D539EE6F9653C99773 /* DevLogStorage */, + 63CE47D539EE6F9653C99773 /* DevLogPersistence */, D5D04ADAA14A44289CF9A22E /* Tests */, C005798DC28F77FF8B0E248A /* Projects */, C96806E27CED4BE0CA95A9B0 /* Products */, @@ -246,8 +246,8 @@ C96806E27CED4BE0CA95A9B0 /* Products */ = { isa = PBXGroup; children = ( - 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */, - 62B066C5B0714BC3B5F4D9D0 /* DevLogStorageTests.xctest */, + 86E8AA2A43914F444BF5A6C2 /* DevLogPersistence.framework */, + 62B066C5B0714BC3B5F4D9D0 /* DevLogPersistenceTests.xctest */, F334BCFC52C730D5901F6051 /* DevLogDomain.framework */, 5FF5E1613F059A4B77931161 /* DevLogWidgetCore.framework */, 493A5D0B4274807F2B948AB3 /* DevLogData.framework */, @@ -269,9 +269,9 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 0C205A501EF8E79FA9A73C4B /* DevLogStorage */ = { + 0C205A501EF8E79FA9A73C4B /* DevLogPersistence */ = { isa = PBXNativeTarget; - buildConfigurationList = 8C12A3FB7175A40B4479C85B /* Build configuration list for PBXNativeTarget "DevLogStorage" */; + buildConfigurationList = 8C12A3FB7175A40B4479C85B /* Build configuration list for PBXNativeTarget "DevLogPersistence" */; buildPhases = ( 5FF511FD5A5529526022FD9C /* Headers */, D4CC01793812ABB253D6AC08 /* Sources */, @@ -286,14 +286,14 @@ 65214D4CBB998A4369598E01 /* PBXTargetDependency */, A88888888888888888888888 /* PBXTargetDependency */, ); - name = DevLogStorage; - productName = DevLogStorage; - productReference = 86E8AA2A43914F444BF5A6C2 /* DevLogStorage.framework */; + name = DevLogPersistence; + productName = DevLogPersistence; + productReference = 86E8AA2A43914F444BF5A6C2 /* DevLogPersistence.framework */; productType = "com.apple.product-type.framework"; }; - BE1ADABE58664FAC8B321F12 /* DevLogStorageTests */ = { + BE1ADABE58664FAC8B321F12 /* DevLogPersistenceTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 5D9A9D653D4C471C82E467D2 /* Build configuration list for PBXNativeTarget "DevLogStorageTests" */; + buildConfigurationList = 5D9A9D653D4C471C82E467D2 /* Build configuration list for PBXNativeTarget "DevLogPersistenceTests" */; buildPhases = ( 21B6276975A04D6D8BDC646D /* Sources */, 292BB970C2B54490BD9BFCDA /* Frameworks */, @@ -308,9 +308,9 @@ 0ADC5DDD59EB427EB1B33FC4 /* PBXTargetDependency */, 49EA84B99E32462D8FFD9073 /* PBXTargetDependency */, ); - name = DevLogStorageTests; - productName = DevLogStorageTests; - productReference = 62B066C5B0714BC3B5F4D9D0 /* DevLogStorageTests.xctest */; + name = DevLogPersistenceTests; + productName = DevLogPersistenceTests; + productReference = 62B066C5B0714BC3B5F4D9D0 /* DevLogPersistenceTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ @@ -327,7 +327,7 @@ }; }; }; - buildConfigurationList = 7977F26B747BC5BCE5E0A6B4 /* Build configuration list for PBXProject "DevLogStorage" */; + buildConfigurationList = 7977F26B747BC5BCE5E0A6B4 /* Build configuration list for PBXProject "DevLogPersistence" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = en; hasScannedForEncodings = 0; @@ -360,8 +360,8 @@ ); projectRoot = ""; targets = ( - 0C205A501EF8E79FA9A73C4B /* DevLogStorage */, - BE1ADABE58664FAC8B321F12 /* DevLogStorageTests */, + 0C205A501EF8E79FA9A73C4B /* DevLogPersistence */, + BE1ADABE58664FAC8B321F12 /* DevLogPersistenceTests */, ); }; /* End PBXProject section */ @@ -452,7 +452,7 @@ }; 369778EAD3564AB68A495DA7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 0C205A501EF8E79FA9A73C4B /* DevLogStorage */; + target = 0C205A501EF8E79FA9A73C4B /* DevLogPersistence */; targetProxy = E235680901FF45419002A175 /* PBXContainerItemProxy */; }; 49EA84B99E32462D8FFD9073 /* PBXTargetDependency */ = { @@ -562,7 +562,7 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogStorage; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogPersistence; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -582,13 +582,13 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogStorageTests; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogPersistenceTests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = DevLogStorage; + TEST_TARGET_NAME = DevLogPersistence; }; name = Debug; }; @@ -654,13 +654,13 @@ GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogStorageTests; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogPersistenceTests; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = DevLogStorage; + TEST_TARGET_NAME = DevLogPersistence; VALIDATE_PRODUCT = YES; }; name = Release; @@ -678,7 +678,7 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 17.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogStorage; + PRODUCT_BUNDLE_IDENTIFIER = com.opfic.DevLog.DevLogPersistence; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -692,7 +692,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 7977F26B747BC5BCE5E0A6B4 /* Build configuration list for PBXProject "DevLogStorage" */ = { + 7977F26B747BC5BCE5E0A6B4 /* Build configuration list for PBXProject "DevLogPersistence" */ = { isa = XCConfigurationList; buildConfigurations = ( 3047117C7630A6B91F1477F5 /* Debug */, @@ -701,7 +701,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 8C12A3FB7175A40B4479C85B /* Build configuration list for PBXNativeTarget "DevLogStorage" */ = { + 8C12A3FB7175A40B4479C85B /* Build configuration list for PBXNativeTarget "DevLogPersistence" */ = { isa = XCConfigurationList; buildConfigurations = ( 586E1D6B64BF31CC733055C9 /* Release */, @@ -710,7 +710,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 5D9A9D653D4C471C82E467D2 /* Build configuration list for PBXNativeTarget "DevLogStorageTests" */ = { + 5D9A9D653D4C471C82E467D2 /* Build configuration list for PBXNativeTarget "DevLogPersistenceTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 318C40EC8339400D9F44404E /* Debug */, diff --git a/Application/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme b/Application/DevLogPersistence/DevLogPersistence.xcodeproj/xcshareddata/xcschemes/DevLogPersistence.xcscheme similarity index 90% rename from Application/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme rename to Application/DevLogPersistence/DevLogPersistence.xcodeproj/xcshareddata/xcschemes/DevLogPersistence.xcscheme index 06bf85e8..7a17dcc3 100644 --- a/Application/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorage.xcscheme +++ b/Application/DevLogPersistence/DevLogPersistence.xcodeproj/xcshareddata/xcschemes/DevLogPersistence.xcscheme @@ -15,9 +15,9 @@ + BuildableName = "DevLogPersistence.framework" + BlueprintName = "DevLogPersistence" + ReferencedContainer = "container:DevLogPersistence.xcodeproj"> diff --git a/Application/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorageTests.xcscheme b/Application/DevLogPersistence/DevLogPersistence.xcodeproj/xcshareddata/xcschemes/DevLogPersistenceTests.xcscheme similarity index 84% rename from Application/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorageTests.xcscheme rename to Application/DevLogPersistence/DevLogPersistence.xcodeproj/xcshareddata/xcschemes/DevLogPersistenceTests.xcscheme index 351054d3..2661479d 100644 --- a/Application/DevLogStorage/DevLogStorage.xcodeproj/xcshareddata/xcschemes/DevLogStorageTests.xcscheme +++ b/Application/DevLogPersistence/DevLogPersistence.xcodeproj/xcshareddata/xcschemes/DevLogPersistenceTests.xcscheme @@ -16,9 +16,9 @@ + BuildableName = "DevLogPersistenceTests.xctest" + BlueprintName = "DevLogPersistenceTests" + ReferencedContainer = "container:DevLogPersistence.xcodeproj"> @@ -35,9 +35,9 @@ + BuildableName = "DevLogPersistenceTests.xctest" + BlueprintName = "DevLogPersistenceTests" + ReferencedContainer = "container:DevLogPersistence.xcodeproj"> diff --git a/Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift b/Application/DevLogPersistence/Sources/Persistence/ThemeStoreImpl.swift similarity index 100% rename from Application/DevLogStorage/Sources/Persistence/ThemeStoreImpl.swift rename to Application/DevLogPersistence/Sources/Persistence/ThemeStoreImpl.swift diff --git a/Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift b/Application/DevLogPersistence/Sources/Persistence/UserDefaultsStoreImpl.swift similarity index 100% rename from Application/DevLogStorage/Sources/Persistence/UserDefaultsStoreImpl.swift rename to Application/DevLogPersistence/Sources/Persistence/UserDefaultsStoreImpl.swift diff --git a/Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift b/Application/DevLogPersistence/Sources/Persistence/WebPageImageStoreImpl.swift similarity index 100% rename from Application/DevLogStorage/Sources/Persistence/WebPageImageStoreImpl.swift rename to Application/DevLogPersistence/Sources/Persistence/WebPageImageStoreImpl.swift diff --git a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift b/Application/DevLogPersistence/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift similarity index 100% rename from Application/DevLogStorage/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift rename to Application/DevLogPersistence/Sources/Persistence/WidgetSnapshotPreferenceStoreImpl.swift diff --git a/Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift b/Application/DevLogPersistence/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift similarity index 100% rename from Application/DevLogStorage/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift rename to Application/DevLogPersistence/Sources/Persistence/WidgetSnapshotUpdaterImpl.swift diff --git a/Application/DevLogStorage/Sources/PersistenceAssembler.swift b/Application/DevLogPersistence/Sources/PersistenceAssembler.swift similarity index 100% rename from Application/DevLogStorage/Sources/PersistenceAssembler.swift rename to Application/DevLogPersistence/Sources/PersistenceAssembler.swift diff --git a/Application/DevLogStorage/Tests/Persistence/WidgetSnapshotPreferenceStoreTests.swift b/Application/DevLogPersistence/Tests/Persistence/WidgetSnapshotPreferenceStoreTests.swift similarity index 97% rename from Application/DevLogStorage/Tests/Persistence/WidgetSnapshotPreferenceStoreTests.swift rename to Application/DevLogPersistence/Tests/Persistence/WidgetSnapshotPreferenceStoreTests.swift index 5a50a941..4a0ec2bd 100644 --- a/Application/DevLogStorage/Tests/Persistence/WidgetSnapshotPreferenceStoreTests.swift +++ b/Application/DevLogPersistence/Tests/Persistence/WidgetSnapshotPreferenceStoreTests.swift @@ -1,6 +1,6 @@ // // WidgetSnapshotPreferenceStoreTests.swift -// DevLogStorageTests +// DevLogPersistenceTests // // Created by opfic on 4/30/26. // @@ -8,7 +8,7 @@ import Foundation import DevLogDomain import Testing -@testable import DevLogStorage +@testable import DevLogPersistence struct WidgetSnapshotPreferenceStoreTests { @Test("Heatmap activity kind 설정이 비어 있으면 전체 kind를 사용한다") diff --git a/Application/DevLogStorage/Tests/Persistence/WidgetSnapshotUpdaterTests.swift b/Application/DevLogPersistence/Tests/Persistence/WidgetSnapshotUpdaterTests.swift similarity index 98% rename from Application/DevLogStorage/Tests/Persistence/WidgetSnapshotUpdaterTests.swift rename to Application/DevLogPersistence/Tests/Persistence/WidgetSnapshotUpdaterTests.swift index 031937bf..7b3b4c29 100644 --- a/Application/DevLogStorage/Tests/Persistence/WidgetSnapshotUpdaterTests.swift +++ b/Application/DevLogPersistence/Tests/Persistence/WidgetSnapshotUpdaterTests.swift @@ -1,6 +1,6 @@ // // WidgetSnapshotUpdaterTests.swift -// DevLogStorageTests +// DevLogPersistenceTests // // Created by opfic on 4/30/26. // @@ -8,7 +8,7 @@ import Foundation import DevLogDomain import Testing -@testable import DevLogStorage +@testable import DevLogPersistence @testable import DevLogWidgetCore struct WidgetSnapshotUpdaterTests { diff --git a/DevLog.xcworkspace/contents.xcworkspacedata b/DevLog.xcworkspace/contents.xcworkspacedata index e2ff3079..80f6c1c6 100644 --- a/DevLog.xcworkspace/contents.xcworkspacedata +++ b/DevLog.xcworkspace/contents.xcworkspacedata @@ -17,7 +17,7 @@ location = "group:Application/DevLogInfra/DevLogInfra.xcodeproj"> + location = "group:Application/DevLogPersistence/DevLogPersistence.xcodeproj"> From ff93960bc807f9c9fffeadbebab191ad4b5b5882 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 22:26:34 +0900 Subject: [PATCH 42/46] =?UTF-8?q?fix:=20=EC=95=B1=20=EC=8B=A4=ED=96=89=20?= =?UTF-8?q?=EC=8B=9C=20=EB=82=B4=EB=B6=80=20=ED=94=84=EB=A0=88=EC=9E=84?= =?UTF-8?q?=EC=9B=8C=ED=81=AC=EA=B0=80=20=EC=9E=84=EB=B2=A0=EB=93=9C?= =?UTF-8?q?=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogApp.xcodeproj/project.pbxproj | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj index 5e392f04..7f95220b 100644 --- a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj +++ b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj @@ -12,12 +12,20 @@ 186E9AB4F0A79C50FE853607 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DA49949C677DDE083F7DE29E /* DevLogDomain.framework */; }; 18D57A125ACCF0F6B11A7101 /* GoogleSignIn in Frameworks */ = {isa = PBXBuildFile; productRef = F972F1E8E0F5156FE9651020 /* GoogleSignIn */; }; 26C3DC51F23F9C590FDB282D /* DevLogPresentation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 67918B544432C45E63273D84 /* DevLogPresentation.framework */; }; + 020DFF50F37E47DF86BC155D /* DevLogData.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B1B97007E09855108A99428B /* DevLogData.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 618B54224ACD6B35D9A8F841 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; }; 7188DA2B6DFD13F7FF73069E /* DevLogInfra.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */; }; 79134AD67952720CCC5069EA /* DevLogPersistence.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FFA0A819CB16649AC35CCE6 /* DevLogPersistence.framework */; }; 8D3BD712CB129F2527B00CFB /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = E72BBE64130E2666E4680E1B /* FirebaseMessaging */; }; + 0B50A22827B641AEBCC033D4 /* DevLogWidgetCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 1E452BFF04594187A06AED58 /* DevLogDomain.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA49949C677DDE083F7DE29E /* DevLogDomain.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 393544DD58D941B69760727E /* DevLogPresentation.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 67918B544432C45E63273D84 /* DevLogPresentation.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; AB11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE11B22C33D44E55F6677889 /* DevLogCore.framework */; }; + A54A1843C2074FD4A651238F /* DevLogWidgetCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */ = {isa = PBXBuildFile; productRef = 0B7D3A68C7E7BF5D4A437D29 /* FirebaseCore */; }; + B38B9C91AECB49BA9C7CB8DC /* DevLogPersistence.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6FFA0A819CB16649AC35CCE6 /* DevLogPersistence.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + B9409E4F83EB4B0A9049D245 /* DevLogInfra.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + DA205F52B7C54C2C99671D50 /* DevLogCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = AE11B22C33D44E55F6677889 /* DevLogCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; DFD3A9722F8E89DD001DA7CD /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9712F8E89DD001DA7CD /* WidgetKit.framework */; }; DFD3A9742F8E89DD001DA7CD /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DFD3A9732F8E89DD001DA7CD /* SwiftUI.framework */; }; DFD3A97F2F8E89DF001DA7CD /* DevLogWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = DFD3A9702F8E89DD001DA7CD /* DevLogWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; @@ -146,6 +154,34 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ + 274175EE34F94EC88B092534 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + A54A1843C2074FD4A651238F /* DevLogWidgetCore.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + D8D4472904EC49ABB6712905 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + DA205F52B7C54C2C99671D50 /* DevLogCore.framework in Embed Frameworks */, + 1E452BFF04594187A06AED58 /* DevLogDomain.framework in Embed Frameworks */, + 020DFF50F37E47DF86BC155D /* DevLogData.framework in Embed Frameworks */, + B9409E4F83EB4B0A9049D245 /* DevLogInfra.framework in Embed Frameworks */, + B38B9C91AECB49BA9C7CB8DC /* DevLogPersistence.framework in Embed Frameworks */, + 393544DD58D941B69760727E /* DevLogPresentation.framework in Embed Frameworks */, + 0B50A22827B641AEBCC033D4 /* DevLogWidgetCore.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; DFD3A9802F8E89DF001DA7CD /* Embed Foundation Extensions */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -339,6 +375,7 @@ DFD3A96C2F8E89DD001DA7CD /* Sources */, DFD3A96D2F8E89DD001DA7CD /* Frameworks */, DFD3A96E2F8E89DD001DA7CD /* Resources */, + 274175EE34F94EC88B092534 /* Embed Frameworks */, ); buildRules = ( ); @@ -360,6 +397,7 @@ DFD48AFC2DC4D6E2005905C5 /* Sources */, DFD48AFD2DC4D6E2005905C5 /* Frameworks */, DFD48AFE2DC4D6E2005905C5 /* Resources */, + D8D4472904EC49ABB6712905 /* Embed Frameworks */, DFD3A9802F8E89DF001DA7CD /* Embed Foundation Extensions */, ); buildRules = ( From cef4041dde47f8f8a7276fdcf72165aa73ec8550 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 22:46:28 +0900 Subject: [PATCH 43/46] =?UTF-8?q?fix:=20Firebase=20=EC=B4=88=EA=B8=B0?= =?UTF-8?q?=ED=99=94=20=EC=B1=85=EC=9E=84=EC=9D=84=20Infra=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=96=B4=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogApp.xcodeproj/project.pbxproj | 25 ---------------- .../Sources/App/Delegate/AppDelegate.swift | 23 +++++++-------- .../DevLogData.xcodeproj/project.pbxproj | 8 +++++ .../Sources/Protocol/FirebaseAppService.swift | 10 +++++++ .../Protocol/PushMessagingService.swift | 17 +++++++++++ .../DevLogInfra.xcodeproj/project.pbxproj | 16 ++++++++++ .../DevLogInfra/Sources/InfraAssembler.swift | 8 +++++ .../Service/FirebaseAppServiceImpl.swift | 17 +++++++++++ .../Service/PushMessagingServiceImpl.swift | 29 +++++++++++++++++++ 9 files changed, 116 insertions(+), 37 deletions(-) create mode 100644 Application/DevLogData/Sources/Protocol/FirebaseAppService.swift create mode 100644 Application/DevLogData/Sources/Protocol/PushMessagingService.swift create mode 100644 Application/DevLogInfra/Sources/Service/FirebaseAppServiceImpl.swift create mode 100644 Application/DevLogInfra/Sources/Service/PushMessagingServiceImpl.swift diff --git a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj index 7f95220b..bc0455d4 100644 --- a/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj +++ b/Application/DevLogApp/DevLogApp.xcodeproj/project.pbxproj @@ -16,13 +16,11 @@ 618B54224ACD6B35D9A8F841 /* DevLogWidgetCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; }; 7188DA2B6DFD13F7FF73069E /* DevLogInfra.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */; }; 79134AD67952720CCC5069EA /* DevLogPersistence.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6FFA0A819CB16649AC35CCE6 /* DevLogPersistence.framework */; }; - 8D3BD712CB129F2527B00CFB /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = E72BBE64130E2666E4680E1B /* FirebaseMessaging */; }; 0B50A22827B641AEBCC033D4 /* DevLogWidgetCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 1E452BFF04594187A06AED58 /* DevLogDomain.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = DA49949C677DDE083F7DE29E /* DevLogDomain.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 393544DD58D941B69760727E /* DevLogPresentation.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 67918B544432C45E63273D84 /* DevLogPresentation.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; AB11B22C33D44E55F6677889 /* DevLogCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE11B22C33D44E55F6677889 /* DevLogCore.framework */; }; A54A1843C2074FD4A651238F /* DevLogWidgetCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = EBFCE939492CAE5AB44E6B81 /* DevLogWidgetCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */ = {isa = PBXBuildFile; productRef = 0B7D3A68C7E7BF5D4A437D29 /* FirebaseCore */; }; B38B9C91AECB49BA9C7CB8DC /* DevLogPersistence.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 6FFA0A819CB16649AC35CCE6 /* DevLogPersistence.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; B9409E4F83EB4B0A9049D245 /* DevLogInfra.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 9A6AEE3AFC586C92F1643282 /* DevLogInfra.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; DA205F52B7C54C2C99671D50 /* DevLogCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = AE11B22C33D44E55F6677889 /* DevLogCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -282,8 +280,6 @@ 79134AD67952720CCC5069EA /* DevLogPersistence.framework in Frameworks */, 26C3DC51F23F9C590FDB282D /* DevLogPresentation.framework in Frameworks */, 1589C1EF4029ECBF15A842F0 /* DevLogWidgetCore.framework in Frameworks */, - B05135963579A188BC8AC7AA /* FirebaseCore in Frameworks */, - 8D3BD712CB129F2527B00CFB /* FirebaseMessaging in Frameworks */, 18D57A125ACCF0F6B11A7101 /* GoogleSignIn in Frameworks */, 160E41BDADA3136CD58BE0B4 /* DevLogData.framework in Frameworks */, ); @@ -418,8 +414,6 @@ ); name = DevLog; packageProductDependencies = ( - 0B7D3A68C7E7BF5D4A437D29 /* FirebaseCore */, - E72BBE64130E2666E4680E1B /* FirebaseMessaging */, F972F1E8E0F5156FE9651020 /* GoogleSignIn */, ); productName = SwiftUI_DevLog; @@ -460,7 +454,6 @@ minimizedProjectReferenceProxies = 1; packageReferences = ( DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */, - D7AE705B27EA8F3775A1284E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */, 1D75B0AFC69F88110A25217B /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */, ); preferredProjectObjectVersion = 77; @@ -1060,14 +1053,6 @@ minimumVersion = 9.0.0; }; }; - D7AE705B27EA8F3775A1284E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/firebase/firebase-ios-sdk"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 11.15.0; - }; - }; DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/realm/SwiftLint"; @@ -1079,21 +1064,11 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - 0B7D3A68C7E7BF5D4A437D29 /* FirebaseCore */ = { - isa = XCSwiftPackageProductDependency; - package = D7AE705B27EA8F3775A1284E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = FirebaseCore; - }; DF66A07C2EA52E9F0098E643 /* plugin:SwiftLintBuildToolPlugin */ = { isa = XCSwiftPackageProductDependency; package = DF66A07B2EA52E970098E643 /* XCRemoteSwiftPackageReference "SwiftLint" */; productName = "plugin:SwiftLintBuildToolPlugin"; }; - E72BBE64130E2666E4680E1B /* FirebaseMessaging */ = { - isa = XCSwiftPackageProductDependency; - package = D7AE705B27EA8F3775A1284E /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; - productName = FirebaseMessaging; - }; F972F1E8E0F5156FE9651020 /* GoogleSignIn */ = { isa = XCSwiftPackageProductDependency; package = 1D75B0AFC69F88110A25217B /* XCRemoteSwiftPackageReference "GoogleSignIn-iOS" */; diff --git a/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift b/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift index 02d2f4dd..718a884a 100644 --- a/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift +++ b/Application/DevLogApp/Sources/App/Delegate/AppDelegate.swift @@ -9,10 +9,9 @@ import UIKit import DevLogCore import DevLogData import DevLogWidgetCore -import Firebase import GoogleSignIn -class AppDelegate: UIResponder, UIApplicationDelegate, MessagingDelegate { +class AppDelegate: UIResponder, UIApplicationDelegate { private let logger = Logger(category: "AppDelegate") private let container = AppDIContainer.shared @@ -28,7 +27,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, MessagingDelegate { _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil ) -> Bool { - FirebaseApp.configure() + container.resolve(FirebaseAppService.self).configure() _ = container.resolve(FCMTokenSyncHandler.self) _ = container.resolve(UserTimeZoneSyncHandler.self) _ = container.resolve(WidgetSyncEventHandler.self) @@ -50,25 +49,25 @@ class AppDelegate: UIResponder, UIApplicationDelegate, MessagingDelegate { NotificationCenter.default.post(name: .didRequestUserTimeZoneSync, object: nil) // Firebase Messaging 설정 - Messaging.messaging().delegate = self - + container.resolve(PushMessagingService.self).setDelegate(self) + // 앱이 완전 종료되어도, 알림을 통해 앱이 시작된 경우 처리 if let remoteNotification = launchOptions?[.remoteNotification] as? [AnyHashable: Any] { Task { @MainActor in PushNotificationRoute.shared.handlePushTap(userInfo: remoteNotification) } } - + return true } - + // APNs 등록 성공 func application( _ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data ) { logger.info("APNs token: \(deviceToken.map { String(format: "%02.2hhx", $0) }.joined())") - Messaging.messaging().apnsToken = deviceToken + container.resolve(PushMessagingService.self).setAPNSToken(deviceToken) } // APNs 등록 실패 @@ -78,10 +77,10 @@ class AppDelegate: UIResponder, UIApplicationDelegate, MessagingDelegate { logger.error("Failed to register APNs token", error: error) } - // FCMToken 갱신 - func messaging( - _ messaging: Messaging, didReceiveRegistrationToken fcmToken: String? - ) { +} + +extension AppDelegate: PushMessagingServiceDelegate { + func pushMessagingService(_ service: PushMessagingService, didReceiveRegistrationToken fcmToken: String?) { if let fcmToken = fcmToken { logger.info("FCM token: \(fcmToken)") NotificationCenter.default.post( diff --git a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj index 59e6c37c..b1608a24 100644 --- a/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj +++ b/Application/DevLogData/DevLogData.xcodeproj/project.pbxproj @@ -19,6 +19,7 @@ 3F09F91345793F8C14F5CC05 /* WidgetSnapshotUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D8178F2D3DAE010896141ED /* WidgetSnapshotUpdater.swift */; }; 410CB3F18CADB18146AE82B7 /* DataAssembler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29CDDE9287D2855E4AF14021 /* DataAssembler.swift */; }; 41371B777FE701652CA2E798 /* AuthenticationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7154773B586C2D41307CD49 /* AuthenticationService.swift */; }; + A7084A7C1DE34A0EA3E0E327 /* FirebaseAppService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A9508F58EA84409A10F12A8 /* FirebaseAppService.swift */; }; 4BD06832F56598B25183EF06 /* WebPageRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF764A3F6E025A18E6A0BC /* WebPageRepositoryImpl.swift */; }; 4C0F2F479581D2E091C429B2 /* TodoCategoryRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36E09221F6FBF67359105995 /* TodoCategoryRepositoryImpl.swift */; }; 50C769615D094189B739F055 /* UserPreferencesRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0202E26A972D5D274AF77C67 /* UserPreferencesRepositoryImpl.swift */; }; @@ -36,6 +37,7 @@ 7FD388EB6C3123479B304478 /* DevLogDomain.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2039D0A2EB1ADD163DFC253D /* DevLogDomain.framework */; }; 90776FF719A37EAE1CB1BB1B /* TodoCategoryService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 082E30ECD7061C9E401FF2D0 /* TodoCategoryService.swift */; }; 922EECF001AF1EAC4EE5ACAA /* PushNotificationMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44C564559DBDF765945456FA /* PushNotificationMapping.swift */; }; + D60472ECAF3C42569988BBE1 /* PushMessagingService.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0912860F6ED464D95F2D648 /* PushMessagingService.swift */; }; 94BC00B678F8511CC23BCA17 /* UserDefaultsStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D627D7628D41EE342DB1B2 /* UserDefaultsStore.swift */; }; 963AA368BA2E4A085206768C /* ThemeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */; }; 986DAE304B67FC8F8563FC40 /* AuthSessionRepositoryImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80CBBE2B99B80E70DCD800ED /* AuthSessionRepositoryImpl.swift */; }; @@ -141,6 +143,7 @@ 48EFCDACF284D106254C4BF1 /* AuthDataResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthDataResponse.swift; path = Sources/DTO/AuthDataResponse.swift; sourceTree = ""; }; 4AB6E00A38C37CDBF82B57FD /* DevLogData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DevLogData.framework; path = DevLogData.framework; sourceTree = BUILT_PRODUCTS_DIR; }; F0A3B72D714B42CDB4E3E905 /* DevLogDataTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLogDataTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 8A9508F58EA84409A10F12A8 /* FirebaseAppService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FirebaseAppService.swift; path = Sources/Protocol/FirebaseAppService.swift; sourceTree = ""; }; 550C0805BC3896C8868B6FB2 /* WebPageDTO.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageDTO.swift; path = Sources/DTO/WebPageDTO.swift; sourceTree = ""; }; 60E716EC015A5805DD7C949B /* TodoService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoService.swift; path = Sources/Protocol/TodoService.swift; sourceTree = ""; }; 6109198D924EFE51F0D884D4 /* PushNotificationResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationResponse.swift; path = Sources/DTO/PushNotificationResponse.swift; sourceTree = ""; }; @@ -152,6 +155,7 @@ 80CBBE2B99B80E70DCD800ED /* AuthSessionRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthSessionRepositoryImpl.swift; path = Sources/Repository/AuthSessionRepositoryImpl.swift; sourceTree = ""; }; 8B167270C81CB76E8F5ED9CA /* UserDataRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UserDataRepositoryImpl.swift; path = Sources/Repository/UserDataRepositoryImpl.swift; sourceTree = ""; }; 914EE1DC0A02968747B6B3A2 /* WebPageImageRepositoryImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageImageRepositoryImpl.swift; path = Sources/Repository/WebPageImageRepositoryImpl.swift; sourceTree = ""; }; + E0912860F6ED464D95F2D648 /* PushMessagingService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushMessagingService.swift; path = Sources/Protocol/PushMessagingService.swift; sourceTree = ""; }; A7D76A08AAD3B63F20E01668 /* DataLayerError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DataLayerError.swift; path = Sources/Common/DataLayerError.swift; sourceTree = ""; }; ADE1FE53786D11AC7B192698 /* WebPageService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = WebPageService.swift; path = Sources/Protocol/WebPageService.swift; sourceTree = ""; }; B1ABB0ED51067433D3C90F02 /* TodoPageResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoPageResponse.swift; path = Sources/DTO/TodoPageResponse.swift; sourceTree = ""; }; @@ -226,7 +230,9 @@ children = ( E7154773B586C2D41307CD49 /* AuthenticationService.swift */, 7559825C27ED42F9F86EBAC1 /* AuthService.swift */, + 8A9508F58EA84409A10F12A8 /* FirebaseAppService.swift */, 3B67886F72C946CBC709AFCB /* NWPathConnectivityProvider.swift */, + E0912860F6ED464D95F2D648 /* PushMessagingService.swift */, 2FF70E9CD388C10B69945D7C /* PushNotificationService.swift */, 22359AD075B1EFEDD17A8A0C /* ThemeStore.swift */, 082E30ECD7061C9E401FF2D0 /* TodoCategoryService.swift */, @@ -490,7 +496,9 @@ B3655250BCDBFAFBFA941F63 /* WebPageMetadataResponse.swift in Sources */, F515D3BD025E835AFFFAE8F6 /* AuthService.swift in Sources */, 41371B777FE701652CA2E798 /* AuthenticationService.swift in Sources */, + A7084A7C1DE34A0EA3E0E327 /* FirebaseAppService.swift in Sources */, 36A48634DC1A350421118FEB /* NWPathConnectivityProvider.swift in Sources */, + D60472ECAF3C42569988BBE1 /* PushMessagingService.swift in Sources */, 2A057B6B7F6900E50AC2E031 /* PushNotificationService.swift in Sources */, 963AA368BA2E4A085206768C /* ThemeStore.swift in Sources */, 90776FF719A37EAE1CB1BB1B /* TodoCategoryService.swift in Sources */, diff --git a/Application/DevLogData/Sources/Protocol/FirebaseAppService.swift b/Application/DevLogData/Sources/Protocol/FirebaseAppService.swift new file mode 100644 index 00000000..01ea3b62 --- /dev/null +++ b/Application/DevLogData/Sources/Protocol/FirebaseAppService.swift @@ -0,0 +1,10 @@ +// +// FirebaseAppService.swift +// DevLogData +// +// Created by opfic on 5/15/26. +// + +public protocol FirebaseAppService { + func configure() +} diff --git a/Application/DevLogData/Sources/Protocol/PushMessagingService.swift b/Application/DevLogData/Sources/Protocol/PushMessagingService.swift new file mode 100644 index 00000000..d5f61f24 --- /dev/null +++ b/Application/DevLogData/Sources/Protocol/PushMessagingService.swift @@ -0,0 +1,17 @@ +// +// PushMessagingService.swift +// DevLogData +// +// Created by opfic on 5/15/26. +// + +import Foundation + +public protocol PushMessagingService: AnyObject { + func setDelegate(_ delegate: PushMessagingServiceDelegate?) + func setAPNSToken(_ deviceToken: Data) +} + +public protocol PushMessagingServiceDelegate: AnyObject { + func pushMessagingService(_ service: PushMessagingService, didReceiveRegistrationToken fcmToken: String?) +} diff --git a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj index 7d993832..ac6fe85a 100644 --- a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj +++ b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.pbxproj @@ -14,6 +14,7 @@ 4A36236096C643DA1FF29771 /* UserServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 383CD000472C3025FACB9EFF /* UserServiceImpl.swift */; }; 5C3D4AB0EA1E2DA901239A6C /* FirestorePath.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */; }; 6493ACB77436F1E887D91D59 /* FirebaseAuthUser+.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59E81A47825142881793450F /* FirebaseAuthUser+.swift */; }; + 05C3F42B54064540A301FC8C /* FirebaseAppServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C51EAC568E6946C5B4770B09 /* FirebaseAppServiceImpl.swift */; }; 65478CAC7F8597445F84F656 /* TodoServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */; }; 65623F19F34A9A75BC72EE36 /* FirebaseFirestore in Frameworks */ = {isa = PBXBuildFile; productRef = CE8F32B22E13743B3FF3B66B /* FirebaseFirestore */; }; 6F30F7AD6A048E8ED847D123 /* AuthServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */; }; @@ -33,8 +34,10 @@ F085DED20E80F63AE071D8BA /* DevLogData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A4F874032FD57C0BBCC41C64 /* DevLogData.framework */; }; F75AA9259C6636CF733C4D82 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */; }; 3CE81EA6CD7444739AC73633 /* DevLogInfra.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 592C8B7B099933759AB316A5 /* DevLogInfra.framework */; }; + 5F7A14F2C5294547884212E1 /* FirebaseCore in Frameworks */ = {isa = PBXBuildFile; productRef = 06ADD17826F44543B09286DA /* FirebaseCore */; }; FB5186BC5A89B7DADAB8A82A /* FirebaseAuth in Frameworks */ = {isa = PBXBuildFile; productRef = 2AC59F98E5A6BFA339C3E5BD /* FirebaseAuth */; }; FB8043FF7043AFDA0E3F705B /* FirebaseMessaging in Frameworks */ = {isa = PBXBuildFile; productRef = 94394E2197878DD50AF67628 /* FirebaseMessaging */; }; + EFCE1F76080E4B7FBED6DB0E /* PushMessagingServiceImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B961C40988C9455B9644B92F /* PushMessagingServiceImpl.swift */; }; FE130A3E1E85658BD3ECE791 /* FirebaseFunctions+.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9AFF9DAE09B8132A62D6DA8 /* FirebaseFunctions+.swift */; }; FEBF252AD70A910C914D3D22 /* Nexa in Frameworks */ = {isa = PBXBuildFile; productRef = EE91BC971B2F1FFEEDA3A3B8 /* Nexa */; }; /* End PBXBuildFile section */ @@ -101,6 +104,7 @@ 50F6E155C43BBEB56B3D7403 /* GoogleAuthenticationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = GoogleAuthenticationServiceImpl.swift; path = Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift; sourceTree = ""; }; 592C8B7B099933759AB316A5 /* DevLogInfra.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DevLogInfra.framework; sourceTree = BUILT_PRODUCTS_DIR; }; AD628A91CC6D40B29D89DEA3 /* DevLogInfraTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = DevLogInfraTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + C51EAC568E6946C5B4770B09 /* FirebaseAppServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FirebaseAppServiceImpl.swift; path = Sources/Service/FirebaseAppServiceImpl.swift; sourceTree = ""; }; 59E81A47825142881793450F /* FirebaseAuthUser+.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FirebaseAuthUser+.swift"; path = "Sources/Extension/FirebaseAuthUser+.swift"; sourceTree = ""; }; 64CFC9162F5063E3CB017B40 /* FirestorePath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FirestorePath.swift; path = Sources/Common/FirestorePath.swift; sourceTree = ""; }; 7CC9FAB56498FA5BAEAC59A6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; @@ -109,6 +113,7 @@ B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NWPathConnectivityProviderImpl.swift; path = Sources/Service/NWPathConnectivityProviderImpl.swift; sourceTree = ""; }; B44444444444444444444444 /* DevLogCore.xcodeproj */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.pb-project"; name = DevLogCore.xcodeproj; path = ../DevLogCore/DevLogCore.xcodeproj; sourceTree = ""; }; BE5EF0B863FF47BFEC508304 /* TodoServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoServiceImpl.swift; path = Sources/Service/TodoServiceImpl.swift; sourceTree = ""; }; + B961C40988C9455B9644B92F /* PushMessagingServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushMessagingServiceImpl.swift; path = Sources/Service/PushMessagingServiceImpl.swift; sourceTree = ""; }; C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PushNotificationServiceImpl.swift; path = Sources/Service/PushNotificationServiceImpl.swift; sourceTree = ""; }; CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TodoCategoryServiceImpl.swift; path = Sources/Service/TodoCategoryServiceImpl.swift; sourceTree = ""; }; D2C9755DE5674266B3C6F90C /* AppleAuthResponse.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AppleAuthResponse.swift; path = Sources/Service/SocialLogin/AppleAuthResponse.swift; sourceTree = ""; }; @@ -126,6 +131,7 @@ files = ( F75AA9259C6636CF733C4D82 /* Foundation.framework in Frameworks */, 21F6F37746C943D1A019963F /* DevLogDomain.framework in Frameworks */, + 5F7A14F2C5294547884212E1 /* FirebaseCore in Frameworks */, FB5186BC5A89B7DADAB8A82A /* FirebaseAuth in Frameworks */, 65623F19F34A9A75BC72EE36 /* FirebaseFirestore in Frameworks */, E747320CAD03A579976E87F8 /* FirebaseFunctions in Frameworks */, @@ -195,7 +201,9 @@ isa = PBXGroup; children = ( E08FBC9DACB1DA5DAE2D1960 /* AuthServiceImpl.swift */, + C51EAC568E6946C5B4770B09 /* FirebaseAppServiceImpl.swift */, B33BE8E906B890526D3476AE /* NWPathConnectivityProviderImpl.swift */, + B961C40988C9455B9644B92F /* PushMessagingServiceImpl.swift */, C66E5D9D27AB4B3EE3974E88 /* PushNotificationServiceImpl.swift */, 091FD7B63F7A260D118E5905 /* SocialLogin */, CC30F1A30BDA822507BD6C4D /* TodoCategoryServiceImpl.swift */, @@ -285,6 +293,7 @@ ); name = DevLogInfra; packageProductDependencies = ( + 06ADD17826F44543B09286DA /* FirebaseCore */, 2AC59F98E5A6BFA339C3E5BD /* FirebaseAuth */, CE8F32B22E13743B3FF3B66B /* FirebaseFirestore */, 172AF9DE3BC54E9E0B4EFD19 /* FirebaseFunctions */, @@ -421,7 +430,9 @@ 6493ACB77436F1E887D91D59 /* FirebaseAuthUser+.swift in Sources */, FE130A3E1E85658BD3ECE791 /* FirebaseFunctions+.swift in Sources */, 6F30F7AD6A048E8ED847D123 /* AuthServiceImpl.swift in Sources */, + 05C3F42B54064540A301FC8C /* FirebaseAppServiceImpl.swift in Sources */, D6A1524366DC5CF153821979 /* NWPathConnectivityProviderImpl.swift in Sources */, + EFCE1F76080E4B7FBED6DB0E /* PushMessagingServiceImpl.swift in Sources */, 0E1D2D0391955DAAAEB0090F /* PushNotificationServiceImpl.swift in Sources */, 7711F199E79F41919891BF31 /* AppleAuthResponse.swift in Sources */, 73814E7535B64F24905F1EF1 /* AppleSignInDelegate.swift in Sources */, @@ -729,6 +740,11 @@ package = 6A88F5113FA6A29A059E7035 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; productName = FirebaseFunctions; }; + 06ADD17826F44543B09286DA /* FirebaseCore */ = { + isa = XCSwiftPackageProductDependency; + package = 6A88F5113FA6A29A059E7035 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; + productName = FirebaseCore; + }; 2AC59F98E5A6BFA339C3E5BD /* FirebaseAuth */ = { isa = XCSwiftPackageProductDependency; package = 6A88F5113FA6A29A059E7035 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; diff --git a/Application/DevLogInfra/Sources/InfraAssembler.swift b/Application/DevLogInfra/Sources/InfraAssembler.swift index 73ec991a..3576bab8 100644 --- a/Application/DevLogInfra/Sources/InfraAssembler.swift +++ b/Application/DevLogInfra/Sources/InfraAssembler.swift @@ -12,6 +12,14 @@ public final class InfraAssembler: Assembler { public init() { } public func assemble(_ container: any DIContainer) { + container.register(FirebaseAppService.self) { + FirebaseAppServiceImpl() + } + + container.register(PushMessagingService.self) { + PushMessagingServiceImpl() + } + container.register( AuthenticationService.self, name: "AppleAuthenticationService" diff --git a/Application/DevLogInfra/Sources/Service/FirebaseAppServiceImpl.swift b/Application/DevLogInfra/Sources/Service/FirebaseAppServiceImpl.swift new file mode 100644 index 00000000..bc5744d2 --- /dev/null +++ b/Application/DevLogInfra/Sources/Service/FirebaseAppServiceImpl.swift @@ -0,0 +1,17 @@ +// +// FirebaseAppServiceImpl.swift +// DevLogInfra +// +// Created by opfic on 5/15/26. +// + +import DevLogData +import FirebaseCore + +final class FirebaseAppServiceImpl: FirebaseAppService { + func configure() { + if FirebaseApp.app() == nil { + FirebaseApp.configure() + } + } +} diff --git a/Application/DevLogInfra/Sources/Service/PushMessagingServiceImpl.swift b/Application/DevLogInfra/Sources/Service/PushMessagingServiceImpl.swift new file mode 100644 index 00000000..44a29d7d --- /dev/null +++ b/Application/DevLogInfra/Sources/Service/PushMessagingServiceImpl.swift @@ -0,0 +1,29 @@ +// +// PushMessagingServiceImpl.swift +// DevLogInfra +// +// Created by opfic on 5/15/26. +// + +import Foundation +import DevLogData +import FirebaseMessaging + +final class PushMessagingServiceImpl: NSObject, PushMessagingService { + private weak var delegate: PushMessagingServiceDelegate? + + func setDelegate(_ delegate: PushMessagingServiceDelegate?) { + self.delegate = delegate + Messaging.messaging().delegate = self + } + + func setAPNSToken(_ deviceToken: Data) { + Messaging.messaging().apnsToken = deviceToken + } +} + +extension PushMessagingServiceImpl: MessagingDelegate { + func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) { + delegate?.pushMessagingService(self, didReceiveRegistrationToken: fcmToken) + } +} From cea5ede03560313e71861ee8b511a2676615b2aa Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 22:54:32 +0900 Subject: [PATCH 44/46] =?UTF-8?q?chore:=20Swift=20Package=20lockfile=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EB=B3=80=EA=B2=BD=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xcshareddata/swiftpm/Package.resolved | 59 ++++++++----------- .../xcshareddata/swiftpm/Package.resolved | 16 ++--- .../xcshareddata/swiftpm/Package.resolved | 59 ++++++++----------- 3 files changed, 58 insertions(+), 76 deletions(-) diff --git a/Application/DevLogApp/DevLogApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Application/DevLogApp/DevLogApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index c9fffc37..fe577f2a 100644 --- a/Application/DevLogApp/DevLogApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Application/DevLogApp/DevLogApp.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "725d7e6de0281660a42e23ec24e8389420f3b373466c9f96baa68280ef6b09aa", + "originHash" : "6e83e8a97f59e7d95bbfcd1dc82daad8306c7a0f7df1e8bb7966a26baf0e4a2b", "pins" : [ { "identity" : "abseil-cpp-binary", @@ -42,8 +42,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/krzyzanowskim/CryptoSwift.git", "state" : { - "revision" : "f2a627b84c1ff96f21ac2fcb623ab36142dd5512", - "version" : "1.10.0" + "revision" : "e45a26384239e028ec87fbcc788f513b67e10d8f", + "version" : "1.9.0" } }, { @@ -60,8 +60,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/googleads/google-ads-on-device-conversion-ios-sdk", "state" : { - "revision" : "a2d0f1f1666de591eb1a811f40b1706f5c63a2ed", - "version" : "2.3.0" + "revision" : "428d8bb138e00f9a3f4f61cc6cd8863607524f65", + "version" : "2.1.0" } }, { @@ -87,8 +87,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleSignIn-iOS", "state" : { - "revision" : "913b4005ea26aebe1c97d54e35ad82a515924c71", - "version" : "9.1.0" + "revision" : "3996d908c7b3ce8a87d39c808f9a6b2a08fbe043", + "version" : "9.0.0" } }, { @@ -105,8 +105,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/grpc-binary.git", "state" : { - "revision" : "75b31c842f664a0f46a2e590a570e370249fd8f6", - "version" : "1.69.1" + "revision" : "cc0001a0cf963aa40501d9c2b181e7fc9fd8ec71", + "version" : "1.69.0" } }, { @@ -186,8 +186,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/jpsim/SourceKitten.git", "state" : { - "revision" : "6529c17fe80dd94843a3df7ed3e6a239790d5c91", - "version" : "0.37.3" + "revision" : "731ffe6a35344a19bab00cdca1c952d5b4fee4d8", + "version" : "0.37.2" } }, { @@ -195,8 +195,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-argument-parser.git", "state" : { - "revision" : "626b5b7b2f45e1b0b1c6f4a309296d1d21d7311b", - "version" : "1.7.1" + "revision" : "cdd0ef3755280949551dc26dee5de9ddeda89f54", + "version" : "1.6.2" } }, { @@ -204,8 +204,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/swiftlang/swift-cmark", "state" : { - "revision" : "924936d0427cb25a61169739a7660230bffa6ea6", - "version" : "0.8.0" + "revision" : "b022b08312decdc46585e0b3440d97f6f22ef703", + "version" : "0.6.0" } }, { @@ -213,17 +213,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-collections.git", "state" : { - "revision" : "03cc312c2c933ed87abace34044a5dff7a3117c1", - "version" : "1.5.0" - } - }, - { - "identity" : "swift-filename-matcher", - "kind" : "remoteSourceControl", - "location" : "https://github.com/ileitch/swift-filename-matcher", - "state" : { - "revision" : "eef5ac0b6b3cdc64b3039b037bed2def8a1edaeb", - "version" : "2.0.1" + "revision" : "7b847a3b7008b2dc2f47ca3110d8c782fb2e5c7e", + "version" : "1.3.0" } }, { @@ -240,8 +231,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-protobuf.git", "state" : { - "revision" : "81558271e243f8f47dfe8e9fdd55f3c2b5413f68", - "version" : "1.37.0" + "revision" : "102a647b573f60f73afdce5613a51d71349fe507", + "version" : "1.30.0" } }, { @@ -249,8 +240,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/swiftlang/swift-syntax.git", "state" : { - "revision" : "65b02a90ad2cc213e09309faeb7f6909e0a8577a", - "version" : "604.0.0-prerelease-2026-01-20" + "revision" : "6673b05995983461eef015c4768f1483c245db22", + "version" : "603.0.0-prerelease-2025-09-15" } }, { @@ -258,8 +249,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/realm/SwiftLint", "state" : { - "revision" : "88952528a590ed366c6f76f6bfb980b5ebdcefc1", - "version" : "0.63.2" + "revision" : "57dba9819eb3e2b25daf71a06eb414fda7e43078", + "version" : "0.62.1" } }, { @@ -285,8 +276,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/jpsim/Yams.git", "state" : { - "revision" : "deaf82e867fa2cbd3cd865978b079bfcf384ac28", - "version" : "6.2.1" + "revision" : "51b5127c7fb6ffac106ad6d199aaa33c5024895f", + "version" : "6.2.0" } } ], diff --git a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 64568cd1..b639c643 100644 --- a/Application/DevLogInfra/DevLogInfra.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Application/DevLogInfra/DevLogInfra.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -42,8 +42,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/googleads/google-ads-on-device-conversion-ios-sdk", "state" : { - "revision" : "a2d0f1f1666de591eb1a811f40b1706f5c63a2ed", - "version" : "2.3.0" + "revision" : "428d8bb138e00f9a3f4f61cc6cd8863607524f65", + "version" : "2.1.0" } }, { @@ -69,8 +69,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleSignIn-iOS", "state" : { - "revision" : "913b4005ea26aebe1c97d54e35ad82a515924c71", - "version" : "9.1.0" + "revision" : "3996d908c7b3ce8a87d39c808f9a6b2a08fbe043", + "version" : "9.0.0" } }, { @@ -87,8 +87,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/grpc-binary.git", "state" : { - "revision" : "75b31c842f664a0f46a2e590a570e370249fd8f6", - "version" : "1.69.1" + "revision" : "cc0001a0cf963aa40501d9c2b181e7fc9fd8ec71", + "version" : "1.69.0" } }, { @@ -159,8 +159,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-protobuf.git", "state" : { - "revision" : "81558271e243f8f47dfe8e9fdd55f3c2b5413f68", - "version" : "1.37.0" + "revision" : "102a647b573f60f73afdce5613a51d71349fe507", + "version" : "1.30.0" } } ], diff --git a/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved b/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved index c9fffc37..fe577f2a 100644 --- a/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/DevLog.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "725d7e6de0281660a42e23ec24e8389420f3b373466c9f96baa68280ef6b09aa", + "originHash" : "6e83e8a97f59e7d95bbfcd1dc82daad8306c7a0f7df1e8bb7966a26baf0e4a2b", "pins" : [ { "identity" : "abseil-cpp-binary", @@ -42,8 +42,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/krzyzanowskim/CryptoSwift.git", "state" : { - "revision" : "f2a627b84c1ff96f21ac2fcb623ab36142dd5512", - "version" : "1.10.0" + "revision" : "e45a26384239e028ec87fbcc788f513b67e10d8f", + "version" : "1.9.0" } }, { @@ -60,8 +60,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/googleads/google-ads-on-device-conversion-ios-sdk", "state" : { - "revision" : "a2d0f1f1666de591eb1a811f40b1706f5c63a2ed", - "version" : "2.3.0" + "revision" : "428d8bb138e00f9a3f4f61cc6cd8863607524f65", + "version" : "2.1.0" } }, { @@ -87,8 +87,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/GoogleSignIn-iOS", "state" : { - "revision" : "913b4005ea26aebe1c97d54e35ad82a515924c71", - "version" : "9.1.0" + "revision" : "3996d908c7b3ce8a87d39c808f9a6b2a08fbe043", + "version" : "9.0.0" } }, { @@ -105,8 +105,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/google/grpc-binary.git", "state" : { - "revision" : "75b31c842f664a0f46a2e590a570e370249fd8f6", - "version" : "1.69.1" + "revision" : "cc0001a0cf963aa40501d9c2b181e7fc9fd8ec71", + "version" : "1.69.0" } }, { @@ -186,8 +186,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/jpsim/SourceKitten.git", "state" : { - "revision" : "6529c17fe80dd94843a3df7ed3e6a239790d5c91", - "version" : "0.37.3" + "revision" : "731ffe6a35344a19bab00cdca1c952d5b4fee4d8", + "version" : "0.37.2" } }, { @@ -195,8 +195,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-argument-parser.git", "state" : { - "revision" : "626b5b7b2f45e1b0b1c6f4a309296d1d21d7311b", - "version" : "1.7.1" + "revision" : "cdd0ef3755280949551dc26dee5de9ddeda89f54", + "version" : "1.6.2" } }, { @@ -204,8 +204,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/swiftlang/swift-cmark", "state" : { - "revision" : "924936d0427cb25a61169739a7660230bffa6ea6", - "version" : "0.8.0" + "revision" : "b022b08312decdc46585e0b3440d97f6f22ef703", + "version" : "0.6.0" } }, { @@ -213,17 +213,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-collections.git", "state" : { - "revision" : "03cc312c2c933ed87abace34044a5dff7a3117c1", - "version" : "1.5.0" - } - }, - { - "identity" : "swift-filename-matcher", - "kind" : "remoteSourceControl", - "location" : "https://github.com/ileitch/swift-filename-matcher", - "state" : { - "revision" : "eef5ac0b6b3cdc64b3039b037bed2def8a1edaeb", - "version" : "2.0.1" + "revision" : "7b847a3b7008b2dc2f47ca3110d8c782fb2e5c7e", + "version" : "1.3.0" } }, { @@ -240,8 +231,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-protobuf.git", "state" : { - "revision" : "81558271e243f8f47dfe8e9fdd55f3c2b5413f68", - "version" : "1.37.0" + "revision" : "102a647b573f60f73afdce5613a51d71349fe507", + "version" : "1.30.0" } }, { @@ -249,8 +240,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/swiftlang/swift-syntax.git", "state" : { - "revision" : "65b02a90ad2cc213e09309faeb7f6909e0a8577a", - "version" : "604.0.0-prerelease-2026-01-20" + "revision" : "6673b05995983461eef015c4768f1483c245db22", + "version" : "603.0.0-prerelease-2025-09-15" } }, { @@ -258,8 +249,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/realm/SwiftLint", "state" : { - "revision" : "88952528a590ed366c6f76f6bfb980b5ebdcefc1", - "version" : "0.63.2" + "revision" : "57dba9819eb3e2b25daf71a06eb414fda7e43078", + "version" : "0.62.1" } }, { @@ -285,8 +276,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/jpsim/Yams.git", "state" : { - "revision" : "deaf82e867fa2cbd3cd865978b079bfcf384ac28", - "version" : "6.2.1" + "revision" : "51b5127c7fb6ffac106ad6d199aaa33c5024895f", + "version" : "6.2.0" } } ], From cad239a92302eaa2c9d47639bf0101db18bf4931 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 22:54:41 +0900 Subject: [PATCH 45/46] =?UTF-8?q?style:=20lint=20=EA=B2=BD=EA=B3=A0=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Application/DevLogApp/Sources/App/TempView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Application/DevLogApp/Sources/App/TempView.swift b/Application/DevLogApp/Sources/App/TempView.swift index 6e171a6a..e2e3005d 100644 --- a/Application/DevLogApp/Sources/App/TempView.swift +++ b/Application/DevLogApp/Sources/App/TempView.swift @@ -9,7 +9,7 @@ import SwiftUI struct TempView: View { let text: String - + var body: some View { Text(text) } From 745c36e0c75cc4210045238ae9915a6495365d04 Mon Sep 17 00:00:00 2001 From: opficdev Date: Fri, 15 May 2026 22:58:32 +0900 Subject: [PATCH 46/46] =?UTF-8?q?refactor:=20AuthService=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=ED=86=A0=EC=BD=9C=EC=9D=98=20FirebaseAuth=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=ED=8C=90=EB=B3=84=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DevLogData/Sources/Protocol/AuthService.swift | 1 - .../Sources/Repository/AuthDataRepositoryImpl.swift | 4 ---- .../Sources/Extension/FirebaseAuthUser+.swift | 11 +++++++++++ .../DevLogInfra/Sources/Service/AuthServiceImpl.swift | 8 -------- .../SocialLogin/AppleAuthenticationServiceImpl.swift | 4 ++++ .../SocialLogin/GithubAuthenticationServiceImpl.swift | 4 ++++ .../SocialLogin/GoogleAuthenticationServiceImpl.swift | 4 ++++ 7 files changed, 23 insertions(+), 13 deletions(-) diff --git a/Application/DevLogData/Sources/Protocol/AuthService.swift b/Application/DevLogData/Sources/Protocol/AuthService.swift index f8e535b5..5ebcf828 100644 --- a/Application/DevLogData/Sources/Protocol/AuthService.swift +++ b/Application/DevLogData/Sources/Protocol/AuthService.swift @@ -21,5 +21,4 @@ public protocol AuthService { func getProviderID() async throws -> String? func deleteCurrentUser() async throws func clearCurrentSession() async throws - func isCredentialAlreadyInUseError(_ error: Error) -> Bool } diff --git a/Application/DevLogData/Sources/Repository/AuthDataRepositoryImpl.swift b/Application/DevLogData/Sources/Repository/AuthDataRepositoryImpl.swift index b52aff9b..99d770d5 100644 --- a/Application/DevLogData/Sources/Repository/AuthDataRepositoryImpl.swift +++ b/Application/DevLogData/Sources/Repository/AuthDataRepositoryImpl.swift @@ -94,10 +94,6 @@ private extension AuthDataRepositoryImpl { } } - if authService.isCredentialAlreadyInUseError(error) { - return AuthError.linkCredentialAlreadyInUse - } - return error } } diff --git a/Application/DevLogInfra/Sources/Extension/FirebaseAuthUser+.swift b/Application/DevLogInfra/Sources/Extension/FirebaseAuthUser+.swift index f5fb42f3..d7ac649c 100644 --- a/Application/DevLogInfra/Sources/Extension/FirebaseAuthUser+.swift +++ b/Application/DevLogInfra/Sources/Extension/FirebaseAuthUser+.swift @@ -26,3 +26,14 @@ extension FirebaseAuth.User { ) } } + +extension Error { + var isFirebaseCredentialAlreadyInUse: Bool { + let nsError = self as NSError + guard nsError.domain == AuthErrorDomain, + let authErrorCode = AuthErrorCode(rawValue: nsError.code) else { + return false + } + return authErrorCode == .credentialAlreadyInUse + } +} diff --git a/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift b/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift index c48dd598..10adbf22 100644 --- a/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift @@ -134,12 +134,4 @@ final class AuthServiceImpl: AuthService { } } - func isCredentialAlreadyInUseError(_ error: Error) -> Bool { - let nsError = error as NSError - guard nsError.domain == AuthErrorDomain, - let authErrorCode = AuthErrorCode(rawValue: nsError.code) else { - return false - } - return authErrorCode == .credentialAlreadyInUse - } } diff --git a/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift index 54be0acb..848bfc4a 100644 --- a/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift @@ -14,6 +14,7 @@ import FirebaseMessaging import Foundation import DevLogCore import DevLogData +import DevLogDomain final class AppleAuthenticationServiceImpl: AuthenticationService { private enum FunctionName: String { @@ -159,6 +160,9 @@ final class AppleAuthenticationServiceImpl: AuthenticationService { try await user?.link(with: appleCredential) } catch { logger.error("Failed to link Apple account", error: error) + if error.isFirebaseCredentialAlreadyInUse { + throw AuthError.linkCredentialAlreadyInUse + } throw error } } diff --git a/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift index cce142bc..76c1ab5e 100644 --- a/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/SocialLogin/GithubAuthenticationServiceImpl.swift @@ -14,6 +14,7 @@ import FirebaseMessaging import Nexa import DevLogCore import DevLogData +import DevLogDomain final class GithubAuthenticationServiceImpl: NSObject, AuthenticationService { private enum FunctionName: String { @@ -143,6 +144,9 @@ final class GithubAuthenticationServiceImpl: NSObject, AuthenticationService { logger.info("Successfully linked GitHub account") } catch { logger.error("Failed to link GitHub account", error: error) + if error.isFirebaseCredentialAlreadyInUse { + throw AuthError.linkCredentialAlreadyInUse + } throw error } } diff --git a/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift index f96c305f..a4bc66c5 100644 --- a/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/SocialLogin/GoogleAuthenticationServiceImpl.swift @@ -12,6 +12,7 @@ import Foundation import GoogleSignIn import DevLogCore import DevLogData +import DevLogDomain final class GoogleAuthenticationServiceImpl: AuthenticationService { private let store = Firestore.firestore() @@ -123,6 +124,9 @@ final class GoogleAuthenticationServiceImpl: AuthenticationService { try await user?.link(with: credential) } catch { logger.error("Failed to link Google account", error: error) + if error.isFirebaseCredentialAlreadyInUse { + throw AuthError.linkCredentialAlreadyInUse + } throw error } }