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 ##