Files
SRCmail/stores/task-store.ts
T

27 lines
826 B
TypeScript

import { create } from 'zustand';
import type { CalendarTask } from '@/lib/jmap/types';
export type TaskViewFilter = 'all' | 'pending' | 'completed' | 'overdue';
interface TaskStore {
tasks: CalendarTask[];
selectedTaskId: string | null;
filter: TaskViewFilter;
showCompleted: boolean;
setTasks: (tasks: CalendarTask[]) => void;
setSelectedTaskId: (id: string | null) => void;
setFilter: (filter: TaskViewFilter) => void;
setShowCompleted: (show: boolean) => void;
}
export const useTaskStore = create<TaskStore>((set) => ({
tasks: [],
selectedTaskId: null,
filter: 'all',
showCompleted: false,
setTasks: (tasks) => set({ tasks }),
setSelectedTaskId: (id) => set({ selectedTaskId: id }),
setFilter: (filter) => set({ filter }),
setShowCompleted: (show) => set({ showCompleted: show }),
}));