diff --git a/app/game/components/code-editor/code-editor.js b/app/game/components/code-editor/code-editor.js index a8996b9..dd0d782 100644 --- a/app/game/components/code-editor/code-editor.js +++ b/app/game/components/code-editor/code-editor.js @@ -94,7 +94,7 @@ export default class CodeEditor extends Component { CodeMirror.commands.autocomplete(editor, null, { completeSingle: false }); } - if (typeof this.props.onChange === 'function') { + if (typeof this.props.onChange === 'function' && !editor.getOption('readOnly')) { this.props.onChange(value, event); } } diff --git a/app/game/middleware/server-pipe.js b/app/game/middleware/server-pipe.js index 83a9093..ff727e3 100644 --- a/app/game/middleware/server-pipe.js +++ b/app/game/middleware/server-pipe.js @@ -17,7 +17,7 @@ const MESSAGE_NAME = ui.MESSAGE_NAME; function formatStateMessage(message) { const { roundCountdown, startCountdown, roundPhase, puzzle } = message; - const { puzzleIndex, puzzleCount, displayName, playerInput } = message; + const { puzzleIndex, puzzleCount, displayName, playerInput, solution } = message; return { round: { @@ -26,6 +26,7 @@ function formatStateMessage(message) { remaining: roundCountdown, phase: roundPhase, playerInput, + solution: solution ? Object.assign({}, solution) : null, }, participant: { displayName, diff --git a/app/game/reducers/current-round.js b/app/game/reducers/current-round.js index b24c499..536ba0e 100644 --- a/app/game/reducers/current-round.js +++ b/app/game/reducers/current-round.js @@ -20,12 +20,16 @@ const defaultState = { playerInput: '', }; -function updateSolution(state, solution) { - return Object.assign({}, state, { +function formatSolution(solution) { + return { solutionResult: solution.error || solution.result, solutionTime: solution.time, correct: solution.correct, - }); + }; +} + +function updateSolution(state, solution) { + return Object.assign({}, state, formatSolution(solution)); } function updateRound(state, round) { @@ -115,6 +119,10 @@ function updateRoundState(state, roundState) { round.expected = roundState.puzzle.expected || defaultState.expected; } + if (roundState.solution) { + Object.assign(round, formatSolution(roundState.solution)); + } + return Object.assign({}, state, round); } diff --git a/package-lock.json b/package-lock.json index 014f55a..e562ef3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5655,7 +5655,7 @@ "dev": true }, "message-factory": { - "version": "github:21-23/message-factory#d57c8b80a8556ca62fab0d135384366071fd4b30" + "version": "github:21-23/message-factory#df6dc8dd8d043827903d4c7eb55c2d045b5e7a93" }, "methods": { "version": "1.1.2", diff --git a/package.json b/package.json index 8959236..139b306 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "dependencies": { "codemirror": "^5.23.0", "js-beautify": "^1.6.8", - "message-factory": "21-23/message-factory#v5.1.0", + "message-factory": "github:21-23/message-factory#v5.2.3", "phoenix": "github:21-23/phoenix#v2.1.1", "preact": "^7.1.0", "preact-compat": "^3.16.0",