UNPKG

@iotize/ionic

Version:

Iotize specific building blocks on top of @ionic/angular.

90 lines 11.3 kB
import { inject, 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 { TapInfo } from './tap-info/keys'; import { TapInfoCacheService } from './tap-info/tap-info-cache.service'; import { TapInfoDAOService } from './tap-info/tap-info-dao.service'; import { TapInfoRequestService } from './tap-info/tap-info-request.service'; import * as i0 from "@angular/core"; import * as i1 from "./tap-info/tap-info-request.service"; import * as i2 from "./tap-info/tap-info-dao.service"; export class TapTargetConnectService { infoResolver; tapInfoDAOService; error; loading = false; tapInfoCache = inject(TapInfoCacheService); connectedChange = this.tapInfoCache.valueChange(TapInfo.IsTargetConnected); constructor(infoResolver, tapInfoDAOService) { this.infoResolver = infoResolver; this.tapInfoDAOService = tapInfoDAOService; } 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 */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapTargetConnectService, deps: [{ token: i1.TapInfoRequestService }, { token: i2.TapInfoDAOService }], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapTargetConnectService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapTargetConnectService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: () => [{ type: i1.TapInfoRequestService }, { type: i2.TapInfoDAOService }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXRhcmdldC1jb25uZWN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pb3RpemUtaW9uaWMvc3JjL2xpYi90YXAtdGFyZ2V0LWNvbm5lY3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBMEIsTUFBTSxhQUFhLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQzs7OztBQUs1RSxNQUFNLE9BQU8sdUJBQXVCO0lBWXhCO0lBQ0E7SUFaVixLQUFLLENBQVM7SUFFZCxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBRWhCLFlBQVksR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUUzQyxlQUFlLEdBQXdCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUNsRSxPQUFPLENBQUMsaUJBQWlCLENBQzFCLENBQUM7SUFFRixZQUNVLFlBQW1DLEVBQ25DLGlCQUFvQztRQURwQyxpQkFBWSxHQUFaLFlBQVksQ0FBdUI7UUFDbkMsc0JBQWlCLEdBQWpCLGlC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b20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNDb2RlRXJyb3IgfSBmcm9tICdAaW90aXplL2NvbW1vbi9lcnJvcic7XG5pbXBvcnQgeyBUYXBFcnJvciwgVGFwUmVzcG9uc2VTdGF0dXNFcnJvciB9IGZyb20gJ0Bpb3RpemUvdGFwJztcbmltcG9ydCB7IFJlc3VsdENvZGUgfSBmcm9tICdAaW90aXplL3RhcC9jbGllbnQvYXBpJztcbmltcG9ydCB7IFJlc3VsdENvZGVUcmFuc2xhdGlvbiB9IGZyb20gJ0Bpb3RpemUvdGFwL2NsaWVudC9pbXBsJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGlzVGFwUmVzdWx0Q29kZUVycm9yIH0gZnJvbSAnLi9lcnJvci11dGlsaXR5JztcbmltcG9ydCB7IFRhcEluZm8gfSBmcm9tICcuL3RhcC1pbmZvL2tleXMnO1xuaW1wb3J0IHsgVGFwSW5mb0NhY2hlU2VydmljZSB9IGZyb20gJy4vdGFwLWluZm8vdGFwLWluZm8tY2FjaGUuc2VydmljZSc7XG5pbXBvcnQgeyBUYXBJbmZvREFPU2VydmljZSB9IGZyb20gJy4vdGFwLWluZm8vdGFwLWluZm8tZGFvLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFwSW5mb1JlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi90YXAtaW5mby90YXAtaW5mby1yZXF1ZXN0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgVGFwVGFyZ2V0Q29ubmVjdFNlcnZpY2Uge1xuICBlcnJvcj86IEVycm9yO1xuXG4gIGxvYWRpbmcgPSBmYWxzZTtcblxuICB0YXBJbmZvQ2FjaGUgPSBpbmplY3QoVGFwSW5mb0NhY2hlU2VydmljZSk7XG5cbiAgY29ubmVjdGVkQ2hhbmdlOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy50YXBJbmZvQ2FjaGUudmFsdWVDaGFuZ2UoXG4gICAgVGFwSW5mby5Jc1RhcmdldENvbm5lY3RlZFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaW5mb1Jlc29sdmVyOiBUYXBJbmZvUmVxdWVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YXBJbmZvREFPU2VydmljZTogVGFwSW5mb0RBT1NlcnZpY2VcbiAgKSB7fVxuXG4gIGlzQ29ubmVjdGVkKCkge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLnRhcEluZm9DYWNoZS5nZXRJbmZvU25hcHNob3QoVGFwSW5mby5Jc1RhcmdldENvbm5lY3RlZCk/LnZhbHVlID09PVxuICAgICAgdHJ1ZVxuICAgICk7XG4gIH1cblxuICBhc3luYyByZWZyZXNoKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuaW5mb1Jlc29sdmVyLnJlZnJlc2hLZXkoXG4gICAgICBUYXBJbmZvLklzVGFyZ2V0Q29ubmVjdGVkXG4gICAgKTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSB7XG4gICAgICB0aHJvdyByZXN1bHQuZXJyb3I7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHQudmFsdWUgYXMgYm9vbGVhbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdCB0byB0YXJnZXRcbiAgICogQHRocm93cyBpZiB0YXJnZXQgY29ubmVjdGlvbiBmYWlsZWRcbiAgICovXG4gIGFzeW5jIGNvbm5lY3QoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICBhd2FpdCB0aGlzLnRhcEluZm9EQU9TZXJ2aWNlLnB1dChcbiAgICAgICAgeyBrZXk6IFRhcEluZm8uSXNUYXJnZXRDb25uZWN0ZWQgfSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICAgIHRoaXMudGFwSW5mb0NhY2hlLnNldEtleVZhbHVlKFRhcEluZm8uSXNUYXJnZXRDb25uZWN0ZWQsIHRydWUpO1xuICAgICAgdGhpcy5lcnJvciA9IHVuZGVmaW5lZDtcbiAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgaWYgKGlzQ29kZUVycm9yKFRhcEVycm9yLkNvZGUuUmVzcG9uc2VTdGF0dXNFcnJvciwgZXJyKSkge1xuICAgICAgICBjb25zdCBjb2RlUmV0ID0gKGVyciBhcyBUYXBSZXNwb25zZVN0YXR1c0Vycm9yKS5yZXNwb25zZS5jb2RlUmV0KCk7XG4gICAgICAgIGNvbnN0IHNob3J0RXJyb3JNZXNzYWdlID1cbiAgICAgICAgICBSZXN1bHRDb2RlVHJhbnNsYXRpb25bXG4gICAgICAgICAgICBjb2RlUmV0IGFzIGtleW9mIHR5cGVvZiBSZXN1bHRDb2RlVHJhbnNsYXRpb25cbiAgICAgICAgICBdIHx8IGBVbmtub3duIGVycm9yIChjb2RlOiAke2NvZGVSZXR9KWA7XG4gICAgICAgIGlmIChpc1RhcFJlc3VsdENvZGVFcnJvcihlcnIsIFJlc3VsdENvZGUuVU5BQkxFX1RPX0NPTk5FQ1RfVE9fVEFSR0VUKSkge1xuICAgICAgICAgIGVyci5tZXNzYWdlID0gYCR7c2hvcnRFcnJvck1lc3NhZ2V9LiBNYWtlIHN1cmUgdGhhdCB0YXJnZXQgaXMgcHJvcGVybHkgd2lyZWQgdG8gdGhlIFRhcC5gO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVyci5tZXNzYWdlID0gc2hvcnRFcnJvck1lc3NhZ2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuZXJyb3IgPSBlcnIgYXMgRXJyb3I7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc2Nvbm5lY3QoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICBhd2FpdCB0aGlzLnRhcEluZm9EQU9TZXJ2aWNlLnB1dChcbiAgICAgICAgeyBrZXk6IFRhcEluZm8uSXNUYXJnZXRDb25uZWN0ZWQgfSxcbiAgICAgICAgZmFsc2VcbiAgICAgICk7XG4gICAgICB0aGlzLnRhcEluZm9DYWNoZS5zZXRLZXlWYWx1ZShUYXBJbmZvLklzVGFyZ2V0Q29ubmVjdGVkLCBmYWxzZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=