UNPKG

@iotize/ionic

Version:

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

80 lines 10.7 kB
import { Injectable } from '@angular/core'; import { NavController } from '@ionic/angular'; import { CurrentDeviceService } from './current-device.service'; import { ProtocolFactoryService } from './protocol-factory.service'; import { stringToProtocolMeta } from './utility/protocol-meta-param-converter'; import * as i0 from "@angular/core"; import * as i1 from "./current-device.service"; import * as i2 from "./protocol-factory.service"; import * as i3 from "@ionic/angular"; export class TapSelectedGuard { constructor(tapService, protocolFactory, navController) { this.tapService = tapService; this.protocolFactory = protocolFactory; this.navController = navController; } async canActivate(route, state) { const noTapRedirectUrl = route.data['noTapRedirectUrl']; try { if (this.tapService.hasTap) { return true; } const protocolParam = route.queryParams.protocol; let protocolMeta; if (protocolParam) { protocolMeta = stringToProtocolMeta(protocolParam); if (!protocolMeta) { throw new Error(`Invalid protocol parameter value: "${protocolParam}"`); } } if (!protocolMeta) { protocolMeta = this.tryRestaureSession(); } if (!protocolMeta) { throw new Error(`No device selected`); } if (!this.protocolFactory.isValid(protocolMeta)) { throw new Error(`Invalid protocol meta`); } const protocol = await this.protocolFactory.create(protocolMeta); if (protocol) { localStorage.setItem('last-protocol', JSON.stringify(protocolMeta)); await this.tapService.useProtocolFromMeta(protocolMeta, true, false); } else { throw new Error(`Failed to create tap connection from given information: ${JSON.stringify(protocolMeta)}`); } return true; } catch (err) { console.warn('failed to resolved selected tap', err); if (noTapRedirectUrl) { this.navController.navigateRoot(noTapRedirectUrl, {}); } return false; } } tryRestaureSession() { try { const lastSession = localStorage.getItem('last-protocol'); if (lastSession) { const protocolMeta = JSON.parse(lastSession); console.log('ConnectedTapResolver', 'Restaure session: ', protocolMeta); return protocolMeta; } } catch (err) { localStorage.removeItem('last-protocol'); } return undefined; } } /** @nocollapse */ TapSelectedGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapSelectedGuard, deps: [{ token: i1.CurrentDeviceService }, { token: i2.ProtocolFactoryService }, { token: i3.NavController }], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ TapSelectedGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapSelectedGuard, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: TapSelectedGuard, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.CurrentDeviceService }, { type: i2.ProtocolFactoryService }, { type: i3.NavController }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXNlbGVjdGVkLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW90aXplLWlvbmljL3NyYy9saWIvdGFwLXNlbGVjdGVkLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7OztBQUsvRSxNQUFNLE9BQU8sZ0JBQWdCO0lBQzNCLFlBQ1UsVUFBZ0MsRUFDaEMsZUFBdUMsRUFDdkMsYUFBNEI7UUFGNUIsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ25DLENBQUM7SUFFSixLQUFLLENBQUMsV0FBVyxDQUNmLEtBQTZCLEVBQzdCLEtBQTBCO1FBRTFCLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hELElBQUk7WUFDRixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFO2dCQUMxQixPQUFPLElBQUksQ0FBQzthQUNiO1lBQ0QsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7WUFDakQsSUFBSSxZQUFzQyxDQUFDO1lBQzNDLElBQUksYUFBYSxFQUFFO2dCQUNqQixZQUFZLEdBQUcsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ2pCLE1BQU0sSUFBSSxLQUFLLENBQ2Isc0NBQXNDLGFBQWEsR0FBRyxDQUN2RCxDQUFDO2lCQUNIO2FBQ0Y7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNqQixZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7YUFDMUM7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7YUFDdkM7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQzthQUMxQztZQUNELE1BQU0sUUFBUSxHQUNaLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDbEQsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osWUFBWSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2dCQUNwRSxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzthQUN0RTtpQkFBTTtnQkFDTCxNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxJQUFJLENBQUMsU0FBUyxDQUN2RSxZQUFZLENBQ2IsRUFBRSxDQUNKLENBQUM7YUFDSDtZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFBQyxPQUFPLEdBQVEsRUFBRTtZQUNqQixPQUFPLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELElBQUksZ0JBQWdCLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQ3ZEO1lBQ0QsT0FBTyxLQUFLLENBQUM7U0FDZDtJQUNILENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSTtZQUNGLE1BQU0sV0FBVyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDMUQsSUFBSSxXQUFXLEVBQUU7Z0JBQ2YsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDN0MsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLENBQUMsQ0FBQztnQkFDeEUsT0FBTyxZQUFZLENBQUM7YUFDckI7U0FDRjtRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osWUFBWSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUMxQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7O2lJQXJFVSxnQkFBZ0I7cUlBQWhCLGdCQUFnQixjQUZmLE1BQU07NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIENhbkFjdGl2YXRlLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRhcCB9IGZyb20gJ0Bpb3RpemUvdGFwJztcbmltcG9ydCB7IENvbVByb3RvY29sIH0gZnJvbSAnQGlvdGl6ZS90YXAvcHJvdG9jb2wvYXBpJztcbmltcG9ydCB7IEN1cnJlbnREZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi9jdXJyZW50LWRldmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IFByb3RvY29sTWV0YSB9IGZyb20gJy4vZXh0ZW5zaW9ucy9wcm90b2NvbC1pbmZvJztcbmltcG9ydCB7IFByb3RvY29sRmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuL3Byb3RvY29sLWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBzdHJpbmdUb1Byb3RvY29sTWV0YSB9IGZyb20gJy4vdXRpbGl0eS9wcm90b2NvbC1tZXRhLXBhcmFtLWNvbnZlcnRlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUYXBTZWxlY3RlZEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRhcFNlcnZpY2U6IEN1cnJlbnREZXZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvdG9jb2xGYWN0b3J5OiBQcm90b2NvbEZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlclxuICApIHt9XG5cbiAgYXN5bmMgY2FuQWN0aXZhdGUoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3Qgbm9UYXBSZWRpcmVjdFVybCA9IHJvdXRlLmRhdGFbJ25vVGFwUmVkaXJlY3RVcmwnXTtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMudGFwU2VydmljZS5oYXNUYXApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBwcm90b2NvbFBhcmFtID0gcm91dGUucXVlcnlQYXJhbXMucHJvdG9jb2w7XG4gICAgICBsZXQgcHJvdG9jb2xNZXRhOiBQcm90b2NvbE1ldGEgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAocHJvdG9jb2xQYXJhbSkge1xuICAgICAgICBwcm90b2NvbE1ldGEgPSBzdHJpbmdUb1Byb3RvY29sTWV0YShwcm90b2NvbFBhcmFtKTtcbiAgICAgICAgaWYgKCFwcm90b2NvbE1ldGEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgSW52YWxpZCBwcm90b2NvbCBwYXJhbWV0ZXIgdmFsdWU6IFwiJHtwcm90b2NvbFBhcmFtfVwiYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghcHJvdG9jb2xNZXRhKSB7XG4gICAgICAgIHByb3RvY29sTWV0YSA9IHRoaXMudHJ5UmVzdGF1cmVTZXNzaW9uKCk7XG4gICAgICB9XG4gICAgICBpZiAoIXByb3RvY29sTWV0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGRldmljZSBzZWxlY3RlZGApO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnByb3RvY29sRmFjdG9yeS5pc1ZhbGlkKHByb3RvY29sTWV0YSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHByb3RvY29sIG1ldGFgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb3RvY29sOiBDb21Qcm90b2NvbCB8IHVuZGVmaW5lZCA9XG4gICAgICAgIGF3YWl0IHRoaXMucHJvdG9jb2xGYWN0b3J5LmNyZWF0ZShwcm90b2NvbE1ldGEpO1xuICAgICAgaWYgKHByb3RvY29sKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYXN0LXByb3RvY29sJywgSlNPTi5zdHJpbmdpZnkocHJvdG9jb2xNZXRhKSk7XG4gICAgICAgIGF3YWl0IHRoaXMudGFwU2VydmljZS51c2VQcm90b2NvbEZyb21NZXRhKHByb3RvY29sTWV0YSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgdG8gY3JlYXRlIHRhcCBjb25uZWN0aW9uIGZyb20gZ2l2ZW4gaW5mb3JtYXRpb246ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBwcm90b2NvbE1ldGFcbiAgICAgICAgICApfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2ZhaWxlZCB0byByZXNvbHZlZCBzZWxlY3RlZCB0YXAnLCBlcnIpO1xuICAgICAgaWYgKG5vVGFwUmVkaXJlY3RVcmwpIHtcbiAgICAgICAgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlUm9vdChub1RhcFJlZGlyZWN0VXJsLCB7fSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdHJ5UmVzdGF1cmVTZXNzaW9uKCk6IFByb3RvY29sTWV0YSB8IHVuZGVmaW5lZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGxhc3RTZXNzaW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhc3QtcHJvdG9jb2wnKTtcbiAgICAgIGlmIChsYXN0U2Vzc2lvbikge1xuICAgICAgICBjb25zdCBwcm90b2NvbE1ldGEgPSBKU09OLnBhcnNlKGxhc3RTZXNzaW9uKTtcbiAgICAgICAgY29uc29sZS5sb2coJ0Nvbm5lY3RlZFRhcFJlc29sdmVyJywgJ1Jlc3RhdXJlIHNlc3Npb246ICcsIHByb3RvY29sTWV0YSk7XG4gICAgICAgIHJldHVybiBwcm90b2NvbE1ldGE7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbGFzdC1wcm90b2NvbCcpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=