UNPKG

@iotize/ionic

Version:

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

55 lines 7.27 kB
import { Injectable } from '@angular/core'; import { filter, share, tap } from 'rxjs/operators'; import { CurrentDeviceService } from './current-device.service'; import { TapScannerNfcService } from './tap-scanner/tap-scanner-nfc/tap-scanner-nfc.service'; import * as i0 from "@angular/core"; import * as i1 from "./tap-scanner/tap-scanner-nfc/tap-scanner-nfc.service"; import * as i2 from "./current-device.service"; export class NfcReTapService { constructor(nfcTapScanner, tapService) { this.nfcTapScanner = nfcTapScanner; this.tapService = tapService; /** * Event trigger when user tap the same tap he is already connected to */ this.reTapEvent = this.nfcTapScanner.tapEvent.pipe(filter((event) => { return this.tapService.isSameTag(event.tag); }), tap((event) => { const tap = this.tapService.tapOrUndefined; if (!tap) { return; } // if encryption is enabled, we need to refresh encryption keys when new nfc tap occures on the same tag if (event.tap?.encryption) { const { encryption, keys, frameCounter, initializationVectorResetPeriod, } = event.tap.encryption; tap.encryption.setEncryptedFrameCounter(frameCounter); tap.encryption.setInitializationVectorRefreshPeriod(initializationVectorResetPeriod); tap.encryption.setEncryptionKeys(keys); if (encryption) { tap.encryption.resume(); } else { tap.encryption.pause(); } } }), share()); } initialize() { if (!this._sub) { this._sub = this.reTapEvent.subscribe(); } return this._sub; } tearDown() { this._sub?.unsubscribe(); } } /** @nocollapse */ NfcReTapService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NfcReTapService, deps: [{ token: i1.TapScannerNfcService }, { token: i2.CurrentDeviceService }], target: i0.ɵɵFactoryTarget.Injectable }); /** @nocollapse */ NfcReTapService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NfcReTapService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: NfcReTapService, decorators: [{ type: Injectable, args: [{ providedIn: 'root', }] }], ctorParameters: function () { return [{ type: i1.TapScannerNfcService }, { type: i2.CurrentDeviceService }]; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmZjLXJlLXRhcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW90aXplLWlvbmljL3NyYy9saWIvbmZjLXJlLXRhcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDaEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdURBQXVELENBQUM7Ozs7QUFLN0YsTUFBTSxPQUFPLGVBQWU7SUFzQzFCLFlBQ1UsYUFBbUMsRUFDbkMsVUFBZ0M7UUFEaEMsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLGVBQVUsR0FBVixVQUFVLENBQXNCO1FBdkMxQzs7V0FFRztRQUNILGVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzNDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2YsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsQ0FBQyxDQUFDLEVBQ0YsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQztZQUMzQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNSLE9BQU87YUFDUjtZQUNELHdHQUF3RztZQUN4RyxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsVUFBVSxFQUFFO2dCQUN6QixNQUFNLEVBQ0osVUFBVSxFQUNWLElBQUksRUFDSixZQUFZLEVBQ1osK0JBQStCLEdBQ2hDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7Z0JBQ3pCLEdBQUcsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3RELEdBQUcsQ0FBQyxVQUFVLENBQUMsb0NBQW9DLENBQ2pELCtCQUErQixDQUNoQyxDQUFDO2dCQUNGLEdBQUcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksVUFBVSxFQUFFO29CQUNkLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7aUJBQ3pCO3FCQUFNO29CQUNMLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ3hCO2FBQ0Y7UUFDSCxDQUFDLENBQUMsRUFDRixLQUFLLEVBQUUsQ0FDUixDQUFDO0lBT0MsQ0FBQztJQUVKLFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUN6QztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7Z0lBcERVLGVBQWU7b0lBQWYsZUFBZSxjQUZkLE1BQU07NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc2hhcmUsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEN1cnJlbnREZXZpY2VTZXJ2aWNlIH0gZnJvbSAnLi9jdXJyZW50LWRldmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IFRhcFNjYW5uZXJOZmNTZXJ2aWNlIH0gZnJvbSAnLi90YXAtc2Nhbm5lci90YXAtc2Nhbm5lci1uZmMvdGFwLXNjYW5uZXItbmZjLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmZjUmVUYXBTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIEV2ZW50IHRyaWdnZXIgd2hlbiB1c2VyIHRhcCB0aGUgc2FtZSB0YXAgaGUgaXMgYWxyZWFkeSBjb25uZWN0ZWQgdG9cbiAgICovXG4gIHJlVGFwRXZlbnQgPSB0aGlzLm5mY1RhcFNjYW5uZXIudGFwRXZlbnQucGlwZShcbiAgICBmaWx0ZXIoKGV2ZW50KSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy50YXBTZXJ2aWNlLmlzU2FtZVRhZyhldmVudC50YWcpO1xuICAgIH0pLFxuICAgIHRhcCgoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRhcCA9IHRoaXMudGFwU2VydmljZS50YXBPclVuZGVmaW5lZDtcbiAgICAgIGlmICghdGFwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIC8vIGlmIGVuY3J5cHRpb24gaXMgZW5hYmxlZCwgd2UgbmVlZCB0byByZWZyZXNoIGVuY3J5cHRpb24ga2V5cyB3aGVuIG5ldyBuZmMgdGFwIG9jY3VyZXMgb24gdGhlIHNhbWUgdGFnXG4gICAgICBpZiAoZXZlbnQudGFwPy5lbmNyeXB0aW9uKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBlbmNyeXB0aW9uLFxuICAgICAgICAgIGtleXMsXG4gICAgICAgICAgZnJhbWVDb3VudGVyLFxuICAgICAgICAgIGluaXRpYWxpemF0aW9uVmVjdG9yUmVzZXRQZXJpb2QsXG4gICAgICAgIH0gPSBldmVudC50YXAuZW5jcnlwdGlvbjtcbiAgICAgICAgdGFwLmVuY3J5cHRpb24uc2V0RW5jcnlwdGVkRnJhbWVDb3VudGVyKGZyYW1lQ291bnRlcik7XG4gICAgICAgIHRhcC5lbmNyeXB0aW9uLnNldEluaXRpYWxpemF0aW9uVmVjdG9yUmVmcmVzaFBlcmlvZChcbiAgICAgICAgICBpbml0aWFsaXphdGlvblZlY3RvclJlc2V0UGVyaW9kXG4gICAgICAgICk7XG4gICAgICAgIHRhcC5lbmNyeXB0aW9uLnNldEVuY3J5cHRpb25LZXlzKGtleXMpO1xuICAgICAgICBpZiAoZW5jcnlwdGlvbikge1xuICAgICAgICAgIHRhcC5lbmNyeXB0aW9uLnJlc3VtZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhcC5lbmNyeXB0aW9uLnBhdXNlKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSxcbiAgICBzaGFyZSgpXG4gICk7XG5cbiAgcHJpdmF0ZSBfc3ViPzogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmZjVGFwU2Nhbm5lcjogVGFwU2Nhbm5lck5mY1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0YXBTZXJ2aWNlOiBDdXJyZW50RGV2aWNlU2VydmljZVxuICApIHt9XG5cbiAgaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAoIXRoaXMuX3N1Yikge1xuICAgICAgdGhpcy5fc3ViID0gdGhpcy5yZVRhcEV2ZW50LnN1YnNjcmliZSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc3ViO1xuICB9XG5cbiAgdGVhckRvd24oKSB7XG4gICAgdGhpcy5fc3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=