Skip to content

Commit 415fdf1

Browse files
committed
refactor: iOS 17부터 지원하는 Observable 매크로를 채택하여 StateObject, EnvironmentObject 및 Published 대체
1 parent 563affc commit 415fdf1

28 files changed

Lines changed: 51 additions & 37 deletions

DevLog/App/RootView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import SwiftUI
99

1010
struct RootView: View {
1111
@Environment(\.diContainer) var container: DIContainer
12-
@StateObject var viewModel: RootViewModel
12+
@State var viewModel: RootViewModel
1313

1414
var body: some View {
1515
ZStack {

DevLog/Presentation/Protocol/Store.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import Foundation
99

1010
@MainActor
11-
protocol Store: ObservableObject {
11+
protocol Store: AnyObject {
1212
associatedtype State
1313
associatedtype Action
1414
associatedtype SideEffect

DevLog/Presentation/ViewModel/AccountViewModel.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import Foundation
99

10+
@Observable
1011
final class AccountViewModel: Store {
1112
struct State {
1213
var currentProvider: AuthProvider?
@@ -47,7 +48,7 @@ final class AccountViewModel: Store {
4748
case unlinkSuccess
4849
}
4950

50-
@Published private(set) var state: State = .init()
51+
private(set) var state: State = .init()
5152
private let fetchProvidersUseCase: FetchAuthProvidersUseCase
5253
private let linkProviderUseCase: LinkAuthProviderUseCase
5354
private let unlinkProviderUseCase: UnlinkAuthProviderUseCase

DevLog/Presentation/ViewModel/HomeViewModel.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import Foundation
99

10+
@Observable
1011
final class HomeViewModel: Store {
1112
struct State: Equatable {
1213
var todoKindPreferences = TodoKind.allCases.map { TodoKindPreference(kind: $0, isVisible: true) }
@@ -81,7 +82,7 @@ final class HomeViewModel: Store {
8182
case urlInputAlert
8283
}
8384

84-
@Published private(set) var state = State()
85+
private(set) var state = State()
8586
private let upsertTodoUseCase: UpsertTodoUseCase
8687
private let addWebPageUseCase: AddWebPageUseCase
8788
private let deleteWebPageUseCase: DeleteWebPageUseCase

DevLog/Presentation/ViewModel/LoginViewModel.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import Foundation
1010
import FirebaseAuth
1111
import GoogleSignIn
1212

13+
@Observable
1314
final class LoginViewModel: Store {
1415
struct State {
1516
var signIn: Bool?
@@ -37,7 +38,7 @@ final class LoginViewModel: Store {
3738
private let signOutUseCase: SignOutUseCase
3839
private let sessionUseCase: AuthSessionUseCase
3940

40-
@Published private(set) var state = State()
41+
private(set) var state = State()
4142
private var cancellables = Set<AnyCancellable>()
4243

4344
init(

DevLog/Presentation/ViewModel/ProfileViewModel.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import Foundation
99

10+
@Observable
1011
final class ProfileViewModel: Store {
1112
struct State {
1213
var name: String = ""
@@ -51,7 +52,7 @@ final class ProfileViewModel: Store {
5152
case updateHeatmapActivityTypes(Set<ProfileActivityType>)
5253
}
5354

54-
@Published private(set) var state = State()
55+
private(set) var state = State()
5556
private let fetchUserDataUseCase: FetchUserDataUseCase
5657
private let fetchTodosUseCase: FetchTodosUseCase
5758
private let upsertStatusMessageUseCase: UpsertStatusMessageUseCase

DevLog/Presentation/ViewModel/PushNotificationListViewModel.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import Foundation
99

10+
@Observable
1011
final class PushNotificationListViewModel: Store {
1112
struct State {
1213
var notifications: [PushNotificationItem] = []
@@ -50,7 +51,7 @@ final class PushNotificationListViewModel: Store {
5051
case toggleRead(String)
5152
}
5253

53-
@Published private(set) var state: State
54+
private(set) var state: State
5455
private let fetchUseCase: FetchPushNotificationsUseCase
5556
private let deleteUseCase: DeletePushNotificationUseCase
5657
private let toggleReadUseCase: TogglePushNotificationReadUseCase

DevLog/Presentation/ViewModel/PushNotificationSettingsViewModel.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import Foundation
99

10+
@Observable
1011
final class PushNotificationSettingsViewModel: Store {
1112
struct State {
1213
var pushNotificationEnable: Bool = false
@@ -45,7 +46,7 @@ final class PushNotificationSettingsViewModel: Store {
4546
case updatePushNotificationSettings
4647
}
4748

48-
@Published private(set) var state: State = .init()
49+
private(set) var state: State = .init()
4950
private let calendar = Calendar.current
5051
private let fetchPushSettingsUseCase: FetchPushSettingsUseCase
5152
private let updatePushSettingsUseCase: UpdatePushSettingsUseCase

DevLog/Presentation/ViewModel/RootViewModel.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import Foundation
99
import Combine
1010

11+
@Observable
1112
final class RootViewModel: Store {
1213
struct State {
1314
var showAlert: Bool = false
@@ -32,7 +33,7 @@ final class RootViewModel: Store {
3233
case signOut
3334
}
3435

35-
@Published private(set) var state: State
36+
private(set) var state: State
3637
private let connectivityProvider = NWPathConnectivityProvider()
3738
private var cancellables = Set<AnyCancellable>()
3839
private let sessionUseCase: AuthSessionUseCase

DevLog/Presentation/ViewModel/SearchViewModel.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import Foundation
99
import OrderedCollections
1010

11+
@Observable
1112
final class SearchViewModel: Store {
1213
struct State {
1314
var isLoading: Bool = false
@@ -42,7 +43,7 @@ final class SearchViewModel: Store {
4243
case fetch(String)
4344
}
4445

45-
@Published private(set) var state: State = .init()
46+
private(set) var state: State = .init()
4647
private let fetchWebPagesUseCase: FetchWebPagesUseCase
4748
private let fetchTodosUseCase: FetchTodosUseCase
4849
private let fetchRecentSearchQueriesUseCase: FetchRecentSearchQueriesUseCase

0 commit comments

Comments
 (0)