From 4e689c82915242fbf4e32a52dc16e1be8f37644d Mon Sep 17 00:00:00 2001 From: atticusofsparta Date: Tue, 10 Dec 2024 18:03:36 -0600 Subject: [PATCH 1/2] fix(update): add dryrun check to see if ants support eth addresses --- .../forms/DomainSettings/DomainSettings.tsx | 1 - .../ReturnNameModal/ReturnNameModal.tsx | 3 +- src/components/pages/Manage/Manage.tsx | 3 +- .../pages/Transaction/TransactionReview.tsx | 1 + src/state/actions/dispatchArNSUpdate.ts | 35 ++++++++++++++++++- src/state/contexts/ArNSState.tsx | 3 +- 6 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/components/forms/DomainSettings/DomainSettings.tsx b/src/components/forms/DomainSettings/DomainSettings.tsx index 30ade0b1d..dcdab43fc 100644 --- a/src/components/forms/DomainSettings/DomainSettings.tsx +++ b/src/components/forms/DomainSettings/DomainSettings.tsx @@ -90,7 +90,6 @@ function DomainSettings({ const isAuthorized = isOwner || isController; const antHandlers = data?.info?.Handlers ?? data?.info?.HandlerNames ?? ([] as AoANTHandler[]); - console.log(antHandlers); const maxLeaseDuration = isMaxLeaseDuration( data?.arnsRecord && isLeasedArNSRecord(data?.arnsRecord) diff --git a/src/components/modals/ant-management/ReturnNameModal/ReturnNameModal.tsx b/src/components/modals/ant-management/ReturnNameModal/ReturnNameModal.tsx index 016e2a7a9..91ec0bd1c 100644 --- a/src/components/modals/ant-management/ReturnNameModal/ReturnNameModal.tsx +++ b/src/components/modals/ant-management/ReturnNameModal/ReturnNameModal.tsx @@ -34,7 +34,7 @@ export function ReturnNameModal({ }) { const queryClient = useQueryClient(); const navigate = useNavigate(); - const [{ arioProcessId }] = useGlobalState(); + const [{ arioProcessId, aoClient }] = useGlobalState(); const [{ arnsEmitter }, dispatchArNSState] = useArNSState(); const [{ signing }, dispatchTransactionState] = useTransactionState(); const [{ wallet, walletAddress }] = useWalletState(); @@ -83,6 +83,7 @@ export function ReturnNameModal({ }); dispatchArNSUpdate({ + ao: aoClient, walletAddress: walletAddress, arioProcessId, dispatch: dispatchArNSState, diff --git a/src/components/pages/Manage/Manage.tsx b/src/components/pages/Manage/Manage.tsx index 8a8329836..3a39e3363 100644 --- a/src/components/pages/Manage/Manage.tsx +++ b/src/components/pages/Manage/Manage.tsx @@ -15,7 +15,7 @@ import { RefreshIcon, SearchIcon } from '../../icons'; import './styles.css'; function Manage() { - const [{ arioProcessId }] = useGlobalState(); + const [{ arioProcessId, aoClient }] = useGlobalState(); const [ { loading: loadingArnsState, domains, ants, arnsEmitter }, dispatchArNSState, @@ -94,6 +94,7 @@ function Manage() { onClick={() => walletAddress ? dispatchArNSUpdate({ + ao: aoClient, emitter: arnsEmitter, dispatch: dispatchArNSState, walletAddress: walletAddress, diff --git a/src/components/pages/Transaction/TransactionReview.tsx b/src/components/pages/Transaction/TransactionReview.tsx index 8acc254a0..85d7d1b46 100644 --- a/src/components/pages/Transaction/TransactionReview.tsx +++ b/src/components/pages/Transaction/TransactionReview.tsx @@ -128,6 +128,7 @@ function TransactionReview() { } finally { if (walletAddress) { dispatchArNSUpdate({ + ao: aoClient, emitter: arnsEmitter, dispatch: dispatchArNSState, arioProcessId, diff --git a/src/state/actions/dispatchArNSUpdate.ts b/src/state/actions/dispatchArNSUpdate.ts index 4d278da72..5b6ed0359 100644 --- a/src/state/actions/dispatchArNSUpdate.ts +++ b/src/state/actions/dispatchArNSUpdate.ts @@ -1,8 +1,15 @@ -import { ANT, AoANTState, ArNSEventEmitter } from '@ar.io/sdk/web'; +import { + ANT, + AoANTHandler, + AoANTState, + AoClient, + ArNSEventEmitter, +} from '@ar.io/sdk/web'; import { captureException } from '@sentry/react'; import { AoAddress } from '@src/types'; import eventEmitter from '@src/utils/events'; import { queryClient } from '@src/utils/network'; +import { Tag } from 'arweave/node/lib/transaction'; import { Dispatch } from 'react'; import { ArNSAction } from '../reducers/ArNSReducer'; @@ -12,11 +19,13 @@ export function dispatchArNSUpdate({ dispatch, walletAddress, arioProcessId, + ao, }: { emitter: ArNSEventEmitter; dispatch: Dispatch; walletAddress: AoAddress; arioProcessId: string; + ao: AoClient; }) { dispatch({ type: 'setDomains', payload: {} }); dispatch({ type: 'setAnts', payload: {} }); @@ -30,6 +39,30 @@ export function dispatchArNSUpdate({ const handlers = await queryClient.fetchQuery({ queryKey: ['handlers', id], queryFn: async () => { + // validate transfer supports eth addresses + const dryTransferRes = await ao + .dryrun({ + process: id, + Owner: walletAddress.toString(), + From: walletAddress.toString(), + tags: [ + { name: 'Action', value: 'Transfer' }, + { name: 'Recipient', value: '0x'.padEnd(42, '0') }, + ], + }) + .catch(() => { + return {} as ReturnType; + }); + + const hasError = + dryTransferRes.Messages.find((msg) => { + return msg.Tags.find((t: Tag) => t.name === 'Error'); + }) !== undefined; + + if (hasError) { + return [] as AoANTHandler[]; + } + return await ANT.init({ processId: id, }) diff --git a/src/state/contexts/ArNSState.tsx b/src/state/contexts/ArNSState.tsx index 2f5c8ad57..be4d461d6 100644 --- a/src/state/contexts/ArNSState.tsx +++ b/src/state/contexts/ArNSState.tsx @@ -59,7 +59,7 @@ export function ArNSStateProvider({ reducer, children, }: ArNSStateProviderProps): JSX.Element { - const [{ arioContract, arioProcessId }] = useGlobalState(); + const [{ arioContract, arioProcessId, aoClient }] = useGlobalState(); const [state, dispatchArNSState] = useReducer(reducer, initialArNSState); const [{ walletAddress }] = useWalletState(); @@ -77,6 +77,7 @@ export function ArNSStateProvider({ useEffect(() => { if (!walletAddress) return; dispatchArNSUpdate({ + ao: aoClient, dispatch: dispatchArNSState, emitter: state.arnsEmitter, walletAddress: walletAddress, From 3ac44edbcaf936fe244abe892c75730ace0e1889 Mon Sep 17 00:00:00 2001 From: atticusofsparta Date: Wed, 11 Dec 2024 13:17:36 -0600 Subject: [PATCH 2/2] fix(ant changelog): update ant changelog --- assets/ant-changelog.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/ant-changelog.md b/assets/ant-changelog.md index 499c32efa..8def61cbe 100644 --- a/assets/ant-changelog.md +++ b/assets/ant-changelog.md @@ -6,7 +6,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Unreleased] -## [9] - [ezS3Z57rq_0skoG0WYmIqJ33mJiu0HbYNn9vEu12Mc4] - (2024-12-4) +## [9] - [16_FyX-V2QU0RPSh1GIaEETSaUjNb0oVjCFpVbAfQq4] - (2024-12-4) ### Changed