ultisuite-client/lib/agenda/agenda-store.ts
R3D347HR4Y 3bbf3691b0
Some checks failed
E2E / Playwright e2e (push) Has been cancelled
bordel c'est beau
2026-06-11 10:10:39 +02:00

51 lines
1.4 KiB
TypeScript

"use client"
import { create } from "zustand"
import { persist } from "zustand/middleware"
import { debouncedPersistJSONStorage } from "@/lib/stores/debounced-json-storage"
import type { AgendaView } from "./agenda-url.ts"
interface AgendaSettingsState {
/** Agendas décochés dans la barre latérale. */
hiddenCalendarIds: string[]
lastView: AgendaView
toggleCalendarVisible: (id: string) => void
setLastView: (view: AgendaView) => void
}
export const useAgendaSettingsStore = create<AgendaSettingsState>()(
persist(
(set, get) => ({
hiddenCalendarIds: [],
lastView: "week",
toggleCalendarVisible: (id) => {
const hidden = get().hiddenCalendarIds
set({
hiddenCalendarIds: hidden.includes(id)
? hidden.filter((h) => h !== id)
: [...hidden, id],
})
},
setLastView: (lastView) => set({ lastView }),
}),
{
name: "agenda-settings-store",
storage: debouncedPersistJSONStorage,
partialize: (s) => ({
hiddenCalendarIds: s.hiddenCalendarIds,
lastView: s.lastView,
}),
},
),
)
interface AgendaUIState {
sidebarCollapsed: boolean
setSidebarCollapsed: (v: boolean) => void
}
export const useAgendaUIStore = create<AgendaUIState>((set) => ({
sidebarCollapsed: false,
setSidebarCollapsed: (sidebarCollapsed) => set({ sidebarCollapsed }),
}))