mirror of
https://github.com/spliit-app/spliit.git
synced 2026-02-18 21:46:13 +01:00
31 lines
831 B
TypeScript
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)]),
|
|
)
|
|
}
|