moving forward
This commit is contained in:
parent
4211bb0d18
commit
f366519de7
1 changed files with 88 additions and 31 deletions
119
update.js
119
update.js
|
@ -1,9 +1,59 @@
|
|||
var API = require('../../src/node/db/API.js'),
|
||||
async = require('../../src/node_modules/async');
|
||||
var db = require('../../src/node/db/DB.js');
|
||||
API = require('../../src/node/db/API.js'),
|
||||
async = require('../../src/node_modules/async'),
|
||||
settings = require('../../src/node/utils/Settings');
|
||||
|
||||
var pluginSettings = settings.ep_email_notifications;
|
||||
var checkInterval = 60000; // Move me to the settings file
|
||||
var staleTime = 3600000; // Move me to settings
|
||||
var timers = {};
|
||||
|
||||
// When a new message comes in from the client
|
||||
exports.handleMessage = function(hook_name, context, callback){
|
||||
console.warn(context);
|
||||
if ( context.message.type == 'USERINFO_UPDATE' ) {
|
||||
console.warn ("LORDAMERCI!");
|
||||
}
|
||||
}
|
||||
|
||||
exports.padUpdate = function (hook_name, _pad) {
|
||||
|
||||
var pad = _pad.pad;
|
||||
var padId = pad.id;
|
||||
exports.sendUpdates(padId);
|
||||
|
||||
// does an interval not exist for this pad?
|
||||
if(!timers[padId]){
|
||||
console.debug("Created an interval time check for "+padId);
|
||||
// if not then create one and write it to the timers object
|
||||
timers[padId] = exports.createInterval(padId, checkInterval);
|
||||
}else{ // an interval already exists so don't create
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
exports.sendUpdates = function(padId){
|
||||
|
||||
// check to see if we can delete this interval
|
||||
API.getLastEdited(padId, function(callback, message){
|
||||
|
||||
// we delete an interval if a pad hasn't been edited in X seconds.
|
||||
var currTS = new Date().getTime();
|
||||
if(currTS - message.lastEdited > staleTime){
|
||||
console.warn("Interval went stale so deleting it from object and timer");
|
||||
var interval = timers[padId];
|
||||
clearInterval(timers[padId]); // remove the interval timer
|
||||
delete timers[padId]; // remove the entry from the padId
|
||||
|
||||
}else{
|
||||
console.debug("email timeotu not stale so not deleting");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
// The status of the users relationship with the pad -- IE if it's subscribed to this pad / if it's already on the pad
|
||||
// This comes frmo the database
|
||||
var userStatus = {};
|
||||
|
||||
// Temporary user object
|
||||
|
@ -13,47 +63,54 @@ exports.padUpdate = function (hook_name, _pad) {
|
|||
id: "a.n4gEeMLsv1GivNeh"
|
||||
}
|
||||
|
||||
var pad = _pad.pad;
|
||||
var padId = pad.id;
|
||||
|
||||
console.debug("ep_email_noficiations: padID of pad being edited:"+padId);
|
||||
exports.isUserEditingPad(padId, user, function(err,results){
|
||||
userStatus.userIsEditing = results;
|
||||
console.debug("isUserEditingPad is:", results);
|
||||
});
|
||||
|
||||
async.series([
|
||||
function(callback){
|
||||
userStatus.userIsEditing = exports.isUserEditingPad(padId, user);
|
||||
callback();
|
||||
},
|
||||
function(callback){
|
||||
console.warn("FOO");
|
||||
console.warn(userStatus);
|
||||
callback();
|
||||
}
|
||||
]);
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
exports.isUserEditingPad = function(padId, user){
|
||||
var foo = API.padUsers(padId, function(callback, padUsers){ // get the current users editing the pad
|
||||
// Is the user editing the pad?
|
||||
exports.isUserEditingPad = function(padId, user, cb){
|
||||
API.padUsers(padId, function(callback, padUsers){ // get the current users editing the pad
|
||||
|
||||
var userIsEditing = false;
|
||||
padUsers = padUsers.padUsers;
|
||||
console.debug("Pad Users:"+padUsers);
|
||||
|
||||
// for each user on the pad right now
|
||||
async.forEach(padUsers.padUsers,
|
||||
|
||||
async.forEach(padUsers,
|
||||
function(userOnPad, callback){
|
||||
|
||||
if(userOnPad.id == user.id){
|
||||
console.debug("I'm on the pad so don't send any notification");
|
||||
userIsEditing = true; // If the user is editing the pad then return true
|
||||
callback();
|
||||
}else{
|
||||
userIsEditing = false; // If the user isnt on this pad then that'd be okay to contact em
|
||||
}
|
||||
callback(userIsEditing);
|
||||
|
||||
},
|
||||
|
||||
function(err){
|
||||
console.warn(userIsEditing); // logs true.
|
||||
return userIsEditing; // function should return true but returns undefined
|
||||
}
|
||||
);
|
||||
});
|
||||
console.warn("FOO", foo);
|
||||
return foo;
|
||||
cb(null, userIsEditing);
|
||||
});
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
// Creates an interval process to check to send Updates based on checkInterval and it returns an ID
|
||||
exports.createInterval = function(padId){
|
||||
return setInterval(function(){
|
||||
exports.sendUpdates(padId), checkInterval
|
||||
});
|
||||
}
|
||||
|
||||
// Updates the database with the email record
|
||||
exports.setAuthorEmail = function (author, email, callback)
|
||||
{
|
||||
db.setSub("globalAuthor:" + author, ["email"], email, callback);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue