import { DefaultSudoProfilesClient } from '@sudoplatform/sudo-profiles' import { DefaultSudoSecureIdVerificationClient } from '@sudoplatform/sudo-secure-id-verification' import { SudoUserClient } from '@sudoplatform/sudo-user' import { HSpace, Spinner } from '@sudoplatform/web-ui' import React, { useState } from 'react' import { useAsync, useAsyncFn } from 'react-use' import { ErrorFeedback } from '../components/ErrorFeedback' import { IdcardOutlined, TeamOutlined, DollarOutlined, CreditCardOutlined, AlignLeftOutlined, } from '@ant-design/icons' import { DefaultSudoEntitlementsClient } from '@sudoplatform/sudo-entitlements' import { Button, Layout, Menu, message } from 'antd' import styled from 'styled-components' import { Link, Navigate, Route, Routes } from 'react-router-dom' import { IdentityVerification } from '../components/IdentityVerification' import { SudoManagement } from '../components/sudo/SudoManagement' import { FundingSourceManagement } from '../components/fundingSource/FundingSourceManagement' import { DefaultSudoVirtualCardsClient } from '@sudoplatform/sudo-virtual-cards' import { AppContext } from '../containers/AppContext' import { OrphanedVirtualCardManagement } from '../components/sudo/virtualCard/OrphanedVirtualCardManagement' import { TransactionManagement } from '../components/transaction/TransactionManagement' import { DefaultSudoVirtualCardsSimulatorClient } from '@sudoplatform/sudo-virtual-cards-simulator' import { DefaultConfigurationManager } from '@sudoplatform/sudo-common' import * as t from 'io-ts' import AWSAppSyncClient, { AUTH_TYPE } from 'aws-appsync' const { Header, Content, Sider } = Layout const SudoLogo = styled.div` display: flex; justify-content: center; align-items: center; height: 32px; margin: 16px; background: rgba(255, 255, 255, 0.3); color: white; text-align: center; font-size: 0.8vw; ` const CenteredContent = styled.div` max-width: 960px; margin: auto; width: 100%; ` const SimulatorApiConfig = t.type({ apiUrl: t.string, apiKey: t.string, region: t.string, }) type SimulatorApiConfig = t.TypeOf interface Props { userClient: SudoUserClient } export const VirtualCardsPage: React.FC = ({ userClient }) => { const [isVerified, setIsVerified] = useState(false) const [deregisterResult, deregister] = useAsyncFn(async () => { await initState?.value?.profilesClient.reset() await initState?.value?.identityVerificationClient.reset() await userClient.reset() return 'complete' }) const initState = useAsync(async () => { const identityVerificationClient = new DefaultSudoSecureIdVerificationClient({ sudoUserClient: userClient }) const entitlementsClient = new DefaultSudoEntitlementsClient(userClient) await entitlementsClient.redeemEntitlements() const profilesClient = new DefaultSudoProfilesClient({ sudoUserClient: userClient, }) await profilesClient.pushSymmetricKey( '1234', '14A9B3C3540142A11E70ACBB1BD8969F', ) const virtualCardsClient = new DefaultSudoVirtualCardsClient({ sudoUserClient: userClient, }) const config = DefaultConfigurationManager.getInstance().bindConfigSet( SimulatorApiConfig, 'vcSimulator', ) const appSyncClient = new AWSAppSyncClient({ disableOffline: true, url: config.apiUrl, region: config.region, auth: { type: AUTH_TYPE.API_KEY, apiKey: config.apiKey, }, }) const virtualCardsSimulatorClient = new DefaultSudoVirtualCardsSimulatorClient({ appSyncClient }) return { identityVerificationClient, entitlementsClient, profilesClient, virtualCardsClient, virtualCardsSimulatorClient, } }) if (initState.error) { return ( ) } else if (initState.value) { const { profilesClient, identityVerificationClient, entitlementsClient, virtualCardsClient, virtualCardsSimulatorClient, } = initState.value return ( Virtual Cards Sample }> Identity Verification }> Sudos }> Funding Sources }> Orphaned Virtual Cards }> Transactions
<> {deregisterResult.error ? message.error('Failed to deregister') : deregisterResult.value === 'complete' && ( )}
setIsVerified(isVerified) } /> } > }> setIsVerified(isVerified) } /> } > } > } > } />
) } else { return ( <> Loading... ) } }