1
0

Add vipUsers collection

This commit is contained in:
2022-01-05 23:36:01 +01:00
parent 11bcdb2eda
commit 4c5b00fe83
2 changed files with 32 additions and 17 deletions

View File

@@ -3,12 +3,17 @@ import { handleClientAction } from "../chatClient";
import { resolve } from "path"; import { resolve } from "path";
const LOG_PREFIX = "[Scheduled] "; const LOG_PREFIX = "[Scheduled] ";
const SCHEDULED_FILE = resolve(process.cwd(), "./storage/scheduled.json");
const FIRST_CHECK_TIMEOUT = 5e3; const FIRST_CHECK_TIMEOUT = 5e3;
const SAVE_TIMEOUT = 5e3; const SAVE_TIMEOUT = 5e3;
const CHECK_INTERVAL = 60e3; const CHECK_INTERVAL = 60e3;
const FILES_BASE = resolve(process.cwd(), "./storage");
const SCHEDULED_FILE = resolve(FILES_BASE, "./scheduled.json");
const VIP_USERS_FILE = resolve(FILES_BASE, "./vips.json");
const scheduledActions: Array<any> = []; const scheduledActions: Array<any> = [];
const vipUsers: Record<string, Array<string>> = {};
let checkingScheduled = false; let checkingScheduled = false;
let scheduledActionsInterval: NodeJS.Timeout; let scheduledActionsInterval: NodeJS.Timeout;
@@ -35,6 +40,21 @@ async function start(): Promise<void> {
setTimeout(checkScheduledActions, FIRST_CHECK_TIMEOUT); setTimeout(checkScheduledActions, FIRST_CHECK_TIMEOUT);
scheduledActionsInterval = setInterval(checkScheduledActions, CHECK_INTERVAL); scheduledActionsInterval = setInterval(checkScheduledActions, CHECK_INTERVAL);
try {
const savedVipUsers = JSON.parse(
await (await fs.readFile(VIP_USERS_FILE)).toString()
);
for (const key of Object.keys(savedVipUsers)) {
vipUsers[key] = savedVipUsers[key];
}
} catch (e) {
// probably file does not exist
if (e instanceof Error) {
console.log(`${LOG_PREFIX}${e.message}`);
}
}
} }
async function checkScheduledActions(): Promise<void> { async function checkScheduledActions(): Promise<void> {
@@ -60,13 +80,13 @@ async function checkScheduledActions(): Promise<void> {
} }
if (hasToSave) { if (hasToSave) {
saveScheduledActions(); save();
} }
checkingScheduled = false; checkingScheduled = false;
} }
function saveScheduledActions(): void { function save(): void {
if (saveScheduledActionsTimeout) { if (saveScheduledActionsTimeout) {
clearTimeout(saveScheduledActionsTimeout); clearTimeout(saveScheduledActionsTimeout);
saveScheduledActionsTimeout = null; saveScheduledActionsTimeout = null;
@@ -74,22 +94,22 @@ function saveScheduledActions(): void {
} }
saveScheduledActionsTimeout = setTimeout(async () => { saveScheduledActionsTimeout = setTimeout(async () => {
const normalizedPath = SCHEDULED_FILE.replace(/\\/g, "/");
try { try {
await fs.stat(normalizedPath); await fs.stat(FILES_BASE);
} catch (e) { } catch (e) {
const dirs = normalizedPath.split("/"); await fs.mkdir(FILES_BASE);
dirs.pop();
await fs.mkdir(dirs.join("/"));
} }
await fs.writeFile(SCHEDULED_FILE, JSON.stringify(scheduledActions)); await Promise.all([
fs.writeFile(SCHEDULED_FILE, JSON.stringify(scheduledActions)),
fs.writeFile(VIP_USERS_FILE, JSON.stringify(vipUsers))
]);
console.log(`${LOG_PREFIX}Saved actions.`); console.log(`${LOG_PREFIX}Saved actions.`);
saveScheduledActionsTimeout = null; saveScheduledActionsTimeout = null;
}, SAVE_TIMEOUT); }, SAVE_TIMEOUT);
} }
saveScheduledActions(); save();
export { start, scheduledActions, saveScheduledActions }; export { start, scheduledActions, save, vipUsers };

View File

@@ -1,5 +0,0 @@
save();
save();
function save(): void {
save();
export { start, scheduledActions, save };