2018-01-20 00:46:47 -08:00
|
|
|
import Route from '@ember/routing/route';
|
|
|
|
import { get } from '@ember/object';
|
2019-08-31 20:51:14 -07:00
|
|
|
import { inject as service } from '@ember/service';
|
2017-02-13 15:07:18 -08:00
|
|
|
import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';
|
2019-08-31 20:51:14 -07:00
|
|
|
import CurrentUser from '@datahub/shared/services/current-user';
|
2018-08-12 13:02:01 -07:00
|
|
|
import Metrics from 'ember-metrics';
|
2020-09-29 16:04:25 -07:00
|
|
|
import { getConfig } from '@datahub/shared/services/configurator';
|
2019-08-31 20:51:14 -07:00
|
|
|
import Transition from '@ember/routing/-private/transition';
|
2017-02-13 15:07:18 -08:00
|
|
|
|
2018-08-12 13:02:01 -07:00
|
|
|
export default class IndexRoute extends Route.extend(AuthenticatedRouteMixin) {
|
2017-05-22 19:55:07 -07:00
|
|
|
/**
|
2018-08-12 13:02:01 -07:00
|
|
|
* @type {CurrentUser}
|
2017-05-22 19:55:07 -07:00
|
|
|
*/
|
2018-08-12 13:02:01 -07:00
|
|
|
@service('current-user')
|
|
|
|
sessionUser: CurrentUser;
|
2017-05-22 19:55:07 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Metrics tracking service
|
2018-08-12 13:02:01 -07:00
|
|
|
* @type {Metrics}
|
2017-05-22 19:55:07 -07:00
|
|
|
*/
|
2018-08-12 13:02:01 -07:00
|
|
|
@service
|
|
|
|
metrics: Metrics;
|
2017-09-18 17:51:36 -07:00
|
|
|
|
2017-05-22 19:55:07 -07:00
|
|
|
/**
|
|
|
|
* Perform post model operations
|
2018-10-02 14:18:32 -07:00
|
|
|
* @param {EmberTransition} transition
|
2017-05-22 19:55:07 -07:00
|
|
|
* @return {Promise}
|
|
|
|
*/
|
2019-08-31 20:51:14 -07:00
|
|
|
async beforeModel(transition: Transition): Promise<void> {
|
2018-08-12 13:02:01 -07:00
|
|
|
super.beforeModel(transition);
|
2017-05-22 19:55:07 -07:00
|
|
|
|
2019-08-31 20:51:14 -07:00
|
|
|
// Track returning user i.e. entry via non-login route
|
2018-07-10 21:32:14 -07:00
|
|
|
await this._trackCurrentUser();
|
2019-08-31 20:51:14 -07:00
|
|
|
this.replaceWithBrowseSubRoute();
|
2018-08-12 13:02:01 -07:00
|
|
|
}
|
2018-07-10 21:32:14 -07:00
|
|
|
|
2019-08-31 20:51:14 -07:00
|
|
|
/**
|
|
|
|
* Transition to sub route browse and replace route on navigation
|
|
|
|
* The index route is currently an unused builtin route
|
|
|
|
*/
|
|
|
|
replaceWithBrowseSubRoute(): void {
|
|
|
|
this.replaceWith('browse');
|
2018-08-12 13:02:01 -07:00
|
|
|
}
|
2017-05-22 19:55:07 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* On entry into route, track the currently logged in user
|
|
|
|
* @return {Promise.<void>}
|
|
|
|
* @private
|
|
|
|
*/
|
2019-08-31 20:51:14 -07:00
|
|
|
async _trackCurrentUser(): Promise<false | void> {
|
2019-09-04 21:46:02 -07:00
|
|
|
const { tracking } = await getConfig<undefined>();
|
2017-05-22 19:55:07 -07:00
|
|
|
|
2017-06-19 16:35:00 -07:00
|
|
|
// Check if tracking is enabled prior to invoking
|
|
|
|
// Passes an anonymous function to track the currently logged in user using the singleton `current-user` service
|
|
|
|
return (
|
2018-08-23 14:24:15 -07:00
|
|
|
tracking &&
|
2017-06-19 16:35:00 -07:00
|
|
|
tracking.isEnabled &&
|
2019-08-31 20:51:14 -07:00
|
|
|
get(this, 'sessionUser').trackCurrentUser((userId): void => get(this, 'metrics').identify({ userId }))
|
2017-06-19 16:35:00 -07:00
|
|
|
);
|
2017-02-13 15:07:18 -08:00
|
|
|
}
|
2018-08-12 13:02:01 -07:00
|
|
|
}
|