@everymatrix/cashier-method-details 1.43.3 → 1.44.0

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@everymatrix/cashier-method-details",
3
- "version": "1.43.3",
3
+ "version": "1.44.0",
4
4
  "main": "index.js",
5
5
  "svelte": "src/index.ts",
6
6
  "scripts": {
@@ -35,5 +35,5 @@
35
35
  "publishConfig": {
36
36
  "access": "public"
37
37
  },
38
- "gitHead": "4723f5370b2d6fc913a8cf6770f9f492038e54e8"
38
+ "gitHead": "701410f2b76dfe1ee4038f799b1e8e340c85cdb5"
39
39
  }
@@ -252,8 +252,9 @@
252
252
  let showErrorModal = false;
253
253
  let transactionId = '';
254
254
  let showSpinner: boolean = false;
255
+ let abortController = new AbortController();
255
256
 
256
- $: endpoint && session && selectedpaymentmethodname && currency && reinitMethod();
257
+ $: endpoint && session && selectedpaymentmethodname && currency && initMethod();
257
258
  $: clientstyling && customStylingContainer && setClientStyling();
258
259
  $: clientstylingurl && customStylingContainer && setClientStylingURL();
259
260
  $: lang && setActiveLanguage();
@@ -262,7 +263,7 @@
262
263
  $: fields.length && qrCodeContainer.length && generateQr();
263
264
  $: fields.length && flatpickrEl.length && createDatePicker();
264
265
 
265
- const reinitMethod = () => {
266
+ const initMethod = () => {
266
267
  if (flatpickrEl.length) {
267
268
  flatpickrEl.forEach(el => {
268
269
  if (!el) {
@@ -305,6 +306,12 @@
305
306
  })
306
307
  }
307
308
 
309
+ const reinitMethod = (e) => {
310
+ if (abortController?.signal?.aborted && selectedpaymentmethodname === e.detail.Name) {
311
+ initMethod()
312
+ }
313
+ }
314
+
308
315
  const createDatePicker = () => {
309
316
  const dateOptions = {
310
317
  [FieldTypes.Time]: {
@@ -369,6 +376,9 @@
369
376
  });
370
377
 
371
378
  const getPaymentDetails = () => {
379
+ abortPaymentFetch();
380
+ abortController = new AbortController();
381
+ const signal = abortController.signal;
372
382
  showSpinner = true;
373
383
  const url:URL = new URL(`${endpoint}/v1/player/${customerid}/payment/GetPaymentMethod`);
374
384
  const headers = new Headers();
@@ -386,41 +396,53 @@
386
396
  })
387
397
  }
388
398
  fetch(url, requestParams).then(res => res.json()).then(data => {
389
- if (data.error) {
390
- window.postMessage({type: 'ShowSessionError', error: data.error}, window.location.href)
391
- return;
392
- }
393
- if (data.ResponseCode === ResponseCode.PlayerSessionIsNotValid
394
- || data.ResponseCode === ResponseCode.Maintenance
395
- || data.ResponseCode === ResponseCode.JwtTokenError) {
396
- errorResponseCode = data.ResponseCode;
399
+ if (!signal.aborted) {
400
+ if (data.error) {
401
+ window.postMessage({type: 'ShowSessionError', error: data.error}, window.location.href)
402
+ return;
403
+ }
404
+ if (data.ResponseCode === ResponseCode.PlayerSessionIsNotValid
405
+ || data.ResponseCode === ResponseCode.Maintenance
406
+ || data.ResponseCode === ResponseCode.JwtTokenError) {
407
+ errorResponseCode = data.ResponseCode;
408
+ setErrorResponseCode();
409
+ return;
410
+ }
411
+ if (data.ResponseCode !== ResponseCode.Success) {
412
+ errorResponseCode = data.ResponseCode;
413
+ return;
414
+ }
415
+ xPaymentSessionToken = data.XPaymentSessionToken;
416
+ selectedPaymentMethod = data.PaymentMethod;
417
+ editedAmount = Number(amount);
418
+ if (!selectedPaymentMethod.HideAmountField) {
419
+ validateAmount();
420
+ } else {
421
+ amountError = '';
422
+ }
423
+ fields = selectedPaymentMethod.Fields && selectedPaymentMethod.Fields.map(field => new PaymentMethodDetails(field));
424
+ fields.forEach(field => {
425
+ if (field?.defaultValue) {
426
+ prepareFields[field.name] = field.defaultValue;
427
+ }
428
+ validateField(field);
429
+ })
430
+ setConfirmModalInfo();
397
431
  setErrorResponseCode();
398
- return;
399
- }
400
- if (data.ResponseCode !== ResponseCode.Success) {
401
- errorResponseCode = data.ResponseCode;
402
- return;
432
+ hideMethodsList();
433
+ window.postMessage({
434
+ type: 'StartSessionCountdown',
435
+ xPaymentSessionToken,
436
+ selectedPaymentMethodName: selectedpaymentmethodname
437
+ }, window.location.href);
403
438
  }
404
- xPaymentSessionToken = data.XPaymentSessionToken;
405
- selectedPaymentMethod = data.PaymentMethod;
406
- editedAmount = Number(amount);
407
- if (!selectedPaymentMethod.HideAmountField) {
408
- validateAmount();
409
- } else {
410
- amountError = '';
411
- }
412
- fields = selectedPaymentMethod.Fields && selectedPaymentMethod.Fields.map(field => new PaymentMethodDetails(field));
413
- fields.forEach(field => {
414
- if (field?.defaultValue) {
415
- prepareFields[field.name] = field.defaultValue;
416
- }
417
- validateField(field);
418
- })
419
- setConfirmModalInfo();
420
- setErrorResponseCode();
421
- hideMethodsList();
422
- window.postMessage({ type: 'StartSessionCountdown', xPaymentSessionToken, selectedPaymentMethodName: selectedpaymentmethodname }, window.location.href);
423
- }).finally(() => showSpinner = false)
439
+ }).finally(() => { showSpinner = signal.aborted })
440
+ }
441
+
442
+ const abortPaymentFetch = ():void => {
443
+ if (abortController) {
444
+ abortController.abort();
445
+ }
424
446
  }
425
447
 
426
448
  const setClientStyling = ():void => {
@@ -466,6 +488,7 @@
466
488
  window.addEventListener('confirmModal', confirmTxn, false);
467
489
  window.addEventListener('closeIframe', closeIframe, false);
468
490
  window.addEventListener('notificationButtonClick', retryRedirect, false);
491
+ window.addEventListener('selectPayMeth', reinitMethod, false)
469
492
  document.addEventListener('click',closeAllLookups);
470
493
  window.addEventListener('message', messageHandler, false);
471
494
  dayjs.extend(customParseFormat);
@@ -475,6 +498,7 @@
475
498
  window.removeEventListener('confirmModal', confirmTxn);
476
499
  window.removeEventListener('closeIframe', closeIframe);
477
500
  window.removeEventListener('notificationButtonClick', retryRedirect);
501
+ window.removeEventListener('selectPayMeth', reinitMethod, false)
478
502
  window.removeEventListener('message', messageHandler);
479
503
  }
480
504
  });
@@ -594,6 +618,9 @@
594
618
  }
595
619
 
596
620
  const hidePaymentDetails = () => {
621
+ if (showSpinner) {
622
+ abortPaymentFetch()
623
+ }
597
624
  dispatchEvent(new CustomEvent('hidePaymentDetails', {
598
625
  detail: { hideMethodDetails: mobileView },
599
626
  bubbles: true,
@@ -797,6 +824,12 @@
797
824
  return ''
798
825
  }
799
826
 
827
+ const keydownHandler = (event: KeyboardEvent) => {
828
+ const invalidKeys = ['+','-','e','E'];
829
+ if (invalidKeys.includes(event.key)) {
830
+ event.preventDefault();
831
+ }
832
+ }
800
833
  const validateAmount = () => {
801
834
  amountError = emptyAmountError() || minAmountError() ||
802
835
  maxAmountError() || amountMultiplierError() ||
@@ -869,6 +902,7 @@
869
902
  <input type="number"
870
903
  bind:value={editedAmount}
871
904
  on:input={() => validateAmount()}
905
+ on:keydown={(event) => keydownHandler(event)}
872
906
  on:blur={() => {showError['amount'] = true; validateAmount()}}
873
907
  placeholder="{$_('amountPlaceholder')}"
874
908
  >