UNPKG

@iotize/ionic

Version:

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

83 lines 10.9 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 { tapService; protocolFactory; navController; 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 */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapSelectedGuard, deps: [{ token: i1.CurrentDeviceService }, { token: i2.ProtocolFactoryService }, { token: i3.NavController }], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapSelectedGuard, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: TapSelectedGuard, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: () => [{ type: i1.CurrentDeviceService }, { type: i2.ProtocolFactoryService }, { type: i3.NavController }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFwLXNlbGVjdGVkLmd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW90aXplLWlvbmljL3NyYy9saWIvdGFwLXNlbGVjdGVkLmd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7OztBQUsvRSxNQUFNLE9BQU8sZ0JBQWdCO0lBRWpCO0lBQ0E7SUFDQTtJQUhWLFlBQ1UsVUFBZ0MsRUFDaEMsZUFBdUMsRUFDdkMsYUFBNEI7UUFGNUIsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQXdCO1FBQ3ZDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ25DLENBQUM7SUFFSixLQUFLLENBQUMsV0FBVyxDQUNmLEtBQTZCLEVBQzdCLEtBQTBCO1FBRTFCLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQztZQUNILElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDM0IsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBQ0QsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUM7WUFDakQsSUFBSSxZQUFzQyxDQUFDO1lBQzNDLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLFlBQVksR0FBRyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUNsQixNQUFNLElBQUksS0FBSyxDQUNiLHNDQUFzQyxhQUFhLEdBQUcsQ0FDdkQsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDbEIsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNDLENBQUM7WUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ2hELE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsTUFBTSxRQUFRLEdBQ1osTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNsRCxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLFlBQVksQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztnQkFDcEUsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdkUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJELElBQUksQ0FBQyxTQUFTLENBQ3ZFLFlBQVksQ0FDYixFQUFFLENBQ0osQ0FBQztZQUNKLENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFBQyxPQUFPLEdBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckQsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQzFELElBQUksV0FBVyxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsWUFBWSxDQUFDLENBQUM7Z0JBQ3hFLE9BQU8sWUFBWSxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLFlBQVksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7MkhBckVVLGdCQUFnQjsrSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gIENhbkFjdGl2YXRlLFxuICBSb3V0ZXJTdGF0ZVNuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRhcCB9IGZyb20gJ0Bpb3RpemUvdGFwJztcbmltcG9ydCB7IENvbVByb3RvY29sIH0gZnJvbSAnQGlvdGl6ZS90YXAvcHJvdG9jb2wvYXBpJztcbmltcG9ydCB7IEN1cnJlbnREZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi9jdXJyZW50LWRldmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IFByb3RvY29sTWV0YSB9IGZyb20gJy4vZXh0ZW5zaW9ucy9wcm90b2NvbC1pbmZvJztcbmltcG9ydCB7IFByb3RvY29sRmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuL3Byb3RvY29sLWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBzdHJpbmdUb1Byb3RvY29sTWV0YSB9IGZyb20gJy4vdXRpbGl0eS9wcm90b2NvbC1tZXRhLXBhcmFtLWNvbnZlcnRlcic7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBUYXBTZWxlY3RlZEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHRhcFNlcnZpY2U6IEN1cnJlbnREZXZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJvdG9jb2xGYWN0b3J5OiBQcm90b2NvbEZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmF2Q29udHJvbGxlcjogTmF2Q29udHJvbGxlclxuICApIHt9XG5cbiAgYXN5bmMgY2FuQWN0aXZhdGUoXG4gICAgcm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgc3RhdGU6IFJvdXRlclN0YXRlU25hcHNob3RcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3Qgbm9UYXBSZWRpcmVjdFVybCA9IHJvdXRlLmRhdGFbJ25vVGFwUmVkaXJlY3RVcmwnXTtcbiAgICB0cnkge1xuICAgICAgaWYgKHRoaXMudGFwU2VydmljZS5oYXNUYXApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBwcm90b2NvbFBhcmFtID0gcm91dGUucXVlcnlQYXJhbXMucHJvdG9jb2w7XG4gICAgICBsZXQgcHJvdG9jb2xNZXRhOiBQcm90b2NvbE1ldGEgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAocHJvdG9jb2xQYXJhbSkge1xuICAgICAgICBwcm90b2NvbE1ldGEgPSBzdHJpbmdUb1Byb3RvY29sTWV0YShwcm90b2NvbFBhcmFtKTtcbiAgICAgICAgaWYgKCFwcm90b2NvbE1ldGEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgSW52YWxpZCBwcm90b2NvbCBwYXJhbWV0ZXIgdmFsdWU6IFwiJHtwcm90b2NvbFBhcmFtfVwiYFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghcHJvdG9jb2xNZXRhKSB7XG4gICAgICAgIHByb3RvY29sTWV0YSA9IHRoaXMudHJ5UmVzdGF1cmVTZXNzaW9uKCk7XG4gICAgICB9XG4gICAgICBpZiAoIXByb3RvY29sTWV0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGRldmljZSBzZWxlY3RlZGApO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnByb3RvY29sRmFjdG9yeS5pc1ZhbGlkKHByb3RvY29sTWV0YSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHByb3RvY29sIG1ldGFgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHByb3RvY29sOiBDb21Qcm90b2NvbCB8IHVuZGVmaW5lZCA9XG4gICAgICAgIGF3YWl0IHRoaXMucHJvdG9jb2xGYWN0b3J5LmNyZWF0ZShwcm90b2NvbE1ldGEpO1xuICAgICAgaWYgKHByb3RvY29sKSB7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYXN0LXByb3RvY29sJywgSlNPTi5zdHJpbmdpZnkocHJvdG9jb2xNZXRhKSk7XG4gICAgICAgIGF3YWl0IHRoaXMudGFwU2VydmljZS51c2VQcm90b2NvbEZyb21NZXRhKHByb3RvY29sTWV0YSwgdHJ1ZSwgZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBGYWlsZWQgdG8gY3JlYXRlIHRhcCBjb25uZWN0aW9uIGZyb20gZ2l2ZW4gaW5mb3JtYXRpb246ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgICBwcm90b2NvbE1ldGFcbiAgICAgICAgICApfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICBjb25zb2xlLndhcm4oJ2ZhaWxlZCB0byByZXNvbHZlZCBzZWxlY3RlZCB0YXAnLCBlcnIpO1xuICAgICAgaWYgKG5vVGFwUmVkaXJlY3RVcmwpIHtcbiAgICAgICAgdGhpcy5uYXZDb250cm9sbGVyLm5hdmlnYXRlUm9vdChub1RhcFJlZGlyZWN0VXJsLCB7fSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgdHJ5UmVzdGF1cmVTZXNzaW9uKCk6IFByb3RvY29sTWV0YSB8IHVuZGVmaW5lZCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGxhc3RTZXNzaW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2xhc3QtcHJvdG9jb2wnKTtcbiAgICAgIGlmIChsYXN0U2Vzc2lvbikge1xuICAgICAgICBjb25zdCBwcm90b2NvbE1ldGEgPSBKU09OLnBhcnNlKGxhc3RTZXNzaW9uKTtcbiAgICAgICAgY29uc29sZS5sb2coJ0Nvbm5lY3RlZFRhcFJlc29sdmVyJywgJ1Jlc3RhdXJlIHNlc3Npb246ICcsIHByb3RvY29sTWV0YSk7XG4gICAgICAgIHJldHVybiBwcm90b2NvbE1ldGE7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbGFzdC1wcm90b2NvbCcpO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG4iXX0=