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