feat: 添加断点续读功能,优化用户体验
- 在 chenyunStore 中引入 lastVisitedPlace 和 setLastVisitedPlace 方法,支持记录用户上次访问的场景。 - 在各个场景组件中使用 useEffect 设置 lastVisitedPlace,确保用户在返回时能继续上次访问的地点。 - 更新相关组件,确保在导航时能够正确使用 lastVisitedPlace,提升用户交互体验。 - 在 puzzleStore 中添加保存用户定义的功能,增强数据持久性。
This commit is contained in:
1 parent
76c67b492e
commit
b1d55b9464
17 files changed
+147
-54
No files matched your search
+25
@@ -4,6 +4,13 @@ import router from './router'
|
||||
import { ScaleProvider, useScale } from './contexts/ScaleContext'
|
||||
import { RotateHint } from './components/RotateHint'
|
||||
import { useUserStore } from './store'
|
||||
import { getUserDefine } from '@/lib/utils/api-common'
|
||||
import {
|
||||
usePuzzleStore,
|
||||
deserializePuzzles,
|
||||
PUZZLE_LESSON_ID,
|
||||
PUZZLE_KEY,
|
||||
} from '@/store/puzzleStore'
|
||||
|
||||
/**
|
||||
* 应用内容组件
|
||||
@@ -26,6 +33,24 @@ function AppContent() {
|
||||
}
|
||||
}, [setCourseInfo])
|
||||
|
||||
useEffect(() => {
|
||||
;(async () => {
|
||||
try {
|
||||
const raw = await getUserDefine(PUZZLE_LESSON_ID, PUZZLE_KEY)
|
||||
if (!raw) return
|
||||
const data = JSON.parse(raw) as { puzzles?: Record<string, number[]> }
|
||||
if (data.puzzles) {
|
||||
usePuzzleStore.setState((prev) => ({
|
||||
...prev,
|
||||
puzzles: deserializePuzzles(data.puzzles),
|
||||
}))
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('Failed to load puzzle store', e)
|
||||
}
|
||||
})()
|
||||
}, [])
|
||||
|
||||
return (
|
||||
<>
|
||||
<div className="relative w-screen h-screen overflow-hidden">
|
||||
|
||||
Reference in new issue
Block a user