@opexa/portal-components 0.0.996 → 0.0.998

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -48,7 +48,7 @@ export function AurixPayPayMayaDeposit() {
48
48
  kycVerificationStatus: ctx.kycVerificationStatus,
49
49
  })));
50
50
  const verificationQuery = useMemberVerificationQuery();
51
- const verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
51
+ const _verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
52
52
  const [status, setStatus] = useState('waiting');
53
53
  const [errorMessage, setErrorMessage] = useState(null);
54
54
  const createDepositMutation = useCreateAurixPayPayMayaDepositMutation({
@@ -1,6 +1,6 @@
1
1
  export declare const AurixPayQRPHDepositContext: (props: {
2
2
  value: {
3
- status: "idle" | "generating-qr-code" | "qr-code-generated" | "failed" | "confirmed";
3
+ status: "confirmed" | "failed" | "idle" | "generating-qr-code" | "qr-code-generated";
4
4
  deposit: import("../../../../types").Deposit | null;
5
5
  errorMessage: {
6
6
  name: string;
@@ -13,7 +13,7 @@ export declare const AurixPayQRPHDepositContext: (props: {
13
13
  } & {
14
14
  children?: import("react").ReactNode | undefined;
15
15
  }) => React.ReactNode, useAurixPayQRPHDepositContext: () => {
16
- status: "idle" | "generating-qr-code" | "qr-code-generated" | "failed" | "confirmed";
16
+ status: "confirmed" | "failed" | "idle" | "generating-qr-code" | "qr-code-generated";
17
17
  deposit: import("../../../../types").Deposit | null;
18
18
  errorMessage: {
19
19
  name: string;
@@ -5,7 +5,7 @@ export interface GenerateQRCodeInput {
5
5
  promo?: string | null;
6
6
  }
7
7
  export declare function useAurixPayQRPHDeposit(): {
8
- status: "idle" | "generating-qr-code" | "qr-code-generated" | "failed" | "confirmed";
8
+ status: "confirmed" | "failed" | "idle" | "generating-qr-code" | "qr-code-generated";
9
9
  deposit: Deposit | null;
10
10
  errorMessage: {
11
11
  name: string;
@@ -10,7 +10,7 @@ import { ObjectType } from '../../../../services/ObjectType.js';
10
10
  import { useDepositWithdrawalPropsContext } from '../../DepositWithdrawalContext.js';
11
11
  export function useAurixPayQRPHDeposit() {
12
12
  const depositWithdrawalProps = useDepositWithdrawalPropsContext();
13
- const globalStore = useGlobalStore(useShallow((ctx) => ({
13
+ const _globalStore = useGlobalStore(useShallow((ctx) => ({
14
14
  kycVerificationStatus: ctx.kycVerificationStatus,
15
15
  })));
16
16
  const inputRef = useRef(null);
@@ -18,7 +18,7 @@ export function useAurixPayQRPHDeposit() {
18
18
  const [status, setStatus] = useState('idle');
19
19
  const [errorMessage, setErrorMessage] = useState(null);
20
20
  const verificationQuery = useMemberVerificationQuery();
21
- const verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
21
+ const _verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
22
22
  const mutation = useCreateAurixPayQrphDepositMutation({
23
23
  onMutate() {
24
24
  setStatus('generating-qr-code');
@@ -44,7 +44,7 @@ export function GCashDeposit() {
44
44
  kycVerificationStatus: ctx.kycVerificationStatus,
45
45
  })));
46
46
  const verificationQuery = useMemberVerificationQuery();
47
- const verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
47
+ const _verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
48
48
  const [status, setStatus] = useState('waiting');
49
49
  const [errorMessage, setErrorMessage] = useState(null);
50
50
  const createDepositMutation = useCreateGCashDepositMutation({
@@ -44,7 +44,7 @@ export function GCashWebpayDeposit() {
44
44
  kycVerificationStatus: ctx.kycVerificationStatus,
45
45
  })));
46
46
  const verificationQuery = useMemberVerificationQuery();
47
- const verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
47
+ const _verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
48
48
  const [status, setStatus] = useState('waiting');
49
49
  const createDepositMutation = useCreateGCashWebpayDepositMutation({
50
50
  onMutate() {
@@ -32,7 +32,7 @@ export function MayaAppDeposit() {
32
32
  kycVerificationStatus: ctx.kycVerificationStatus,
33
33
  })));
34
34
  const verificationQuery = useMemberVerificationQuery();
35
- const verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
35
+ const _verificationStatus = verificationQuery.data?.status ?? 'UNVERIFIED';
36
36
  const [status, setStatus] = useState('waiting');
37
37
  const [errorMessage, setErrorMessage] = useState(null);
38
38
  const createDepositMutation = useCreateMayaAppDepositMutation({
@@ -171,7 +171,7 @@ function AccountVerificationRequired() {
171
171
  globalStore.depositWithdrawal.setOpen(false);
172
172
  }, children: "Verify Now" })] }));
173
173
  }
174
- function AccountVerificationPending() {
174
+ function _AccountVerificationPending() {
175
175
  return (_jsxs("div", { className: "pt-xl", children: [_jsx("div", { className: "mx-auto flex size-12 items-center justify-center rounded-full bg-bg-warning-secondary", children: _jsx(AlertCircleIcon, { className: "size-6 text-text-featured-icon-light-warning" }) }), _jsx("h2", { className: "mt-lg text-center font-semibold text-lg", children: "Verification Pending" }), _jsx("p", { className: "mx-auto mt-xs max-w-[25rem] text-center text-sm text-text-tertiary-600", children: "Your personal verification is currently under review. You will be able to withdraw funds once your account is approved." })] }));
176
176
  }
177
177
  function InsufficientBalance() {
@@ -1,48 +1,119 @@
1
1
  'use client';
2
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import isMobile from 'is-mobile';
4
4
  import { useRouter } from 'next/navigation';
5
- import { useEffect, useState } from 'react';
5
+ import { useEffect, useRef, useState } from 'react';
6
6
  import { twJoin } from 'tailwind-merge';
7
7
  import { useSessionQuery } from '../../client/hooks/useSessionQuery.js';
8
8
  import { toaster } from '../../client/utils/toaster.js';
9
9
  import { Fallback } from './Fallback.js';
10
10
  export function DigitainContainer(props) {
11
11
  const session = useSessionQuery();
12
- const [isLoading, setLoading] = useState(false);
12
+ const [isLoading, setLoading] = useState(true);
13
+ const [hasBooted, setHasBooted] = useState(false);
13
14
  const router = useRouter();
15
+ const hasBootedRef = useRef(false);
16
+ const containerRef = useRef(null);
14
17
  useEffect(() => {
15
18
  if (session.data?.status === 'authenticated') {
16
19
  router.refresh();
17
20
  }
18
21
  }, [session.data?.status, router]);
19
22
  useEffect(() => {
20
- setLoading(true);
23
+ if (hasBootedRef.current || typeof window === 'undefined') {
24
+ return;
25
+ }
21
26
  let attempts = 0;
22
- const maxAttempts = 5; // e.g. wait up to ~10 seconds
23
- function checkAndBoot() {
24
- if (typeof window !== 'undefined' && window.Bootstrapper) {
27
+ const maxAttempts = 5;
28
+ const intervalId = setInterval(() => {
29
+ if (window.Bootstrapper) {
25
30
  console.log('Bootstrapper found, booting with params:', props.params);
31
+ hasBootedRef.current = true;
26
32
  window.Bootstrapper.boot(props.params, {
27
33
  name: isMobile() ? 'Mobile' : 'AsianView',
28
34
  }).then(() => {
29
35
  console.log('Sportsbook booted!');
36
+ setHasBooted(true);
37
+ }).catch((error) => {
38
+ console.error('Sportsbook boot failed:', error);
39
+ setLoading(false);
40
+ toaster.error({
41
+ title: 'Error',
42
+ description: 'Failed to initialize sportsbook.',
43
+ });
30
44
  });
31
- setTimeout(() => setLoading(false), 1000); // Give some time for the UI to update
32
45
  clearInterval(intervalId);
33
46
  }
34
47
  else if (++attempts >= maxAttempts) {
48
+ console.warn('Bootstrapper did not load in time.');
35
49
  setLoading(false);
36
50
  toaster.error({
37
51
  title: 'Error',
38
52
  description: 'Sportsbook failed to load. Please try again later.',
39
53
  });
40
- console.warn('Bootstrapper did not load in time.');
41
54
  clearInterval(intervalId);
42
55
  }
43
- }
44
- const intervalId = setInterval(checkAndBoot, 500);
56
+ }, 500);
45
57
  return () => clearInterval(intervalId);
46
58
  }, [props.params]);
47
- return (_jsxs(_Fragment, { children: [_jsx("div", { className: twJoin(!isLoading && 'hidden'), children: _jsx(Fallback, { type: "loading", fallbackBackgroundImage: props.fallbackBackgroundImage }) }), _jsx("div", { id: "digitain-container", className: twJoin(isLoading && 'hidden') })] }));
59
+ useEffect(() => {
60
+ if (!hasBooted || !containerRef.current) {
61
+ return;
62
+ }
63
+ const container = containerRef.current;
64
+ const handleIframeReady = (iframe) => {
65
+ const onLoad = () => {
66
+ console.log('Digitain iframe loaded successfully!');
67
+ setTimeout(() => setLoading(false), 300);
68
+ };
69
+ const onError = () => {
70
+ console.error('Digitain iframe failed to load');
71
+ setLoading(false);
72
+ toaster.error({
73
+ title: 'Error',
74
+ description: 'Failed to load sportsbook. Please try again.',
75
+ });
76
+ };
77
+ if (iframe.contentDocument?.readyState === 'complete') {
78
+ console.log('Iframe already loaded!');
79
+ setTimeout(() => setLoading(false), 300);
80
+ }
81
+ else {
82
+ iframe.addEventListener('load', onLoad, { once: true });
83
+ iframe.addEventListener('error', onError, { once: true });
84
+ }
85
+ };
86
+ const existingIframe = container.querySelector('iframe');
87
+ if (existingIframe) {
88
+ handleIframeReady(existingIframe);
89
+ return;
90
+ }
91
+ let iframeDetected = false;
92
+ const observer = new MutationObserver((mutations) => {
93
+ for (const mutation of mutations) {
94
+ for (const node of mutation.addedNodes) {
95
+ if (node.nodeName === 'IFRAME') {
96
+ console.log('Digitain iframe detected');
97
+ iframeDetected = true;
98
+ handleIframeReady(node);
99
+ observer.disconnect();
100
+ return;
101
+ }
102
+ }
103
+ }
104
+ });
105
+ observer.observe(container, { childList: true, subtree: true });
106
+ const fallbackTimeout = setTimeout(() => {
107
+ if (!iframeDetected) {
108
+ console.warn('No iframe detected after 10 seconds. Hiding loader.');
109
+ setLoading(false);
110
+ observer.disconnect();
111
+ }
112
+ }, 10000);
113
+ return () => {
114
+ observer.disconnect();
115
+ clearTimeout(fallbackTimeout);
116
+ };
117
+ }, [hasBooted]);
118
+ return (_jsxs("div", { className: "relative h-full min-h-screen w-full", children: [_jsx("div", { className: twJoin('absolute inset-0 transition-opacity duration-300', isLoading ? 'z-10 opacity-100' : 'pointer-events-none opacity-0'), children: _jsx(Fallback, { type: "loading", fallbackBackgroundImage: props.fallbackBackgroundImage }) }), _jsx("div", { ref: containerRef, id: "digitain-container", className: twJoin('absolute inset-0 transition-opacity duration-300', isLoading ? 'opacity-0' : 'opacity-100') })] }));
48
119
  }
@@ -8,7 +8,7 @@ export function Fallback({ type, signInUrl, fallbackBackgroundImage, }) {
8
8
  const globalStore = useGlobalStore(useShallow((ctx) => ({
9
9
  signIn: ctx.signIn,
10
10
  })));
11
- return (_jsxs("div", { className: "relative h-[459px] w-full lg:h-[829px]", children: [fallbackBackgroundImage && (_jsx(Image, { src: fallbackBackgroundImage, alt: "Background", fill: true, className: "rounded-xl object-cover" })), _jsx("div", { className: "absolute right-0 bottom-safe-area-inset-bottom left-0 h-1/2 rounded-xl bg-gradient-to-b from-[#00000000] to-bg-primary-alt" }), _jsx("div", { className: "absolute right-0 bottom-5 left-0 z-10 m-auto flex max-w-[42.5rem] flex-col items-center justify-center px-4 lg:bottom-15", children: type === 'loading' ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "mb-4 h-10 w-10 animate-spin rounded-full border-4 border-bg-tertiary border-t-button-tertiary-fg" }), _jsx("p", { className: "font-medium text-gray-700 text-lg", children: "Please wait while we load the Sports Book..." })] })) : (_jsx(_Fragment, { children: _jsxs("div", { className: "text-center", children: [_jsxs("div", { className: "mb-8 space-y-3", children: [_jsx("h2", { className: "font-bold text-gray-900 text-xl uppercase lg:text-[40px]", children: "Sports Book Login Required" }), _jsx("p", { className: "text-gray-600 text-xs leading-relaxed lg:text-lg", children: "The Sports Book is our online platform where you can explore real-time betting odds, place bets on a wide range of sports, and track your activity." }), _jsx("p", { className: "text-gray-600 text-xs leading-relaxed lg:text-lg", children: "Access is restricted to authenticated users. Please login to continue and unlock full access to the platform." })] }), _jsx(Button, { className: "mx-auto w-fit", onClick: () => {
11
+ return (_jsxs("div", { className: "relative h-full w-full", children: [fallbackBackgroundImage && (_jsx(Image, { src: fallbackBackgroundImage, alt: "Background", fill: true, className: "rounded-xl object-cover" })), _jsx("div", { className: "absolute right-0 bottom-safe-area-inset-bottom left-0 h-1/2 rounded-xl bg-gradient-to-b from-[#00000000] to-bg-primary-alt" }), _jsx("div", { className: "absolute right-0 bottom-5 left-0 z-10 m-auto flex max-w-[42.5rem] flex-col items-center justify-center px-4 lg:bottom-15", children: type === 'loading' ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "mb-4 h-10 w-10 animate-spin rounded-full border-4 border-bg-tertiary border-t-button-tertiary-fg" }), _jsx("p", { className: "font-medium text-gray-700 text-lg", children: "Please wait while we load the Sports Book..." })] })) : (_jsx(_Fragment, { children: _jsxs("div", { className: "text-center", children: [_jsxs("div", { className: "mb-8 space-y-3", children: [_jsx("h2", { className: "font-bold text-gray-900 text-xl uppercase lg:text-[40px]", children: "Sports Book Login Required" }), _jsx("p", { className: "text-gray-600 text-xs leading-relaxed lg:text-lg", children: "The Sports Book is our online platform where you can explore real-time betting odds, place bets on a wide range of sports, and track your activity." }), _jsx("p", { className: "text-gray-600 text-xs leading-relaxed lg:text-lg", children: "Access is restricted to authenticated users. Please login to continue and unlock full access to the platform." })] }), _jsx(Button, { className: "mx-auto w-fit", onClick: () => {
12
12
  if (signInUrl) {
13
13
  window.location.href = signInUrl;
14
14
  }
@@ -34,6 +34,10 @@ export const getDigitainLaunchToken = async () => {
34
34
  },
35
35
  });
36
36
  const digitainGame = digitainGameQuery.edges[0]?.node;
37
+ if (!digitainGame) {
38
+ console.warn('--SPORTS WARNING-- No Digitain game found in CMS. Please ensure a game with provider "DIGITAIN" is configured.');
39
+ return '';
40
+ }
37
41
  const sessionId = ObjectId.generate(ObjectType.GameSession).toString();
38
42
  try {
39
43
  await createGameSession({
@@ -17,7 +17,7 @@ import { getQueryClient } from '../../utils/getQueryClient.js';
17
17
  import { getSessionQueryKey } from '../../utils/queryKeys.js';
18
18
  import { LOCALSTORAGE_PUSH_NOTIFICATION_TOKEN_KEY } from '../PortalProvider/PushNotifications.js';
19
19
  export function GameLaunchTrigger(props) {
20
- const { game, bypassKycCheck, ...rest } = props;
20
+ const { game, bypassKycCheck: _bypassKycCheck, ...rest } = props;
21
21
  const sessionQuery = useSessionQuery();
22
22
  const createGameSessionMutation = useCreateGameSessionMutation();
23
23
  const globalStore = useGlobalStore(useShallow((ctx) => ({
@@ -5,9 +5,11 @@ import { zodResolver } from '@hookform/resolvers/zod';
5
5
  import { useRouter } from 'next/navigation';
6
6
  import { useEffect } from 'react';
7
7
  import { Controller, useForm } from 'react-hook-form';
8
+ import { twMerge } from 'tailwind-merge';
8
9
  import invariant from 'tiny-invariant';
9
10
  import { z } from 'zod';
10
11
  import { useShallow } from 'zustand/shallow';
12
+ import { useAccountQuery } from '../../../client/hooks/useAccountQuery.js';
11
13
  import { useCreateMemberVerificationMutation } from '../../../client/hooks/useCreateMemberVerificationMutation.js';
12
14
  import { useGlobalStore } from '../../../client/hooks/useGlobalStore.js';
13
15
  import { useMemberVerificationQuery } from '../../../client/hooks/useMemberVerificationQuery.js';
@@ -88,6 +90,8 @@ export function IdentityVerification() {
88
90
  });
89
91
  const memberVerification = useMemberVerificationQuery();
90
92
  const memberId = memberVerification.data?.id;
93
+ const accountQuery = useAccountQuery();
94
+ const accountStatus = accountQuery.data?.status;
91
95
  const globalStore = useGlobalStore(useShallow((ctx) => ({
92
96
  kyc: ctx.kyc,
93
97
  kycReminder: ctx.kycReminder,
@@ -140,7 +144,7 @@ export function IdentityVerification() {
140
144
  type: 'validate',
141
145
  message: error.message,
142
146
  });
143
- } }), _jsx(Field.ErrorText, { children: o.fieldState.error?.message })] })) }), _jsx(Button, { type: "submit", className: "mt-6", disabled: createPending || updatePending, children: "Continue" }), kyc.isSkippable && (_jsx(Button, { variant: "outline", colorScheme: "gray", className: "mt-lg", type: "button", onClick: () => {
147
+ } }), _jsx(Field.ErrorText, { children: o.fieldState.error?.message })] })) }), _jsx(Button, { type: "submit", className: "mt-6", disabled: createPending || updatePending, children: "Continue" }), kyc.isSkippable && (_jsx(Button, { variant: "outline", colorScheme: "gray", className: twMerge('mt-lg', accountStatus === 'VERIFICATION_LOCKED' && 'hidden'), type: "button", onClick: () => {
144
148
  globalStore.kyc.setOpen(false);
145
149
  }, children: "Skip for now" })), _jsx(Button, { className: "bg-transparent text-text-brand-primary-600", onClick: async () => {
146
150
  if (Capacitor.isNativePlatform()) {
@@ -3,9 +3,11 @@ import { Capacitor } from '@capacitor/core';
3
3
  import { zodResolver } from '@hookform/resolvers/zod';
4
4
  import { useRouter } from 'next/navigation';
5
5
  import { useForm } from 'react-hook-form';
6
+ import { twMerge } from 'tailwind-merge';
6
7
  import invariant from 'tiny-invariant';
7
8
  import { z } from 'zod';
8
9
  import { useShallow } from 'zustand/shallow';
10
+ import { useAccountQuery } from '../../../client/hooks/useAccountQuery.js';
9
11
  import { useApproveMemberVerification } from '../../../client/hooks/useApproveMemberVerification.js';
10
12
  import { useCreateMemberVerificationMutation } from '../../../client/hooks/useCreateMemberVerificationMutation.js';
11
13
  import { useGlobalStore } from '../../../client/hooks/useGlobalStore.js';
@@ -40,6 +42,8 @@ export function PersonalInformation() {
40
42
  })));
41
43
  const memberVerificationQuery = useMemberVerificationQuery();
42
44
  const memberVerificationId = memberVerificationQuery.data?.id;
45
+ const accountQuery = useAccountQuery();
46
+ const accountStatus = accountQuery.data?.status;
43
47
  const router = useRouter();
44
48
  const signOutMutation = useSignOutMutation({
45
49
  async onSuccess() {
@@ -146,7 +150,7 @@ export function PersonalInformation() {
146
150
  });
147
151
  }
148
152
  }, disabled: !permanentAddress, children: [_jsx(Checkbox.Control, { children: _jsx(Checkbox.Indicator, { asChild: true, children: _jsx(CheckIcon, {}) }) }), _jsx(Checkbox.Label, { children: "Use permanent address as current address" }), _jsx(Checkbox.HiddenInput, {})] }), _jsxs(Field.Root, { className: "mt-2xl", invalid: !!form.formState.errors.sourceOfIncome, children: [_jsx(Field.Label, { children: "Source of income" }), _jsx(Field.Input, { placeholder: "Enter your source of income", ...form.register('sourceOfIncome') }), _jsx(Field.ErrorText, { children: form.formState.errors.sourceOfIncome?.message })] }), _jsxs(Field.Root, { className: "mt-2xl", invalid: !!form.formState.errors.natureOfWork, children: [_jsx(Field.Label, { children: "Nature of Work" }), _jsx(Field.Input, { placeholder: "Enter your nature of work", ...form.register('natureOfWork') }), _jsx(Field.ErrorText, { children: form.formState.errors.natureOfWork?.message })] }), _jsxs(Field.Root, { className: "mt-2xl", invalid: !!form.formState.errors.placeOfBirth, children: [_jsx(Field.Label, { children: "Place of birth" }), _jsx(Field.Input, { placeholder: "Enter your place of birth", ...form.register('placeOfBirth') }), _jsx(Field.ErrorText, { children: form.formState.errors.placeOfBirth?.message })] }), _jsxs(Field.Root, { className: "mt-2xl", invalid: !!form.formState.errors.nationality, children: [_jsx(Field.Label, { children: "Nationality" }), _jsx(Field.Input, { placeholder: "Enter your nationality", ...form.register('nationality') }), _jsx(Field.ErrorText, { children: form.formState.errors.nationality?.message })] }), _jsx(Button, { type: "submit", className: "mt-4xl", disabled: updateMemberVerificationMutation.isPending ||
149
- createMemberVerificationMutation.isPending, children: "Continue" }), kyc.isSkippable && (_jsx(Button, { variant: "outline", colorScheme: "gray", className: "mt-lg", type: "button", onClick: () => {
153
+ createMemberVerificationMutation.isPending, children: "Continue" }), kyc.isSkippable && (_jsx(Button, { variant: "outline", colorScheme: "gray", className: twMerge('mt-lg', accountStatus === 'VERIFICATION_LOCKED' && 'hidden'), type: "button", onClick: () => {
150
154
  globalStore.kyc.setOpen(false);
151
155
  }, disabled: updateMemberVerificationMutation.isPending ||
152
156
  createMemberVerificationMutation.isPending, children: "Skip for now" })), ' ', _jsx(Button, { className: "bg-transparent text-text-brand-primary-600", onClick: async () => {
@@ -27,7 +27,6 @@ export function KycOpenOnHomeMount(props) {
27
27
  verification?.sumsubVerified ||
28
28
  verification?.status === 'APPROVED' ||
29
29
  verification?.status === 'VERIFIED'; //add default value on null return
30
- const isPending = verification?.status === 'PENDING';
31
30
  useEffect(() => {
32
31
  // If bypass is enabled, do nothing.
33
32
  if (props.bypassKycCheck) {
@@ -42,8 +41,7 @@ export function KycOpenOnHomeMount(props) {
42
41
  const shouldShowReminder = Boolean(props.isSkippable);
43
42
  const hasSeenKycModal = sessionStorage.getItem('hasSeenKycModal');
44
43
  const isFirstVisit = !hasSeenKycModal;
45
- // 1. If KYC is completed or pending, close both
46
- if (isKycCompleted || isPending) {
44
+ if (isKycCompleted) {
47
45
  setkycReminderOpen(false);
48
46
  setkycOpen(false);
49
47
  if (isKycCompleted) {
@@ -96,7 +94,6 @@ export function KycOpenOnHomeMount(props) {
96
94
  isRejected,
97
95
  isUnverified,
98
96
  isKycCompleted,
99
- isPending,
100
97
  props.isSkippable,
101
98
  props.bypassKycCheck,
102
99
  ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opexa/portal-components",
3
- "version": "0.0.996",
3
+ "version": "0.0.998",
4
4
  "exports": {
5
5
  "./ui/*": {
6
6
  "types": "./dist/ui/*/index.d.ts",