Files
spliit/src/app/groups/recent-groups-helpers.ts
Sebastien Castiel ed55c696cd First version
2023-12-05 17:39:05 -05:00

31 lines
831 B
TypeScript

import { z } from 'zod'
export const recentGroupsSchema = z.array(
z.object({
id: z.string().min(1),
name: z.string(),
}),
)
export type RecentGroups = z.infer<typeof recentGroupsSchema>
export type RecentGroup = RecentGroups[number]
const STORAGE_KEY = 'recentGroups'
export function getRecentGroups() {
const groupsInStorageJson = localStorage.getItem(STORAGE_KEY)
const groupsInStorageRaw = groupsInStorageJson
? JSON.parse(groupsInStorageJson)
: []
const parseResult = recentGroupsSchema.safeParse(groupsInStorageRaw)
return parseResult.success ? parseResult.data : []
}
export function saveRecentGroup(group: RecentGroup) {
const recentGroups = getRecentGroups()
localStorage.setItem(
STORAGE_KEY,
JSON.stringify([group, ...recentGroups.filter((rg) => rg.id !== group.id)]),
)
}