aboutsummaryrefslogtreecommitdiffstats
path: root/src/app/groups/recent-groups-helpers.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/app/groups/recent-groups-helpers.ts')
-rw-r--r--src/app/groups/recent-groups-helpers.ts28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/app/groups/recent-groups-helpers.ts b/src/app/groups/recent-groups-helpers.ts
index 5d52141..5ccb5ae 100644
--- a/src/app/groups/recent-groups-helpers.ts
+++ b/src/app/groups/recent-groups-helpers.ts
@@ -7,10 +7,13 @@ export const recentGroupsSchema = z.array(
}),
)
+export const starredGroupsSchema = z.array(z.string())
+
export type RecentGroups = z.infer<typeof recentGroupsSchema>
export type RecentGroup = RecentGroups[number]
const STORAGE_KEY = 'recentGroups'
+const STARRED_GROUPS_STORAGE_KEY = 'starredGroups'
export function getRecentGroups() {
const groupsInStorageJson = localStorage.getItem(STORAGE_KEY)
@@ -28,3 +31,28 @@ export function saveRecentGroup(group: RecentGroup) {
JSON.stringify([group, ...recentGroups.filter((rg) => rg.id !== group.id)]),
)
}
+
+export function getStarredGroups() {
+ const starredGroupsJson = localStorage.getItem(STARRED_GROUPS_STORAGE_KEY)
+ const starredGroupsRaw = starredGroupsJson
+ ? JSON.parse(starredGroupsJson)
+ : []
+ const parseResult = starredGroupsSchema.safeParse(starredGroupsRaw)
+ return parseResult.success ? parseResult.data : []
+}
+
+export function starGroup(groupId: string) {
+ const starredGroups = getStarredGroups()
+ localStorage.setItem(
+ STARRED_GROUPS_STORAGE_KEY,
+ JSON.stringify([...starredGroups, groupId]),
+ )
+}
+
+export function unstarGroup(groupId: string) {
+ const starredGroups = getStarredGroups()
+ localStorage.setItem(
+ STARRED_GROUPS_STORAGE_KEY,
+ JSON.stringify(starredGroups.filter((g) => g !== groupId)),
+ )
+}