From dfce8d6a126609a897ebcacb91fd3288d6a8e441 Mon Sep 17 00:00:00 2001 From: Bob van der Helm <34470358+bobthebuidlr@users.noreply.github.com> Date: Thu, 14 Dec 2023 10:37:54 +0100 Subject: [PATCH] add execute message page (#694) --- src/components/Routes.tsx | 2 + src/pages/ExecuteMessagePage.tsx | 93 +++++++++++++++++++++++ src/store/slices/broadcast.ts | 14 ++++ src/types/interfaces/route.d.ts | 1 + src/types/interfaces/store/broadcast.d.ts | 1 + src/utils/route.ts | 1 + 6 files changed, 112 insertions(+) create mode 100644 src/pages/ExecuteMessagePage.tsx diff --git a/src/components/Routes.tsx b/src/components/Routes.tsx index 4561dbde..4196b49e 100644 --- a/src/components/Routes.tsx +++ b/src/components/Routes.tsx @@ -2,6 +2,7 @@ import { Navigate, Outlet, Route, Routes as RoutesWrapper } from 'react-router-d import Layout from 'pages/_layout' import BorrowPage from 'pages/BorrowPage' +import ExecuteMessagePage from 'pages/ExecuteMessagePage' import FarmPage from 'pages/FarmPage' import HLSFarmPage from 'pages/HLSFarmPage' import HLSStakingPage from 'pages/HLSStakingPage' @@ -35,6 +36,7 @@ export default function Routes() { {ENABLE_HLS && } />} } /> + } /> } /> } /> {ENABLE_PERPS && } />} diff --git a/src/pages/ExecuteMessagePage.tsx b/src/pages/ExecuteMessagePage.tsx new file mode 100644 index 00000000..1a1a665f --- /dev/null +++ b/src/pages/ExecuteMessagePage.tsx @@ -0,0 +1,93 @@ +import { useState } from 'react' +import { useSearchParams } from 'react-router-dom' + +import Text from 'components/Text' +import WarningMessages from 'components/WarningMessages' +import { ENV } from 'constants/env' +import useStore from 'store' + +import ActionButton from '../components/Button/ActionButton' + +export default function ExecuteMessagePage() { + const [searchParams] = useSearchParams() + + const [contract, setContract] = useState( + searchParams.get('contract') ?? ENV.ADDRESS_CREDIT_MANAGER, + ) + const [message, setMessage] = useState(atob(searchParams.get('msg') ?? '')) + const [funds, setFunds] = useState(atob(searchParams.get('funds') ?? '')) + + const [messageWarnings, setMessageWarnings] = useState([]) + const [fundsWarnings, setFundsWarnings] = useState([]) + + const execute = useStore((s) => s.execute) + + function onChangeTextArea(value: string) { + setMessage(value) + + try { + if (value !== '') JSON.parse(value) + setMessageWarnings([]) + } catch { + setMessageWarnings(['Invalid JSON']) + } + } + + function onChangeFunds(value: string) { + setFunds(value) + + try { + if (value !== '') JSON.parse(value) + setFundsWarnings([]) + } catch { + setFundsWarnings(['Invalid JSON']) + } + } + + return ( +
+ Execute Custom Message + + +