summaryrefslogtreecommitdiff
path: root/Shared/ContributionWidgetContext.swift
diff options
context:
space:
mode:
authorChristian Cleberg <[email protected]>2026-04-12 23:19:20 -0500
committerChristian Cleberg <[email protected]>2026-04-12 23:19:20 -0500
commitee9f2904aa319231b7047fca3cb069f0c07019cd (patch)
tree69a18234512c63f38f0d477e0023969698ec3c9e /Shared/ContributionWidgetContext.swift
parent72f860e0e171f6aac4e7d896e7a571147dbcb5c5 (diff)
downloadhutch-ee9f2904aa319231b7047fca3cb069f0c07019cd.tar.gz
hutch-ee9f2904aa319231b7047fca3cb069f0c07019cd.tar.bz2
hutch-ee9f2904aa319231b7047fca3cb069f0c07019cd.zip
feat: add multi-account support
Implements: https://todo.sr.ht/~ccleberg/hutch/49 Implements: https://todo.sr.ht/~ccleberg/hutch/50 Implements: https://todo.sr.ht/~ccleberg/hutch/51
Diffstat (limited to 'Shared/ContributionWidgetContext.swift')
-rw-r--r--Shared/ContributionWidgetContext.swift27
1 files changed, 21 insertions, 6 deletions
diff --git a/Shared/ContributionWidgetContext.swift b/Shared/ContributionWidgetContext.swift
index 2404698..33fed77 100644
--- a/Shared/ContributionWidgetContext.swift
+++ b/Shared/ContributionWidgetContext.swift
@@ -11,8 +11,11 @@ enum ContributionWidgetContextStore {
private static let actorKey = "contributionWidget.actor"
private static let enabledKey = "contributionWidget.enabled"
- static func loadActor(defaults: UserDefaults? = sharedDefaults()) -> String? {
- defaults?.string(forKey: actorKey)
+ static func loadActor(
+ accountID: String? = ActiveAccountContextStore.load(),
+ defaults: UserDefaults? = sharedDefaults()
+ ) -> String? {
+ defaults?.string(forKey: scopedActorKey(for: accountID))
}
static func isEnabled(defaults: UserDefaults? = sharedDefaults()) -> Bool {
@@ -24,13 +27,20 @@ enum ContributionWidgetContextStore {
reloadWidgetTimelines()
}
- static func saveActor(_ actor: String, defaults: UserDefaults? = sharedDefaults()) {
- defaults?.set(actor, forKey: actorKey)
+ static func saveActor(
+ _ actor: String,
+ accountID: String? = ActiveAccountContextStore.load(),
+ defaults: UserDefaults? = sharedDefaults()
+ ) {
+ defaults?.set(actor, forKey: scopedActorKey(for: accountID))
reloadWidgetTimelines()
}
- static func clear(defaults: UserDefaults? = sharedDefaults()) {
- defaults?.removeObject(forKey: actorKey)
+ static func clear(
+ accountID: String? = ActiveAccountContextStore.load(),
+ defaults: UserDefaults? = sharedDefaults()
+ ) {
+ defaults?.removeObject(forKey: scopedActorKey(for: accountID))
reloadWidgetTimelines()
}
@@ -38,6 +48,11 @@ enum ContributionWidgetContextStore {
UserDefaults(suiteName: HutchAppGroup.identifier)
}
+ private static func scopedActorKey(for accountID: String?) -> String {
+ guard let accountID, !accountID.isEmpty else { return actorKey }
+ return "\(actorKey).\(accountID)"
+ }
+
private static func reloadWidgetTimelines() {
#if canImport(WidgetKit)
WidgetCenter.shared.reloadTimelines(ofKind: ContributionGraphWidgetConfiguration.kind)