mirror of
https://github.com/gnmyt/myspeed.git
synced 2026-01-02 02:59:39 -06:00
50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
const pauseController = require('../controller/pause');
|
|
const schedule = require('node-schedule');
|
|
|
|
let job;
|
|
|
|
module.exports.startTimer = (timeLevel) => {
|
|
job = schedule.scheduleJob(getRuleFromLevel(timeLevel), () => this.runTask());
|
|
}
|
|
|
|
const getRuleFromLevel = (level) => {
|
|
const rule = new schedule.RecurrenceRule();
|
|
|
|
switch (level) {
|
|
case "1":
|
|
rule.second = 0;
|
|
break;
|
|
case "2":
|
|
rule.minute = [0, 30]
|
|
break;
|
|
case "3":
|
|
rule.minute = 0;
|
|
break;
|
|
case "4":
|
|
rule.hour = [0, 3, 6, 9, 12, 15, 18, 21];
|
|
break;
|
|
case "5":
|
|
rule.hour = [0, 6, 12, 18];
|
|
break;
|
|
}
|
|
|
|
return rule;
|
|
}
|
|
|
|
module.exports.runTask = async () => {
|
|
if (pauseController.currentState) {
|
|
console.warn("Speedtests currently paused. Trying again later...");
|
|
return;
|
|
}
|
|
|
|
await require('../tasks/speedtest').create("auto");
|
|
}
|
|
|
|
module.exports.stopTimer = () => {
|
|
if (job !== undefined) {
|
|
job.cancel();
|
|
job = undefined;
|
|
}
|
|
}
|
|
|
|
module.exports.job = job; |