mirror of
https://github.com/binwiederhier/ntfy.git
synced 2024-11-26 05:09:16 +01:00
40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
|
import db from "./db";
|
||
|
import prefs from "./Prefs";
|
||
|
|
||
|
const delayMillis = 15000; // 15 seconds
|
||
|
const intervalMillis = 1800000; // 30 minutes
|
||
|
|
||
|
class Pruner {
|
||
|
constructor() {
|
||
|
this.timer = null;
|
||
|
}
|
||
|
|
||
|
startWorker() {
|
||
|
if (this.timer !== null) {
|
||
|
return;
|
||
|
}
|
||
|
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 db.notifications
|
||
|
.where("time").below(pruneThresholdTimestamp)
|
||
|
.delete();
|
||
|
} catch (e) {
|
||
|
console.log(`[Pruner] Error pruning old subscriptions`, e);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const pruner = new Pruner();
|
||
|
export default pruner;
|