Ghost/ghost/admin/app/routes/settings/general.js
Kevin Ansfield a6c005e5be 🐛 Fixed unexpected "unsaved changes" modals when accessing screens
no issue

We weren't correctly clearing state for the "display modal" booleans when leaving screens. This meant that it was possible to end up in a state where where every time you access a screen you get the unsaved changes modal
2019-12-13 17:09:06 +00:00

60 lines
1.6 KiB
JavaScript

import AuthenticatedRoute from 'ghost-admin/routes/authenticated';
import CurrentUserSettings from 'ghost-admin/mixins/current-user-settings';
import RSVP from 'rsvp';
import {inject as service} from '@ember/service';
export default AuthenticatedRoute.extend(CurrentUserSettings, {
config: service(),
settings: service(),
beforeModel() {
this._super(...arguments);
return this.get('session.user')
.then(this.transitionAuthor())
.then(this.transitionEditor());
},
model() {
return RSVP.hash({
settings: this.settings.reload(),
availableTimezones: this.get('config.availableTimezones')
});
},
setupController(controller, models) {
// reset the leave setting transition
controller.set('showLeaveSettingsModal', false);
controller.set('leaveSettingsTransition', null);
controller.set('availableTimezones', models.availableTimezones);
},
actions: {
save() {
return this.controller.send('save');
},
reloadSettings() {
return this.settings.reload();
},
willTransition(transition) {
let controller = this.controller;
let settings = this.settings;
let settingsIsDirty = settings.get('hasDirtyAttributes');
if (settingsIsDirty) {
transition.abort();
controller.send('toggleLeaveSettingsModal', transition);
return;
}
}
},
buildRouteInfoMetadata() {
return {
titleToken: 'Settings - General'
};
}
});