From 55883ce414f5358a75780fbffb755f5464e211d4 Mon Sep 17 00:00:00 2001 From: Sebastien Castiel Date: Mon, 8 Jan 2024 15:49:07 -0500 Subject: Mark a group as favorite (fixes #29) --- src/app/groups/recent-groups-helpers.ts | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/app/groups/recent-groups-helpers.ts') 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 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)), + ) +} -- cgit v1.3