Fix : get more of our campaign overworld properties we need

This commit is contained in:
Nick Winter 2015-11-19 13:20:42 -08:00
parent 3926204f47
commit ef7618497f
2 changed files with 8 additions and 3 deletions
app/views/play
server/campaigns

View file

@ -33,9 +33,9 @@ class LevelSessionsCollection extends CocoCollection
@url = "/db/user/#{me.id}/level.sessions?project=state.complete,levelID,state.difficulty,playtime"
class CampaignsCollection extends CocoCollection
url: '/db/campaign/-/overworld'
# We don't send all of levels, just the parts needed in countLevels
url: '/db/campaign/-/overworld?project=slug,adjacentCampaigns,name,fullName,description,i18n,color,levels'
model: Campaign
project: ['name', 'fullName', 'description', 'i18n']
module.exports = class CampaignView extends RootView
id: 'campaign-view'

View file

@ -54,12 +54,17 @@ CampaignHandler = class CampaignHandler extends Handler
getOverworld: (req, res) ->
return @sendForbiddenError(res) if not @hasAccess(req)
q = @modelClass.find {}, slug: 1, adjacentCampaigns: 1, fullName: 1, description: 1, color: 1
projection = {}
if req.query.project
projection[field] = 1 for field in req.query.project.split(',')
q = @modelClass.find {}, projection
q.exec (err, documents) =>
return @sendDatabaseError(res, err) if err
formatCampaign = (doc) =>
obj = @formatEntity(req, doc)
obj.adjacentCampaigns = _.mapValues(obj.adjacentCampaigns, (a) -> _.pick(a, ['showIfUnlocked', 'color', 'name', 'description' ]))
for original, level of obj.levels
obj.levels[original] = _.pick level, ['locked', 'disabled', 'original', 'rewards']
obj
documents = (formatCampaign(doc) for doc in documents)
@sendSuccess(res, documents)