Files
shanghai-residences/src/store/userStore.ts
T
zhongyidianandClaude Opus 4.8 73f6df92ce chore: 更新素材和组件优化
- 更新展品图片(鲁迅/毛泽东/孙中山/黄炎培/聂耳/张乐平故居)
- 新增点击查看图标、报纸素材
- 优化视频组件、拼图组件、展品组件
- 更新陈云音频资源
- 新增输入验证文档和工具函数
- 组件布局和动画优化

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 21:50:40 +08:00

48 lines
1.2 KiB
TypeScript

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<UserStore>()(
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,
}),
}
)
)