Skip to content

Instantly share code, notes, and snippets.

@Sweet-Bob
Created September 3, 2016 15:10
Show Gist options
  • Save Sweet-Bob/1727700aefbd7620f4743250707c2c4f to your computer and use it in GitHub Desktop.
Save Sweet-Bob/1727700aefbd7620f4743250707c2c4f to your computer and use it in GitHub Desktop.
Set common route for the loading routes (by different levels)
import Route from 'ember-route';
const ROUTE_LEVEL = {
third: 3,
fourth: 4
};
/**
* @param app
* @private
*/
export function initialize(app) {
let mainRouter = app.lookup('router:main');
mainRouter.one('willTransition', this, () => {
let LoadingRoute = Route.extend({ templateName: 'user/loading' });
setLoadingRoutes(LoadingRoute, ROUTE_LEVEL.third);
setLoadingRoutes(LoadingRoute, ROUTE_LEVEL.fourth);
});
/**
* @param {Route} LoadingRoute
* @param {Number} routeLevel
* @private
*/
function setLoadingRoutes(LoadingRoute, routeLevel) {
let routeNames = Object.keys(mainRouter.router.recognizer.names);
routeNames.forEach((routeName) => {
let segments = routeName.split('.');
let SEGMENT_LAST_IDX = segments.length - 1;
let isRouteLevel = _segmentLevelCheck(segments, routeLevel);
if (isRouteLevel && segments[SEGMENT_LAST_IDX].indexOf('loading') !== -1) {
app.register(`route:${routeName}`, LoadingRoute);
}
});
}
/**
* Route level check
* @param {Array} uriSegments
* @param {Number} routeLevel
* @returns {boolean}
* @private
*/
function _segmentLevelCheck(uriSegments, routeLevel) {
return uriSegments.length === routeLevel;
}
}
export default {
name: 'routes',
initialize
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment