mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
Step towards working with new middleware, still broken
This commit is contained in:
133
lib/app/index.js
133
lib/app/index.js
@@ -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) {
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|
||||||
|
|||||||
@@ -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 ##
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user