ntfy/web/src/app/Pruner.js

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

43 lines
1.1 KiB
JavaScript
Raw Normal View History

2022-03-03 10:16:30 +13:00
import prefs from "./Prefs";
import subscriptionManager from "./SubscriptionManager";
2022-03-03 10:16:30 +13:00
const delayMillis = 25000; // 25 seconds
2022-03-03 10:16:30 +13:00
const intervalMillis = 1800000; // 30 minutes
class Pruner {
constructor() {
this.timer = null;
}
startWorker() {
if (this.timer !== null) {
return;
}
2022-03-09 05:33:17 +13:00
console.log(`[Pruner] Starting worker`);
2022-03-03 10:16:30 +13:00
this.timer = setInterval(() => this.prune(), intervalMillis);
setTimeout(() => this.prune(), delayMillis);
2023-05-24 07:13:01 +12:00
}
2022-03-03 10:16:30 +13:00
stopWorker() {
clearTimeout(this.timer);
}
2022-03-03 10:16:30 +13:00
async prune() {
const deleteAfterSeconds = await prefs.deleteAfter();
const pruneThresholdTimestamp = Math.round(Date.now() / 1000) - deleteAfterSeconds;
if (deleteAfterSeconds === 0) {
console.log(`[Pruner] Pruning is disabled. Skipping.`);
return;
}
console.log(`[Pruner] Pruning notifications older than ${deleteAfterSeconds}s (timestamp ${pruneThresholdTimestamp})`);
try {
await subscriptionManager.pruneNotifications(pruneThresholdTimestamp);
2022-03-03 10:16:30 +13:00
} catch (e) {
console.log(`[Pruner] Error pruning old subscriptions`, e);
}
2023-05-24 07:13:01 +12:00
}
2022-03-03 10:16:30 +13:00
}
const pruner = new Pruner();
export default pruner;