@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
80 lines • 10.7 kB
JavaScript
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=