@fleetbase/fleetops-engine
Version:
Fleet & Transport Management Extension for Fleetbase
50 lines (42 loc) • 1.77 kB
JavaScript
import Route from '@ember/routing/route';
import { inject as service } from '@ember/service';
import { action } from '@ember/object';
import getResourceNameFromTransition from '@fleetbase/ember-core/utils/get-resource-name-from-transition';
export default class ApplicationRoute extends Route {
loader;
intl;
location;
abilities;
hostRouter;
notifications;
fetch;
currentUser;
mapSettings;
loading(transition) {
const resource = getResourceNameFromTransition(transition, { humanize: true });
this.loader.showOnInitialTransition(transition, 'section.next-view-section', {
loadingMessage: (resource ? this.intl.t('common.loading-resource', { resource }) : this.intl.t('common.loading')) + '...',
});
}
async beforeModel() {
if (this.abilities.cannot('fleet-ops see extension')) {
this.notifications.warning(this.intl.t('common.unauthorized-access'));
return this.hostRouter.transitionTo('console');
}
await this.location.getUserLocation();
await this.#loadRoutingSettings();
await this.#loadTrackingSettings();
await this.#loadMapSettings();
}
async #loadRoutingSettings() {
const routingSetting = await this.fetch.get('fleet-ops/settings/routing-settings');
this.currentUser.setOption('routing', routingSetting);
}
async #loadTrackingSettings() {
const trackingSettings = await this.fetch.get('fleet-ops/settings/tracking-settings');
this.currentUser.setOption('tracking', trackingSettings);
}
async #loadMapSettings() {
await this.mapSettings.load();
}
}