197 lines
No EOL
5.1 KiB
JavaScript
197 lines
No EOL
5.1 KiB
JavaScript
const db = require("quick.db");
|
|
const { icons, otherIcons } = require("../../icons");
|
|
|
|
module.exports = {
|
|
page: "/feed",
|
|
// eslint-disable-next-line no-unused-vars
|
|
execute: async (req, res, app, config, themeConfig, info) => {
|
|
if (req.query.action === "delete") {
|
|
const deleteFeed = req.query.feed;
|
|
|
|
if (!deleteFeed) return res.redirect("/admin?error=invalidFeed");
|
|
if (!/^\d+$/.test(deleteFeed)) return res.redirect("/admin?error=invalidFeed");
|
|
if (deleteFeed !== "1" && deleteFeed !== "2" && deleteFeed !== "3") return res.redirect("/admin?error=invalidFeed");
|
|
|
|
if (deleteFeed === "1") {
|
|
if (!db.get("feeds.one")) return res.redirect("/admin?error=invalidFeed");
|
|
|
|
if (db.get("feeds.two")) {
|
|
const f = await db.get("feeds.two");
|
|
|
|
await db.set("feeds.one", {
|
|
color: f.color,
|
|
description: f.description,
|
|
published: f.published,
|
|
icon: f.icon,
|
|
diff: f.diff,
|
|
});
|
|
} else await db.delete("feeds.one");
|
|
|
|
if (db.get("feeds.three")) {
|
|
const f = await db.get("feeds.three");
|
|
|
|
await db.set("feeds.two", {
|
|
color: f.color,
|
|
description: f.description,
|
|
published: f.published,
|
|
icon: f.icon,
|
|
diff: f.diff,
|
|
});
|
|
|
|
await db.delete("feeds.three");
|
|
}
|
|
} else if (deleteFeed === "2") {
|
|
if (!db.get("feeds.two")) return res.redirect("/admin?error=invalidFeed");
|
|
|
|
if (db.get("feeds.one")) {
|
|
const f = await db.get("feeds.one");
|
|
await db.set("feeds.two", {
|
|
color: f.color,
|
|
description: f.description,
|
|
published: f.published,
|
|
icon: f.icon,
|
|
diff: f.diff,
|
|
});
|
|
await db.delete("feeds.one");
|
|
} else {
|
|
await db.delete("feeds.two");
|
|
}
|
|
} else if (deleteFeed === "3") {
|
|
if (!db.get("feeds.three")) return res.redirect("/admin?error=invalidFeed");
|
|
|
|
await db.delete("feeds.three");
|
|
|
|
if (db.get("feeds.two")) {
|
|
const f = await db.get("feeds.two");
|
|
|
|
await db.set("feeds.three", {
|
|
color: f.color,
|
|
description: f.description,
|
|
published: f.published,
|
|
icon: f.icon,
|
|
diff: f.diff,
|
|
});
|
|
}
|
|
|
|
if (db.get("feeds.one")) {
|
|
const f = await db.get("feeds.one");
|
|
|
|
await db.set("feeds.two", {
|
|
color: f.color,
|
|
description: f.description,
|
|
published: f.published,
|
|
icon: f.icon,
|
|
diff: f.diff,
|
|
});
|
|
}
|
|
}
|
|
return res.redirect("/admin");
|
|
} else if (req.query.action === "create") {
|
|
const { color, description, icon } = req.query;
|
|
if (!color || !description || !icon) return res.redirect("/admin?error=missingData");
|
|
|
|
if (color !== "red" && color !== "orange" && color !== "pink" && color !== "gray" && color !== "green" && color !== "blue" && color !== "dark") return res.redirect("/admin?error=invalidData");
|
|
if (description.length < 3 || description.length > 128) return res.redirect("/admin?error=invalidData");
|
|
if (!icons.includes(icon) && !otherIcons.includes(icon)) return res.redirect("/admin?error=invalidData");
|
|
|
|
let diff;
|
|
let col;
|
|
|
|
if (otherIcons.includes(icon)) diff = true;
|
|
if (color === "red") col = "danger";
|
|
if (color === "orange") col = "warning";
|
|
if (color === "pink") col = "primary";
|
|
if (color === "gray") col = "secondary";
|
|
if (color === "green") col = "success";
|
|
if (color === "blue") col = "info";
|
|
if (color === "dark") col = "dark";
|
|
|
|
if (db.get("feeds.three") && db.get("feeds.two") && db.get("feeds.one")) {
|
|
await db.delete("feeds.one");
|
|
|
|
const f3 = db.get("feeds.three");
|
|
const f2 = db.get("feeds.two");
|
|
|
|
await db.set("feeds.two", {
|
|
color: f3.color,
|
|
description: f3.description,
|
|
published: f3.published,
|
|
icon: f3.icon,
|
|
diff: f3.diff,
|
|
});
|
|
|
|
await db.set("feeds.one", {
|
|
color: f2.color,
|
|
description: f2.description,
|
|
published: f2.published,
|
|
icon: f2.icon,
|
|
diff: f2.diff,
|
|
});
|
|
|
|
await db.set("feeds.three", {
|
|
color: col,
|
|
description,
|
|
published: Date.now(),
|
|
icon,
|
|
diff,
|
|
});
|
|
} else {
|
|
if (!db.get("feeds.three")) {
|
|
await db.set("feeds.three", {
|
|
color: col,
|
|
description,
|
|
published: Date.now(),
|
|
icon,
|
|
diff,
|
|
});
|
|
} else if (!db.get("feeds.two")) {
|
|
const f3 = db.get("feeds.three");
|
|
|
|
await db.set("feeds.two", {
|
|
color: f3.color,
|
|
description: f3.description,
|
|
published: f3.published,
|
|
icon: f3.icon,
|
|
diff: f3.diff,
|
|
});
|
|
|
|
await db.set("feeds.three", {
|
|
color: col,
|
|
description,
|
|
published: Date.now(),
|
|
icon,
|
|
diff,
|
|
});
|
|
} else {
|
|
const f3 = db.get("feeds.three");
|
|
const f2 = db.get("feeds.two");
|
|
|
|
await db.set("feeds.one", {
|
|
color: f2.color,
|
|
description: f2.description,
|
|
published: f2.published,
|
|
icon: f2.icon,
|
|
diff: f2.diff,
|
|
});
|
|
|
|
await db.set("feeds.two", {
|
|
color: f3.color,
|
|
description: f3.description,
|
|
published: f3.published,
|
|
icon: f3.icon,
|
|
diff: f3.diff,
|
|
});
|
|
|
|
await db.set("feeds.three", {
|
|
color: col,
|
|
description,
|
|
published: Date.now(),
|
|
icon,
|
|
diff,
|
|
});
|
|
}
|
|
}
|
|
return res.redirect("/admin");
|
|
}
|
|
},
|
|
}; |