Step towards working with new middleware, still broken

This commit is contained in:
Tyler Renelle
2012-07-17 14:47:19 -04:00
parent f4c9f05ae0
commit 036badb3e4
4 changed files with 109 additions and 93 deletions

View File

@@ -1,5 +1,5 @@
// Generated by CoffeeScript 1.3.3 // 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'); 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) { get('/:userId?', function(page, model, _arg) {
var debuggingUsers, userId; var userId;
userId = _arg.userId; userId = _arg.userId;
debuggingUsers = parseInt(userId) < 40; return model.subscribe("users", function(err, users) {
if ((userId != null) && (Guid.isGuid(userId) || debuggingUsers)) { var newUser;
model.set('_session.userId', userId); userId = model.get('_userId');
return getRoom(page, model, userId); debug(userId, 'model.get _userId');
} if (model.get("users." + userId)) {
if (userId = model.get('_session.userId')) { debug(userId, 'model.get userId');
return getRoom(page, model, userId); return getRoom(page, model, userId);
} } else {
userId = Guid.raw(); newUser = {
model.set('_session.userId', userId); tasks: {}
model.set("users." + userId, {}); };
return getRoom(page, model, userId); 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) { getRoom = function(page, model, userId) {
return model.subscribe("users." + userId, function(err, user) { var user;
var task, _i, _j, _k, _l, _len, _len1, _len2, _len3, _ref1, _ref2, _ref3, _ref4; user = model.at("users." + userId);
model.ref('_user', user); model.ref('_user', user);
/* Set User Defaults debug(user, 'user');
*/ /* Set User Defaults
*/
user.setNull('stats', { user.setNull('stats', {
money: 0, money: 0,
exp: 0, exp: 0,
lvl: 1, lvl: 1,
hp: 50 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('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: '<u>Habits: Constantly Track</u><br/>For some habits, it only makes sense to <b>gain</b> points (like this one).',
value: 0,
up: true,
down: false
});
}
return page.render();
}; };
ready(function(model) { ready(function(model) {

View File

@@ -17,7 +17,9 @@ serverError = require('./serverError');
racer = require('derby/node_modules/racer'); racer = require('derby/node_modules/racer');
racer.set('transports', ['xhr-polling']); racer.use(racer.logPlugin);
racer.set('bundle timeout', 10000);
expressApp = express(); expressApp = express();

View File

@@ -44,31 +44,42 @@ view.fn "silver", (num) ->
## ROUTES ## ## ROUTES ##
debug = (obj, message) ->
console.log obj, "[debug] #{message}"
get '/:userId?', (page, model, {userId}) -> get '/:userId?', (page, model, {userId}) ->
# Saved session # # Saved session
# TODO: this doesn't check that the user at guid exists, and # # TODO: this doesn't check that the user at guid exists, and
# will probably error since no user is created. Will only happen if # # 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 # # first access, but still. model.get(userId) and model.get("users.#{userId}") aren't
# working for some reason # # 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 # 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)? # if userId? and (Guid.isGuid(userId) or debuggingUsers)# and model.get(userId)?
model.set '_session.userId', userId # model.set '_userId', userId
return getRoom page, model, userId # return getRoom page, model, userId
# Render page if a userId is already stored in session data model.subscribe "users", (err, users) ->
if userId = model.get '_session.userId' # The session middleware will assign a _userId automatically
return getRoom page, model, userId # Render page if a userId is already stored in session data
userId = model.get '_userId'
# Otherwise, select a new userId and initialize user debug userId, 'model.get _userId'
userId = Guid.raw() if model.get "users.#{userId}"
model.set '_session.userId', userId debug userId, 'model.get userId'
model.set "users.#{userId}", {} return getRoom page, model, userId
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) -> getRoom = (page, model, userId) ->
model.subscribe "users.#{userId}", (err, user) -> user = model.at("users.#{userId}")
model.ref '_user', user model.ref '_user', user
debug user, 'user'
### Set User Defaults ### ### Set User Defaults ###
@@ -90,10 +101,11 @@ getRoom = (page, model, userId) ->
model.refList "_todoList", "_user.tasks", "_user.todoIds" model.refList "_todoList", "_user.tasks", "_user.todoIds"
model.refList "_rewardList", "_user.tasks", "_user.rewardIds" model.refList "_rewardList", "_user.tasks", "_user.rewardIds"
unless model.get('_user.tasks') unless model.get('_user.tasks')
model.push '_habitList', task for task in content.defaultTasks.habits model.push '_habitList', {type: 'habit', text: '1h Productive Work', notes: '<u>Habits: Constantly Track</u><br/>For some habits, it only makes sense to <b>gain</b> points (like this one).', value: 0, up: true, down: false }
model.push '_dailyList', task for task in content.defaultTasks.dailys # model.push '_habitList', task for task in content.defaultTasks.habits
model.push '_todoList', task for task in content.defaultTasks.todos # model.push '_dailyList', task for task in content.defaultTasks.dailys
model.push '_rewardList', task for task in content.defaultTasks.rewards # model.push '_todoList', task for task in content.defaultTasks.todos
# model.push '_rewardList', task for task in content.defaultTasks.rewards
page.render() page.render()

View File

@@ -9,8 +9,9 @@ serverError = require './serverError'
## RACER CONFIGURATION ## ## RACER CONFIGURATION ##
racer = require 'derby/node_modules/racer' racer = require 'derby/node_modules/racer'
racer.set('transports', ['xhr-polling']) racer.use(racer.logPlugin)
#racer.set('bundle timeout', 10000) #racer.set('transports', ['xhr-polling'])
racer.set('bundle timeout', 10000)
## SERVER CONFIGURATION ## ## SERVER CONFIGURATION ##