const moment = require('moment'); const io = require('./socketio') let timerInterval; let duration = moment.duration(7, 'minutes'); // Initial duration let durationLeft = moment.duration(7, 'minutes'); // durationLeft after the timer has been started let isPaused = true; // Status of the timer // Function prototypes function start() {}; function pause() {}; function reset() {}; function end() {}; function print() {}; function start() { if(isPaused == true) { isPaused = false timerInterval = setInterval(() => { // Create Intervalfunction every 1000ms console.log(print()); // Print durationLeft io.sockets.emit('timerDurationLeft', print()) // Emit durationLeft to all connected sockets if(durationLeft.minutes() == 0 && durationLeft.seconds() == 0) // End timer if durationLeft == 00:00 end() durationLeft.subtract(1, 'second'); // Subtract a second from from the timer }, 1000); } } function pause() { isPaused = true; // Set status of the timer clearInterval(timerInterval); // End the execution } function reset() { durationLeft = duration.clone(); // Set durationLeft to the initial duration io.sockets.emit('timerDurationLeft', print()) // Emit durationLeft to all connected sockets } function end() { isPaused = true // Set status of the timer clearInterval(timerInterval); // End the execution io.sockets.emit('timerEnded', print()) // Emit end to all connected sockets } function print() { var minutes = (durationLeft.minutes() < 10) ? "0" + durationLeft.minutes() : durationLeft.minutes(); // Create leading zeros for numbers <10 var seconds = (durationLeft.seconds() < 10) ? "0" + durationLeft.seconds() : durationLeft.seconds(); // Create leading zeros for numbers <10 return minutes + ":" + seconds } module.exports = { duration, durationLeft, isPaused, start, pause, reset, end, print };