feat:添加升级逻辑
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
<script setup lang="ts">
|
||||
import {splitEnArticle2} from "@/hooks/article.ts";
|
||||
import test from '../../test/test.vue'
|
||||
|
||||
function test() {
|
||||
function test1() {
|
||||
splitEnArticle2(
|
||||
`While it is yet to be seen what direction the second Trump administration will take globally in its China policy, VOA traveled to the main island of Mahe in Seychelles to look at how China and the U.S. have impacted the country, and how each is fairing in that competition for influence there.
|
||||
`)
|
||||
@@ -18,7 +19,8 @@ function test2() {
|
||||
|
||||
<template>
|
||||
<div class="word flex center h-screen ">
|
||||
<El-Button @click="test">test</El-Button>
|
||||
<El-Button @click="test1">test1</El-Button>
|
||||
<El-Button @click="test2">test2</El-Button>
|
||||
<test/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -2,7 +2,7 @@ import {SAVE_DICT_KEY, SAVE_SETTING_KEY} from "@/utils/const.ts";
|
||||
import {BaseState, DefaultBaseState} from "@/stores/base.ts";
|
||||
import {DefaultSettingState, SettingState} from "@/stores/setting.ts";
|
||||
import {cloneDeep} from "lodash-es";
|
||||
import {Dict, DictResource, DictType, getDefaultDict} from "@/types.ts";
|
||||
import {Dict, DictResource, DictType, getDefaultDict, getDefaultWord} from "@/types.ts";
|
||||
import {ArchiveReader, libarchiveWasm} from "libarchive-wasm";
|
||||
import {useRouter} from "vue-router";
|
||||
import {useRuntimeStore} from "@/stores/runtime.ts";
|
||||
@@ -11,6 +11,7 @@ import dayjs from 'dayjs'
|
||||
import axios from "axios";
|
||||
import {env} from "@/config/ENV.ts";
|
||||
import {nextTick} from "vue";
|
||||
import {dictionaryResources} from "@/assets/dictionary.ts";
|
||||
|
||||
export function getRandom(a: number, b: number): number {
|
||||
return Math.random() * (b - a) + a;
|
||||
@@ -20,19 +21,26 @@ export function no() {
|
||||
ElMessage.warning('未现实')
|
||||
}
|
||||
|
||||
//防止多出意外的数据
|
||||
function assign(origin: object, target: object) {
|
||||
for (const [key, value] of Object.entries(origin)) {
|
||||
if (target[key] !== undefined) origin[key] = target[key]
|
||||
}
|
||||
}
|
||||
|
||||
export function checkAndUpgradeSaveDict(val: any) {
|
||||
// console.log(configStr)
|
||||
// console.log('s', new Blob([val]).size)
|
||||
// val = ''
|
||||
if (val) {
|
||||
try {
|
||||
let data
|
||||
let data: any
|
||||
if (typeof val === 'string') {
|
||||
data = JSON.parse(val)
|
||||
} else {
|
||||
data = val
|
||||
}
|
||||
let state: BaseState = data.val
|
||||
let state: any = data.val
|
||||
if (typeof state !== 'object') {
|
||||
return {}
|
||||
}
|
||||
@@ -42,22 +50,97 @@ export function checkAndUpgradeSaveDict(val: any) {
|
||||
state.load = false
|
||||
let version = Number(data.version)
|
||||
// console.log('state', state)
|
||||
let defaultBaseState = DefaultBaseState()
|
||||
let defaultState = DefaultBaseState()
|
||||
if (version === SAVE_DICT_KEY.version) {
|
||||
//防止人为删除数据,导致数据不完整报错
|
||||
for (const [key, value] of Object.entries(defaultBaseState)) {
|
||||
if (state[key] !== undefined) defaultBaseState[key] = state[key]
|
||||
for (const [key, value] of Object.entries(defaultState)) {
|
||||
if (state[key] !== undefined) defaultState[key] = state[key]
|
||||
}
|
||||
return defaultBaseState
|
||||
return defaultState
|
||||
} else {
|
||||
if (version <= 4) {
|
||||
state = defaultBaseState
|
||||
if (version === 3) {
|
||||
let studyDictId = ''
|
||||
if (state.current.index >= 0) {
|
||||
let dict = state.myDictList[state.current.index]
|
||||
if (dict) {
|
||||
studyDictId = dict.id
|
||||
}
|
||||
}
|
||||
|
||||
function formatWord(dict) {
|
||||
dict.words = dict.words.map(v => {
|
||||
return getDefaultWord({
|
||||
word: v.name,
|
||||
phonetic0: v.usphone,
|
||||
phonetic1: v.ukphone,
|
||||
trans: v.trans.map(b => {
|
||||
return {
|
||||
pos: '',
|
||||
cn: b,
|
||||
}
|
||||
}),
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
state.myDictList.map((v: any) => {
|
||||
let currentDictId = v.id
|
||||
if (['collect', 'simple', 'wrong'].includes(v.type)) {
|
||||
formatWord(v)
|
||||
delete v.id
|
||||
delete v.name
|
||||
delete v.type
|
||||
if (v.type === 'collect') {
|
||||
if (currentDictId === studyDictId) defaultState.word.studyIndex = 0
|
||||
assign(defaultState.word.bookList[0], v)
|
||||
}
|
||||
if (v.type === 'simple') {
|
||||
if (currentDictId === studyDictId) defaultState.word.studyIndex = 2
|
||||
assign(defaultState.word.bookList[2], v)
|
||||
}
|
||||
if (v.type === 'wrong') {
|
||||
if (currentDictId === studyDictId) defaultState.word.studyIndex = 1
|
||||
assign(defaultState.word.bookList[1], v)
|
||||
}
|
||||
}
|
||||
if (v.type === 'word') {
|
||||
delete v.type
|
||||
if (v.isCustom) {
|
||||
formatWord(v)
|
||||
let dict = getDefaultDict()
|
||||
assign(dict, v)
|
||||
defaultState.word.bookList.push(dict)
|
||||
if (currentDictId === studyDictId) defaultState.word.studyIndex = defaultState.word.bookList.length - 1
|
||||
} else {
|
||||
let r = dictionaryResources.find(a => a.id === currentDictId)
|
||||
if (r) {
|
||||
defaultState.word.bookList.push(getDefaultDict(r))
|
||||
if (currentDictId === studyDictId) defaultState.word.studyIndex = defaultState.word.bookList.length - 1
|
||||
}
|
||||
}
|
||||
}
|
||||
if (v.type === 'article') {
|
||||
delete v.type
|
||||
if (v.isCustom) {
|
||||
let dict = getDefaultDict()
|
||||
assign(dict, v)
|
||||
defaultState.article.bookList.push(dict)
|
||||
if (currentDictId === studyDictId) defaultState.article.studyIndex = defaultState.article.bookList.length - 1
|
||||
} else {
|
||||
let r = dictionaryResources.find(a => a.id === currentDictId)
|
||||
if (r) {
|
||||
defaultState.article.bookList.push(getDefaultDict(r))
|
||||
if (currentDictId === studyDictId) defaultState.article.studyIndex = defaultState.article.bookList.length - 1
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
//防止人为删除数据,导致数据不完整报错
|
||||
for (const [key, value] of Object.entries(defaultBaseState)) {
|
||||
if (state[key] !== undefined) defaultBaseState[key] = state[key]
|
||||
for (const [key, value] of Object.entries(defaultState)) {
|
||||
if (state[key] !== undefined) defaultState[key] = state[key]
|
||||
}
|
||||
return defaultBaseState
|
||||
return defaultState
|
||||
}
|
||||
} catch (e) {
|
||||
return {}
|
||||
|
||||
Reference in New Issue
Block a user