Skip to content

Commit da2049f

Browse files
chore: [UPM-923]/evgeniy/error message for passkey not supported device (deriv-com#14723)
* chore: [UPM-923]/evgeniy/error message for passkey not supported device * fix: read of undefined * chore: added new button text and action for not supported * fix: error variable name * chore: update content in passkey-config (#42) * fix: content for unsupported error * Suisin/solve passkey header issue (#43) * chore: fix header not bold issue * chore: update passkey creation fail content * chore: refactor error content * chore: added comment to remove is_tour_open * chore: remove close icon for error modal * chore: remove close icon for error modal --------- Co-authored-by: Sui Sin <[email protected]>
1 parent 28fa987 commit da2049f

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

packages/account/src/Sections/Security/Passkeys/passkeys-configs.tsx

+22-2
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,26 @@ type TGetModalContent = {
113113
is_passkey_registration_started: boolean;
114114
};
115115

116+
export const NOT_SUPPORTED_ERROR_NAME = 'NotSupportedError';
117+
116118
export const getModalContent = ({ error, is_passkey_registration_started }: TGetModalContent) => {
119+
const isNotSupportedError = (error: TServerError) => error?.name === NOT_SUPPORTED_ERROR_NAME;
120+
121+
const error_message = isNotSupportedError(error as TServerError) ? (
122+
<Localize i18n_default_text="This device doesn't support passkeys." />
123+
) : (
124+
(error as TServerError)?.message
125+
);
126+
const button_text = (
127+
<Localize i18n_default_text={isNotSupportedError(error as TServerError) ? 'OK' : 'Try again'} />
128+
);
129+
130+
const error_message_header = (
131+
<Text size='xs' weight='bold'>
132+
<Localize i18n_default_text='Passkey setup failed' />
133+
</Text>
134+
);
135+
117136
const reminder_tips = [
118137
<Localize i18n_default_text='Enable screen lock on your device.' key='tip_1' />,
119138
<Localize i18n_default_text='Enable bluetooth.' key='tip_2' />,
@@ -142,8 +161,9 @@ export const getModalContent = ({ error, is_passkey_registration_started }: TGet
142161
}
143162

144163
return {
145-
description: (error as TServerError)?.message ?? '',
146-
button_text: error ? <Localize i18n_default_text='Try again' /> : undefined,
164+
description: error_message ?? '',
165+
button_text: error ? button_text : undefined,
166+
header: error ? error_message_header : undefined,
147167
};
148168
};
149169

packages/account/src/Sections/Security/Passkeys/passkeys.tsx

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React from 'react';
2-
import { Redirect } from 'react-router-dom';
2+
import { Redirect, useHistory } from 'react-router-dom';
33
import { Loading } from '@deriv/components';
44
import { useGetPasskeysList, useRegisterPasskey } from '@deriv/hooks';
55
import { routes } from '@deriv/shared';
@@ -9,18 +9,20 @@ import PasskeysList from './components/passkeys-list';
99
import PasskeyModal from './components/passkey-modal';
1010
import {
1111
getModalContent,
12+
NOT_SUPPORTED_ERROR_NAME,
1213
PASSKEY_STATUS_CODES,
1314
passkeysMenuActionEventTrack,
1415
TPasskeysStatus,
1516
} from './passkeys-configs';
1617
import './passkeys.scss';
17-
import { TServerError } from 'Types';
18+
import { TServerError } from '../../../Types/common.type';
1819

1920
const Passkeys = observer(() => {
2021
const { ui, client, common } = useStore();
2122
const { is_mobile } = ui;
2223
const { is_passkey_supported } = client;
2324
let timeout: ReturnType<typeof setTimeout>;
25+
const history = useHistory();
2426

2527
const [passkey_status, setPasskeyStatus] = React.useState<TPasskeysStatus>(PASSKEY_STATUS_CODES.NONE);
2628
const [is_modal_open, setIsModalOpen] = React.useState(false);
@@ -93,6 +95,9 @@ const Passkeys = observer(() => {
9395
const onModalButtonClick = () => {
9496
if (error) {
9597
onCloseModal(onCloseError);
98+
if ((error as TServerError).name === NOT_SUPPORTED_ERROR_NAME) {
99+
history.push(routes.traders_hub);
100+
}
96101
} else {
97102
passkeysMenuActionEventTrack('create_passkey_reminder_passed');
98103
createPasskey();
@@ -130,7 +135,7 @@ const Passkeys = observer(() => {
130135
)}
131136
<PasskeyModal
132137
toggleModal={is_passkey_registration_started ? onCloseRegistration : undefined}
133-
has_close_icon={!!modal_content.header}
138+
has_close_icon={!error && !!modal_content.header}
134139
header={modal_content.header}
135140
className='passkeys-modal'
136141
is_modal_open={is_modal_open}

0 commit comments

Comments
 (0)