Allow recents to store availability information

This commit is contained in:
Benji Grant 2023-06-18 18:54:30 +10:00
parent f95e794cb7
commit 859967d7d3
2 changed files with 11 additions and 11 deletions

View file

@ -19,7 +19,7 @@ const Recents = () => {
return recents?.length ? <Section id="recents">
<Content>
<h2>{t('home:recently_visited')}</h2>
{recents.map(event => (
{recents.slice(0, 5).map(event => (
<Link className={styles.recent} href={`/${event.id}`} key={event.id}>
<span className={styles.name}>{event.name}</span>
<span

View file

@ -5,6 +5,10 @@ interface RecentEvent {
id: string
name: string
created_at: number
user?: {
name: string
availability: string[]
}
}
interface RecentsStore {
@ -19,16 +23,12 @@ const useRecentsStore = create<RecentsStore>()(persist(
set => ({
recents: [],
addRecent: event => set(state => {
const recents = state.recents.filter(e => e.id !== event.id)
recents.unshift(event)
recents.length = Math.min(recents.length, 5)
return { recents }
}),
removeRecent: id => set(state => {
const recents = state.recents.filter(e => e.id !== id)
return { recents }
}),
addRecent: event => set(state => ({
recents: [event, ...state.recents.filter(e => e.id !== event.id)],
})),
removeRecent: id => set(state => ({
recents: state.recents.filter(e => e.id !== id),
})),
clearRecents: () => set({ recents: [] }),
}),
{