@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
88 lines • 11.3 kB
JavaScript
import { Injectable } from '@angular/core';
import { isCodeError } from '@iotize/common/error';
import { TapError } from '@iotize/tap';
import { ResultCode } from '@iotize/tap/client/api';
import { ResultCodeTranslation } from '@iotize/tap/client/impl';
import { isTapResultCodeError } from './error-utility';
import { TapInfoRequestService } from './tap-info/tap-info-request.service';
import { TapInfo } from './tap-info/keys';
import { TapInfoCacheService } from './tap-info/tap-info-cache.service';
import { TapInfoDAOService } from './tap-info/tap-info-dao.service';
import * as i0 from "@angular/core";
import * as i1 from "./tap-info/tap-info-cache.service";
import * as i2 from "./tap-info/tap-info-request.service";
import * as i3 from "./tap-info/tap-info-dao.service";
export class TapTargetConnectService {
constructor(tapInfoCache, infoResolver, tapInfoDAOService) {
this.tapInfoCache = tapInfoCache;
this.infoResolver = infoResolver;
this.tapInfoDAOService = tapInfoDAOService;
this.connectedChange = this.tapInfoCache.valueChange(TapInfo.IsTargetConnected);
this.loading = false;
}
isConnected() {
return (this.tapInfoCache.getInfoSnapshot(TapInfo.IsTargetConnected)?.value ===
true);
}
async refresh() {
const result = await this.infoResolver.refreshKey(TapInfo.IsTargetConnected);
if (result.error) {
throw result.error;
}
else {
return result.value;
}
}
/**
* Connect to target
* @throws if target connection failed
*/
async connect() {
try {
this.loading = true;
await this.tapInfoDAOService.put({ key: TapInfo.IsTargetConnected }, true);
this.tapInfoCache.setKeyValue(TapInfo.IsTargetConnected, true);
this.error = undefined;
}
catch (err) {
if (isCodeError(TapError.Code.ResponseStatusError, err)) {
const codeRet = err.response.codeRet();
const shortErrorMessage = ResultCodeTranslation[codeRet] || `Unknown error (code: ${codeRet})`;
if (isTapResultCodeError(err, ResultCode.UNABLE_TO_CONNECT_TO_TARGET)) {
err.message = `${shortErrorMessage}. Make sure that target is properly wired to the Tap.`;
}
else {
err.message = shortErrorMessage;
}
}
this.error = err;
throw err;
}
finally {
this.loading = false;
}
}
async disconnect() {
try {
this.loading = true;
await this.tapInfoDAOService.put({ key: TapInfo.IsTargetConnected }, false);
this.tapInfoCache.setKeyValue(TapInfo.IsTargetConnected, false);
return true;
}
catch (err) {
throw err;
}
finally {
this.loading = false;
}
}
}
/** @nocollapse */ TapTargetConnectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapTargetConnectService, deps: [{ token: i1.TapInfoCacheService }, { token: i2.TapInfoRequestService }, { token: i3.TapInfoDAOService }], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ TapTargetConnectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapTargetConnectService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapTargetConnectService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}], ctorParameters: function () { return [{ type: i1.TapInfoCacheService }, { type: i2.TapInfoRequestService }, { type: i3.TapInfoDAOService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXRhcmdldC1jb25uZWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvc3JjL2xpYi90YXAtdGFyZ2V0LWNvbm5lY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUEwQixNQUFNLGFBQWEsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDNUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7OztBQUtwRSxNQUFNLE9BQU8sdUJBQXVCO0lBU2xDLFlBQ1UsWUFBaUMsRUFDakMsWUFBbUMsRUFDbkMsaUJBQW9DO1FBRnBDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDbkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVQ5QyxvQkFBZSxHQUF3QixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FDbEUsT0FBTyxDQUFDLGlCQUFpQixDQUMxQixDQUFDO1FBRUYsWUFBTyxHQUFHLEtBQUssQ0FBQztJQU1iLENBQUM7SUFFSixXQUFXO1FBQ1QsT0FBTyxDQUNMLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEtBQUs7WUFDbkUsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU87UUFDWCxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUMvQyxPQUFPLENBQUMsaUJBQWlCLENBQzFCLENBQUM7UUFDRixJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUU7WUFDaEIsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDO1NBQ3BCO2FBQU07WUFDTCxPQUFPLE1BQU0sQ0FBQyxLQUFnQixDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxPQUFPO1FBQ1gsSUFBSTtZQUNGLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FDOUIsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEVBQ2xDLElBQUksQ0FDTCxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO1NBQ3hCO1FBQUMsT0FBTyxHQUFRLEVBQUU7WUFDakIsSUFBSSxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLENBQUMsRUFBRTtnQkFDdkQsTUFBTSxPQUFPLEdBQUksR0FBOEIsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ25FLE1BQU0saUJBQWlCLEdBQ3JCLHFCQUFxQixDQUNuQixPQUE2QyxDQUM5QyxJQUFJLHdCQUF3QixPQUFPLEdBQUcsQ0FBQztnQkFDMUMsSUFBSSxvQkFBb0IsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLDJCQUEyQixDQUFDLEVBQUU7b0JBQ3JFLEdBQUcsQ0FBQyxPQUFPLEdBQUcsR0FBRyxpQkFBaUIsdURBQXVELENBQUM7aUJBQzNGO3FCQUFNO29CQUNMLEdBQUcsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUM7aUJBQ2pDO2FBQ0Y7WUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQVksQ0FBQztZQUMxQixNQUFNLEdBQUcsQ0FBQztTQUNYO2dCQUFTO1lBQ1IsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJO1lBQ0YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDcEIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUM5QixFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsaUJBQWlCLEVBQUUsRUFDbEMsS0FBSyxDQUNOLENBQUM7WUFDRixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEUsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osTUFBTSxHQUFHLENBQUM7U0FDWDtnQkFBUztZQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO0lBQ0gsQ0FBQzs7d0lBaEZVLHVCQUF1Qjs0SUFBdkIsdUJBQXVCLGNBRnRCLE1BQU07NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzQ29kZUVycm9yIH0gZnJvbSAnQGlvdGl6ZS9jb21tb24vZXJyb3InO1xuaW1wb3J0IHsgVGFwRXJyb3IsIFRhcFJlc3BvbnNlU3RhdHVzRXJyb3IgfSBmcm9tICdAaW90aXplL3RhcCc7XG5pbXBvcnQgeyBSZXN1bHRDb2RlIH0gZnJvbSAnQGlvdGl6ZS90YXAvY2xpZW50L2FwaSc7XG5pbXBvcnQgeyBSZXN1bHRDb2RlVHJhbnNsYXRpb24gfSBmcm9tICdAaW90aXplL3RhcC9jbGllbnQvaW1wbCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc1RhcFJlc3VsdENvZGVFcnJvciB9IGZyb20gJy4vZXJyb3ItdXRpbGl0eSc7XG5pbXBvcnQgeyBUYXBJbmZvUmVxdWVzdFNlcnZpY2UgfSBmcm9tICcuL3RhcC1pbmZvL3RhcC1pbmZvLXJlcXVlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBUYXBJbmZvIH0gZnJvbSAnLi90YXAtaW5mby9rZXlzJztcbmltcG9ydCB7IFRhcEluZm9DYWNoZVNlcnZpY2UgfSBmcm9tICcuL3RhcC1pbmZvL3RhcC1pbmZvLWNhY2hlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFwSW5mb0RBT1NlcnZpY2UgfSBmcm9tICcuL3RhcC1pbmZvL3RhcC1pbmZvLWRhby5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIFRhcFRhcmdldENvbm5lY3RTZXJ2aWNlIHtcbiAgZXJyb3I/OiBFcnJvcjtcblxuICBjb25uZWN0ZWRDaGFuZ2U6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnRhcEluZm9DYWNoZS52YWx1ZUNoYW5nZShcbiAgICBUYXBJbmZvLklzVGFyZ2V0Q29ubmVjdGVkXG4gICk7XG5cbiAgbG9hZGluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdGFwSW5mb0NhY2hlOiBUYXBJbmZvQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW5mb1Jlc29sdmVyOiBUYXBJbmZvUmVxdWVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YXBJbmZvREFPU2VydmljZTogVGFwSW5mb0RBT1NlcnZpY2VcbiAgKSB7fVxuXG4gIGlzQ29ubmVjdGVkKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnRhcEluZm9DYWNoZS5nZXRJbmZvU25hcHNob3QoVGFwSW5mby5Jc1RhcmdldENvbm5lY3RlZCk/LnZhbHVlID09PVxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaW5mb1Jlc29sdmVyLnJlZnJlc2hLZXkoXG4gICAgICBUYXBJbmZvLklzVGFyZ2V0Q29ubmVjdGVkXG4gICAgKTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSB7XG4gICAgICB0aHJvdyByZXN1bHQuZXJyb3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHQudmFsdWUgYXMgYm9vbGVhbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdCB0byB0YXJnZXRcbiAgICogQHRocm93cyBpZiB0YXJnZXQgY29ubmVjdGlvbiBmYWlsZWRcbiAgICovXG4gIGFzeW5jIGNvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICBhd2FpdCB0aGlzLnRhcEluZm9EQU9TZXJ2aWNlLnB1dChcbiAgICAgICAgeyBrZXk6IFRhcEluZm8uSXNUYXJnZXRDb25uZWN0ZWQgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIHRoaXMudGFwSW5mb0NhY2hlLnNldEtleVZhbHVlKFRhcEluZm8uSXNUYXJnZXRDb25uZWN0ZWQsIHRydWUpO1xuICAgICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGlzQ29kZUVycm9yKFRhcEVycm9yLkNvZGUuUmVzcG9uc2VTdGF0dXNFcnJvciwgZXJyKSkge1xuICAgICAgICBjb25zdCBjb2RlUmV0ID0gKGVyciBhcyBUYXBSZXNwb25zZVN0YXR1c0Vycm9yKS5yZXNwb25zZS5jb2RlUmV0KCk7XG4gICAgICAgIGNvbnN0IHNob3J0RXJyb3JNZXNzYWdlID1cbiAgICAgICAgICBSZXN1bHRDb2RlVHJhbnNsYXRpb25bXG4gICAgICAgICAgICBjb2RlUmV0IGFzIGtleW9mIHR5cGVvZiBSZXN1bHRDb2RlVHJhbnNsYXRpb25cbiAgICAgICAgICBdIHx8IGBVbmtub3duIGVycm9yIChjb2RlOiAke2NvZGVSZXR9KWA7XG4gICAgICAgIGlmIChpc1RhcFJlc3VsdENvZGVFcnJvcihlcnIsIFJlc3VsdENvZGUuVU5BQkxFX1RPX0NPTk5FQ1RfVE9fVEFSR0VUKSkge1xuICAgICAgICAgIGVyci5tZXNzYWdlID0gYCR7c2hvcnRFcnJvck1lc3NhZ2V9LiBNYWtlIHN1cmUgdGhhdCB0YXJnZXQgaXMgcHJvcGVybHkgd2lyZWQgdG8gdGhlIFRhcC5gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVyci5tZXNzYWdlID0gc2hvcnRFcnJvck1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZXJyb3IgPSBlcnIgYXMgRXJyb3I7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc2Nvbm5lY3QoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICBhd2FpdCB0aGlzLnRhcEluZm9EQU9TZXJ2aWNlLnB1dChcbiAgICAgICAgeyBrZXk6IFRhcEluZm8uSXNUYXJnZXRDb25uZWN0ZWQgfSxcbiAgICAgICAgZmFsc2VcbiAgICAgICk7XG4gICAgICB0aGlzLnRhcEluZm9DYWNoZS5zZXRLZXlWYWx1ZShUYXBJbmZvLklzVGFyZ2V0Q29ubmVjdGVkLCBmYWxzZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=