Skip to content
Snippets Groups Projects
Commit d319e8a5 authored by John Cowen's avatar John Cowen
Browse files

Move route url decoding to our custom route class instead of reopening

parent 7bdce7e6
No related merge requests found
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,
};
import Route from '@ember/routing/route';
import { setProperties } from '@ember/object';
/**
* Set the routeName for the controller so that it is
* available in the template for the route/controller
*/
// paramsFor
import { routes } from 'consul-ui/router';
import wildcard from 'consul-ui/utils/routing/wildcard';
const isWildcard = wildcard(routes);
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) {
setProperties(controller, {
routeName: this.routeName,
});
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;
}
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment