aboutsummaryrefslogtreecommitdiffstats
path: root/webapp/src/app/@core-xds/services/sdk.service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/src/app/@core-xds/services/sdk.service.ts')
-rw-r--r--webapp/src/app/@core-xds/services/sdk.service.ts49
1 files changed, 27 insertions, 22 deletions
diff --git a/webapp/src/app/@core-xds/services/sdk.service.ts b/webapp/src/app/@core-xds/services/sdk.service.ts
index 6191c85..f854744 100644
--- a/webapp/src/app/@core-xds/services/sdk.service.ts
+++ b/webapp/src/app/@core-xds/services/sdk.service.ts
@@ -62,6 +62,7 @@ export interface ISdk {
export interface ISdkManagementMsg {
cmdID: string;
timestamp: string;
+ action: string;
sdk: ISdk;
stdout: string;
stderr: string;
@@ -97,7 +98,7 @@ export class SdkService {
this.xdsSvr.getSdks(this.curServerID).subscribe((sdks) => {
this._sdksList = [];
sdks.forEach(s => {
- this._addSdk(s, true);
+ this._addUpdateSdk(s, true);
});
// TODO: get previous val from xds-config service / cookie
@@ -111,18 +112,17 @@ export class SdkService {
});
// Add listener on sdk creation, deletion and change events
- this.xdsSvr.onSdkInstall().subscribe(evMgt => {
- this._addSdk(evMgt.sdk);
- });
- this.xdsSvr.onSdkRemove().subscribe(evMgt => {
- if (evMgt.sdk.status !== StatusType.NOT_INSTALLED) {
+ this.xdsSvr.onSdkAdd().subscribe(sdk => this._addUpdateSdk(sdk));
+ this.xdsSvr.onSdkChange().subscribe(sdk => this._addUpdateSdk(sdk));
+
+ this.xdsSvr.onSdkRemove().subscribe(sdk => {
+ if (sdk.status !== StatusType.NOT_INSTALLED) {
/* tslint:disable:no-console */
- console.log('Error: received event:sdk-remove with invalid status: evMgt=', evMgt);
+ console.log('Error: received event:sdk-remove with invalid status: sdk=', sdk);
return;
}
- this._delSdk(evMgt.sdk);
+ this._delSdk(sdk);
});
-
}
public setCurrent(s: ISdk) {
@@ -145,7 +145,11 @@ export class SdkService {
}
public onInstall(): Observable<ISdkManagementMsg> {
- return this.xdsSvr.onSdkInstall();
+ return this.xdsSvr.onSdkManagement().filter(ev => ev.action === 'installing');
+ }
+
+ public onRemove(): Observable<ISdkManagementMsg> {
+ return this.xdsSvr.onSdkManagement().filter(ev => ev.action === 'removing');
}
public abortInstall(sdk: ISdk): Observable<ISdk> {
@@ -158,27 +162,28 @@ export class SdkService {
/** Private **/
- private _addSdk(sdk: ISdk, noNext?: boolean): ISdk {
+ private _addUpdateSdk(sdk: ISdk, noNext?: boolean): ISdk {
// check if sdk already exists
const idx = this._sdksList.findIndex(s => s.id === sdk.id);
if (idx >= 0) {
+ // Just update existing one
this._sdksList[idx] = sdk;
} else {
// add new sdk
this._sdksList.push(sdk);
- }
- // sort sdk array
- this._sdksList.sort((a, b) => {
- if (a.name < b.name) {
- return -1;
- }
- if (a.name > b.name) {
- return 1;
- }
- return 0;
- });
+ // sort sdk array
+ this._sdksList.sort((a, b) => {
+ if (a.name < b.name) {
+ return -1;
+ }
+ if (a.name > b.name) {
+ return 1;
+ }
+ return 0;
+ });
+ }
if (!noNext) {
this.sdksSubject.next(this._sdksList);