From 60dfd8d6a0d87a89b564142896fdc3d91aba5d8e Mon Sep 17 00:00:00 2001 From: OjusWiZard Date: Thu, 28 Sep 2023 00:56:33 +0530 Subject: [PATCH 1/4] fix (create): wait for confirmation after create Signed-off-by: OjusWiZard --- packages/create/src/containers/CreatePage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/create/src/containers/CreatePage.tsx b/packages/create/src/containers/CreatePage.tsx index cf9fe226..50f432d5 100644 --- a/packages/create/src/containers/CreatePage.tsx +++ b/packages/create/src/containers/CreatePage.tsx @@ -46,7 +46,7 @@ const CreatePage = () => { account, chainId ); - // await request.waitForConfirmation(); + await request.waitForConfirmation(); history.push(`/${request.requestId}`); } catch (e) { if (!isCancelError(e)) { From 7db7ad4e5ab73f582e41d8e49963b4a07a2e8325 Mon Sep 17 00:00:00 2001 From: OjusWiZard Date: Fri, 29 Sep 2023 11:38:56 +0530 Subject: [PATCH 2/4] chore (create): remove unused warning Signed-off-by: OjusWiZard --- packages/create/src/components/AppBar.tsx | 3 +-- packages/create/src/containers/CreatePage.tsx | 2 +- packages/create/src/containers/RequestPage.tsx | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/create/src/components/AppBar.tsx b/packages/create/src/components/AppBar.tsx index 309acf54..11b2bcb5 100644 --- a/packages/create/src/components/AppBar.tsx +++ b/packages/create/src/components/AppBar.tsx @@ -1,7 +1,6 @@ -import React, { useState, useEffect } from "react"; +import { useState, useEffect } from "react"; import { NavLink, useLocation } from "react-router-dom"; import { RLogo } from "request-ui"; -import { Link, Hidden } from "@material-ui/core"; import { AppBar, diff --git a/packages/create/src/containers/CreatePage.tsx b/packages/create/src/containers/CreatePage.tsx index 50f432d5..2fe7c376 100644 --- a/packages/create/src/containers/CreatePage.tsx +++ b/packages/create/src/containers/CreatePage.tsx @@ -1,5 +1,5 @@ import { FormikHelpers } from "formik"; -import React, { useState } from "react"; +import { useState } from "react"; import { useHistory } from "react-router"; import { isCancelError, useCreateRequest } from "request-shared"; import { useErrorReporter } from "request-ui"; diff --git a/packages/create/src/containers/RequestPage.tsx b/packages/create/src/containers/RequestPage.tsx index e54eea94..10985545 100644 --- a/packages/create/src/containers/RequestPage.tsx +++ b/packages/create/src/containers/RequestPage.tsx @@ -1,4 +1,4 @@ -import React, { useState } from "react"; +import { useEffect, useState } from "react"; import { makeStyles, Typography } from "@material-ui/core"; import { useWeb3React } from "@web3-react/core"; import { From a247731537baa5efb3ad0b704b0873cd093029e8 Mon Sep 17 00:00:00 2001 From: OjusWiZard Date: Fri, 29 Sep 2023 11:39:57 +0530 Subject: [PATCH 3/4] feat (create): add onConfirmation state in context Signed-off-by: OjusWiZard --- packages/pay/src/containers/DemoPage.tsx | 3 ++- packages/shared/src/contexts/RequestContext.tsx | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/pay/src/containers/DemoPage.tsx b/packages/pay/src/containers/DemoPage.tsx index 1a2eb91c..90162bbb 100644 --- a/packages/pay/src/containers/DemoPage.tsx +++ b/packages/pay/src/containers/DemoPage.tsx @@ -530,7 +530,8 @@ const DemoPage = () => { counterValue: "1.00", request, loading: !request, - setPending: () => {}, + setOnConfirmation: () => { }, + setPending: () => { }, update: () => Promise.resolve(), }} > diff --git a/packages/shared/src/contexts/RequestContext.tsx b/packages/shared/src/contexts/RequestContext.tsx index 4237f4ce..750af423 100644 --- a/packages/shared/src/contexts/RequestContext.tsx +++ b/packages/shared/src/contexts/RequestContext.tsx @@ -20,6 +20,7 @@ interface IContext { counterCurrency: CurrencyDefinition; /** the request's expected amount in counter currency */ counterValue?: string; + setOnConfirmation: (onConfirmation: () => void) => void; /** * set the pending status for UX purposes * Pending means the payment is being processed and takes a long time. @@ -72,6 +73,7 @@ export const RequestProvider: React.FC<{ chainId?: string | number }> = ({ const counterCurrency = currencyManager.from("USD")!; const [counterValue, setCounterValue] = useState(""); const [pending, setPending] = useState(false); + const [onConfirmation, setOnConfirmation] = useState<() => void>(); // gets counter currency rate const rate = useRate(parsedRequest?.currency, counterCurrency); @@ -100,6 +102,9 @@ export const RequestProvider: React.FC<{ chainId?: string | number }> = ({ }); parseResult.loaded = true; setParsedRequest(parseResult); + if (onConfirmation) { + result.request.waitForConfirmation().then(onConfirmation); + } } }; @@ -125,6 +130,7 @@ export const RequestProvider: React.FC<{ chainId?: string | number }> = ({ counterCurrency, counterValue, setPending, + setOnConfirmation, update: useCallback( () => fetchRequest(id, chainId, pending), [id, chainId, pending] From 0e18b15fe9073f3f59c913b3d78e8f3693f8b872 Mon Sep 17 00:00:00 2001 From: OjusWiZard Date: Fri, 29 Sep 2023 11:50:53 +0530 Subject: [PATCH 4/4] fix (create): use onConfirmation on request update Signed-off-by: OjusWiZard --- packages/create/src/containers/CreatePage.tsx | 2 +- packages/create/src/containers/RequestPage.tsx | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/create/src/containers/CreatePage.tsx b/packages/create/src/containers/CreatePage.tsx index 2fe7c376..e2db88ee 100644 --- a/packages/create/src/containers/CreatePage.tsx +++ b/packages/create/src/containers/CreatePage.tsx @@ -46,7 +46,7 @@ const CreatePage = () => { account, chainId ); - await request.waitForConfirmation(); + // await request.waitForConfirmation(); history.push(`/${request.requestId}`); } catch (e) { if (!isCancelError(e)) { diff --git a/packages/create/src/containers/RequestPage.tsx b/packages/create/src/containers/RequestPage.tsx index 10985545..922168c1 100644 --- a/packages/create/src/containers/RequestPage.tsx +++ b/packages/create/src/containers/RequestPage.tsx @@ -84,10 +84,18 @@ const RequestPageInner = () => { request, loading, update, + setOnConfirmation, counterCurrency, counterValue, } = useRequest(); + useEffect(() => { + if (request?.status === 'waiting') { + setOnConfirmation(update); + } + // eslint-disable-next-line + }, [request]); // not including update and setOnConfirmation here because they won't change + const cancel = async () => { if (!request || !account || !chainId) { throw new Error("cannot cancel because page is not ready");