import { create } from 'zustand' import { persist } from 'zustand/middleware' import { STORE_NAMES } from './storeNames' export type YibanConnectionStatus = 'unknown' | 'connected' | 'disconnected' interface UserStore { courseId: string | null uid: string | null yibanConnectionStatus: YibanConnectionStatus setCourseInfo: (info: { courseId?: string | null; uid?: string | null }) => void setYibanConnectionStatus: (status: YibanConnectionStatus) => void resetCourseInfo: () => void } export const useUserStore = create()( persist( (set) => ({ courseId: null, uid: null, yibanConnectionStatus: 'unknown', setCourseInfo: (info) => { set((state) => ({ courseId: info.courseId ?? state.courseId, uid: info.uid ?? state.uid, })) }, setYibanConnectionStatus: (status) => { set({ yibanConnectionStatus: status }) }, resetCourseInfo: () => { set({ courseId: null, uid: null, yibanConnectionStatus: 'unknown' }) }, }), { name: STORE_NAMES.USER, partialize: (state) => ({ courseId: state.courseId, uid: state.uid, }), } ) )