feat:save

This commit is contained in:
zyronon
2025-07-23 00:38:18 +08:00
parent baa6aea76f
commit 183e9dfb72
2 changed files with 35 additions and 40 deletions

View File

@@ -1,4 +1,4 @@
import {onMounted, onUnmounted, watch,onDeactivated} from "vue";
import {onMounted, onUnmounted, watch, onDeactivated} from "vue";
import {emitter, EventKey} from "@/utils/eventBus.ts";
import {useRuntimeStore} from "@/stores/runtime.ts";
import {useSettingStore} from "@/stores/setting.ts";
@@ -52,7 +52,6 @@ export function useStartKeyboardEventListener() {
const settingStore = useSettingStore()
useEventListener('keydown', (e: KeyboardEvent) => {
// console.log('e',e.keyCode,e.code)
if (!runtimeStore.disableEventListener) {
e.preventDefault()
let shortcutKey = getShortcutKey(e)

View File

@@ -9,7 +9,7 @@ import {useRuntimeStore} from "@/stores/runtime.ts";
import {getDefaultWord, ShortcutKey, StudyData, Word} from "@/types.ts";
import {useOnKeyboardEventListener, useStartKeyboardEventListener} from "@/hooks/event.ts";
import useTheme from "@/hooks/theme.ts";
import {getCurrentStudyWord, useWordOptions} from "@/hooks/dict.ts";
import {useWordOptions} from "@/hooks/dict.ts";
import {cloneDeep, shuffle} from "lodash-es";
import {useRouter} from "vue-router";
import {Icon} from "@iconify/vue";
@@ -23,56 +23,33 @@ import Empty from "@/components/Empty.vue";
import {useBaseStore} from "@/stores/base.ts";
import {usePracticeStore} from "@/stores/practice.ts";
const settingStore = useSettingStore()
const runtimeStore = useRuntimeStore()
const {toggleTheme} = useTheme()
const router = useRouter()
interface IProps {
new: Word[],
review: Word[],
write: Word[],
}
let studyData = $ref<IProps>({
new: [],
review: [],
write: []
})
//TODO 需要判断是否已忽略
function repeat() {
// console.log('repeat')
settingStore.dictation = false
emitter.emit(EventKey.resetWord)
studyData = cloneDeep(studyData)
}
onMounted(() => {
if (runtimeStore.routeData) {
studyData = runtimeStore.routeData
} else {
router.push('/word')
}
})
useStartKeyboardEventListener()
const typingRef: any = $ref()
const store = useBaseStore()
const statStore = usePracticeStore()
const {
isWordCollect,
toggleWordCollect,
isWordSimple,
toggleWordSimple
} = useWordOptions()
const settingStore = useSettingStore()
const runtimeStore = useRuntimeStore()
const {toggleTheme} = useTheme()
const router = useRouter()
const store = useBaseStore()
const statStore = usePracticeStore()
const typingRef: any = $ref()
let allWrongWords = new Set()
let studyData = $ref<IProps>({
new: [],
review: [],
write: []
})
let data = $ref<StudyData>({
index: 0,
words: [],
@@ -81,6 +58,14 @@ let data = $ref<StudyData>({
provide('studyData', data)
onMounted(() => {
if (runtimeStore.routeData) {
studyData = runtimeStore.routeData
} else {
router.push('/word')
}
})
watch(() => studyData, () => {
data.words = studyData.new
data.index = 0
@@ -175,11 +160,12 @@ function onTypeWrong() {
}
function onKeyUp(e: KeyboardEvent) {
// console.log('onKeyUp', e)
typingRef.hideWord()
}
async function onKeyDown(e: KeyboardEvent) {
// console.log('e', e)
// console.log('onKeyDown', e)
switch (e.key) {
case 'Backspace':
typingRef.del()
@@ -187,8 +173,18 @@ async function onKeyDown(e: KeyboardEvent) {
}
}
useStartKeyboardEventListener()
useOnKeyboardEventListener(onKeyDown, onKeyUp)
//TODO 需要判断是否已忽略
function repeat() {
// console.log('repeat')
settingStore.dictation = false
emitter.emit(EventKey.resetWord)
studyData = cloneDeep(studyData)
}
//TODO 略过忽略的单词上
function prev() {
if (data.index === 0) {