moah client side stuff and temp database schema

This commit is contained in:
John McLear 2013-01-30 18:09:04 +00:00
parent 2a48c2da55
commit 3ed466930c
2 changed files with 97 additions and 15 deletions

View file

@ -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: "<form id='ep_email_form'><label for='ep_email'><input type=text id='ep_email'><input type=submit></form>",
text: "<form id='ep_email_form'><label for='ep_email'><input id='ep_email' placeholder='your@email.com' value='foo@bar.com' type=email><input type=submit></form>",
// (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;

View file

@ -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);
}