diff --git a/Application/DevLogCore/Sources/ActivityKind.swift b/Application/DevLogCore/Sources/ActivityKind.swift index 27e939b1..823cec07 100644 --- a/Application/DevLogCore/Sources/ActivityKind.swift +++ b/Application/DevLogCore/Sources/ActivityKind.swift @@ -7,7 +7,7 @@ import Foundation -public enum ActivityKind: String, Hashable, Sendable { +public enum ActivityKind: String, Hashable { case created case completed case deleted diff --git a/Application/DevLogCore/Sources/Logger.swift b/Application/DevLogCore/Sources/Logger.swift index b34e192a..553677c2 100644 --- a/Application/DevLogCore/Sources/Logger.swift +++ b/Application/DevLogCore/Sources/Logger.swift @@ -8,7 +8,7 @@ import Foundation import os.log -public final class Logger: Sendable { +public final class Logger { private let subsystem: String private let category: String private let osLog: OSLog diff --git a/Application/DevLogCore/Sources/TodayDisplayOptions.swift b/Application/DevLogCore/Sources/TodayDisplayOptions.swift index ed063c6a..a27ceb39 100644 --- a/Application/DevLogCore/Sources/TodayDisplayOptions.swift +++ b/Application/DevLogCore/Sources/TodayDisplayOptions.swift @@ -7,14 +7,14 @@ import Foundation -public struct TodayDisplayOptions: Equatable, Sendable { - public enum DueDateVisibility: String, CaseIterable, Equatable, Sendable { +public struct TodayDisplayOptions: Equatable { + public enum DueDateVisibility: String, CaseIterable, Equatable { case all case withDueDateOnly case withoutDueDateOnly } - public enum FocusVisibility: String, CaseIterable, Equatable, Sendable { + public enum FocusVisibility: String, CaseIterable, Equatable { case all case focusedOnly } diff --git a/Application/DevLogCore/Sources/WidgetTodoSnapshot.swift b/Application/DevLogCore/Sources/WidgetTodoSnapshot.swift index 200e1188..a1b08f27 100644 --- a/Application/DevLogCore/Sources/WidgetTodoSnapshot.swift +++ b/Application/DevLogCore/Sources/WidgetTodoSnapshot.swift @@ -7,7 +7,7 @@ import Foundation -public struct WidgetTodoSnapshot: Equatable, Sendable { +public struct WidgetTodoSnapshot: Equatable { public let id: String public let number: Int? public let title: String diff --git a/Application/DevLogData/Sources/Protocol/AuthService.swift b/Application/DevLogData/Sources/Protocol/AuthService.swift index f8b1cacf..f6c667b0 100644 --- a/Application/DevLogData/Sources/Protocol/AuthService.swift +++ b/Application/DevLogData/Sources/Protocol/AuthService.swift @@ -8,7 +8,7 @@ import Combine import Foundation -public protocol AuthService: Sendable { +public protocol AuthService { var uid: String? { get } var providerIDs: [String] { get } var currentUserEmail: String? { get } diff --git a/Application/DevLogData/Sources/Protocol/AuthenticationService.swift b/Application/DevLogData/Sources/Protocol/AuthenticationService.swift index 6a9a23b1..c2c783b8 100644 --- a/Application/DevLogData/Sources/Protocol/AuthenticationService.swift +++ b/Application/DevLogData/Sources/Protocol/AuthenticationService.swift @@ -7,7 +7,7 @@ import Foundation -public protocol AuthenticationService: Sendable { +public protocol AuthenticationService { func signIn() async throws -> AuthDataResponse func signOut(_ uid: String) async throws func deleteAuth(_ uid: String) async throws diff --git a/Application/DevLogData/Sources/Protocol/UserService.swift b/Application/DevLogData/Sources/Protocol/UserService.swift index 67174c5d..3a82c536 100644 --- a/Application/DevLogData/Sources/Protocol/UserService.swift +++ b/Application/DevLogData/Sources/Protocol/UserService.swift @@ -7,7 +7,7 @@ import Foundation -public protocol UserService: Sendable { +public protocol UserService { func upsertUser(_ response: AuthDataResponse) async throws func fetchUserProfile() async throws -> UserProfileResponse func upsertStatusMessage(_ message: String) async throws diff --git a/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift b/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift index 198152b6..6a2bb78f 100644 --- a/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift +++ b/Application/DevLogData/Sources/Protocol/WebPageImageStore.swift @@ -7,7 +7,7 @@ import Foundation -public protocol WebPageImageStore: Sendable { +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/Application/DevLogData/Sources/Protocol/WidgetSnapshotPreferenceStore.swift b/Application/DevLogData/Sources/Protocol/WidgetSnapshotPreferenceStore.swift index 8c0a4ae2..160957c3 100644 --- a/Application/DevLogData/Sources/Protocol/WidgetSnapshotPreferenceStore.swift +++ b/Application/DevLogData/Sources/Protocol/WidgetSnapshotPreferenceStore.swift @@ -8,7 +8,7 @@ import Foundation import DevLogCore -public protocol WidgetSnapshotPreferenceStore: Sendable { +public protocol WidgetSnapshotPreferenceStore { func heatmapActivityTypes() -> [String] func setHeatmapActivityTypes(_ activityTypes: [String]) func selectedActivityKinds() -> Set diff --git a/Application/DevLogData/Sources/Protocol/WidgetSnapshotUpdater.swift b/Application/DevLogData/Sources/Protocol/WidgetSnapshotUpdater.swift index 3fa25bc7..1748bd34 100644 --- a/Application/DevLogData/Sources/Protocol/WidgetSnapshotUpdater.swift +++ b/Application/DevLogData/Sources/Protocol/WidgetSnapshotUpdater.swift @@ -8,7 +8,7 @@ import Foundation import DevLogCore -public protocol WidgetSnapshotUpdater: Sendable { +public protocol WidgetSnapshotUpdater { func updateTodaySnapshot( todos: [WidgetTodoSnapshot], now: Date diff --git a/Application/DevLogDomain/Sources/Entity/AuthProvider.swift b/Application/DevLogDomain/Sources/Entity/AuthProvider.swift index d739738b..ae30ca08 100644 --- a/Application/DevLogDomain/Sources/Entity/AuthProvider.swift +++ b/Application/DevLogDomain/Sources/Entity/AuthProvider.swift @@ -7,7 +7,7 @@ import Foundation -public enum AuthProvider: String, CaseIterable { +public enum AuthProvider: String, CaseIterable, Sendable { case apple = "apple.com" case google = "google.com" case github = "github.com" diff --git a/Application/DevLogDomain/Sources/Protocol/AuthenticationRepository.swift b/Application/DevLogDomain/Sources/Protocol/AuthenticationRepository.swift index 9cbd628a..5652583a 100644 --- a/Application/DevLogDomain/Sources/Protocol/AuthenticationRepository.swift +++ b/Application/DevLogDomain/Sources/Protocol/AuthenticationRepository.swift @@ -7,7 +7,7 @@ import Foundation -public protocol AuthenticationRepository: Sendable { +public protocol AuthenticationRepository { func signIn(_ provider: AuthProvider) async throws func signOut() async throws func restore() -> Bool diff --git a/Application/DevLogDomain/Sources/UseCase/Auth/SignIn/SignInUseCase.swift b/Application/DevLogDomain/Sources/UseCase/Auth/SignIn/SignInUseCase.swift index 926e656e..46122e3c 100644 --- a/Application/DevLogDomain/Sources/UseCase/Auth/SignIn/SignInUseCase.swift +++ b/Application/DevLogDomain/Sources/UseCase/Auth/SignIn/SignInUseCase.swift @@ -5,6 +5,6 @@ // Created by 최윤진 on 11/2/25. // -public protocol SignInUseCase: Sendable { +public protocol SignInUseCase { func execute(_ provider: AuthProvider) async throws } diff --git a/Application/DevLogInfra/Sources/Common/FirebaseDependency.swift b/Application/DevLogInfra/Sources/Common/FirebaseDependency.swift index 25013ca1..d34077da 100644 --- a/Application/DevLogInfra/Sources/Common/FirebaseDependency.swift +++ b/Application/DevLogInfra/Sources/Common/FirebaseDependency.swift @@ -10,7 +10,7 @@ import FirebaseFirestore import FirebaseFunctions import FirebaseMessaging -struct FirebaseDependency: @unchecked Sendable { +struct FirebaseDependency { private let value: Value init(value: Value) { diff --git a/Application/DevLogInfra/Sources/Common/TopViewControllerProvider.swift b/Application/DevLogInfra/Sources/Common/TopViewControllerProvider.swift index 95ae7423..e6d8ee41 100644 --- a/Application/DevLogInfra/Sources/Common/TopViewControllerProvider.swift +++ b/Application/DevLogInfra/Sources/Common/TopViewControllerProvider.swift @@ -8,7 +8,7 @@ import UIKit import DevLogData -final class TopViewControllerProvider: Sendable { +final class TopViewControllerProvider { @MainActor func topViewController() -> UIViewController? { guard let keyWindow = keyWindow() else { diff --git a/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift b/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift index 00836e3e..c5587dc2 100644 --- a/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/AuthServiceImpl.swift @@ -114,7 +114,7 @@ final class AuthServiceImpl: AuthService { } -private final class AuthStatePublisher: @unchecked Sendable { +private final class AuthStatePublisher { private let logger: Logger private let subject: CurrentValueSubject private let lock = NSLock() diff --git a/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift index e95d640d..ab354471 100644 --- a/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift +++ b/Application/DevLogInfra/Sources/Service/SocialLogin/AppleAuthenticationServiceImpl.swift @@ -300,7 +300,7 @@ final class AppleAuthenticationServiceImpl: AuthenticationService { } } -private final class AppleSignInSession: @unchecked Sendable { +private final class AppleSignInSession { @MainActor private var delegate: AppleSignInDelegate? @MainActor diff --git a/Application/DevLogPersistence/Sources/Widget/UserDefaultsDependency.swift b/Application/DevLogPersistence/Sources/Widget/UserDefaultsDependency.swift index b1526771..e74cae86 100644 --- a/Application/DevLogPersistence/Sources/Widget/UserDefaultsDependency.swift +++ b/Application/DevLogPersistence/Sources/Widget/UserDefaultsDependency.swift @@ -7,7 +7,7 @@ import Foundation -struct UserDefaultsDependency: @unchecked Sendable { +struct UserDefaultsDependency { private let value: UserDefaults init(value: UserDefaults) { diff --git a/Application/DevLogPresentation/Sources/Login/LoginFeature.swift b/Application/DevLogPresentation/Sources/Login/LoginFeature.swift index 4d0fcde8..476ed292 100644 --- a/Application/DevLogPresentation/Sources/Login/LoginFeature.swift +++ b/Application/DevLogPresentation/Sources/Login/LoginFeature.swift @@ -6,7 +6,7 @@ // import ComposableArchitecture -import DevLogDomain +@preconcurrency import DevLogDomain import Foundation @Reducer @@ -20,7 +20,7 @@ struct LoginFeature { var alertMessage = "" } - enum Action { + enum Action: Sendable { case setAlert(Bool, AlertType? = nil) case tapSignInButton(AuthProvider) case signInSucceeded @@ -28,12 +28,12 @@ struct LoginFeature { case signInCancelled } - enum AlertType: Equatable { + enum AlertType: Equatable, Sendable { case emailUnavailable case error } - @Dependency(\.signInUseCase) var signInUseCase + @Dependency(SignInUseCaseDependency.self) var signInUseCase var body: some ReducerOf { Reduce { state, action in diff --git a/Widget/DevLogWidgetCore/Sources/Common/UserDefaultsDependency.swift b/Widget/DevLogWidgetCore/Sources/Common/UserDefaultsDependency.swift index 9de0492b..76b83f1d 100644 --- a/Widget/DevLogWidgetCore/Sources/Common/UserDefaultsDependency.swift +++ b/Widget/DevLogWidgetCore/Sources/Common/UserDefaultsDependency.swift @@ -7,7 +7,7 @@ import Foundation -struct UserDefaultsDependency: @unchecked Sendable { +struct UserDefaultsDependency { private let value: UserDefaults init(value: UserDefaults) { diff --git a/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift index 89f20d74..9d1ee58d 100644 --- a/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift +++ b/Widget/DevLogWidgetCore/Sources/Common/WidgetSharedDefaultsStore.swift @@ -7,7 +7,7 @@ import Foundation -public final class WidgetSharedDefaultsStore: Sendable { +public final class WidgetSharedDefaultsStore { private let userDefaults: UserDefaultsDependency public init(userDefaults: UserDefaults = UserDefaults(suiteName: WidgetAppGroup.identifier) ?? .standard) { diff --git a/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift b/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift index 9801befd..727e2bc8 100644 --- a/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift +++ b/Widget/DevLogWidgetCore/Sources/Common/WidgetSnapshotStore.swift @@ -7,7 +7,7 @@ import Foundation -public final class WidgetSnapshotStore: Sendable { +public final class WidgetSnapshotStore { private let store: WidgetSharedDefaultsStore private let encoder = JSONEncoder() private let decoder = JSONDecoder() diff --git a/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift b/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift index eda3c1e1..5db55edf 100644 --- a/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift +++ b/Widget/DevLogWidgetCore/Sources/Heatmap/HeatmapWidgetSnapshotFactory.swift @@ -8,8 +8,8 @@ import Foundation import DevLogCore -public struct HeatmapWidgetSnapshotFactory: Sendable { - fileprivate struct DailyCounts: Sendable { +public struct HeatmapWidgetSnapshotFactory { + fileprivate struct DailyCounts { var createdCount = 0 var completedCount = 0 var deletedCount = 0 diff --git a/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift b/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift index 351543f8..efa0a212 100644 --- a/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift +++ b/Widget/DevLogWidgetCore/Sources/Today/TodayWidgetSnapshotFactory.swift @@ -8,8 +8,8 @@ import Foundation import DevLogCore -public struct TodayWidgetSnapshotFactory: Sendable { - private enum SectionCategory: String, CaseIterable, Sendable { +public struct TodayWidgetSnapshotFactory { + private enum SectionCategory: String, CaseIterable { case focused case overdue case dueSoon @@ -17,7 +17,7 @@ public struct TodayWidgetSnapshotFactory: Sendable { case unscheduled } - private struct SectionCollection: Sendable { + private struct SectionCollection { var focused = [TodayWidgetTodoItem]() var overdue = [TodayWidgetTodoItem]() var dueSoon = [TodayWidgetTodoItem]() @@ -40,7 +40,7 @@ public struct TodayWidgetSnapshotFactory: Sendable { } } - private struct TodayWidgetTodoItem: Sendable { + private struct TodayWidgetTodoItem { let id: String let number: Int let title: String