This commit is contained in:
Horis
2025-12-04 10:21:21 +08:00
parent 842e52bd6f
commit 3a5f713f1c
3 changed files with 22 additions and 6 deletions
+2 -1
View File
@@ -68,7 +68,7 @@
import API from '@api'
import { CircleCheckFilled, Edit } from '@element-plus/icons-vue'
import hotkeys from 'hotkeys-js'
import { getSourceName, isInvaildSource } from '../utils/souce'
import { getSourceName, isInvaildSource, normalizeSource } from '../utils/souce'
const store = useSourceStore()
const pull = () => {
@@ -168,6 +168,7 @@ const redo = () => {
const saveSource = () => {
const source = store.currentSource
if (isInvaildSource(source)) {
normalizeSource(source)
API.saveSource(source).then(({ data }) => {
const sourceName = getSourceName(source)
if (data.isSuccess) {
+4 -4
View File
@@ -13,8 +13,8 @@ const emptySource = isBookSource ? emptyBookSource : emptyRssSource
export const useSourceStore = defineStore('source', {
state: () => {
return {
bookSources: [] as BookSoure[], // 临时存放所有书源,
rssSources: [] as RssSource[], // 临时存放所有订阅源
bookSources: shallowRef([] as BookSoure[]), // 临时存放所有书源,
rssSources: shallowRef([] as RssSource[]), // 临时存放所有订阅源
savedSources: [] as Source[], // 批量保存到阅读app成功的源
currentSource: JSON.parse(JSON.stringify(emptySource)) as Source, // 当前编辑的源
currentTab: localStorage.getItem('tabName') || 'editTab',
@@ -51,9 +51,9 @@ export const useSourceStore = defineStore('source', {
//拉取源后保存
saveSources(data: Source[]) {
if (isBookSource) {
this.bookSources = data as BookSoure[]
this.bookSources = markRaw(data) as BookSoure[]
} else {
this.rssSources = data as RssSource[]
this.rssSources = markRaw(data) as RssSource[]
}
},
//批量推送
+16 -1
View File
@@ -49,12 +49,27 @@ export const convertSourcesToMap = (sources: Source[]): Map<string, Source> => {
return map
}
export const normalizeSource = (source: any) => {
for (const key in source) {
const value = source[key]
if (
value === '' ||
value === null ||
(typeof value === 'string' && !value.trim())
) {
delete source[key]
} else if (value instanceof Object) {
normalizeSource(value)
}
}
}
export const emptyBookSource = {
ruleSearch: {},
ruleBookInfo: {},
ruleToc: {},
ruleContent: {},
ruleReview: {},
// ruleReview: {},
ruleExplore: {},
} as BookSoure
export const emptyRssSource = {} as RssSource