krz/hutch
an ios client for sourcehut
clone: git clone https://gitbay.org/krz/hutch.git
v2.12.0: Shared/ContributionWidgetContext.swift · raw
1import Foundation
2#if canImport(WidgetKit)
3import WidgetKit
4#endif
5
6enum ContributionGraphWidgetConfiguration {
7 static let kind = "ContributionGraphWidget"
8}
9
10enum ContributionWidgetContextStore {
11 private static let actorKey = "contributionWidget.actor"
12
13 static func loadActor(defaults: UserDefaults? = sharedDefaults()) -> String? {
14 defaults?.string(forKey: actorKey)
15 }
16
17 static func saveActor(_ actor: String, defaults: UserDefaults? = sharedDefaults()) {
18 defaults?.set(actor, forKey: actorKey)
19 reloadWidgetTimelines()
20 }
21
22 static func clear(defaults: UserDefaults? = sharedDefaults()) {
23 defaults?.removeObject(forKey: actorKey)
24 reloadWidgetTimelines()
25 }
26
27 private static func sharedDefaults() -> UserDefaults? {
28 UserDefaults(suiteName: HutchAppGroup.identifier)
29 }
30
31 private static func reloadWidgetTimelines() {
32 #if canImport(WidgetKit)
33 WidgetCenter.shared.reloadTimelines(ofKind: ContributionGraphWidgetConfiguration.kind)
34 #endif
35 }
36}