modules 添加web
This commit is contained in:
@@ -0,0 +1,151 @@
|
||||
import { defineStore } from "pinia";
|
||||
import { emptyBookSource, emptyRssSource } from "@utils/souce";
|
||||
|
||||
const isBookSource = /bookSource/i.test(location.href);
|
||||
const emptySource = isBookSource ? emptyBookSource : emptyRssSource;
|
||||
|
||||
export const useSourceStore = defineStore("source", {
|
||||
state: () => {
|
||||
return {
|
||||
/** @type {import("@/source").BookSoure[]} */
|
||||
bookSources: [], // 临时存放所有书源,
|
||||
/** @type {import("@/source").RssSource[]} */
|
||||
rssSources: [], // 临时存放所有订阅源
|
||||
errorPushSources: [], // 保存到阅读app出错的源
|
||||
/** @type {import("@/source").Source} */
|
||||
currentSource: emptySource, // 当前编辑的源
|
||||
currentTab: localStorage.getItem("tabName") || "editTab",
|
||||
editTabSource: {}, // 生成序列化的json数据
|
||||
isDebuging: false,
|
||||
};
|
||||
},
|
||||
getters: {
|
||||
sources: (state) => (isBookSource ? state.bookSources : state.rssSources),
|
||||
currentSourceUrl: (state) =>
|
||||
isBookSource
|
||||
? state.currentSource.bookSourceUrl
|
||||
: state.currentSource.sourceUrl,
|
||||
searchKey: (state) =>
|
||||
isBookSource
|
||||
? state.currentSource.ruleSearch.checkKeyWord || "我的"
|
||||
: null,
|
||||
},
|
||||
actions: {
|
||||
startDebug() {
|
||||
this.currentTab = "editDebug";
|
||||
this.isDebuging = true;
|
||||
},
|
||||
debugFinish() {
|
||||
this.isDebuging = false;
|
||||
},
|
||||
|
||||
//拉取源后保存
|
||||
saveSources(data) {
|
||||
if (isBookSource) {
|
||||
this.bookSources = data;
|
||||
} else {
|
||||
this.rssSources = data;
|
||||
}
|
||||
},
|
||||
//删除源
|
||||
deleteSources(data) {
|
||||
let sources = isBookSource ? this.bookSources : this.rssSources;
|
||||
data.forEach((source) => {
|
||||
let index = sources.indexOf(source);
|
||||
if (index > -1) sources.splice(index, 1);
|
||||
});
|
||||
},
|
||||
//保存当前编辑源
|
||||
saveCurrentSource() {
|
||||
let source = this.currentSource,
|
||||
sources,
|
||||
searchKey;
|
||||
if (isBookSource) {
|
||||
sources = this.bookSources;
|
||||
searchKey = "bookSourceUrl";
|
||||
} else {
|
||||
sources = this.rssSources;
|
||||
searchKey = "sourceUrl";
|
||||
}
|
||||
let index = sources.findIndex(
|
||||
(element) => element[searchKey] === source[searchKey]
|
||||
);
|
||||
//去掉响应 toRaw?
|
||||
source = JSON.parse(JSON.stringify(source));
|
||||
if (index > -1) {
|
||||
sources.splice(index, 1, source);
|
||||
} else {
|
||||
sources.push(source);
|
||||
}
|
||||
},
|
||||
// 更改当前编辑的源
|
||||
changeCurrentSource(source) {
|
||||
const newContent = JSON.stringify(source);
|
||||
this.currentSource = JSON.parse(newContent);
|
||||
},
|
||||
async setPushReturnSources(returnSoures) {
|
||||
if (isBookSource) {
|
||||
// @ts-ignore
|
||||
this.errorPushSources = this.sources.filter((source) =>
|
||||
returnSoures.every(
|
||||
(item) => item.bookSourceUrl !== source.bookSourceUrl
|
||||
)
|
||||
);
|
||||
} else {
|
||||
// @ts-ignore
|
||||
this.errorPushSources = this.sources.filter((source) =>
|
||||
returnSoures.every((item) => item.sourceUrl !== source.sourceUrl)
|
||||
);
|
||||
}
|
||||
},
|
||||
// update editTab tabName and editTab info
|
||||
changeTabName(tabName) {
|
||||
this.currentTab = tabName;
|
||||
localStorage.setItem("tabName", tabName);
|
||||
},
|
||||
changeEditTabSource(source) {
|
||||
const newContent = JSON.stringify(source);
|
||||
this.editTabSource = JSON.parse(newContent);
|
||||
},
|
||||
editHistory(history) {
|
||||
let historyObj;
|
||||
if (localStorage.getItem("history")) {
|
||||
historyObj = JSON.parse(localStorage.getItem("history"));
|
||||
historyObj.new.push(history);
|
||||
if (historyObj.new.length > 50) {
|
||||
historyObj.new.shift();
|
||||
}
|
||||
if (historyObj.old.length > 50) {
|
||||
historyObj.old.shift();
|
||||
}
|
||||
localStorage.setItem("history", JSON.stringify(historyObj));
|
||||
} else {
|
||||
const arr = { new: [history], old: [] };
|
||||
localStorage.setItem("history", JSON.stringify(arr));
|
||||
}
|
||||
},
|
||||
editHistoryUndo() {
|
||||
if (localStorage.getItem("history")) {
|
||||
let historyObj = JSON.parse(localStorage.getItem("history"));
|
||||
historyObj.old.push(this.currentSource);
|
||||
if (historyObj.new.length) {
|
||||
this.currentSource = historyObj.new.pop();
|
||||
}
|
||||
localStorage.setItem("history", JSON.stringify(historyObj));
|
||||
}
|
||||
},
|
||||
clearAllHistory() {
|
||||
localStorage.setItem("history", JSON.stringify({ new: [], old: [] }));
|
||||
},
|
||||
clearEdit() {
|
||||
this.editTabSource = {};
|
||||
this.currentSource = emptySource;
|
||||
},
|
||||
|
||||
// clear all source
|
||||
clearAllSource() {
|
||||
this.bookSources = [];
|
||||
this.rssSources = [];
|
||||
},
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user