From 3f10b83e01c4ec786053653d2e5e7d372eb25e00 Mon Sep 17 00:00:00 2001 From: Matt <90358481+xbtmatt@users.noreply.github.com> Date: Tue, 26 Nov 2024 22:36:25 -0800 Subject: [PATCH] Try to fix Aptos Connect WSOD --- .../wallet-context/AptosContextProvider.tsx | 67 +++++++++---------- 1 file changed, 33 insertions(+), 34 deletions(-) diff --git a/src/typescript/frontend/src/context/wallet-context/AptosContextProvider.tsx b/src/typescript/frontend/src/context/wallet-context/AptosContextProvider.tsx index d52c4493e..b7644591e 100644 --- a/src/typescript/frontend/src/context/wallet-context/AptosContextProvider.tsx +++ b/src/typescript/frontend/src/context/wallet-context/AptosContextProvider.tsx @@ -187,18 +187,20 @@ export function AptosContextProvider({ children }: PropsWithChildren) { ); const handleTransactionSubmission = useCallback( - async ( - network: NetworkInfo, - trySubmit: () => Promise<{ - aptos: Aptos; - functionName: EntryFunctionNames; - res: PendingTransactionResponse; - }> - ) => { + async ({ + network, + aptos, + functionName, + res, + }: { + network: NetworkInfo; + aptos: Aptos; + functionName: EntryFunctionNames; + res: PendingTransactionResponse; + }) => { let response: PendingTransactionResponse | UserTransactionResponse | null = null; let error: unknown; try { - const { aptos, res, functionName } = await trySubmit(); response = res; setStatus("pending"); try { @@ -256,18 +258,16 @@ export function AptosContextProvider({ children }: PropsWithChildren) { async (builderFn: () => Promise) => { if (geoblocked) return null; if (checkNetworkAndToast(network, true)) { - const trySubmit = async () => { - const builder = await builderFn(); - setStatus("prompt"); - const input = builder.payloadBuilder.toInputPayload(); - return adapterSignAndSubmitTxn(input).then((res) => ({ - aptos: builder.aptos, - functionName: builder.payloadBuilder.functionName as EntryFunctionNames, - res, - })); - }; + const builder = await builderFn(); + setStatus("prompt"); + const input = builder.payloadBuilder.toInputPayload(); + const { aptos, functionName, res } = await adapterSignAndSubmitTxn(input).then((res) => ({ + aptos: builder.aptos, + functionName: builder.payloadBuilder.functionName as EntryFunctionNames, + res, + })); - return await handleTransactionSubmission(network, trySubmit); + return await handleTransactionSubmission({ network, aptos, functionName, res }); } return null; }, @@ -281,20 +281,19 @@ export function AptosContextProvider({ children }: PropsWithChildren) { async (builderFn: () => Promise) => { if (geoblocked) return null; if (checkNetworkAndToast(network, true)) { - const trySubmit = async () => { - const builder = await builderFn(); - setStatus("prompt"); - const senderAuthenticator = await signTransaction(builder.rawTransactionInput); - return submitTransaction({ - transaction: builder.rawTransactionInput, - senderAuthenticator, - }).then((res) => ({ - aptos: builder.aptos, - functionName: builder.payloadBuilder.functionName as EntryFunctionNames, - res, - })); - }; - return await handleTransactionSubmission(network, trySubmit); + const builder = await builderFn(); + setStatus("prompt"); + const senderAuthenticator = await signTransaction(builder.rawTransactionInput); + const { aptos, functionName, res } = await submitTransaction({ + transaction: builder.rawTransactionInput, + senderAuthenticator, + }).then((res) => ({ + aptos: builder.aptos, + functionName: builder.payloadBuilder.functionName as EntryFunctionNames, + res, + })); + + return await handleTransactionSubmission({ network, aptos, functionName, res }); } return null; },