@iotize/ionic
Version:
Iotize specific building blocks on top of @ionic/angular.
52 lines • 6.86 kB
JavaScript
import { inject, 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";
export class NfcReTapService {
nfcTapScanner = inject(TapScannerNfcService);
tapService = inject(CurrentDeviceService);
/**
* Event trigger when user tap the same tap he is already connected to
*/
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());
_sub;
initialize() {
if (!this._sub) {
this._sub = this.reTapEvent.subscribe();
}
return this._sub;
}
tearDown() {
this._sub?.unsubscribe();
}
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NfcReTapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
/** @nocollapse */ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NfcReTapService, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NfcReTapService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root',
}]
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmZjLXJlLXRhcC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaW90aXplLWlvbmljL3NyYy9saWIvbmZjLXJlLXRhcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVEQUF1RCxDQUFDOztBQUs3RixNQUFNLE9BQU8sZUFBZTtJQUNsQixhQUFhLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFFN0MsVUFBVSxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ2xEOztPQUVHO0lBQ0gsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDM0MsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QyxDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNaLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDO1FBQzNDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU87UUFDVCxDQUFDO1FBQ0Qsd0dBQXdHO1FBQ3hHLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQztZQUMxQixNQUFNLEVBQ0osVUFBVSxFQUNWLElBQUksRUFDSixZQUFZLEVBQ1osK0JBQStCLEdBQ2hDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7WUFDekIsR0FBRyxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0RCxHQUFHLENBQUMsVUFBVSxDQUFDLG9DQUFvQyxDQUNqRCwrQkFBK0IsQ0FDaEMsQ0FBQztZQUNGLEdBQUcsQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkMsSUFBSSxVQUFVLEVBQUUsQ0FBQztnQkFDZixHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLEVBQ0YsS0FBSyxFQUFFLENBQ1IsQ0FBQztJQUVNLElBQUksQ0FBZ0I7SUFFNUIsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDM0IsQ0FBQzsySEFsRFUsZUFBZTsrSEFBZixlQUFlLGNBRmQsTUFBTTs7NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBzaGFyZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ3VycmVudERldmljZVNlcnZpY2UgfSBmcm9tICcuL2N1cnJlbnQtZGV2aWNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFwU2Nhbm5lck5mY1NlcnZpY2UgfSBmcm9tICcuL3RhcC1zY2FubmVyL3RhcC1zY2FubmVyLW5mYy90YXAtc2Nhbm5lci1uZmMuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBOZmNSZVRhcFNlcnZpY2Uge1xuICBwcml2YXRlIG5mY1RhcFNjYW5uZXIgPSBpbmplY3QoVGFwU2Nhbm5lck5mY1NlcnZpY2UpO1xuXG4gIHByaXZhdGUgdGFwU2VydmljZSA9IGluamVjdChDdXJyZW50RGV2aWNlU2VydmljZSk7XG4gIC8qKlxuICAgKiBFdmVudCB0cmlnZ2VyIHdoZW4gdXNlciB0YXAgdGhlIHNhbWUgdGFwIGhlIGlzIGFscmVhZHkgY29ubmVjdGVkIHRvXG4gICAqL1xuICByZVRhcEV2ZW50ID0gdGhpcy5uZmNUYXBTY2FubmVyLnRhcEV2ZW50LnBpcGUoXG4gICAgZmlsdGVyKChldmVudCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMudGFwU2VydmljZS5pc1NhbWVUYWcoZXZlbnQudGFnKTtcbiAgICB9KSxcbiAgICB0YXAoKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0YXAgPSB0aGlzLnRhcFNlcnZpY2UudGFwT3JVbmRlZmluZWQ7XG4gICAgICBpZiAoIXRhcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICAvLyBpZiBlbmNyeXB0aW9uIGlzIGVuYWJsZWQsIHdlIG5lZWQgdG8gcmVmcmVzaCBlbmNyeXB0aW9uIGtleXMgd2hlbiBuZXcgbmZjIHRhcCBvY2N1cmVzIG9uIHRoZSBzYW1lIHRhZ1xuICAgICAgaWYgKGV2ZW50LnRhcD8uZW5jcnlwdGlvbikge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgZW5jcnlwdGlvbixcbiAgICAgICAgICBrZXlzLFxuICAgICAgICAgIGZyYW1lQ291bnRlcixcbiAgICAgICAgICBpbml0aWFsaXphdGlvblZlY3RvclJlc2V0UGVyaW9kLFxuICAgICAgICB9ID0gZXZlbnQudGFwLmVuY3J5cHRpb247XG4gICAgICAgIHRhcC5lbmNyeXB0aW9uLnNldEVuY3J5cHRlZEZyYW1lQ291bnRlcihmcmFtZUNvdW50ZXIpO1xuICAgICAgICB0YXAuZW5jcnlwdGlvbi5zZXRJbml0aWFsaXphdGlvblZlY3RvclJlZnJlc2hQZXJpb2QoXG4gICAgICAgICAgaW5pdGlhbGl6YXRpb25WZWN0b3JSZXNldFBlcmlvZFxuICAgICAgICApO1xuICAgICAgICB0YXAuZW5jcnlwdGlvbi5zZXRFbmNyeXB0aW9uS2V5cyhrZXlzKTtcbiAgICAgICAgaWYgKGVuY3J5cHRpb24pIHtcbiAgICAgICAgICB0YXAuZW5jcnlwdGlvbi5yZXN1bWUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0YXAuZW5jcnlwdGlvbi5wYXVzZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSksXG4gICAgc2hhcmUoKVxuICApO1xuXG4gIHByaXZhdGUgX3N1Yj86IFN1YnNjcmlwdGlvbjtcblxuICBpbml0aWFsaXplKCkge1xuICAgIGlmICghdGhpcy5fc3ViKSB7XG4gICAgICB0aGlzLl9zdWIgPSB0aGlzLnJlVGFwRXZlbnQuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zdWI7XG4gIH1cblxuICB0ZWFyRG93bigpIHtcbiAgICB0aGlzLl9zdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==