Resolves #993 -- warn on before unloading

This commit is contained in:
Peter Cottle 2022-08-08 10:34:38 -06:00
parent d9fe304038
commit be58befe52
5 changed files with 26 additions and 2 deletions

View file

@ -18,7 +18,14 @@ var LevelActions = {
AppDispatcher.handleViewAction({
type: ActionTypes.RESET_LEVELS_SOLVED
});
}
},
setIsSolvingLevel: function(isSolvingLevel) {
AppDispatcher.handleViewAction({
type: ActionTypes.SET_IS_SOLVING_LEVEL,
isSolvingLevel: isSolvingLevel,
});
},
};

View file

@ -75,6 +75,10 @@ var init = function() {
window.LocaleStore = LocaleStore;
window.LocaleActions = LocaleActions;
window.intl = intl;
$(window).on('beforeunload', function(e) {
return GlobalStateStore.getIsSolvingLevel() ? 'you have a level in progress' : null;
});
};
var vcsModeRefresh = function(eventData) {

View file

@ -32,7 +32,8 @@ module.exports = {
* solve the level, not ask for solution
* or solve it again.
*/
SOLVE_LEVEL: null
SOLVE_LEVEL: null,
SET_IS_SOLVING_LEVEL: null,
}),
PayloadSources: keyMirror({

View file

@ -58,6 +58,7 @@ var Level = Sandbox.extend({
this.startOffCommand();
this.handleOpen(options.deferred);
LevelActions.setIsSolvingLevel(true);
},
getIsGoalExpanded: function() {
@ -65,6 +66,7 @@ var Level = Sandbox.extend({
},
handleOpen: function(deferred) {
LevelActions.setIsSolvingLevel(true);
deferred = deferred || Q.defer();
// if there is a multiview in the beginning, open that
@ -573,6 +575,7 @@ var Level = Sandbox.extend({
delete this.mainVis;
delete this.goalVis;
delete this.goalCanvasHolder;
LevelActions.setIsSolvingLevel(false);
},
getInstantCommands: function() {

View file

@ -10,6 +10,7 @@ var _isAnimating = false;
var _flipTreeY = false;
var _numLevelsSolved = 0;
var _disableLevelInstructions = false;
var _isSolvingLevel = false;
var GlobalStateStore = Object.assign(
{},
@ -20,6 +21,10 @@ AppConstants.StoreSubscribePrototype,
return _isAnimating;
},
getIsSolvingLevel: function() {
return _isSolvingLevel;
},
getFlipTreeY: function() {
return _flipTreeY;
},
@ -37,6 +42,10 @@ AppConstants.StoreSubscribePrototype,
var shouldInform = false;
switch (action.type) {
case ActionTypes.SET_IS_SOLVING_LEVEL:
_isSolvingLevel = action.isSolvingLevel;
shouldInform = true;
break;
case ActionTypes.CHANGE_IS_ANIMATING:
_isAnimating = action.isAnimating;
shouldInform = true;