From 8d67cc947cf1de86deef6b3405e4d08ae3d2069c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emre=20=C4=B0=C5=9Fbilir?= <72204071+eisbilir@users.noreply.github.com> Date: Mon, 30 Oct 2023 20:45:13 +0300 Subject: [PATCH] Revert "Prod 4406 new dice -> dev" --- .circleci/config.yml | 4 +- package.json | 4 - .../src/lib/assets/security/credential.png | Bin 47241 -> 0 bytes .../accounts/src/lib/assets/security/index.ts | 4 +- .../tabs/account/security/Security.tsx | 46 ++--- .../ConnectionHandler/index.tsx | 24 --- .../DiceSetupModal.module.scss | 6 - .../dice-setup-modal/DiceSetupModal.tsx | 174 ++++++++++++------ .../VerificationListener/index.tsx | 29 +++ src/config/environments/default.env.ts | 6 + .../environments/global-config.model.ts | 1 + .../data-providers/useDiceIdConnection.ts | 15 +- .../core/lib/profile/modify-user-mfa.model.ts | 5 +- 13 files changed, 188 insertions(+), 130 deletions(-) delete mode 100644 src/apps/accounts/src/lib/assets/security/credential.png delete mode 100644 src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/ConnectionHandler/index.tsx create mode 100644 src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/VerificationListener/index.tsx diff --git a/.circleci/config.yml b/.circleci/config.yml index e84a7ae15..6a74a8ad7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -259,7 +259,9 @@ workflows: branches: only: - dev - - PROD-4406_new-dice + - justin_fixes + - talent_search_fixes + - PROD-4398_integrate-userflow-remove-sprig - deployQa: context: org-global diff --git a/package.json b/package.json index 584a7f6a9..2ef92fbc4 100644 --- a/package.json +++ b/package.json @@ -246,9 +246,5 @@ } } ] - }, - "volta": { - "node": "16.15.0", - "yarn": "1.22.19" } } diff --git a/src/apps/accounts/src/lib/assets/security/credential.png b/src/apps/accounts/src/lib/assets/security/credential.png deleted file mode 100644 index 914e8d04f84699f81b11476072af3b1788b1750e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47241 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 diff --git a/src/apps/accounts/src/lib/assets/security/index.ts b/src/apps/accounts/src/lib/assets/security/index.ts index 4559e27b4..8b87173a7 100644 --- a/src/apps/accounts/src/lib/assets/security/index.ts +++ b/src/apps/accounts/src/lib/assets/security/index.ts @@ -1,6 +1,6 @@ import { ReactComponent as MFAImage } from './mfa.svg' import { ReactComponent as AppleStore } from './apple-store.svg' -import credentialImage from './credential.png' +import { ReactComponent as UnSuccessfullDiceVerificationIcon } from './unsuccessful.svg' import diceIdLogo from './dicelogo.png' import diceIdLogoBig from './dicelogobig.png' import diceIdLogoSmall from './dicelogosmall.png' @@ -8,10 +8,10 @@ import googlePlay from './google-play.png' export { AppleStore, - credentialImage, diceIdLogo, diceIdLogoBig, diceIdLogoSmall, googlePlay, MFAImage, + UnSuccessfullDiceVerificationIcon, } diff --git a/src/apps/accounts/src/settings/tabs/account/security/Security.tsx b/src/apps/accounts/src/settings/tabs/account/security/Security.tsx index f521783bf..f8a608d40 100644 --- a/src/apps/accounts/src/settings/tabs/account/security/Security.tsx +++ b/src/apps/accounts/src/settings/tabs/account/security/Security.tsx @@ -1,8 +1,9 @@ import { Dispatch, FC, SetStateAction, useEffect, useState } from 'react' import { toast } from 'react-toastify' import { KeyedMutator } from 'swr' +import { noop } from 'lodash' -import { Button, Collapsible, FormToggleSwitch } from '~/libs/ui' +import { Button, Collapsible, FormToggleSwitch, IconSolid, Tooltip } from '~/libs/ui' import { diceIdLogo, MFAImage, SettingSection, triggerSurvey } from '~/apps/accounts/src/lib' import { MemberMFAStatus, updateMemberMFAStatusAsync, useMemberMFAStatus, UserProfile } from '~/libs/core' @@ -22,12 +23,10 @@ const Security: FC = (props: SecurityProps) => { } = useMemberMFAStatus(props.profile.userId) const [mfaEnabled, setMFAEnabled]: [boolean, Dispatch>] = useState(false) - const [diceEnabled, setDiceEnabled]: [boolean, Dispatch>] = useState(false) useEffect(() => { if (mfaStatusData) { setMFAEnabled(mfaStatusData.mfaEnabled) - setDiceEnabled(mfaStatusData.diceEnabled) } }, [mfaStatusData]) @@ -37,9 +36,8 @@ const Security: FC = (props: SecurityProps) => { mfaEnabled: !mfaEnabled, }, }) - .then(response => { - setMFAEnabled(response.result.content.mfaEnabled) - setDiceEnabled(response.result.content.diceEnabled) + .then(() => { + setMFAEnabled(!mfaEnabled) toast.success('Your Multi Factor Authentication (MFA) status was updated.') triggerSurvey() }) @@ -48,27 +46,6 @@ const Security: FC = (props: SecurityProps) => { }) } - function handleUserDiceChange(): void { - if (!diceEnabled) { - return - } - - updateMemberMFAStatusAsync(props.profile.userId, { - param: { - diceEnabled: !diceEnabled, - }, - }) - .then(response => { - setMFAEnabled(response.result.content.mfaEnabled) - setDiceEnabled(response.result.content.diceEnabled) - toast.success('Your DICE credential was disabled.') - triggerSurvey() - }) - .catch(() => { - toast.error('Something went wrong. Please try again later.') - }) - } - function handleDiceModalStatus(): void { setSetupDiceModalOpen(!setupDiceModalOpen) } @@ -93,6 +70,7 @@ const Security: FC = (props: SecurityProps) => { name='mfaStatus' onChange={handleUserMFAChange} value={mfaEnabled} + disabled={mfaStatusData?.diceEnabled} /> )} /> @@ -108,11 +86,12 @@ const Security: FC = (props: SecurityProps) => { actionElement={(
{ - diceEnabled ? ( + mfaStatusData?.diceEnabled ? ( ) : (
)} /> diff --git a/src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/ConnectionHandler/index.tsx b/src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/ConnectionHandler/index.tsx deleted file mode 100644 index 07e3f7075..000000000 --- a/src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/ConnectionHandler/index.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { FC, useEffect } from 'react' - -import { DiceConnectionStatus, useDiceIdConnection } from '~/libs/core' - -interface ConnectionHandlerProps { - onChange: (newStatus: DiceConnectionStatus) => void; - userId: number; -} - -export const ConnectionHandler: FC = ( - props: ConnectionHandlerProps, -) => { - const diceConnection: DiceConnectionStatus | undefined = useDiceIdConnection(props.userId) - - useEffect(() => { - if (diceConnection) { - props.onChange(diceConnection) - } - }, [diceConnection, props]) - - return ( - <> - ) -} diff --git a/src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/DiceSetupModal.module.scss b/src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/DiceSetupModal.module.scss index 0fe6f3dec..dd1329b65 100644 --- a/src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/DiceSetupModal.module.scss +++ b/src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/DiceSetupModal.module.scss @@ -34,12 +34,6 @@ margin: auto; } - .credentialImage { - height: 280px; - width: 400px; - align-self: center; - } - .diceBigLogo { margin: $sp-4 0; } diff --git a/src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/DiceSetupModal.tsx b/src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/DiceSetupModal.tsx index 1b03bce41..6e9cb87e5 100644 --- a/src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/DiceSetupModal.tsx +++ b/src/apps/accounts/src/settings/tabs/account/security/dice-setup-modal/DiceSetupModal.tsx @@ -1,20 +1,21 @@ -/* eslint-disable complexity */ -import { Dispatch, FC, SetStateAction, useState } from 'react' +import { Dispatch, FC, SetStateAction, useEffect, useState } from 'react' import { QRCodeSVG } from 'qrcode.react' +import { get, isUndefined, lowerCase } from 'lodash' import { toast } from 'react-toastify' import { KeyedMutator } from 'swr' import { BaseModal, Button } from '~/libs/ui' import { AppleStore, - credentialImage, diceIdLogoBig, diceIdLogoSmall, googlePlay, + UnSuccessfullDiceVerificationIcon, } from '~/apps/accounts/src/lib' -import { DiceConnectionStatus, UserProfile } from '~/libs/core' +import { DiceConnectionStatus, updateMemberMFAStatusAsync, useDiceIdConnection, UserProfile } from '~/libs/core' +import { EnvironmentConfig } from '~/config' -import { ConnectionHandler } from './ConnectionHandler' +import { VerificationListener } from './VerificationListener' import styles from './DiceSetupModal.module.scss' const GooglePlayLink: string = 'https://play.google.com/store/apps/details?id=com.diwallet1' @@ -28,7 +29,24 @@ interface DiceSetupModalProps { const DiceSetupModal: FC = (props: DiceSetupModalProps) => { const [step, setStep]: [number, Dispatch>] = useState(1) - const [diceConnectionUrl, setDiceConnectionUrl] = useState() + const [diceConnectionId, setDiceConnectionId]: [ + number | undefined, + Dispatch> + ] = useState() + + const diceConnection: DiceConnectionStatus | undefined = useDiceIdConnection(props.profile.userId, diceConnectionId) + + const [isVerificationProcessing, setIsVerificationProcessing]: [boolean, Dispatch>] + = useState(false) + + useEffect(() => { + if (diceConnection && !diceConnectionId) { + setDiceConnectionId(diceConnection.id) + } + }, [ + diceConnection, + diceConnectionId, + ]) function handleSecondaryButtonClick(): void { switch (step) { @@ -40,25 +58,42 @@ const DiceSetupModal: FC = (props: DiceSetupModalProps) => function handlePrimaryButtonClick(): void { switch (step) { case 1: + case 2: return setStep(step + 1) default: return props.onClose() } } - function handleDiceConnectionStatusChange(newStatus: DiceConnectionStatus): void { - if (newStatus.diceEnabled) { - setStep(4) - toast.success('Your credentials have been verified and you are all set for' - + ' MFA using your decentralized identity (DICE ID).') - props.mutateMFAData() - } else if (newStatus.accepted) { - setStep(3) - } else if (newStatus.connection) { - setDiceConnectionUrl(newStatus.connection) - setStep(2) + function verificationCallback(data: any): void { + if (data.success) { + const userEmail: string = get(data, 'user.profile.Email') + if (!isUndefined(userEmail) && lowerCase(userEmail) === lowerCase(props.profile.email)) { + updateMemberMFAStatusAsync(props.profile.userId, { + param: { + diceEnabled: true, + }, + }) + .then(() => { + props.mutateMFAData() + setStep(4) + // eslint-disable-next-line max-len + toast.success('Your credentials have been verified and you are all set for MFA using your decentralized identity (DICE ID).') + }) + .catch(() => { + toast.error('Something went wrong. Please try again later.') + }) + } else { + setStep(5) + } + } else { + setStep(5) } } + function onStartProcessing(): void { + setIsVerificationProcessing(true) + } + return ( = (props: DiceSetupModalProps) => onClick={handleSecondaryButtonClick} /> { - (step === 1 || step === 4) && ( + step !== 3 && (