Skip to content

Commit 5f11c56

Browse files
committed
fix: 뷰모델이 생성될 때마다 유즈케이스가 호출되는 이슈 해결
1 parent 5fa5a1e commit 5f11c56

2 files changed

Lines changed: 13 additions & 1 deletion

File tree

DevLog/Presentation/ViewModel/MainViewModel.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,30 +19,37 @@ final class MainViewModel: Store {
1919
}
2020

2121
enum Action {
22+
case onAppear
2223
case setUnreadPushCount(Int)
2324
case setAlert(Bool)
2425
}
2526

2627
enum SideEffect {
28+
case observeUnreadPushCount
2729
case updateBadgeCount(Int)
2830
}
2931

3032
private(set) var state = State()
3133
private var cancellables = Set<AnyCancellable>()
34+
private var isObservingUnreadPushCount = false
3235
private let observeUnreadPushCountUseCase: ObserveUnreadPushCountUseCase
3336

3437
init(
3538
observeUnreadPushCountUseCase: ObserveUnreadPushCountUseCase
3639
) {
3740
self.observeUnreadPushCountUseCase = observeUnreadPushCountUseCase
38-
observeUnreadPushCount()
3941
}
4042

4143
func reduce(with action: Action) -> [SideEffect] {
4244
var state = self.state
4345
var sideEffects: [SideEffect] = []
4446

4547
switch action {
48+
case .onAppear:
49+
if !isObservingUnreadPushCount {
50+
isObservingUnreadPushCount = true
51+
sideEffects = [.observeUnreadPushCount]
52+
}
4653
case .setUnreadPushCount(let count):
4754
state.unreadPushCount = count
4855
sideEffects = [.updateBadgeCount(count)]
@@ -56,6 +63,8 @@ final class MainViewModel: Store {
5663

5764
func run(_ effect: SideEffect) {
5865
switch effect {
66+
case .observeUnreadPushCount:
67+
observeUnreadPushCount()
5968
case .updateBadgeCount(let count):
6069
updateBadgeCount(count)
6170
}

DevLog/UI/Common/MainView.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ struct MainView: View {
6161
Text("프로필")
6262
}
6363
}
64+
.onAppear {
65+
viewModel.send(.onAppear)
66+
}
6467
.alert(
6568
viewModel.state.alertTitle,
6669
isPresented: Binding(

0 commit comments

Comments
 (0)