-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathWidgetSessionSyncHandler.swift
More file actions
49 lines (42 loc) · 1.21 KB
/
Copy pathWidgetSessionSyncHandler.swift
File metadata and controls
49 lines (42 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//
// WidgetSessionSyncHandler.swift
// DevLog
//
// Created by opfic on 6/1/26.
//
import Combine
import Foundation
import DevLogData
final class WidgetSessionSyncHandler {
private let authService: AuthService
private let widgetSyncEventBus: WidgetSyncEventBus
private var hasRequestedWidgetSync = false
private var cancellables = Set<AnyCancellable>()
init(
authService: AuthService,
widgetSyncEventBus: WidgetSyncEventBus
) {
self.authService = authService
self.widgetSyncEventBus = widgetSyncEventBus
authService.observeSignedIn()
.removeDuplicates()
.receive(on: DispatchQueue.main)
.sink { [weak self] isSignedIn in
self?.handleSessionUpdate(isSignedIn: isSignedIn)
}
.store(in: &cancellables)
}
}
private extension WidgetSessionSyncHandler {
func handleSessionUpdate(isSignedIn: Bool) {
guard isSignedIn else {
hasRequestedWidgetSync = false
return
}
guard hasRequestedWidgetSync == false else {
return
}
hasRequestedWidgetSync = true
widgetSyncEventBus.publish(.syncRequested)
}
}