From 5040c061e34c3da3b87982f546d9e0fec159308c Mon Sep 17 00:00:00 2001 From: atticusofsparta Date: Thu, 26 Jun 2025 11:05:14 -0600 Subject: [PATCH 01/13] fix(hyperbeam): add hyperbeam url to dev settings --- .../tables/UndernamesSubtable.tsx | 3 +- .../data-display/tables/UndernamesTable.tsx | 3 +- src/components/devtools/NetworkSettings.tsx | 121 ++++++++++++++++++ .../forms/DomainSettings/DomainSettings.tsx | 11 +- .../NameTokenSelector/NameTokenSelector.tsx | 15 +-- .../PrimaryNameModal/PrimaryNameModal.tsx | 2 + .../EditUndernameModal/EditUndernameModal.tsx | 5 +- .../ReassignNameModal/ReassignNameModal.tsx | 1 + .../ReturnNameModal/ReturnNameModal.tsx | 1 + .../UpgradeDomainModal/UpgradeDomainModal.tsx | 1 + .../UpgradeDomainsModal.tsx | 1 + src/components/pages/Register/Checkout.tsx | 1 + src/components/pages/Register/Register.tsx | 8 +- .../pages/Transaction/TransactionReview.tsx | 1 + src/hooks/useDomainInfo.tsx | 5 +- src/state/actions/dispatchANTInteraction.ts | 8 ++ src/state/actions/dispatchArIOInteraction.ts | 7 +- src/utils/constants.ts | 4 + src/utils/network.ts | 10 +- 19 files changed, 191 insertions(+), 17 deletions(-) diff --git a/src/components/data-display/tables/UndernamesSubtable.tsx b/src/components/data-display/tables/UndernamesSubtable.tsx index 671a61883..c732bfdaa 100644 --- a/src/components/data-display/tables/UndernamesSubtable.tsx +++ b/src/components/data-display/tables/UndernamesSubtable.tsx @@ -56,7 +56,7 @@ const UndernamesSubtable = ({ antId: string; state?: AoANTState | null; }) => { - const [{ arioProcessId, antAoClient }] = useGlobalState(); + const [{ arioProcessId, antAoClient, aoNetwork }] = useGlobalState(); const [{ wallet, walletAddress }] = useWalletState(); const isOwner = walletAddress ? state?.Owner === walletAddress.toString() @@ -295,6 +295,7 @@ const UndernamesSubtable = ({ dispatchTransactionState, dispatchArNSState, ao: antAoClient, + aoNetwork, }).then(() => { eventEmitter.emit('success', { message: ( diff --git a/src/components/data-display/tables/UndernamesTable.tsx b/src/components/data-display/tables/UndernamesTable.tsx index 418aba444..453729b4d 100644 --- a/src/components/data-display/tables/UndernamesTable.tsx +++ b/src/components/data-display/tables/UndernamesTable.tsx @@ -99,7 +99,7 @@ const UndernamesTable = ({ refresh?: () => void; }) => { const [searchParams, setSearchParams] = useSearchParams(); - const [{ arioProcessId, antAoClient }] = useGlobalState(); + const [{ arioProcessId, antAoClient, aoNetwork }] = useGlobalState(); const [{ wallet, walletAddress }] = useWalletState(); const isOwner = walletAddress ? state?.Owner === walletAddress.toString() @@ -153,6 +153,7 @@ const UndernamesTable = ({ dispatchTransactionState, dispatchArNSState, ao: antAoClient, + aoNetwork, }); eventEmitter.emit('success', { name: 'Manage Undernames', diff --git a/src/components/devtools/NetworkSettings.tsx b/src/components/devtools/NetworkSettings.tsx index e612adf95..cef817807 100644 --- a/src/components/devtools/NetworkSettings.tsx +++ b/src/components/devtools/NetworkSettings.tsx @@ -18,6 +18,7 @@ import { Collapse, Input, Space } from 'antd'; import { List } from 'lucide-react'; import { useEffect, useState } from 'react'; +import Switch from '../inputs/Switch'; import ArweaveID, { ArweaveIdTypes } from '../layout/ArweaveID/ArweaveID'; import SelectGatewayModal from './SelectGatewayModal/SelectGatewayModal'; import './styles.css'; @@ -57,6 +58,14 @@ function NetworkSettings() { const [validTurboPaymentUrl, setValidTurboPaymentUrl] = useState(true); + const [newHyperbeamUrl, setNewHyperbeamUrl] = useState( + aoNetwork.HYPERBEAM.URL, + ); + const [validHyperbeamUrl, setValidHyperbeamUrl] = useState(true); + const [hyperbeamEnabled, setHyperbeamEnabled] = useState( + aoNetwork.HYPERBEAM.ENABLED, + ); + function reset() { // gateway setNewGateway(NETWORK_DEFAULTS.ARWEAVE.HOST); @@ -78,6 +87,14 @@ function NetworkSettings() { setNewTurboPaymentUrl(NETWORK_DEFAULTS.TURBO.PAYMENT_URL); setValidTurboPaymentUrl(true); updateTurboNetwork(NETWORK_DEFAULTS.TURBO); + // hyperbeam network + setNewHyperbeamUrl(NETWORK_DEFAULTS.AO.HYPERBEAM.URL); + setValidHyperbeamUrl(true); + setHyperbeamEnabled(NETWORK_DEFAULTS.AO.HYPERBEAM.ENABLED); + updateHyperbeamAoNetwork({ + URL: NETWORK_DEFAULTS.AO.HYPERBEAM.URL, + ENABLED: NETWORK_DEFAULTS.AO.HYPERBEAM.ENABLED, + }); } useEffect(() => { @@ -94,6 +111,12 @@ function NetworkSettings() { setValidSuAddress(true); }, [aoNetwork.ARIO]); + useEffect(() => { + setNewHyperbeamUrl(aoNetwork.HYPERBEAM.URL); + setValidHyperbeamUrl(true); + setHyperbeamEnabled(aoNetwork.HYPERBEAM.ENABLED); + }, [aoNetwork.HYPERBEAM]); + async function updateGateway(gate: string) { try { if (!isValidGateway(gate)) { @@ -196,6 +219,24 @@ function NetworkSettings() { }); } + function updateHyperbeamAoNetwork(config: { + URL?: string; + ENABLED?: boolean; + }) { + try { + const newConfig = { + ...aoNetwork, + ...{ HYPERBEAM: { ...aoNetwork.HYPERBEAM, ...config } }, + }; + dispatchGlobalState({ + type: 'setAONetwork', + payload: newConfig, + }); + } catch (error) { + eventEmitter.emit('error', error); + } + } + return (
@@ -565,6 +606,86 @@ function NetworkSettings() {
} /> + + Hyperbeam URL:{' '} + + {aoNetwork.HYPERBEAM.URL} + + + ({aoNetwork.HYPERBEAM.ENABLED ? 'Enabled' : 'Disabled'}) + +
+ + Enable Hyperbeam: + + { + setHyperbeamEnabled(checked); + updateHyperbeamAoNetwork({ ENABLED: checked }); + }} + /> + +
+
+ + { + setValidHyperbeamUrl(isValidURL(e.target.value.trim())); + setNewHyperbeamUrl(e.target.value.trim()); + }} + onClear={() => setNewHyperbeamUrl('')} + onPressEnter={(e) => + updateHyperbeamAoNetwork({ + URL: e.currentTarget.value.trim(), + }) + } + variant="outlined" + status={validHyperbeamUrl ? '' : 'error'} + addonAfter={ +
+ + +
+ } + /> +
-
+ {!hyperbeamUrl && ( + DISABLED + )} setNewHyperbeamUrl('')} onPressEnter={(e) => - updateHyperbeamAoNetwork({ - URL: e.currentTarget.value.trim(), + dispatchGlobalState({ + type: 'setHyperbeamUrl', + payload: e.currentTarget.value.trim(), }) } variant="outlined" @@ -663,8 +622,9 @@ function NetworkSettings() { disabled={!validHyperbeamUrl} className="bg-primary text-black h-full flex w-fit p-1 rounded-sm text-xs" onClick={() => - updateHyperbeamAoNetwork({ - URL: newHyperbeamUrl.trim(), + dispatchGlobalState({ + type: 'setHyperbeamUrl', + payload: newHyperbeamUrl.trim(), }) } > @@ -673,10 +633,14 @@ function NetworkSettings() { + + + } + /> +