diff --git a/lib/app/index.js b/lib/app/index.js index 624662897a..3bb456a437 100644 --- a/lib/app/index.js +++ b/lib/app/index.js @@ -1,5 +1,5 @@ // Generated by CoffeeScript 1.3.3 -var Guid, content, derby, get, getRoom, ready, view, _ref; +var Guid, content, debug, derby, get, getRoom, ready, view, _ref; derby = require('derby'); @@ -76,78 +76,79 @@ view.fn("silver", function(num) { } }); +debug = function(obj, message) { + return console.log(obj, "[debug] " + message); +}; + get('/:userId?', function(page, model, _arg) { - var debuggingUsers, userId; + var userId; userId = _arg.userId; - debuggingUsers = parseInt(userId) < 40; - if ((userId != null) && (Guid.isGuid(userId) || debuggingUsers)) { - model.set('_session.userId', userId); - return getRoom(page, model, userId); - } - if (userId = model.get('_session.userId')) { - return getRoom(page, model, userId); - } - userId = Guid.raw(); - model.set('_session.userId', userId); - model.set("users." + userId, {}); - return getRoom(page, model, userId); + return model.subscribe("users", function(err, users) { + var newUser; + userId = model.get('_userId'); + debug(userId, 'model.get _userId'); + if (model.get("users." + userId)) { + debug(userId, 'model.get userId'); + return getRoom(page, model, userId); + } else { + newUser = { + tasks: {} + }; + return users.set(userId, newUser, function(err, path, value) { + debug({ + err: err, + path: path, + value: value + }, 'new user'); + return getRoom(page, model, userId); + }); + } + }); }); getRoom = function(page, model, userId) { - return model.subscribe("users." + userId, function(err, user) { - var task, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref1, _ref2, _ref3, _ref4; - model.ref('_user', user); - /* Set User Defaults - */ + var user; + user = model.at("users." + userId); + model.ref('_user', user); + debug(user, 'user'); + /* Set User Defaults + */ - user.setNull('stats', { - money: 0, - exp: 0, - lvl: 1, - hp: 50 - }); - user.setNull('items', { - itemsEnabled: false, - armor: 0, - weapon: 0 - }); - model.set('_items', { - armor: content.items.armor[parseInt(user.get('items.armor')) + 1], - weapon: content.items.weapon[parseInt(user.get('items.weapon')) + 1], - potion: content.items.potion, - reroll: content.items.reroll - }); - model.fn('_tnl', '_user.stats.lvl', function(lvl) { - return 50 * Math.pow(lvl, 2) - 150 * lvl + 200; - }); - model.refList("_habitList", "_user.tasks", "_user.habitIds"); - model.refList("_dailyList", "_user.tasks", "_user.dailyIds"); - model.refList("_todoList", "_user.tasks", "_user.todoIds"); - model.refList("_rewardList", "_user.tasks", "_user.rewardIds"); - if (!model.get('_user.tasks')) { - _ref1 = content.defaultTasks.habits; - for (_i = 0, _len = _ref1.length; _i < _len; _i++) { - task = _ref1[_i]; - model.push('_habitList', task); - } - _ref2 = content.defaultTasks.dailys; - for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { - task = _ref2[_j]; - model.push('_dailyList', task); - } - _ref3 = content.defaultTasks.todos; - for (_k = 0, _len2 = _ref3.length; _k < _len2; _k++) { - task = _ref3[_k]; - model.push('_todoList', task); - } - _ref4 = content.defaultTasks.rewards; - for (_l = 0, _len3 = _ref4.length; _l < _len3; _l++) { - task = _ref4[_l]; - model.push('_rewardList', task); - } - } - return page.render(); + user.setNull('stats', { + money: 0, + exp: 0, + lvl: 1, + hp: 50 }); + user.setNull('items', { + itemsEnabled: false, + armor: 0, + weapon: 0 + }); + model.set('_items', { + armor: content.items.armor[parseInt(user.get('items.armor')) + 1], + weapon: content.items.weapon[parseInt(user.get('items.weapon')) + 1], + potion: content.items.potion, + reroll: content.items.reroll + }); + model.fn('_tnl', '_user.stats.lvl', function(lvl) { + return 50 * Math.pow(lvl, 2) - 150 * lvl + 200; + }); + model.refList("_habitList", "_user.tasks", "_user.habitIds"); + model.refList("_dailyList", "_user.tasks", "_user.dailyIds"); + model.refList("_todoList", "_user.tasks", "_user.todoIds"); + model.refList("_rewardList", "_user.tasks", "_user.rewardIds"); + if (!model.get('_user.tasks')) { + model.push('_habitList', { + type: 'habit', + text: '1h Productive Work', + notes: 'Habits: Constantly Track
For some habits, it only makes sense to gain points (like this one).', + value: 0, + up: true, + down: false + }); + } + return page.render(); }; ready(function(model) { diff --git a/lib/server/index.js b/lib/server/index.js index fbd6bfd691..b5ccdda9a2 100644 --- a/lib/server/index.js +++ b/lib/server/index.js @@ -17,7 +17,9 @@ serverError = require('./serverError'); racer = require('derby/node_modules/racer'); -racer.set('transports', ['xhr-polling']); +racer.use(racer.logPlugin); + +racer.set('bundle timeout', 10000); expressApp = express(); diff --git a/src/app/index.coffee b/src/app/index.coffee index 8701faffc2..d89030eea5 100644 --- a/src/app/index.coffee +++ b/src/app/index.coffee @@ -44,31 +44,42 @@ view.fn "silver", (num) -> ## ROUTES ## +debug = (obj, message) -> + console.log obj, "[debug] #{message}" + get '/:userId?', (page, model, {userId}) -> - # Saved session - # TODO: this doesn't check that the user at guid exists, and - # will probably error since no user is created. Will only happen if - # first access, but still. model.get(userId) and model.get("users.#{userId}") aren't - # working for some reason - debuggingUsers = (parseInt(userId) < 40) #these are users created before guid was in use, need to convert them to guid and get rid of this - if userId? and (Guid.isGuid(userId) or debuggingUsers)# and model.get(userId)? - model.set '_session.userId', userId - return getRoom page, model, userId - - # Render page if a userId is already stored in session data - if userId = model.get '_session.userId' - return getRoom page, model, userId - - # Otherwise, select a new userId and initialize user - userId = Guid.raw() - model.set '_session.userId', userId - model.set "users.#{userId}", {} - getRoom page, model, userId + # # Saved session + # # TODO: this doesn't check that the user at guid exists, and + # # will probably error since no user is created. Will only happen if + # # first access, but still. model.get(userId) and model.get("users.#{userId}") aren't + # # working for some reason + # debuggingUsers = (parseInt(userId) < 40) #these are users created before guid was in use, need to convert them to guid and get rid of this + # if userId? and (Guid.isGuid(userId) or debuggingUsers)# and model.get(userId)? + # model.set '_userId', userId + # return getRoom page, model, userId + + model.subscribe "users", (err, users) -> + # The session middleware will assign a _userId automatically + # Render page if a userId is already stored in session data + userId = model.get '_userId' + debug userId, 'model.get _userId' + if model.get "users.#{userId}" + debug userId, 'model.get userId' + return getRoom page, model, userId + else + # Otherwise, select a new userId and initialize user + newUser = { + tasks: {} + } + users.set userId, newUser, (err, path, value) -> + debug {err:err, path:path, value:value}, 'new user' + getRoom page, model, userId getRoom = (page, model, userId) -> - model.subscribe "users.#{userId}", (err, user) -> + user = model.at("users.#{userId}") model.ref '_user', user + debug user, 'user' ### Set User Defaults ### @@ -90,10 +101,11 @@ getRoom = (page, model, userId) -> model.refList "_todoList", "_user.tasks", "_user.todoIds" model.refList "_rewardList", "_user.tasks", "_user.rewardIds" unless model.get('_user.tasks') - model.push '_habitList', task for task in content.defaultTasks.habits - model.push '_dailyList', task for task in content.defaultTasks.dailys - model.push '_todoList', task for task in content.defaultTasks.todos - model.push '_rewardList', task for task in content.defaultTasks.rewards + model.push '_habitList', {type: 'habit', text: '1h Productive Work', notes: 'Habits: Constantly Track
For some habits, it only makes sense to gain points (like this one).', value: 0, up: true, down: false } + # model.push '_habitList', task for task in content.defaultTasks.habits + # model.push '_dailyList', task for task in content.defaultTasks.dailys + # model.push '_todoList', task for task in content.defaultTasks.todos + # model.push '_rewardList', task for task in content.defaultTasks.rewards page.render() diff --git a/src/server/index.coffee b/src/server/index.coffee index ac7f49891b..537adf4ee4 100644 --- a/src/server/index.coffee +++ b/src/server/index.coffee @@ -9,8 +9,9 @@ serverError = require './serverError' ## RACER CONFIGURATION ## racer = require 'derby/node_modules/racer' -racer.set('transports', ['xhr-polling']) -#racer.set('bundle timeout', 10000) +racer.use(racer.logPlugin) +#racer.set('transports', ['xhr-polling']) +racer.set('bundle timeout', 10000) ## SERVER CONFIGURATION ##