更新依赖项及历史人物相关内容资源
- 更新 package.json 和 package-lock.json 中的依赖项 - 新增/更新陈云、黄炎培、鲁迅、孙中山的音频文件 - 新增场景和组件的图片资源 - 清理未使用的音频和图片文件 - 优化多个组件和页面的实现逻辑
This commit is contained in:
1 parent
b1d55b9464
commit
e0fa47d21a
629 files changed
+24390
-2991
No files matched your search
@@ -1,12 +1,21 @@
|
||||
import { create } from 'zustand'
|
||||
import { persist } from 'zustand/middleware'
|
||||
import { STORE_NAMES } from './storeNames'
|
||||
import { setUserDefine } from '@/lib/utils/api-common'
|
||||
|
||||
interface LuxunStore {
|
||||
// 存储每个场景(place)的已访问展品ID集合
|
||||
// 格式:{ place1: Set<1, 2>, place2: Set<1, 2>, ... }
|
||||
visitedExhibits: Record<string, Set<number>>
|
||||
|
||||
// 体悟模块当前路由(reflection / reflection2 / reflection3)
|
||||
reflectionRoute: string
|
||||
setReflectionRoute: (route: string) => void
|
||||
|
||||
// 上次访问的场景(place1~place4)
|
||||
lastVisitedPlace: string | null
|
||||
setLastVisitedPlace: (place: string) => void
|
||||
|
||||
// 标记展品为已访问
|
||||
markExhibitVisited: (place: string, exhibitId: number) => void
|
||||
|
||||
@@ -56,6 +65,8 @@ export const useLuxunStore = create<LuxunStore>()(
|
||||
persist(
|
||||
(set, get) => ({
|
||||
visitedExhibits: {},
|
||||
reflectionRoute: 'reflection',
|
||||
lastVisitedPlace: null,
|
||||
|
||||
markExhibitVisited: (place: string, exhibitId: number) => {
|
||||
set((state) => {
|
||||
@@ -92,17 +103,48 @@ export const useLuxunStore = create<LuxunStore>()(
|
||||
resetAll: () => {
|
||||
set({ visitedExhibits: {} })
|
||||
},
|
||||
|
||||
setLastVisitedPlace: (place: string) => set({ lastVisitedPlace: place }),
|
||||
setReflectionRoute: (route: string) => set({ reflectionRoute: route }),
|
||||
}),
|
||||
{
|
||||
name: STORE_NAMES.LUXUN,
|
||||
partialize: (state) => ({
|
||||
visitedExhibits: serializeVisitedExhibits(state.visitedExhibits),
|
||||
lastVisitedPlace: state.lastVisitedPlace,
|
||||
reflectionRoute: state.reflectionRoute,
|
||||
}),
|
||||
onRehydrateStorage: () => (state) => {
|
||||
if (state) {
|
||||
state.visitedExhibits = deserializeVisitedExhibits(state.visitedExhibits as any)
|
||||
if (state.lastVisitedPlace === undefined) {
|
||||
state.lastVisitedPlace = null
|
||||
}
|
||||
if ((state as any).reflectionRoute === undefined) {
|
||||
;(state as any).reflectionRoute = 'reflection'
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
// ========== 易班平台数据保存(对话模块) ==========
|
||||
export const LUXUN_LESSON_ID = 'Lux_duihua'
|
||||
export const LUXUN_KEY = 7
|
||||
|
||||
export const saveLuxunStore = (): void => {
|
||||
const state = useLuxunStore.getState()
|
||||
|
||||
const payload = {
|
||||
visitedExhibits: serializeVisitedExhibits(state.visitedExhibits),
|
||||
lastVisitedPlace: state.lastVisitedPlace,
|
||||
reflectionRoute: state.reflectionRoute,
|
||||
}
|
||||
|
||||
try {
|
||||
setUserDefine(LUXUN_LESSON_ID, LUXUN_KEY, JSON.stringify(payload))
|
||||
} catch (error) {
|
||||
console.error('Failed to save Luxun store', error)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user