| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- import prefs from "./Prefs";
- import subscriptionManager from "./SubscriptionManager";
- const delayMillis = 15000; // 15 seconds
- const intervalMillis = 1800000; // 30 minutes
- class Pruner {
- constructor() {
- this.timer = null;
- }
- startWorker() {
- if (this.timer !== null) {
- return;
- }
- console.log(`[Pruner] Starting worker`);
- this.timer = setInterval(() => this.prune(), intervalMillis);
- setTimeout(() => this.prune(), delayMillis);
- }
- 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);
- } catch (e) {
- console.log(`[Pruner] Error pruning old subscriptions`, e);
- }
- }
- }
- const pruner = new Pruner();
- pruner.startWorker();
- export default pruner;
|