ynkap-payment
Version:
Module de paiement Y-Nkap pour Angular - Intégration simple des paiements mobiles (Orange Money, MTN Mobile Money)
62 lines • 6.38 kB
JavaScript
import { Injectable } from '@angular/core';
import * as i0 from "@angular/core";
/**
* Service pour gérer la stabilité des modals et éviter les problèmes de détection de changements
*/
export class ModalStabilityService {
constructor(ngZone) {
this.ngZone = ngZone;
}
/**
* Ouvre un modal de manière stable
* @param callback Fonction qui change l'état du modal
* @param cdr ChangeDetectorRef du composant
*/
openModalStable(callback, cdr) {
// Force l'exécution dans la zone Angular pour les applications tierces
this.ngZone.run(() => {
callback();
// Détection immédiate
cdr.detectChanges();
// Détection après micro-tick pour les applications tierces
Promise.resolve().then(() => {
cdr.detectChanges();
});
// Détection de sécurité pour les cas complexes d'applications tierces
setTimeout(() => {
cdr.detectChanges();
}, 16); // 1 frame à 60fps
});
}
/**
* Ferme un modal de manière stable
* @param callback Fonction qui change l'état du modal
* @param cdr ChangeDetectorRef du composant
*/
closeModalStable(callback, cdr) {
this.ngZone.run(() => {
callback();
cdr.detectChanges();
});
}
/**
* Exécute une action liée au modal de manière stable
* @param callback Fonction à exécuter
* @param cdr ChangeDetectorRef du composant
*/
executeModalAction(callback, cdr) {
this.ngZone.run(() => {
callback();
cdr.detectChanges();
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ModalStabilityService, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ModalStabilityService, providedIn: 'root' }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ModalStabilityService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwtc3RhYmlsaXR5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy95bmthcC9zcmMvbGliL3NoYXJlZC9tb2RhbC1zdGFiaWxpdHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUE2QixNQUFNLGVBQWUsQ0FBQzs7QUFFdEU7O0dBRUc7QUFJSCxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQUcsQ0FBQztJQUV0Qzs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLFFBQW9CLEVBQUUsR0FBc0I7UUFDMUQsdUVBQXVFO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNuQixRQUFRLEVBQUUsQ0FBQztZQUVYLHNCQUFzQjtZQUN0QixHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFFcEIsMkRBQTJEO1lBQzNELE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUMxQixHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7WUFFSCxzRUFBc0U7WUFDdEUsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDZCxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdEIsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO1FBQzVCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxRQUFvQixFQUFFLEdBQXNCO1FBQzNELElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNuQixRQUFRLEVBQUUsQ0FBQztZQUNYLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsUUFBb0IsRUFBRSxHQUFzQjtRQUM3RCxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDbkIsUUFBUSxFQUFFLENBQUM7WUFDWCxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQW5EVSxxQkFBcUI7bUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKipcbiAqIFNlcnZpY2UgcG91ciBnw6lyZXIgbGEgc3RhYmlsaXTDqSBkZXMgbW9kYWxzIGV0IMOpdml0ZXIgbGVzIHByb2Jsw6htZXMgZGUgZMOpdGVjdGlvbiBkZSBjaGFuZ2VtZW50c1xuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNb2RhbFN0YWJpbGl0eVNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbmdab25lOiBOZ1pvbmUpIHt9XG5cbiAgLyoqXG4gICAqIE91dnJlIHVuIG1vZGFsIGRlIG1hbmnDqHJlIHN0YWJsZVxuICAgKiBAcGFyYW0gY2FsbGJhY2sgRm9uY3Rpb24gcXVpIGNoYW5nZSBsJ8OpdGF0IGR1IG1vZGFsXG4gICAqIEBwYXJhbSBjZHIgQ2hhbmdlRGV0ZWN0b3JSZWYgZHUgY29tcG9zYW50XG4gICAqL1xuICBvcGVuTW9kYWxTdGFibGUoY2FsbGJhY2s6ICgpID0+IHZvaWQsIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpOiB2b2lkIHtcbiAgICAvLyBGb3JjZSBsJ2V4w6ljdXRpb24gZGFucyBsYSB6b25lIEFuZ3VsYXIgcG91ciBsZXMgYXBwbGljYXRpb25zIHRpZXJjZXNcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgY2FsbGJhY2soKTtcblxuICAgICAgLy8gRMOpdGVjdGlvbiBpbW3DqWRpYXRlXG4gICAgICBjZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAvLyBEw6l0ZWN0aW9uIGFwcsOocyBtaWNyby10aWNrIHBvdXIgbGVzIGFwcGxpY2F0aW9ucyB0aWVyY2VzXG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBEw6l0ZWN0aW9uIGRlIHPDqWN1cml0w6kgcG91ciBsZXMgY2FzIGNvbXBsZXhlcyBkJ2FwcGxpY2F0aW9ucyB0aWVyY2VzXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0sIDE2KTsgLy8gMSBmcmFtZSDDoCA2MGZwc1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZlcm1lIHVuIG1vZGFsIGRlIG1hbmnDqHJlIHN0YWJsZVxuICAgKiBAcGFyYW0gY2FsbGJhY2sgRm9uY3Rpb24gcXVpIGNoYW5nZSBsJ8OpdGF0IGR1IG1vZGFsXG4gICAqIEBwYXJhbSBjZHIgQ2hhbmdlRGV0ZWN0b3JSZWYgZHUgY29tcG9zYW50XG4gICAqL1xuICBjbG9zZU1vZGFsU3RhYmxlKGNhbGxiYWNrOiAoKSA9PiB2b2lkLCBjZHI6IENoYW5nZURldGVjdG9yUmVmKTogdm9pZCB7XG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgICBjZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4w6ljdXRlIHVuZSBhY3Rpb24gbGnDqWUgYXUgbW9kYWwgZGUgbWFuacOocmUgc3RhYmxlXG4gICAqIEBwYXJhbSBjYWxsYmFjayBGb25jdGlvbiDDoCBleMOpY3V0ZXJcbiAgICogQHBhcmFtIGNkciBDaGFuZ2VEZXRlY3RvclJlZiBkdSBjb21wb3NhbnRcbiAgICovXG4gIGV4ZWN1dGVNb2RhbEFjdGlvbihjYWxsYmFjazogKCkgPT4gdm9pZCwgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZik6IHZvaWQge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgICAgY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxufVxuIl19