MAPG-208 error handling adaptations #13

Merged
bence merged 1 commits from bugfix/MAPG-208-error-messages into develop 2021-03-21 16:39:43 +01:00
2 changed files with 44 additions and 21 deletions

View File

@ -174,11 +174,15 @@
} }
document.getElementById('loading').style.visibility = 'visible'; document.getElementById('loading').style.visibility = 'visible';
var url = roomId ? '/multiGame/' + roomId + '/prepare.json' : '/game/' + mapId + '/prepare.json'; var url = roomId ? '/multiGame/' + roomId + '/prepare.json' : '/game/' + mapId + '/prepare.json';
MapGuesser.httpRequest('POST', url, function () { MapGuesser.httpRequest('POST', url, function () {
document.getElementById('loading').style.visibility = 'hidden'; document.getElementById('loading').style.visibility = 'hidden';
if (this.response.error) {
Game.handleErrorResponse(this.response.error);
return;
}
document.getElementById('mapName').innerHTML = this.response.mapName; document.getElementById('mapName').innerHTML = this.response.mapName;
Game.mapBounds = this.response.bounds; Game.mapBounds = this.response.bounds;
@ -194,7 +198,6 @@
} }
document.getElementById('loading').style.visibility = 'visible'; document.getElementById('loading').style.visibility = 'visible';
Game.MultiConnector.connect(); Game.MultiConnector.connect();
} }
}, data); }, data);
@ -216,13 +219,12 @@
} }
document.getElementById('loading').style.visibility = 'visible'; document.getElementById('loading').style.visibility = 'visible';
MapGuesser.httpRequest('POST', '/game/' + mapId + '/initialData.json', function () { MapGuesser.httpRequest('POST', '/game/' + mapId + '/initialData.json', function () {
document.getElementById('loading').style.visibility = 'hidden'; document.getElementById('loading').style.visibility = 'hidden';
document.getElementById('panoCover').style.visibility = 'hidden'; document.getElementById('panoCover').style.visibility = 'hidden';
if (this.response.error) { if (this.response.error) {
//TODO: handle this error Game.handleErrorResponse(this.response.error);
return; return;
} }
@ -322,19 +324,26 @@
}, },
handleErrorResponse: function (error) { handleErrorResponse: function (error) {
// for the time being we only handle the "no_session_found" error and reset the game switch (error) {
case 'no_session_found':
if (roomId) { MapGuesser.showModalWithContent('Error', 'Your session is invalid!', [{
//TODO: better error message type: 'button',
alert('Your session is invalid, please start multiplayer again!') classNames: [],
return; text: 'Restart game',
onclick: function () {
window.location.reload();
} }
}]);
break;
MapGuesser.httpRequest('GET', '/game/' + mapId + '/prepare.json', function () { case 'game_already_started':
Game.mapBounds = this.response.bounds; MapGuesser.showModalWithContent('Error', 'This game is already started, you cannot join.');
break;
Game.reset(); default:
}); MapGuesser.showModalWithContent('Error', 'Error code: \'' + error + '\'');
break
}
}, },
loadPano: function (panoId, pov) { loadPano: function (panoId, pov) {
@ -359,15 +368,17 @@
if (Game.adaptGuess) { if (Game.adaptGuess) {
document.getElementById('guess').classList.remove('adapt'); document.getElementById('guess').classList.remove('adapt');
} }
document.getElementById('loading').style.visibility = 'visible';
document.getElementById('panoCover').style.visibility = 'visible'; document.getElementById('panoCover').style.visibility = 'visible';
var data = new FormData(); var data = new FormData();
data.append('lat', String(guessPosition.lat)); data.append('lat', String(guessPosition.lat));
data.append('lng', String(guessPosition.lng)); data.append('lng', String(guessPosition.lng));
document.getElementById('loading').style.visibility = 'visible';
var url = roomId ? '/multiGame/' + roomId + '/guess.json' : '/game/' + mapId + '/guess.json'; var url = roomId ? '/multiGame/' + roomId + '/guess.json' : '/game/' + mapId + '/guess.json';
MapGuesser.httpRequest('POST', url, function () { MapGuesser.httpRequest('POST', url, function () {
document.getElementById('loading').style.visibility = 'hidden';
if (this.response.error) { if (this.response.error) {
Game.handleErrorResponse(this.response.error); Game.handleErrorResponse(this.response.error);
return; return;
@ -376,7 +387,6 @@
Game.guessMarker.setMap(null); Game.guessMarker.setMap(null);
Game.guessMarker = null; Game.guessMarker = null;
document.getElementById('loading').style.visibility = 'hidden';
document.getElementById('guess').classList.add('result'); document.getElementById('guess').classList.add('result');
Game.scoreSum += this.response.result.score; Game.scoreSum += this.response.result.score;
@ -687,9 +697,13 @@
} }
document.getElementById('loading').style.visibility = 'visible'; document.getElementById('loading').style.visibility = 'visible';
MapGuesser.httpRequest('POST', '/multiGame/' + roomId + '/nextRound.json', function () { MapGuesser.httpRequest('POST', '/multiGame/' + roomId + '/nextRound.json', function () {
document.getElementById('loading').style.visibility = 'hidden'; document.getElementById('loading').style.visibility = 'hidden';
if (this.response.error) {
Game.handleErrorResponse(this.response.error);
return;
}
}); });
} else { } else {
Game.resetRound(); Game.resetRound();
@ -707,9 +721,13 @@
} }
document.getElementById('loading').style.visibility = 'visible'; document.getElementById('loading').style.visibility = 'visible';
MapGuesser.httpRequest('POST', '/multiGame/' + roomId + '/initialData.json', function () { MapGuesser.httpRequest('POST', '/multiGame/' + roomId + '/initialData.json', function () {
document.getElementById('loading').style.visibility = 'hidden'; document.getElementById('loading').style.visibility = 'hidden';
if (this.response.error) {
Game.handleErrorResponse(this.response.error);
return;
}
}); });
} else { } else {
Game.reset(); Game.reset();
@ -722,10 +740,15 @@
} }
document.getElementById('multi').style.visibility = 'hidden'; document.getElementById('multi').style.visibility = 'hidden';
document.getElementById('loading').style.visibility = 'visible';
document.getElementById('loading').style.visibility = 'visible';
MapGuesser.httpRequest('POST', '/multiGame/' + roomId + '/initialData.json', function () { MapGuesser.httpRequest('POST', '/multiGame/' + roomId + '/initialData.json', function () {
document.getElementById('loading').style.visibility = 'hidden'; document.getElementById('loading').style.visibility = 'hidden';
if (this.response.error) {
Game.handleErrorResponse(this.response.error);
return;
}
}); });
} }
})(); })();

View File

@ -15,7 +15,7 @@
@endsection @endsection
@section(subheader) @section(subheader)
<span id="mapName" class="bold"></span><!-- <span id="mapName" class="bold">Loading map...</span><!--
--><span>Round <span id="currentRound" class="bold"></span></span><!-- --><span>Round <span id="currentRound" class="bold"></span></span><!--
--><span>Score <span id="currentScoreSum" class="bold"></span></span> --><span>Score <span id="currentScoreSum" class="bold"></span></span>
@endsection @endsection