blob: 8f23975c7771f594431368aea62440aa00c1cc41 (
plain) (
blame)
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
|
import Foundation
@Observable
@MainActor
final class MoreViewModel {
private let repository: SystemStatusRepository
private(set) var systemStatusSnapshot: SystemStatusSnapshot?
private(set) var isLoadingSystemStatus = false
private(set) var isShowingStaleSystemStatus = false
private(set) var systemStatusErrorMessage: String?
init(repository: SystemStatusRepository) {
self.repository = repository
}
func loadIfNeeded() async {
guard systemStatusSnapshot == nil, !isLoadingSystemStatus else { return }
await loadSystemStatus()
}
func loadSystemStatus(forceRefresh: Bool = false) async {
isLoadingSystemStatus = true
defer { isLoadingSystemStatus = false }
isShowingStaleSystemStatus = false
systemStatusErrorMessage = nil
do {
let result = try await repository.snapshotResult(forceRefresh: forceRefresh)
systemStatusSnapshot = result.value
isShowingStaleSystemStatus = result.isStale
systemStatusErrorMessage = result.isStale ? result.refreshErrorMessage : nil
} catch {
if systemStatusSnapshot == nil {
systemStatusErrorMessage = error.userFacingMessage
}
}
}
}
|