diff --git a/static/js/ep_email.js b/static/js/ep_email.js index 35af671..a690027 100644 --- a/static/js/ep_email.js +++ b/static/js/ep_email.js @@ -1,15 +1,50 @@ exports.postAceInit = function(){ + // after 10 seconds if we dont already have an email for this author then prompt them - setTimeout(function(){askClientToEnterEmail()},10000); + setTimeout(function(){init()},10000); +} + +function init(){ + if(clientHasAlreadyRegistered){ // if the client has already registered for emails on this pad. + showAlreadyRegistered(); // client has already registered, let em know.. + }else{ + askClientToEnterEmail(); // ask the client to register + } +} + +function showAlreadyRegistered(){ // the client already registered for emails on this pad so notify the UI + $.gritter.add({ + // (string | mandatory) the heading of the notification + title: "Email subscription", + // (string | mandatory) the text inside the notification + text: "You are already registered for emails for this pad", + // (bool | optional) if you want it to fade out on its own or just sit there + sticky: false + }); + +} + +function clientHasAlreadyRegistered(){ // Has the client already registered for emails on this? + // Given a specific AuthorID do we have an email address in the database? + // Given that email address is it registered to this pad? + // need to pass the server a message to check + var userId = pad.getUserId(); + var message = {}; + message.type = 'USERINFO_AUTHOR_EMAIL_IS_REGISTERED_TO_PAD'; + message.userInfo = {}; + message.userInfo.userId = userId; + pad.collabClient.sendMessage(message); + + } function askClientToEnterEmail(){ $.gritter.add({ // (string | mandatory) the heading of the notification - title: "Recieve Email notifications for this pad", + title: "Email notifications for this pad", // (string | mandatory) the text inside the notification - text: "
", + text: "", // (bool | optional) if you want it to fade out on its own or just sit there sticky: true, // (int | optional) the time you want it to be alive for before fading out @@ -38,7 +73,7 @@ function sendEmailToServer(){ var message = {}; message.type = 'USERINFO_UPDATE'; message.userInfo = {}; -// message.userInfo.colorId = "#0000"; + message.padId = pad.getPadId(); message.userInfo.email = email; message.userInfo.userId = userId; diff --git a/update.js b/update.js index 0af6166..d57c589 100644 --- a/update.js +++ b/update.js @@ -1,4 +1,4 @@ - var db = require('../../src/node/db/DB').db; + var db = require('../../src/node/db/DB').db, API = require('../../src/node/db/API.js'), async = require('../../src/node_modules/async'), settings = require('../../src/node/utils/Settings'); @@ -10,25 +10,69 @@ var timers = {}; // When a new message comes in from the client exports.handleMessage = function(hook_name, context, callback){ - console.warn(context); if (context.message && context.message.data){ - if (context.message.data.type == 'USERINFO_UPDATE' ) { // if it smells okay.. + if (context.message.data.type == 'USERINFO_UPDATE' ) { // if it's a request to update an authors email if (context.message.data.userInfo){ -console.warn("foo",context.message.data.userInfo); + console.debug("userInfo",context.message.data.userInfo); if(context.message.data.userInfo.email){ // it contains email - exports.setAuthorEmail( - context.message.data.userInfo.userId, - context.message.data.userInfo.email, callback); + // console.warn(context.message.data.userInfo.userId); + + console.debug(context.message); + + db.get("emailSubscription:"+context.message.data.padId, function(err, userIds){ // does email Subscription already exist for this user? + + console.debug("UserIds subscribed by email to this pad:", userIds); + + if(userIds){ // THIS NEEDS TO BE AN OBJECT :: TODO + // This user ID is already assigned to this padId so don't do anything except tell the user they are already subscribed somehow.. + + context.client.json.send({ type: "COLLABROOM", + data:{ + type: email_subscription_success, + payload: false + } + }); + + }else{ + + // console.warn ("WRITE MY GOODNESS TO THE DATABASE!",context.message.data.userInfo.email); + + exports.setAuthorEmail( + context.message.data.userInfo.userId, + context.message.data.userInfo.email, callback + ); + + exports.setAuthorEmailRegistered( + context.message.data.userInfo.userId, + context.message.data.padId, callback + ); + + context.client.json.send({ type: "COLLABROOM", + data:{ + type: email_subscription_success, + payload: true + } + }); + + } + }); + + callback(null); // don't run onto passing colorId or anything else to the message handler - console.warn ("WRITE MY GOODNESS TO THE DATABASE!",context.message.data.userInfo.email); } } - console.warn ("LORDAMERCI!"); } } callback(); } +exports.doesPadIdEmailAssociationAlreadyExist = function (padId, email){ + var found = false; + db.get("emailSubscription:"+padId, function(err, value){ + return value; + }); +} + exports.padUpdate = function (hook_name, _pad) { var pad = _pad.pad; @@ -122,8 +166,11 @@ exports.createInterval = function(padId){ } // Updates the database with the email record -exports.setAuthorEmail = function (author, email, callback) -{ +exports.setAuthorEmail = function (author, email, callback){ db.setSub("globalAuthor:" + author, ["email"], email, callback); } +// Write email and padId to the database +exports.setAuthorEmailRegistered = function(author, padId, callback){ + db.set("emailSubscription:" + padId, author); +}