diff --git a/tests/dummy/app/templates/docs/deprecations.md b/tests/dummy/app/templates/docs/deprecations.md index 5f68278..5c9a2af 100644 --- a/tests/dummy/app/templates/docs/deprecations.md +++ b/tests/dummy/app/templates/docs/deprecations.md @@ -1,5 +1,128 @@ # Deprecations +### § Transition methods of Controller and Route + +**until**: 1.0.0 + +**id**: ember-engines.transition-methods + +[RFC #674](https://github.com/emberjs/rfcs/pull/674) has deprecated the methods `transitionTo` and `replaceWith` +of the `Route` and the methods `transitionToRoute` and `replaceRoute` of `Controller`. +These methods have been removed in v5.0.0 of Ember.js, and developers encouraged to use `RouterService` instead. + +The methods `transitionToExternal` and `replaceWithExternal` of the `Route` and the method `transitionToExternalRoute` of the `Controller` +share the same underlying code and follow the same spirit as ones deprecated in Ember.js. +Developers encouraged to use `EnginesRouterService` provided by [`ember-engines-router-service`](https://github.com/villander/ember-engines-router-service) instead. + +Before: + +```js +// my-engine/routes/foo.js +import Route from '@ember/routing/route'; +import { inject as service } from '@ember/service'; + +export default class FooRoute extends Route { + @service session; + + beforeModel() { + if (!this.session.isAuthenticated) { + this.transitionToExternal('login'); + } + } +} +``` + +After: + +```js +// my-engine/routes/foo.js +import Route from '@ember/routing/route'; +import { inject as service } from '@ember/service'; + +export default class FooRoute extends Route { + @service router; + @service session; + + beforeModel() { + if (!this.session.isAuthenticated) { + this.router.transitionToExternal('login'); + } + } +} +``` + +Before: + +```js +// my-engine/routes/foo.js +import Route from '@ember/routing/route'; +import { inject as service } from '@ember/service'; + +export default class FooRoute extends Route { + @service session; + + beforeModel() { + if (!this.session.isAuthenticated) { + this.replaceWithExternal('login'); + } + } +} +``` + +After: + +```js +// my-engine/routes/foo.js +import Route from '@ember/routing/route'; +import { inject as service } from '@ember/service'; + +export default class FooRoute extends Route { + @service router; + @service session; + + beforeModel() { + if (!this.session.isAuthenticated) { + this.router.replaceWithExternal('login'); + } + } +} +``` + +Before: + +```js +// my-engine/controllers/foo.js +import Controller from '@ember/controller'; + +export default class FooController extends Controller { + @action + async save({ title, text }) { + let post = this.store.createRecord('post', { title, text }); + await post.save(); + return this.transitionToExternalRoute('post', post.id); + } +} +``` + +After: + +```js +// my-engine/controllers/foo.js +import Route from '@ember/routing/route'; +import { inject as service } from '@ember/service'; + +export default class FooRoute extends Route { + @service router; + + @action + async save({ title, text }) { + let post = this.store.createRecord('post', { title, text }); + await post.save(); + return this.router.transitionToExternal('post', post.id); + } +} +``` + ### § Use alias for inject router service from host application **until**: 0.9.0