@@ -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 }
0 commit comments