From d0c2caec9ed3876ff3e199e0787f6663624a7c4c Mon Sep 17 00:00:00 2001 From: Kevin Ansfield Date: Tue, 7 May 2019 14:04:16 +0100 Subject: [PATCH] Fixed transition-state deprecation on Integration screen no issue - https://deprecations.emberjs.com/v3.x/#toc_transition-state --- .../admin/app/routes/settings/integration.js | 21 +++++++++++++++---- ghost/admin/config/deprecation-workflow.js | 3 +-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/ghost/admin/app/routes/settings/integration.js b/ghost/admin/app/routes/settings/integration.js index e77dcdf2e7..9eef3296bd 100644 --- a/ghost/admin/app/routes/settings/integration.js +++ b/ghost/admin/app/routes/settings/integration.js @@ -1,11 +1,21 @@ import AuthenticatedRoute from 'ghost-admin/routes/authenticated'; import CurrentUserSettings from 'ghost-admin/mixins/current-user-settings'; import styleBody from 'ghost-admin/mixins/style-body'; +import {inject as service} from '@ember/service'; export default AuthenticatedRoute.extend(styleBody, CurrentUserSettings, { + router: service(), + titleToken: 'Settings - Integrations', classNames: ['settings-view-integration'], + init() { + this._super(...arguments); + this.router.on('routeWillChange', (transition) => { + this.showUnsavedChangesModal(transition); + }); + }, + beforeModel() { this._super(...arguments); return this.get('session.user') @@ -25,9 +35,11 @@ export default AuthenticatedRoute.extend(styleBody, CurrentUserSettings, { actions: { save() { this.controller.send('save'); - }, + } + }, - willTransition(transition) { + showUnsavedChangesModal(transition) { + if (transition.from && transition.from.name.match(/^settings\.integration\./) && transition.targetName) { let {controller} = this; // check to see if we're navigating away from the custom integration @@ -35,9 +47,10 @@ export default AuthenticatedRoute.extend(styleBody, CurrentUserSettings, { // "unsaved changes" confirmation modal let isExternalRoute = // allow sub-routes of settings.integration - !transition.targetName.match(/^settings\.integration\./) + !(transition.targetName || '').match(/^settings\.integration\./) // do not allow changes in integration - || transition.params['settings.integration'].integration_id !== controller.integration.id; + // .to will be the index, so use .to.parent to get the route with the params + || transition.to.parent.params.integration_id !== controller.integration.id; if (isExternalRoute && !controller.integration.isDeleted && controller.integration.hasDirtyAttributes) { transition.abort(); diff --git a/ghost/admin/config/deprecation-workflow.js b/ghost/admin/config/deprecation-workflow.js index 85e75a9702..930b5e6758 100644 --- a/ghost/admin/config/deprecation-workflow.js +++ b/ghost/admin/config/deprecation-workflow.js @@ -8,7 +8,6 @@ self.deprecationWorkflow.config = { {handler: 'silence', matchId: 'events.remove-all-listeners'}, {handler: 'silence', matchId: 'ember-polyfills.deprecate-merge'}, {handler: 'silence', matchId: 'events.inherited-function-listeners'}, - {handler: 'silence', matchId: 'ember-component.send-action'}, - {handler: 'silence', matchId: 'transition-state'} + {handler: 'silence', matchId: 'ember-component.send-action'} ] };