mirror of https://github.com/status-im/consul.git
ui: Prefer using a base route class instead of reopening routes (#8965)
* Delete old controller lifecycle things we con't use anymore * Move route url decoding to our custom route class instead of reopening
This commit is contained in:
parent
9a302f6f4a
commit
28a116b049
|
@ -1,23 +0,0 @@
|
||||||
import Route from '@ember/routing/route';
|
|
||||||
/**
|
|
||||||
* This initializer is very similar to:
|
|
||||||
* https://github.com/kellyselden/ember-controller-lifecycle
|
|
||||||
*
|
|
||||||
* Why is this included here:
|
|
||||||
* 1. Make sure lifecycle functions are functions, not just truthy.
|
|
||||||
* 2. Right now we don't want a setup function (at least until we are definitely decided that we want one)
|
|
||||||
* This is possibly a very personal opinion so it makes sense to just include this file here.
|
|
||||||
*/
|
|
||||||
Route.reopen({
|
|
||||||
resetController(controller, exiting, transition) {
|
|
||||||
this._super(...arguments);
|
|
||||||
if (typeof controller.reset === 'function') {
|
|
||||||
controller.reset(exiting);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
export function initialize() {}
|
|
||||||
|
|
||||||
export default {
|
|
||||||
initialize,
|
|
||||||
};
|
|
|
@ -1,32 +0,0 @@
|
||||||
import Route from '@ember/routing/route';
|
|
||||||
import { routes } from 'consul-ui/router';
|
|
||||||
import wildcard from 'consul-ui/utils/routing/wildcard';
|
|
||||||
const isWildcard = wildcard(routes);
|
|
||||||
/**
|
|
||||||
* This initializer adds urldecoding to the `params` passed into
|
|
||||||
* ember `model` hooks, plus of course anywhere else where `paramsFor`
|
|
||||||
* is used. This means the entire ember app is now changed so that all
|
|
||||||
* paramsFor calls returns urldecoded params instead of raw ones
|
|
||||||
*/
|
|
||||||
Route.reopen({
|
|
||||||
paramsFor: function() {
|
|
||||||
const params = this._super(...arguments);
|
|
||||||
if (isWildcard(this.routeName)) {
|
|
||||||
return Object.keys(params).reduce(function(prev, item) {
|
|
||||||
if (typeof params[item] !== 'undefined') {
|
|
||||||
prev[item] = decodeURIComponent(params[item]);
|
|
||||||
} else {
|
|
||||||
prev[item] = params[item];
|
|
||||||
}
|
|
||||||
return prev;
|
|
||||||
}, {});
|
|
||||||
} else {
|
|
||||||
return params;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
||||||
export function initialize() {}
|
|
||||||
|
|
||||||
export default {
|
|
||||||
initialize,
|
|
||||||
};
|
|
|
@ -1,15 +1,44 @@
|
||||||
import Route from '@ember/routing/route';
|
import Route from '@ember/routing/route';
|
||||||
import { setProperties } from '@ember/object';
|
import { setProperties } from '@ember/object';
|
||||||
|
|
||||||
/**
|
// paramsFor
|
||||||
* Set the routeName for the controller so that it is
|
import { routes } from 'consul-ui/router';
|
||||||
* available in the template for the route/controller
|
import wildcard from 'consul-ui/utils/routing/wildcard';
|
||||||
*/
|
const isWildcard = wildcard(routes);
|
||||||
|
|
||||||
export default class BaseRoute extends Route {
|
export default class BaseRoute extends Route {
|
||||||
|
/**
|
||||||
|
* Set the routeName for the controller so that it is available in the template
|
||||||
|
* for the route/controller.. This is mainly used to give a route name to the
|
||||||
|
* Outlet component
|
||||||
|
*/
|
||||||
setupController(controller, model) {
|
setupController(controller, model) {
|
||||||
setProperties(controller, {
|
setProperties(controller, {
|
||||||
routeName: this.routeName,
|
routeName: this.routeName,
|
||||||
});
|
});
|
||||||
super.setupController(...arguments);
|
super.setupController(...arguments);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Adds urldecoding to any wildcard route `params` passed into ember `model`
|
||||||
|
* hooks, plus of course anywhere else where `paramsFor` is used. This means
|
||||||
|
* the entire ember app is now changed so that all paramsFor calls returns
|
||||||
|
* urldecoded params instead of raw ones.
|
||||||
|
* For example we use this largely for URLs for the KV store:
|
||||||
|
* /kv/*key > /ui/kv/%25-kv-name/%25-here > key = '%-kv-name/%-here'
|
||||||
|
*/
|
||||||
|
paramsFor(name) {
|
||||||
|
const params = super.paramsFor(...arguments);
|
||||||
|
if (isWildcard(this.routeName)) {
|
||||||
|
return Object.keys(params).reduce(function(prev, item) {
|
||||||
|
if (typeof params[item] !== 'undefined') {
|
||||||
|
prev[item] = decodeURIComponent(params[item]);
|
||||||
|
} else {
|
||||||
|
prev[item] = params[item];
|
||||||
|
}
|
||||||
|
return prev;
|
||||||
|
}, {});
|
||||||
|
} else {
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue