186 lines
4.0 KiB
JavaScript
186 lines
4.0 KiB
JavaScript
import { defineStore } from "pinia";
|
|
|
|
export const mainStore = defineStore("mainData", {
|
|
state: () => {
|
|
return {
|
|
// 系统主题
|
|
siteTheme: "light",
|
|
siteThemeAuto: true,
|
|
// 新闻类别
|
|
defaultNewsArr: [
|
|
{
|
|
label: "哔哩哔哩",
|
|
name: "bilibili",
|
|
order: 0,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "微博",
|
|
name: "weibo",
|
|
order: 1,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "抖音",
|
|
name: "douyin",
|
|
order: 2,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "知乎",
|
|
name: "zhihu",
|
|
order: 3,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "36氪",
|
|
name: "36kr",
|
|
order: 4,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "百度",
|
|
name: "baidu",
|
|
order: 5,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "少数派",
|
|
name: "sspai",
|
|
order: 6,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "IT之家",
|
|
name: "ithome",
|
|
order: 7,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "澎湃新闻",
|
|
name: "thepaper",
|
|
order: 8,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "今日头条",
|
|
name: "toutiao",
|
|
order: 9,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "百度贴吧",
|
|
name: "tieba",
|
|
order: 10,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "稀土掘金",
|
|
name: "juejin",
|
|
order: 11,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "腾讯新闻",
|
|
name: "newsqq",
|
|
order: 12,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "豆瓣",
|
|
name: "douban_new",
|
|
order: 13,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "原神",
|
|
name: "genshin",
|
|
order: 14,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "LOL",
|
|
name: "lol",
|
|
order: 15,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "快手",
|
|
name: "kuaishou",
|
|
order: 16,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "网易新闻",
|
|
name: "netease",
|
|
order: 17,
|
|
show: true,
|
|
},
|
|
{
|
|
label: "微信读书",
|
|
name: "weread",
|
|
order: 18,
|
|
show: true,
|
|
},
|
|
],
|
|
newsArr: [],
|
|
// 链接跳转方式
|
|
linkOpenType: "open",
|
|
// 页头固定
|
|
headerFixed: true,
|
|
// 时间数据
|
|
timeData: null,
|
|
// 字体大小
|
|
listFontSize: 14,
|
|
};
|
|
},
|
|
getters: {},
|
|
actions: {
|
|
// 更改系统主题
|
|
setSiteTheme(val) {
|
|
$message.info(`已切换至${val === "dark" ? "深色模式" : "浅色模式"}`, {
|
|
showIcon: false,
|
|
});
|
|
this.siteTheme = val;
|
|
this.siteThemeAuto = false;
|
|
},
|
|
// 检查更新
|
|
checkNewsUpdate() {
|
|
const mainData = JSON.parse(localStorage.getItem("mainData"));
|
|
let updatedNum = 0;
|
|
if (!mainData) return false;
|
|
console.log("列表尝试更新", this.defaultNewsArr, this.newsArr);
|
|
// 执行比较并迁移
|
|
if (this.newsArr.length > 0) {
|
|
for (const newItem of this.defaultNewsArr) {
|
|
const exists = this.newsArr.some(
|
|
(news) => newItem.label === news.label && newItem.name === news.name
|
|
);
|
|
if (!exists) {
|
|
console.log("列表有更新:", newItem);
|
|
updatedNum++;
|
|
this.newsArr.push(newItem);
|
|
}
|
|
}
|
|
if (updatedNum) $message.success(`成功更新 ${updatedNum} 个榜单数据`);
|
|
} else {
|
|
console.log("列表无内容,写入默认");
|
|
this.newsArr = this.defaultNewsArr;
|
|
}
|
|
},
|
|
},
|
|
persist: [
|
|
{
|
|
storage: localStorage,
|
|
paths: [
|
|
"siteTheme",
|
|
"siteThemeAuto",
|
|
"newsArr",
|
|
"linkOpenType",
|
|
"headerFixed",
|
|
"listFontSize",
|
|
],
|
|
},
|
|
],
|
|
});
|