MCPcopy Create free account
hub / github.com/codecombat/codecombat / getLevelStatusMap

Function getLevelStatusMap

ozaria/site/common/ozariaUtils.js:120–138  ·  view source on GitHub ↗
(sessions)

Source from the content-addressed store, hash-verified

118 * @returns {Object} - Object with key as the level original id, and value = complete/started/capstone stage last 'completed'.
119 */
120export const getLevelStatusMap = (sessions) => {
121 const levelStatusMap = {}
122 for (const session of sessions) {
123 const levelOriginal = (session.level || session.get('level') || {}).original
124 const sessionState = session.state || session.get('state') || {}
125 const capstoneStage = sessionState.capstoneStage // current capstone stage (undefined if user is on stage 1)
126 const isLevelAreadyComplete = levelOriginal && (levelStatusMap[levelOriginal] === 'complete' || (capstoneStage && levelStatusMap[levelOriginal] === capstoneStage - 1))
127 if (!isLevelAreadyComplete) { // Don't overwrite a complete session with an incomplete one
128 if (capstoneStage && capstoneStage > 1) {
129 levelStatusMap[levelOriginal] = capstoneStage - 1 // for levels played in stages (capstone levels), levelStatusMap = last completed stage
130 } else if (sessionState.complete) {
131 levelStatusMap[levelOriginal] = 'complete'
132 } else {
133 levelStatusMap[levelOriginal] = 'started' // for levels played in stages (capstone levels) as well as normal levels
134 }
135 }
136 }
137 return levelStatusMap
138}
139
140/**
141 * Gets the next level original ids for a given level

Callers 1

findNextLevelsBySessionFunction · 0.85

Calls 1

getMethod · 0.45

Tested by

no test coverage detected