[CORD-1117] XOS GUI Various fix
Change-Id: I4237a5e23509e9173c958d76aa929a70583ba1e6
diff --git a/src/app/extender/services/onboard.service.spec.ts b/src/app/extender/services/onboard.service.spec.ts
index d53f3af..02237cc 100644
--- a/src/app/extender/services/onboard.service.spec.ts
+++ b/src/app/extender/services/onboard.service.spec.ts
@@ -61,6 +61,9 @@
spyOn($ocLazyLoad, 'load').and.callThrough();
service = XosOnboarder;
$timeout = _$timeout_;
+
+ // start the service
+ service.onboard();
}));
describe('when receive an event', () => {
diff --git a/src/app/extender/services/onboard.service.ts b/src/app/extender/services/onboard.service.ts
index b6a9abc..206a968 100644
--- a/src/app/extender/services/onboard.service.ts
+++ b/src/app/extender/services/onboard.service.ts
@@ -4,11 +4,18 @@
import {Observable} from 'rxjs';
export interface IXosOnboarder {
-
+ onboard(): ng.IPromise<boolean>;
}
export class XosOnboarder implements IXosOnboarder {
- static $inject = ['$timeout', '$log', '$q', 'WebSocket', '$ocLazyLoad', 'XosModelStore'];
+ static $inject = [
+ '$timeout',
+ '$log',
+ '$q',
+ 'WebSocket',
+ '$ocLazyLoad',
+ 'XosModelStore'
+ ];
constructor(
private $timeout: ng.ITimeoutService,
@@ -18,23 +25,37 @@
private $ocLazyLoad: any, // TODO add definition
private XosModelStore: IXosModelStoreService
) {
+
+ }
+
+ public onboard(): ng.IPromise<boolean> {
+ const d = this.$q.defer();
+
this.$log.info('[XosOnboarder] Setup');
// Load onboarded app
const ComponentObservable: Observable<any> = this.XosModelStore.query('XOSGuiExtension');
ComponentObservable.subscribe(
- (component) => {
- _.forEach(component, (c) => {
- this.$log.info(`[XosOnboarder] Loading files for app: ${c.name}`);
- const files = c.files.split(',').map(s => s.trim());
- this.loadFile(files)
- .then((res) => {
- this.$log.info(`[XosOnboarder] All files loaded for app: ${c.name}`);
- });
- });
+ (component) => {
+ if (component.length === 0) {
+ return d.resolve();
}
- );
+ _.forEach(component, (c) => {
+ this.$log.info(`[XosOnboarder] Loading files for app: ${c.name}`);
+ const files = c.files.split(',').map(s => s.trim());
+ this.loadFile(files)
+ .then((res) => {
+ this.$log.info(`[XosOnboarder] All files loaded for app: ${c.name}`);
+ d.resolve();
+ })
+ .catch(e => {
+ this.$log.info(`[XosOnboarder] Error while onboarding apps: `, e);
+ });
+ });
+ }
+ );
+ return d.promise;
}
// NOTE files needs to be loaded in order, so async loop!
@@ -43,6 +64,7 @@
d = this.$q.defer();
}
const file = files.shift();
+
this.$log.info(`[XosOnboarder] Loading file: ${file}`);
this.$ocLazyLoad.load(file)
.then((res) => {