31 lines
959 B
TypeScript
31 lines
959 B
TypeScript
import { create } from 'zustand';
|
|
import { User, Course, Language } from '../types';
|
|
import { mockUser, mockCourses } from '../data/mock';
|
|
|
|
interface AppState {
|
|
user: User | null;
|
|
courses: Course[];
|
|
isAuthenticated: boolean;
|
|
login: (email: string) => void;
|
|
logout: () => void;
|
|
updateLanguage: (lang: Language) => void;
|
|
addStudyTime: (minutes: number) => void;
|
|
}
|
|
|
|
export const useStore = create<AppState>((set) => ({
|
|
user: mockUser,
|
|
courses: mockCourses,
|
|
isAuthenticated: true, // Auto login for demo
|
|
login: (email) => set({
|
|
user: { ...mockUser, email },
|
|
isAuthenticated: true
|
|
}),
|
|
logout: () => set({ user: null, isAuthenticated: false }),
|
|
updateLanguage: (lang) => set((state) => ({
|
|
user: state.user ? { ...state.user, currentLanguage: lang } : null
|
|
})),
|
|
addStudyTime: (minutes) => set((state) => ({
|
|
user: state.user ? { ...state.user, totalStudyTime: state.user.totalStudyTime + minutes } : null
|
|
}))
|
|
}));
|