From ab7f11a63398e7c7318b363ac18a28b329578415 Mon Sep 17 00:00:00 2001 From: Radu-Cristian Popa Date: Wed, 4 Sep 2024 16:06:47 +0300 Subject: [PATCH 1/7] Add standalone withdraw page --- .../wallet/frontend/src/pages/withdraw.tsx | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 packages/wallet/frontend/src/pages/withdraw.tsx diff --git a/packages/wallet/frontend/src/pages/withdraw.tsx b/packages/wallet/frontend/src/pages/withdraw.tsx new file mode 100644 index 000000000..c359bee7f --- /dev/null +++ b/packages/wallet/frontend/src/pages/withdraw.tsx @@ -0,0 +1,66 @@ +import { AppLayout } from '@/components/layouts/AppLayout' +import { PageHeader } from '@/components/PageHeader' +import { userService } from '@/lib/api/user' +import { NextPageWithLayout } from '@/lib/types/app' +import { GetServerSideProps, InferGetServerSidePropsType } from 'next/types' +import { useEffect } from 'react' + +type WithdrawPageProps = InferGetServerSidePropsType + +const WithdrawPage: NextPageWithLayout = ({ url }) => { + useEffect(() => { + const onWithdrawComplete = (e: MessageEvent) => { + // TODO: Handle the received message from iframe + // https://docs.gatehub.net/api-documentation/c3OPAp5dM191CDAdwyYS/gatehub-products/gatehub-onboarding#message-events + console.log('received message from iframe', { e }) + } + window.addEventListener('message', onWithdrawComplete, false) + + return () => { + window.removeEventListener('message', onWithdrawComplete) + } + }, []) + + return ( + <> + + {/* TODO: Styling */} + + + ) +} + +export const getServerSideProps: GetServerSideProps<{ + url: string +}> = async (ctx) => { + const response = await userService.getGateHubIframeSrc( + { type: 'ramp' }, + ctx.req.headers.cookie + ) + + if (!response.success || !response.result) { + return { + notFound: true + } + } + + const url = new URL(response.result.url) + url.searchParams.append('paymentType', 'withdraw') + + return { + props: { + url: url.href + } + } +} + +WithdrawPage.getLayout = function (page) { + return {page} +} + +export default WithdrawPage From f68825df3bfdf72e0aa594b986ab20ff8b72a74b Mon Sep 17 00:00:00 2001 From: Radu-Cristian Popa Date: Wed, 4 Sep 2024 16:17:51 +0300 Subject: [PATCH 2/7] Remove Rapyd withdraw features --- .../dialogs/WithdrawFundsDialog.tsx | 145 ------------------ .../wallet/frontend/src/lib/api/account.ts | 23 +-- .../src/pages/account/[accountId].tsx | 14 +- packages/wallet/shared/src/types/account.ts | 12 -- 4 files changed, 4 insertions(+), 190 deletions(-) delete mode 100644 packages/wallet/frontend/src/components/dialogs/WithdrawFundsDialog.tsx diff --git a/packages/wallet/frontend/src/components/dialogs/WithdrawFundsDialog.tsx b/packages/wallet/frontend/src/components/dialogs/WithdrawFundsDialog.tsx deleted file mode 100644 index 8312966ed..000000000 --- a/packages/wallet/frontend/src/components/dialogs/WithdrawFundsDialog.tsx +++ /dev/null @@ -1,145 +0,0 @@ -import type { DialogProps } from '@/lib/types/dialog' -import { Dialog, Transition } from '@headlessui/react' -import { Fragment } from 'react' -import { Input } from '@/ui/forms/Input' -import { Button } from '@/ui/Button' -import { Account, accountService } from '@/lib/api/account' -import { useDialog } from '@/lib/hooks/useDialog' -import { ErrorDialog } from './ErrorDialog' -import { getCurrencySymbol, getObjectKeys } from '@/utils/helpers' -import { useZodForm } from '@/lib/hooks/useZodForm' -import { Form } from '@/ui/forms/Form' -import { useRouter } from 'next/router' -import { withdrawFundsSchema } from '@wallet/shared' - -type WithdrawFundsDialogProps = Pick & { - account: Account -} - -export const WithdrawFundsDialog = ({ - onClose, - account -}: WithdrawFundsDialogProps) => { - const router = useRouter() - const [openDialog, closeDialog] = useDialog() - const withdrawFundsForm = useZodForm({ - schema: withdrawFundsSchema - }) - - return ( - - - -
- -
-
- - - - Withdraw Money - -
-
{ - const response = await accountService.withdraw(data) - - if (!response) { - openDialog( - - ) - return - } - - if (response.success) { - router.replace(router.asPath) - closeDialog() - } else { - const { errors, message } = response - - if (errors) { - getObjectKeys(errors).map((field) => - withdrawFundsForm.setError(field, { - message: errors[field] - }) - ) - } - if (message) { - withdrawFundsForm.setError('root', { message }) - } - } - }} - > - - - -
- - -
- -
-
-
-
-
-
-
- ) -} diff --git a/packages/wallet/frontend/src/lib/api/account.ts b/packages/wallet/frontend/src/lib/api/account.ts index 030bc7dc2..526b389e5 100644 --- a/packages/wallet/frontend/src/lib/api/account.ts +++ b/packages/wallet/frontend/src/lib/api/account.ts @@ -5,7 +5,7 @@ import { type ErrorResponse, type SuccessResponse } from '../httpClient' -import { createAccountSchema, withdrawFundsSchema } from '@wallet/shared' +import { createAccountSchema } from '@wallet/shared' import { WalletAddressResponse } from '@wallet/shared/src' export type Account = { @@ -29,10 +29,6 @@ type CreateAccountResult = SuccessResponse type CreateAccountError = ErrorResponse type CreateAccountResponse = CreateAccountResult | CreateAccountError -type WithdrawFundsArgs = z.infer -type WithdrawFundsError = ErrorResponse -type WithdrawFundsResponse = SuccessResponse | WithdrawFundsError - interface AccountService { get: (accountId: string, cookies?: string) => Promise list: ( @@ -40,7 +36,6 @@ interface AccountService { include?: ('walletAddresses' | 'walletAddressKeys')[] ) => Promise create: (args: CreateAccountArgs) => Promise - withdraw: (args: WithdrawFundsArgs) => Promise } const createAccountService = (): AccountService => ({ @@ -98,22 +93,6 @@ const createAccountService = (): AccountService => ({ ) } }, - - async withdraw(args) { - try { - const response = await httpClient - .post('accounts/withdraw', { - json: args - }) - .json() - return response - } catch (error) { - return getError( - error, - 'We were not able to withdraw the funds. Please try again.' - ) - } - } }) const accountService = createAccountService() diff --git a/packages/wallet/frontend/src/pages/account/[accountId].tsx b/packages/wallet/frontend/src/pages/account/[accountId].tsx index 98764d7af..8ae20dfb4 100644 --- a/packages/wallet/frontend/src/pages/account/[accountId].tsx +++ b/packages/wallet/frontend/src/pages/account/[accountId].tsx @@ -27,7 +27,6 @@ import { PageHeader } from '@/components/PageHeader' import { Request } from '@/components/icons/Request' import { ListWalletAddressesResponse } from '@wallet/shared/src' import { WalletAddressesTable } from '@/components/WalletAddressesTable' -import { WithdrawFundsDialog } from '@/components/dialogs/WithdrawFundsDialog' import { Withdraw } from '@/components/icons/Withdraw' import { Link } from '@/ui/Link' @@ -128,23 +127,16 @@ const AccountPage: NextPageWithLayout = ({ Deposit - +

Payment Pointers

{allWalletAddresses.walletAddresses.length > 0 ? ( diff --git a/packages/wallet/shared/src/types/account.ts b/packages/wallet/shared/src/types/account.ts index dd8204168..974c03472 100644 --- a/packages/wallet/shared/src/types/account.ts +++ b/packages/wallet/shared/src/types/account.ts @@ -1,17 +1,5 @@ import { z } from 'zod' -// TODO: Remove this when adding GateHub withdraw -export const fundAccountSchema = z.object({ - accountId: z.string().uuid(), - amount: z.coerce - .number({ - invalid_type_error: 'Please enter a valid amount' - }) - .positive({ message: 'Please enter an amount' }) -}) - -export const withdrawFundsSchema = fundAccountSchema - export const createAccountSchema = z.object({ name: z .string() From ad53e19add4cfcf8c1095e92216fb9cef8df77dc Mon Sep 17 00:00:00 2001 From: Radu-Cristian Popa Date: Wed, 4 Sep 2024 16:20:05 +0300 Subject: [PATCH 3/7] Format --- packages/wallet/frontend/src/lib/api/account.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wallet/frontend/src/lib/api/account.ts b/packages/wallet/frontend/src/lib/api/account.ts index 526b389e5..d88371ffb 100644 --- a/packages/wallet/frontend/src/lib/api/account.ts +++ b/packages/wallet/frontend/src/lib/api/account.ts @@ -92,7 +92,7 @@ const createAccountService = (): AccountService => ({ 'We were not able to create your account. Please try again.' ) } - }, + } }) const accountService = createAccountService() From 19ceeec195cdbc75d03f390b45e52abcac218109 Mon Sep 17 00:00:00 2001 From: Tymmmy <117268143+Tymmmy@users.noreply.github.com> Date: Wed, 25 Sep 2024 12:08:43 +0300 Subject: [PATCH 4/7] Update withdraw.tsx --- packages/wallet/frontend/src/pages/withdraw.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/wallet/frontend/src/pages/withdraw.tsx b/packages/wallet/frontend/src/pages/withdraw.tsx index c359bee7f..b1cd1a62b 100644 --- a/packages/wallet/frontend/src/pages/withdraw.tsx +++ b/packages/wallet/frontend/src/pages/withdraw.tsx @@ -24,12 +24,10 @@ const WithdrawPage: NextPageWithLayout = ({ url }) => { return ( <> - {/* TODO: Styling */} ) @@ -39,7 +37,7 @@ export const getServerSideProps: GetServerSideProps<{ url: string }> = async (ctx) => { const response = await userService.getGateHubIframeSrc( - { type: 'ramp' }, + 'withdrawal', ctx.req.headers.cookie ) From 5da2dba306a5b0df4e5412c6c35f47a675f7a89b Mon Sep 17 00:00:00 2001 From: Tymmmy <117268143+Tymmmy@users.noreply.github.com> Date: Wed, 25 Sep 2024 12:14:51 +0300 Subject: [PATCH 5/7] Update deposit.tsx --- packages/wallet/frontend/src/pages/deposit.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wallet/frontend/src/pages/deposit.tsx b/packages/wallet/frontend/src/pages/deposit.tsx index e85dbff4f..f6b0f4baa 100644 --- a/packages/wallet/frontend/src/pages/deposit.tsx +++ b/packages/wallet/frontend/src/pages/deposit.tsx @@ -39,7 +39,7 @@ export const getServerSideProps: GetServerSideProps<{ url: string }> = async (ctx) => { const response = await userService.getGateHubIframeSrc( - { type: 'ramp' }, + 'deposit', ctx.req.headers.cookie ) From d00adc08f50b8db0c6df02efc797c80cef51fa41 Mon Sep 17 00:00:00 2001 From: Tymmmy <117268143+Tymmmy@users.noreply.github.com> Date: Wed, 25 Sep 2024 12:24:30 +0300 Subject: [PATCH 6/7] Revert "Update deposit.tsx" This reverts commit 5da2dba306a5b0df4e5412c6c35f47a675f7a89b. --- packages/wallet/frontend/src/pages/deposit.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wallet/frontend/src/pages/deposit.tsx b/packages/wallet/frontend/src/pages/deposit.tsx index f6b0f4baa..e85dbff4f 100644 --- a/packages/wallet/frontend/src/pages/deposit.tsx +++ b/packages/wallet/frontend/src/pages/deposit.tsx @@ -39,7 +39,7 @@ export const getServerSideProps: GetServerSideProps<{ url: string }> = async (ctx) => { const response = await userService.getGateHubIframeSrc( - 'deposit', + { type: 'ramp' }, ctx.req.headers.cookie ) From 62f89f972969490ee64a137e019cd74df08cdd3f Mon Sep 17 00:00:00 2001 From: Tymmmy <117268143+Tymmmy@users.noreply.github.com> Date: Wed, 25 Sep 2024 12:24:40 +0300 Subject: [PATCH 7/7] Revert "Update withdraw.tsx" This reverts commit 19ceeec195cdbc75d03f390b45e52abcac218109. --- packages/wallet/frontend/src/pages/withdraw.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/wallet/frontend/src/pages/withdraw.tsx b/packages/wallet/frontend/src/pages/withdraw.tsx index b1cd1a62b..c359bee7f 100644 --- a/packages/wallet/frontend/src/pages/withdraw.tsx +++ b/packages/wallet/frontend/src/pages/withdraw.tsx @@ -24,10 +24,12 @@ const WithdrawPage: NextPageWithLayout = ({ url }) => { return ( <> + {/* TODO: Styling */} ) @@ -37,7 +39,7 @@ export const getServerSideProps: GetServerSideProps<{ url: string }> = async (ctx) => { const response = await userService.getGateHubIframeSrc( - 'withdrawal', + { type: 'ramp' }, ctx.req.headers.cookie )