Merge branch 'hotfix/21.56.9' into master
[gitter.git] / scripts / crons / send-unread-notifications.js
blobbbe0311aa14a58119e8164f0b8adc7c66104544e
1 #!/usr/bin/env node
3 'use strict';
5 var env = require('gitter-web-env');
6 var winston = env.logger;
7 var nconf = env.config;
8 var notificationGenerator = require('../../server/services/notifications/email-notification-generator-service');
10 var MAX_TIME = 60000 * 5;
12 var shutdown = require('shutdown');
13 var opts = require('yargs')
14 .option('age', {
15 alias: 'a',
16 default: nconf.get('notifications:emailNotificationsAfterMins'),
17 required: false,
18 description: 'Age in minutes of the unread items'
20 .help('help')
21 .alias('help', 'h').argv;
23 winston.info('Looking for all unread messages older than ' + opts.age + ' minutes');
24 var sinceTime = Date.now() - opts.age * 60 * 1000;
25 var startTime = Date.now();
26 function run() {
27 return notificationGenerator(sinceTime).then(function(result) {
28 if (result) {
29 /* Only keep iterating up to the maximum time */
30 if (Date.now() - startTime < MAX_TIME) {
31 return run();
32 } else {
33 winston.warn('Reached MAX_TIME (' + MAX_TIME + ') before notifying everyone.');
36 });
39 run()
40 .then(function() {
41 shutdown.shutdownGracefully();
43 .catch(function(err) {
44 console.log(err);
45 console.log(err.stack);
46 winston.error('send-unread-notifications failed: ' + err, { exception: err });
47 shutdown.shutdownGracefully(1);
48 });