WidgetKind.swift
1.27 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
50
//
// WidgetKind.swift
// hippo-watch Watch App
//
// Created by 权海 on 2026/6/22.
//
import WidgetKit
enum HippoWidgetKind: String{
case hrv = "HRVWidget"
case mySummary = "MyStatusSummaryWidget"
case heartBeatCircle = "HeartBeatCircleWidget"
case activityCircle = "ActivityCircleWidget"
case stepCountCircle = "StepCountCircleWidget"
}
/// Keeps HealthKit-to-widget refresh mappings in one place so a data change
/// only invalidates the timelines that actually consume it.
enum WatchWidgetReloader {
static func reloadHRV() {
reload(.hrv, .mySummary, .heartBeatCircle)
}
static func reloadHeartRate() {
reload(.mySummary, .heartBeatCircle)
}
static func reloadSteps() {
reload(.mySummary, .stepCountCircle)
}
static func reloadActivity() {
reload(.mySummary, .activityCircle)
}
static func reloadActivityTarget() {
reload(.mySummary, .activityCircle, .stepCountCircle)
}
static func reloadAllDynamicWidgets() {
reload(.hrv, .mySummary, .heartBeatCircle, .activityCircle, .stepCountCircle)
}
private static func reload(_ kinds: HippoWidgetKind...) {
kinds.forEach {
WidgetCenter.shared.reloadTimelines(ofKind: $0.rawValue)
}
}
}