@eka-care/abha-stg 0.1.34 → 0.1.36
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.
- package/.turbo/daemon/7f0c6427972069cb-turbo.log.2025-11-12 +0 -0
- package/README.md +369 -101
- package/{dist/index.html → index.html} +1 -2
- package/package/styles/pds2/border.ts +69 -0
- package/package/styles/pds2/colors.ts +70 -0
- package/package/styles/pds2/spacing.ts +1007 -0
- package/package/tailwind/tailwind.config.ts +124 -0
- package/package.json +9 -8
- package/postcss.config.js +6 -0
- package/scripts/build-purged-css.cjs +70 -0
- package/src/App.css +0 -0
- package/src/App.tsx +43 -0
- package/src/api-queries/aorta-go/v3/get-profile-patient.ts +32 -0
- package/src/api-queries/aorta-go/v3/get-profiles-phr-user.ts +26 -0
- package/src/api-queries/aorta-go/v3/post-auth-init-v2.ts +34 -0
- package/src/api-queries/aorta-go/v3/post-auth-logout-v2.ts +32 -0
- package/src/api-queries/aorta-go/v3/post-auth-verify-v2.ts +38 -0
- package/src/api-queries/aorta-go/v3/post-profile-switch.ts +39 -0
- package/src/api-queries/ndhm/get-abdm-register-suggest.ts +37 -0
- package/src/api-queries/ndhm/get-pincode-details.ts +28 -0
- package/src/api-queries/ndhm/post-abdm-login-init.ts +37 -0
- package/src/api-queries/ndhm/post-abdm-login-phr.ts +37 -0
- package/src/api-queries/ndhm/post-abdm-login-verify.ts +37 -0
- package/src/api-queries/ndhm/post-abdm-profile-eka-link-phr.ts +40 -0
- package/src/api-queries/ndhm/post-abdm-profile-eka.ts +66 -0
- package/src/api-queries/ndhm/post-abdm-register-abha-number-create-phr.ts +37 -0
- package/src/api-queries/ndhm/post-abdm-register-mobile-create-phr.ts +66 -0
- package/src/api-queries/ndhm/post-abdm-register-mobile-resend-otp.ts +32 -0
- package/src/api-queries/ndhm/post-abdm-register-mobile-verify.ts +38 -0
- package/src/api-queries/ndhm/post-abdm-register-phr-check.ts +34 -0
- package/src/api-queries/ndhm/post-register-aadhaar-create-phr.ts +37 -0
- package/src/api-queries/ndhm/post-register-aadhaar-init.ts +34 -0
- package/src/api-queries/ndhm/post-register-aadhaar-mobile-resend-otp.ts +34 -0
- package/src/api-queries/ndhm/post-register-aadhaar-mobile-verify.ts +37 -0
- package/src/api-queries/ndhm/post-register-aadhaar-resend-otp.ts +34 -0
- package/src/api-queries/ndhm/post-register-aadhaar-verify.ts +40 -0
- package/src/api-queries/ndhm/post-register-mobile-init.ts +34 -0
- package/src/api-queries/use-get-profiles-patient.ts +12 -0
- package/src/api-queries/use-get-profiles-phr-user.ts +28 -0
- package/src/api-queries/use-post-abdm-login-verify-v1.ts +26 -0
- package/src/api-queries/use-post-auth-verify-v2.ts +50 -0
- package/src/api-queries/use-post-profile-switch.ts +58 -0
- package/src/api-queries/use-post-register-mobile-create-phr.ts +39 -0
- package/src/api-queries/user-post-abdm-profile-login-phr.ts +26 -0
- package/src/assets/Success.json +1 -0
- package/src/assets/react.svg +1 -0
- package/src/atoms/button/custom-button.tsx +32 -0
- package/src/atoms/button/index.tsx +40 -0
- package/src/atoms/button/types.d.ts +31 -0
- package/src/atoms/header.tsx +25 -0
- package/src/atoms/input-field/index.tsx +63 -0
- package/src/atoms/input-field/patient-input-field.tsx +16 -0
- package/src/atoms/input-field/types.ts +24 -0
- package/src/atoms/pds2-otp-input/index.tsx +35 -0
- package/src/atoms/pds2-otp-input/types.d.ts +3 -0
- package/src/atoms/single-input-chip/index.tsx +32 -0
- package/src/atoms/single-input-chip/types.ts +6 -0
- package/src/atoms/spinner.tsx +33 -0
- package/src/atoms/text-separator.tsx +11 -0
- package/src/atoms/ui/spinner.tsx +75 -0
- package/src/constants/constants.ts +376 -0
- package/src/fetch-client/index.ts +164 -0
- package/src/index.css +152 -0
- package/src/main.tsx +374 -0
- package/src/molecules/abha/bottom-sheet/bottom-sheet-wrapper.tsx +40 -0
- package/src/molecules/abha/bottom-sheet/index.tsx +66 -0
- package/src/molecules/abha/spaced-input-component.tsx +168 -0
- package/src/molecules/copyright-year.tsx +16 -0
- package/src/molecules/exit-popup/index.tsx +101 -0
- package/src/molecules/pds2-otp-component/index.tsx +147 -0
- package/src/organisms/abha/abha-header.tsx +25 -0
- package/src/organisms/abha/abha-stepper.tsx +83 -0
- package/src/organisms/abha/error-bottom-sheet.tsx +27 -0
- package/src/organisms/abha/otp-card.tsx +99 -0
- package/src/organisms/abha/verification-status.tsx +30 -0
- package/src/organisms/choose-language/choose-language.tsx +53 -0
- package/src/organisms/choose-language/types.ts +10 -0
- package/src/organisms/screen-switcher/screen-switcher.tsx +80 -0
- package/src/routes/abha-aadhaar-verification-status-screen.tsx +246 -0
- package/src/routes/abha-created-screen.tsx +45 -0
- package/src/routes/abha-login-otp-verify-screen.tsx +519 -0
- package/src/routes/abha-mobile-linking-status-screen.tsx +267 -0
- package/src/routes/abha-otp-and-mobile-screen.tsx +435 -0
- package/src/routes/abha-phone-number-verification-screen.tsx +388 -0
- package/src/routes/create-abha-address-screen.tsx +928 -0
- package/src/routes/create-abha-with-aadhaar-screen.tsx +986 -0
- package/src/routes/create-eka-profile-screen.tsx +831 -0
- package/src/routes/get-all-profiles-screen.tsx +161 -0
- package/src/routes/login-or-create-abha-address-screen.tsx +1056 -0
- package/src/routes/login-with-abha-screen.tsx +454 -0
- package/src/routes/select-abha-from-list-screen.tsx +792 -0
- package/src/routes/select-eka-profile-screen.tsx +446 -0
- package/src/routes/utils/trackAbhaEvent.ts +41 -0
- package/src/stores/auth-abha-store/index.ts +152 -0
- package/src/stores/auth-abha-store/types.ts +217 -0
- package/src/utils/mock-auth-response.ts +29 -0
- package/src/utils/send-event-utils.ts +76 -0
- package/src/utils/validations.ts +89 -0
- package/src/vite-env.d.ts +1 -0
- package/tailwind.config.ts +9 -0
- package/tsconfig.json +25 -0
- package/tsconfig.node.json +10 -0
- package/tsconfig.node.tsbuildinfo +1 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/vite.config.d.ts +2 -0
- package/vite.config.js +30 -0
- package/vite.config.ts +35 -0
- package/dist/sdk/abha/css/abha.css +0 -1
- package/dist/sdk/abha/js/abha.js +0 -146
- /package/{dist → public}/images/adhaar.webp +0 -0
- /package/{dist → public}/images/at-the-rate.webp +0 -0
- /package/{dist → public}/images/avatar.webp +0 -0
- /package/{dist → public}/images/ayushman-bharat.webp +0 -0
- /package/{dist → public}/images/circle-checkmark.webp +0 -0
- /package/{dist → public}/images/link-abha.webp +0 -0
- /package/{dist → public}/images/national-authority.webp +0 -0
- /package/{dist → public}/images/three-dots.webp +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import Lottie from "lottie-react";
|
|
2
|
+
import animationData from "../../assets/Success.json";
|
|
3
|
+
|
|
4
|
+
type TAbhaVerificationStatus = {
|
|
5
|
+
loading: boolean;
|
|
6
|
+
loadingText: string;
|
|
7
|
+
successText: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
const AbhaVerificationStatus = ({
|
|
11
|
+
loading = false,
|
|
12
|
+
loadingText,
|
|
13
|
+
successText,
|
|
14
|
+
}: TAbhaVerificationStatus) => {
|
|
15
|
+
return (
|
|
16
|
+
<div
|
|
17
|
+
className="pds2-px-16 pds2-w-full pds2-min-h-full pds2-flex pds2-flex-col pds2-items-center pds2-justify-center pds2-text-center"
|
|
18
|
+
style={{ backgroundColor: '#F2F2F2' }}
|
|
19
|
+
>
|
|
20
|
+
<Lottie animationData={animationData} loop={false} className="pds2-w-400" />
|
|
21
|
+
{loading ? (
|
|
22
|
+
<div className="pds2-text-text-01 Heading4Semibold pds2-absolute pds2-mt-220">{loadingText}</div>
|
|
23
|
+
) : (
|
|
24
|
+
<div className="pds2-text-text-01 Heading4Semibold pds2-absolute pds2-mt-220">{successText}</div>
|
|
25
|
+
)}
|
|
26
|
+
</div>
|
|
27
|
+
);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export default AbhaVerificationStatus;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { CircleCheckSolidIcon } from '@eka-care/icons';
|
|
2
|
+
import { Language, LanguageKey } from './types';
|
|
3
|
+
|
|
4
|
+
const ChooseLanguage = ({
|
|
5
|
+
selectedLanguage,
|
|
6
|
+
languages,
|
|
7
|
+
onChangeLanguage,
|
|
8
|
+
}: {
|
|
9
|
+
selectedLanguage: LanguageKey;
|
|
10
|
+
languages: Language[];
|
|
11
|
+
onChangeLanguage: (language: LanguageKey) => void;
|
|
12
|
+
}) => {
|
|
13
|
+
return (
|
|
14
|
+
<div className="pds2-flex pds2-px-16 pds2-py-8 pds2-items-center pds2-justify-between">
|
|
15
|
+
<div className="Body3Regular pds2-text-text-04">Choose language:</div>
|
|
16
|
+
<div className="pds2-flex pds2-flex-row pds2-gap-8">
|
|
17
|
+
{languages.map((language) => {
|
|
18
|
+
const isSelected = language.key === selectedLanguage;
|
|
19
|
+
return (
|
|
20
|
+
<label
|
|
21
|
+
key={language.key}
|
|
22
|
+
className={`pds2-flex pds2-items-center pds2-cursor-pointer pds2-py-8 pds2-px-12 pds2-border pds2-rounded-8
|
|
23
|
+
${
|
|
24
|
+
isSelected
|
|
25
|
+
? 'pds2-border-border-brand-01 pds2-gap-6 pds2-text-text-brand Body3Semibold'
|
|
26
|
+
: 'pds2-border-border-03 pds2-text-text-secondary Body3Regular'
|
|
27
|
+
}
|
|
28
|
+
focus-within:pds2-ring-2 focus-within:pds2-ring-border-brand-01 focus-within:pds2-ring-offset-2
|
|
29
|
+
active:pds2-bg-bg-brand-02 hover:pds2-bg-bg-hover-01
|
|
30
|
+
pds2-transition-colors pds2-duration-200
|
|
31
|
+
`}
|
|
32
|
+
>
|
|
33
|
+
<input
|
|
34
|
+
type="radio"
|
|
35
|
+
name="language"
|
|
36
|
+
value={language.key}
|
|
37
|
+
checked={isSelected}
|
|
38
|
+
onChange={() => onChangeLanguage(language.key)}
|
|
39
|
+
className="focus:pds2-outline-none pds2-appearance-none"
|
|
40
|
+
/>
|
|
41
|
+
{isSelected && (
|
|
42
|
+
<CircleCheckSolidIcon className="pds2-w-12 pds2-h-12 pds2-text-icon-success-02" />
|
|
43
|
+
)}
|
|
44
|
+
<span>{language.title}</span>
|
|
45
|
+
</label>
|
|
46
|
+
);
|
|
47
|
+
})}
|
|
48
|
+
</div>
|
|
49
|
+
</div>
|
|
50
|
+
);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export default ChooseLanguage;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import AbhaAadhaarVerificationStatusScreen from '../../routes/abha-aadhaar-verification-status-screen';
|
|
3
|
+
import AbhaLoginOtpVerifyScreen from '../../routes/abha-login-otp-verify-screen';
|
|
4
|
+
import AbhaMobileLinkingStatusScreen from '../../routes/abha-mobile-linking-status-screen';
|
|
5
|
+
import AbhaOtpAndMobileScreen from '../../routes/abha-otp-and-mobile-screen';
|
|
6
|
+
import AbhaPhoneNumberVerificationScreen from '../../routes/abha-phone-number-verification-screen';
|
|
7
|
+
import CreateAbhaAddressScreen from '../../routes/create-abha-address-screen';
|
|
8
|
+
import CreateAbhaWithAadhaarScreen from '../../routes/create-abha-with-aadhaar-screen';
|
|
9
|
+
import CreateEkaProfileScreen from '../../routes/create-eka-profile-screen';
|
|
10
|
+
import GetAllProfilesScreen from '../../routes/get-all-profiles-screen';
|
|
11
|
+
import LoginWithAbhaScreen from '../../routes/login-with-abha-screen';
|
|
12
|
+
import SelectAbhaFromListScreen from '../../routes/select-abha-from-list-screen';
|
|
13
|
+
import useAuthAbhaStore from '../../stores/auth-abha-store';
|
|
14
|
+
import { SCREEN_NAMES } from '../../stores/auth-abha-store/types';
|
|
15
|
+
import SelectEkaProfileScreen from '../../routes/select-eka-profile-screen';
|
|
16
|
+
import LoginorCreateAbhaScreen from '../../routes/login-or-create-abha-address-screen';
|
|
17
|
+
|
|
18
|
+
const ScreenStack = (): ReactElement => {
|
|
19
|
+
const screen = useAuthAbhaStore((state) => state.screen);
|
|
20
|
+
const topScreen = screen[screen.length - 1];
|
|
21
|
+
|
|
22
|
+
switch (topScreen) {
|
|
23
|
+
// // Doctor Routes
|
|
24
|
+
// case SCREEN_NAMES.DOCTOR_SIGNIN:
|
|
25
|
+
// return <DoctorSigninScreen />;
|
|
26
|
+
// case SCREEN_NAMES.DOCTOR_OTP_SIGNIN:
|
|
27
|
+
// return <DoctorOtpScreen />;
|
|
28
|
+
// case SCREEN_NAMES.DOCTOR_WORKSPACE_SIGNIN:
|
|
29
|
+
// return <DoctorWorkspaceLoginScreen />;
|
|
30
|
+
// case SCREEN_NAMES.DOCTOR_SIGNIN_USERS:
|
|
31
|
+
// return <DoctorLoginUsersScreen />;
|
|
32
|
+
// case SCREEN_NAMES.WORKSPACE_NAME:
|
|
33
|
+
// return <WorkspaceNameScreen />;
|
|
34
|
+
// case SCREEN_NAMES.WORKSPACE_SIGNIN_METHOD:
|
|
35
|
+
// return <WorkspaceSigninMethodScreen />;
|
|
36
|
+
// case SCREEN_NAMES.EMAIL_MOBILE_SIGNIN:
|
|
37
|
+
// return <EmailMobileSigninScreen />;
|
|
38
|
+
|
|
39
|
+
// ABHA routes
|
|
40
|
+
case SCREEN_NAMES.LOGIN_WITH_ABHA:
|
|
41
|
+
return <LoginWithAbhaScreen />;
|
|
42
|
+
case SCREEN_NAMES.VERIFY_OTP_LOGIN_WITH_ABHA:
|
|
43
|
+
return <AbhaLoginOtpVerifyScreen />;
|
|
44
|
+
case SCREEN_NAMES.CREATE_ABHA_WITH_AADHAAR:
|
|
45
|
+
return <CreateAbhaWithAadhaarScreen />;
|
|
46
|
+
case SCREEN_NAMES.ABHA_OTP_AND_MOBILE:
|
|
47
|
+
return <AbhaOtpAndMobileScreen />;
|
|
48
|
+
case SCREEN_NAMES.ABHA_PHONE_NUMBER_VERIFICATION:
|
|
49
|
+
return <AbhaPhoneNumberVerificationScreen />;
|
|
50
|
+
case SCREEN_NAMES.AADHAAR_VERIFICATION_STATUS:
|
|
51
|
+
return <AbhaAadhaarVerificationStatusScreen />;
|
|
52
|
+
case SCREEN_NAMES.ABHA_MOBILE_LINKING_STATUS:
|
|
53
|
+
return <AbhaMobileLinkingStatusScreen />;
|
|
54
|
+
case SCREEN_NAMES.SELECT_ABHA_FROM_LIST:
|
|
55
|
+
return <SelectAbhaFromListScreen />;
|
|
56
|
+
case SCREEN_NAMES.SELECT_EKA_PROFILE:
|
|
57
|
+
return <SelectEkaProfileScreen />;
|
|
58
|
+
case SCREEN_NAMES.CREATE_ABHA_ADDRESS:
|
|
59
|
+
return <CreateAbhaAddressScreen />;
|
|
60
|
+
case SCREEN_NAMES.CREATE_EKA_PROFILE:
|
|
61
|
+
return <CreateEkaProfileScreen />;
|
|
62
|
+
case SCREEN_NAMES.CREATE_PHR_EKA_PROFILE:
|
|
63
|
+
return <CreateEkaProfileScreen />;
|
|
64
|
+
case SCREEN_NAMES.GET_ALL_PROFILES:
|
|
65
|
+
return <GetAllProfilesScreen />;
|
|
66
|
+
case SCREEN_NAMES.LOGIN_OR_CREATE_ABHA:
|
|
67
|
+
return <LoginorCreateAbhaScreen />;
|
|
68
|
+
|
|
69
|
+
// // Patient routes
|
|
70
|
+
// case SCREEN_NAMES.PATIENT_SIGNIN:
|
|
71
|
+
// return <PatientSigninScreen />;
|
|
72
|
+
// case SCREEN_NAMES.PATIENT_OTP:
|
|
73
|
+
// return <PatientOtpScreen />;
|
|
74
|
+
|
|
75
|
+
default:
|
|
76
|
+
return <></>;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export default ScreenStack;
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { ABHA_V3_SKIP_STATES, GET_EXTRA_HEADERS, setIndividualEnv, TProfileRecord } from '../constants/constants';
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { onAbhaSuccess, unMount } from '../main';
|
|
4
|
+
import AbhaVerificationStatus from '../organisms/abha/verification-status';
|
|
5
|
+
import useAuthAbhaStore from '../stores/auth-abha-store';
|
|
6
|
+
import { SCREEN_NAMES } from '../stores/auth-abha-store/types';
|
|
7
|
+
import handleSendEvent from '../utils/send-event-utils';
|
|
8
|
+
import { getMockAuthVerifyResponse } from '../utils/mock-auth-response';
|
|
9
|
+
import postAuthVerifyV2 from '../api-queries/aorta-go/v3/post-auth-verify-v2';
|
|
10
|
+
|
|
11
|
+
const AbhaAadhaarVerificationStatusScreen = () => {
|
|
12
|
+
const aadhaarVerificationSkipStateStatus = useAuthAbhaStore(
|
|
13
|
+
(state) => state.aadhaarVerificationSkipStateStatus
|
|
14
|
+
);
|
|
15
|
+
const authTxnId = useAuthAbhaStore((state) => state.authTxnId);
|
|
16
|
+
const ekaSmallToken = useAuthAbhaStore((state) => state.ekaSmallToken);
|
|
17
|
+
const setScreen = useAuthAbhaStore((state) => state.setScreen);
|
|
18
|
+
const abhaAddressList = useAuthAbhaStore((state) => state.abhaAddressList);
|
|
19
|
+
|
|
20
|
+
const [loadingStatus, setLoadingStatus] = useState(true);
|
|
21
|
+
const clientId = useAuthAbhaStore((state) => state.clientId);
|
|
22
|
+
const isEkaAppLogin = useAuthAbhaStore((state) => state.isEkaAppLogin);
|
|
23
|
+
const oid = useAuthAbhaStore((state) => state.oid);
|
|
24
|
+
const ekaProfileInfo = useAuthAbhaStore((state) => state.ekaProfileInfo);
|
|
25
|
+
const validGenders = ['M', 'F', 'O', 'U'] as const;
|
|
26
|
+
const setSelectedAbhaFlow = useAuthAbhaStore((state) => state.setSelectedAbhaFlow);
|
|
27
|
+
const txnId = useAuthAbhaStore((state) => state.txnId);
|
|
28
|
+
const isNewLoginOrCreateFlow = useAuthAbhaStore((state) => state.isNewLoginOrCreateFlow);
|
|
29
|
+
const extra_headers = GET_EXTRA_HEADERS();
|
|
30
|
+
|
|
31
|
+
// Analytics event tracker
|
|
32
|
+
const trackAbhaEvent = ({ name, data = {} }: { name: string; data?: Record<string, any> }) => {
|
|
33
|
+
const baseProps = {
|
|
34
|
+
login_platform: clientId,
|
|
35
|
+
is_eka_app_login: isEkaAppLogin ? 'true' : 'false',
|
|
36
|
+
is_new_login_or_create_flow: isNewLoginOrCreateFlow ? 'true' : 'false',
|
|
37
|
+
txn_id: txnId || 'missing txnId',
|
|
38
|
+
oid: extra_headers?.['X-User-ID'] ? 'true' : 'false',
|
|
39
|
+
access_token: extra_headers?.['auth'] ? 'true' : 'false',
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
const eventData = {
|
|
43
|
+
...baseProps,
|
|
44
|
+
...data,
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
handleSendEvent({
|
|
48
|
+
eventName: name,
|
|
49
|
+
eventData,
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
window.curio?.pushToMixpanel?.(name, eventData);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
const p1 = new Promise((resolve) => {
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
resolve(setLoadingStatus(false));
|
|
60
|
+
}, 500);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
handleSendEvent({
|
|
64
|
+
eventName: 'page_view',
|
|
65
|
+
eventData: {
|
|
66
|
+
page_view: 'aadhaar_verified_successful',
|
|
67
|
+
platform: clientId,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
window.curio?.pushToMixpanel?.('page_view', {
|
|
72
|
+
platform: clientId,
|
|
73
|
+
page_view: 'aadhaar_verified_successful',
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
async function dummyLoadingEffect() {
|
|
77
|
+
await p1;
|
|
78
|
+
|
|
79
|
+
setTimeout(async () => {
|
|
80
|
+
if (aadhaarVerificationSkipStateStatus === ABHA_V3_SKIP_STATES.CONFIRM_MOBILE_OTP) {
|
|
81
|
+
console.log('setting the selected abha flow to aadhaar');
|
|
82
|
+
setSelectedAbhaFlow('aadhaar');
|
|
83
|
+
handleSendEvent({
|
|
84
|
+
eventName: 'abha_aadhaar_verification_status',
|
|
85
|
+
eventData: {
|
|
86
|
+
type: 'confirm_mobile_otp',
|
|
87
|
+
platform: clientId,
|
|
88
|
+
transactionId: authTxnId || '',
|
|
89
|
+
skipState: 'confirm_mobile_otp',
|
|
90
|
+
minToken: ekaSmallToken || '',
|
|
91
|
+
oid: ekaProfileInfo?.oid || '',
|
|
92
|
+
abhaAddress: ekaProfileInfo?.abha_address || '',
|
|
93
|
+
isEkaAppLogin: isEkaAppLogin ? 'true' : 'false',
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
window.curio?.pushToMixpanel?.('abha_aadhaar_verification_status', {
|
|
97
|
+
platform: clientId,
|
|
98
|
+
type: 'confirm_mobile_otp',
|
|
99
|
+
transactionId: authTxnId || '',
|
|
100
|
+
skipState: 'confirm_mobile_otp',
|
|
101
|
+
minToken: ekaSmallToken || '',
|
|
102
|
+
oid: ekaProfileInfo?.oid || '',
|
|
103
|
+
abhaAddress: ekaProfileInfo?.abha_address || '',
|
|
104
|
+
isEkaAppLogin: isEkaAppLogin ? 'true' : 'false',
|
|
105
|
+
});
|
|
106
|
+
setScreen(SCREEN_NAMES.ABHA_PHONE_NUMBER_VERIFICATION);
|
|
107
|
+
} else {
|
|
108
|
+
// step 1: here skip state will be abha create,
|
|
109
|
+
// check if auth token and oid is present in the headers
|
|
110
|
+
// then send the auth token to the get all profiles
|
|
111
|
+
if (isEkaAppLogin) {
|
|
112
|
+
const gender = validGenders.includes(ekaProfileInfo?.gender as any)
|
|
113
|
+
? (ekaProfileInfo?.gender as 'M' | 'F' | 'O' | 'U')
|
|
114
|
+
: undefined;
|
|
115
|
+
|
|
116
|
+
const authProfile: TProfileRecord = {
|
|
117
|
+
oid: ekaProfileInfo?.oid || '',
|
|
118
|
+
fln: ekaProfileInfo?.name || '',
|
|
119
|
+
dob: ekaProfileInfo?.date_of_birth,
|
|
120
|
+
gen: gender,
|
|
121
|
+
mobile: ekaProfileInfo?.mobile,
|
|
122
|
+
at: '',
|
|
123
|
+
fn: ekaProfileInfo?.firstname || '',
|
|
124
|
+
mn: ekaProfileInfo?.middlename || '',
|
|
125
|
+
ln: ekaProfileInfo?.lastname || '',
|
|
126
|
+
abha_number: ekaProfileInfo?.abha_number || '',
|
|
127
|
+
'health-ids': ekaProfileInfo?.abha_address
|
|
128
|
+
? [ekaProfileInfo?.abha_address]
|
|
129
|
+
: undefined,
|
|
130
|
+
};
|
|
131
|
+
console.log(
|
|
132
|
+
'inside abha aadhaar verification status auth profile response ',
|
|
133
|
+
authProfile
|
|
134
|
+
);
|
|
135
|
+
const authResponse = getMockAuthVerifyResponse(authProfile);
|
|
136
|
+
console.log('authResponse ', authResponse);
|
|
137
|
+
// if the auth is present in the headers and it is abha end, then return
|
|
138
|
+
if (aadhaarVerificationSkipStateStatus === ABHA_V3_SKIP_STATES.ABHA_END) {
|
|
139
|
+
// if the skip state is abha end, and oid is present,then unmount the sdk and return
|
|
140
|
+
if (oid) {
|
|
141
|
+
// for ios specific handling
|
|
142
|
+
handleSendEvent({
|
|
143
|
+
eventName: 'abha_aadhaar_verification_status_eka_flow',
|
|
144
|
+
eventData: {
|
|
145
|
+
type: 'verify',
|
|
146
|
+
platform: clientId,
|
|
147
|
+
transactionId: authTxnId || '',
|
|
148
|
+
skipState: 'abha_end',
|
|
149
|
+
minToken: ekaSmallToken || '',
|
|
150
|
+
oid: oid || '',
|
|
151
|
+
abhaAddress: ekaProfileInfo?.abha_address || '',
|
|
152
|
+
isEkaAppLogin: isEkaAppLogin ? 'true' : 'false',
|
|
153
|
+
},
|
|
154
|
+
});
|
|
155
|
+
window.curio?.pushToMixpanel?.('abha_aadhaar_verification_status_eka_flow', {
|
|
156
|
+
platform: clientId,
|
|
157
|
+
type: 'verify',
|
|
158
|
+
transactionId: authTxnId || '',
|
|
159
|
+
skipState: 'abha_end',
|
|
160
|
+
minToken: ekaSmallToken || '',
|
|
161
|
+
oid: oid || '',
|
|
162
|
+
abhaAddress: ekaProfileInfo?.abha_address || '',
|
|
163
|
+
isEkaAppLogin: isEkaAppLogin ? 'true' : 'false',
|
|
164
|
+
});
|
|
165
|
+
if (window.EkaAbha && window.EkaAbha.onAbhaSuccess) {
|
|
166
|
+
window.EkaAbha?.onAbhaSuccess(JSON.stringify({ response: authResponse }));
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
// @ts-ignore
|
|
170
|
+
onAbhaSuccess({ response: authResponse });
|
|
171
|
+
unMount();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
if (aadhaarVerificationSkipStateStatus === ABHA_V3_SKIP_STATES.ABHA_CREATE && abhaAddressList) {
|
|
177
|
+
// since the flow is inside the app, and the skip_state is not abha end, and we are having abhaAdresses then redirect to select abha
|
|
178
|
+
setScreen(SCREEN_NAMES.SELECT_ABHA_FROM_LIST);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
// since the flow is inside the app, and the skip_state is not abha end and 0 abha profiles then redirect to create eka
|
|
182
|
+
console.log('redirecting to create eka profile for abha address creation -> mobile');
|
|
183
|
+
setScreen(SCREEN_NAMES.CREATE_EKA_PROFILE);
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
if (!authTxnId || !ekaSmallToken) return;
|
|
188
|
+
const verifyResponse = await postAuthVerifyV2({
|
|
189
|
+
txn_id: authTxnId,
|
|
190
|
+
token: ekaSmallToken,
|
|
191
|
+
});
|
|
192
|
+
if (verifyResponse.data) {
|
|
193
|
+
// // step 1 : check if the skip state is abha end, if yes, then return -> done
|
|
194
|
+
if (aadhaarVerificationSkipStateStatus === ABHA_V3_SKIP_STATES.ABHA_END) {
|
|
195
|
+
// if the skip state is abha end, and oid is present,then unmount the sdk and return
|
|
196
|
+
if (oid) {
|
|
197
|
+
// for ios specific handling
|
|
198
|
+
if (window.EkaAbha && window.EkaAbha.onAbhaSuccess) {
|
|
199
|
+
window.EkaAbha?.onAbhaSuccess(JSON.stringify({ response: verifyResponse }));
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
// @ts-ignore
|
|
203
|
+
onAbhaSuccess({ response: verifyResponse });
|
|
204
|
+
unMount();
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
setIndividualEnv({
|
|
208
|
+
extraHeaders: {
|
|
209
|
+
auth: verifyResponse.data?.tokens.sess,
|
|
210
|
+
},
|
|
211
|
+
});
|
|
212
|
+
// here the min token is present, then set the screen to get all profiles
|
|
213
|
+
setScreen(SCREEN_NAMES.GET_ALL_PROFILES);
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
setIndividualEnv({
|
|
217
|
+
extraHeaders: {
|
|
218
|
+
auth: verifyResponse.data?.tokens.sess,
|
|
219
|
+
},
|
|
220
|
+
});
|
|
221
|
+
trackAbhaEvent({
|
|
222
|
+
name: 'abha_login_otp_verify_abha_select',
|
|
223
|
+
data: {
|
|
224
|
+
type: 'verify',
|
|
225
|
+
platform: clientId,
|
|
226
|
+
},
|
|
227
|
+
});
|
|
228
|
+
setScreen(SCREEN_NAMES.SELECT_ABHA_FROM_LIST);
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}, 2000);
|
|
233
|
+
}
|
|
234
|
+
dummyLoadingEffect();
|
|
235
|
+
}, []);
|
|
236
|
+
|
|
237
|
+
return (
|
|
238
|
+
<AbhaVerificationStatus
|
|
239
|
+
loading={loadingStatus}
|
|
240
|
+
loadingText="Verifying..."
|
|
241
|
+
successText="Aadhaar Verification Successful!"
|
|
242
|
+
/>
|
|
243
|
+
);
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
export default AbhaAadhaarVerificationStatusScreen;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ArrowLeftRegularIcon } from '@eka-care/icons';
|
|
2
|
+
import Pds2Header from '../atoms/header';
|
|
3
|
+
import Pds2CustomButton from '../atoms/button/custom-button';
|
|
4
|
+
|
|
5
|
+
const AbhaCreatedScreen = () => {
|
|
6
|
+
return (
|
|
7
|
+
<div className="pds2-w-full pds2-h-full pds2-flex pds2-flex-col">
|
|
8
|
+
<Pds2Header
|
|
9
|
+
prefixIcon={
|
|
10
|
+
<button className="pds2-w-24 pds2-h-24 pds2-rounded-full pds2-flex pds2-items-center pds2-justify-center ripple">
|
|
11
|
+
<ArrowLeftRegularIcon />
|
|
12
|
+
</button>
|
|
13
|
+
}
|
|
14
|
+
title=""
|
|
15
|
+
className="pds2-border-b-1 pds2-border-bg-seperator-dark pds2-bg-bg-white"
|
|
16
|
+
/>
|
|
17
|
+
<div className="pds2-p-16 pds2-flex pds2-flex-col pds2-items-center pds2-space-y-16 pds2-text-center pds2-flex-1 pds2-py-48">
|
|
18
|
+
<img
|
|
19
|
+
src="https://cdn.eka.care/vagus/cm5m97vt600060tfs273o59zn.webp"
|
|
20
|
+
alt="success"
|
|
21
|
+
className="pds2-h-120"
|
|
22
|
+
/>
|
|
23
|
+
<div className="pds2-space-y-4">
|
|
24
|
+
<div className="pds2-text-text-01 Heading4Semibold">
|
|
25
|
+
Congratulations! Your <br /> ABHA Address is created and linked.
|
|
26
|
+
</div>
|
|
27
|
+
<div className="pds2-text-text-primary BodyBody">
|
|
28
|
+
Keep track of your personal health records easily with the Eka Care app
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
<div className="pds2-w-full pds2-rounded-16 pds2-border pds2-border-bg-seperator-dark pds2-p-16">
|
|
32
|
+
Card
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
<div className="pds2-p-16 pds2-shadow-elevation-only-top pds2-sticky pds2-bottom-0">
|
|
36
|
+
<Pds2CustomButton
|
|
37
|
+
title="Continue to use ABHA"
|
|
38
|
+
className="pds2-justify-center pds2-text-text-brand Body1Semibold pds2-bg-border-brand-02 pds2-border-none"
|
|
39
|
+
/>{' '}
|
|
40
|
+
</div>
|
|
41
|
+
</div>
|
|
42
|
+
);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
export default AbhaCreatedScreen;
|