import { MPResponse } from '../types/payment.types'; import { VerifyRequest, VerifyResponse } from '../types/verify.types'; import { store } from 'redux/store'; import { createSessionExpiredResponse, withUnhandledRejectionHandler } from '../utils/session-handler'; export class VerifyService { private _token: string; private _merchantId: string; constructor(token?: string, merchantId?: string) { this._token = token || store.getState().masterpassRest.token || ''; this._merchantId = merchantId || store.getState().masterpassRest.tokenData?.MerchantId || ''; this.initialize(); } private initialize(): void { window.Masterpass.setToken(this._token); window.Masterpass.setMerchantId(this._merchantId); } verifyOtp(request: VerifyRequest): Promise> { return withUnhandledRejectionHandler( () => new Promise((resolve, reject) => { try { this.initialize(); window.Masterpass.verifyService.verifyOtp( request, (statusCode, response) => { resolve(response); } ); } catch (error) { reject(error); } }), createSessionExpiredResponse>() ); } resendOtp(otpToken?: string): Promise> { return withUnhandledRejectionHandler( () => new Promise((resolve, reject) => { try { this.initialize(); window.Masterpass.verifyService.resendOtp( { token: otpToken || this._token }, (statusCode, response) => { resolve(response); } ); } catch (error) { reject(error); } }), createSessionExpiredResponse>() ); } }