summaryrefslogtreecommitdiff
path: root/Hutch/Views/Projects/ProjectPinStore.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Hutch/Views/Projects/ProjectPinStore.swift')
-rw-r--r--Hutch/Views/Projects/ProjectPinStore.swift29
1 files changed, 29 insertions, 0 deletions
diff --git a/Hutch/Views/Projects/ProjectPinStore.swift b/Hutch/Views/Projects/ProjectPinStore.swift
index 77a4172..ed7e386 100644
--- a/Hutch/Views/Projects/ProjectPinStore.swift
+++ b/Hutch/Views/Projects/ProjectPinStore.swift
@@ -5,6 +5,11 @@ enum ProjectPinStore {
for userKey: String,
defaults: UserDefaults = .standard
) -> [String] {
+ let generalizedPins = HomePinStore.pinnedProjectIDs(for: userKey, defaults: defaults)
+ if !generalizedPins.isEmpty {
+ return generalizedPins
+ }
+
let pinnedProjects = loadAll(defaults: defaults)
return normalizedProjectIDs(pinnedProjects[userKey] ?? [])
}
@@ -22,6 +27,22 @@ enum ProjectPinStore {
for userKey: String,
defaults: UserDefaults = .standard
) {
+ let trimmed = projectID.trimmingCharacters(in: .whitespacesAndNewlines)
+ guard !trimmed.isEmpty else { return }
+
+ HomePinStore.togglePin(
+ HomePinRecord(
+ kind: .project,
+ value: trimmed,
+ title: "Pinned Project",
+ subtitle: "Project",
+ ownerUsername: nil,
+ service: nil
+ ),
+ for: userKey,
+ defaults: defaults
+ )
+
var pinnedProjects = loadAll(defaults: defaults)
var projectIDs = normalizedProjectIDs(pinnedProjects[userKey] ?? [])
@@ -37,6 +58,14 @@ enum ProjectPinStore {
save(pinnedProjects, defaults: defaults)
}
+ static func loadLegacyPinnedProjectIDs(
+ for userKey: String,
+ defaults: UserDefaults = .standard
+ ) -> [String] {
+ let pinnedProjects = loadAll(defaults: defaults)
+ return normalizedProjectIDs(pinnedProjects[userKey] ?? [])
+ }
+
private static func loadAll(defaults: UserDefaults) -> [String: [String]] {
guard let data = defaults.data(forKey: AppStorageKeys.pinnedHomeProjects) else {
return [:]