(level, capstoneStage = 1)
| 146 | * @returns {Object} - Next level object containing 'Original' id and next level's stage. |
| 147 | */ |
| 148 | export const getNextLevelForLevel = (level, capstoneStage = 1) => { |
| 149 | const nextLevels = level.nextLevels || {} |
| 150 | let nextLevel = [] |
| 151 | if (capstoneStage && level.isPlayedInStages) { |
| 152 | nextLevel = Object.values(nextLevels).filter((n) => (n.conditions || {}).afterCapstoneStage === capstoneStage) |
| 153 | } else { |
| 154 | // Ensure that the next level is sorted by afterCapstoneStage |
| 155 | nextLevel = Object.values(nextLevels).sort((a, b) => { |
| 156 | const afterCapstoneStageA = a.conditions?.afterCapstoneStage ?? 0 |
| 157 | const afterCapstoneStageB = b.conditions?.afterCapstoneStage ?? 0 |
| 158 | |
| 159 | return afterCapstoneStageA - afterCapstoneStageB |
| 160 | }) |
| 161 | } |
| 162 | return nextLevel[0] // assuming there can only be one next level for a given level and/or capstone stage |
| 163 | } |
| 164 | |
| 165 | /** |
| 166 | * Constructs the next level link |
no test coverage detected