From 078c6eab4a5716579a11c197c451a86c77b453b1 Mon Sep 17 00:00:00 2001 From: Alexander Belokon Date: Tue, 8 Oct 2024 17:02:09 +0200 Subject: [PATCH] fix: drop unnecessary decode event calls --- modules/votes/utils/getEventExecuteVote.ts | 17 ++++++----- modules/votes/utils/getEventVoteStart.ts | 10 +++---- modules/votes/utils/getEventsCastVote.ts | 33 ++++++---------------- 3 files changed, 23 insertions(+), 37 deletions(-) diff --git a/modules/votes/utils/getEventExecuteVote.ts b/modules/votes/utils/getEventExecuteVote.ts index e351ca6c..c6cade5c 100644 --- a/modules/votes/utils/getEventExecuteVote.ts +++ b/modules/votes/utils/getEventExecuteVote.ts @@ -1,5 +1,6 @@ import type { AragonVotingAbi, + ExecuteVoteEvent, ExecuteVoteEventObject, } from 'generated/AragonVotingAbi' @@ -7,20 +8,22 @@ export async function getEventExecuteVote( contractVoting: AragonVotingAbi, voteId: string | number, block?: string | number, -) { +): Promise<{ + event: ExecuteVoteEvent + decoded: ExecuteVoteEventObject +} | null> { const filter = contractVoting.filters.ExecuteVote(Number(voteId)) const events = await contractVoting.queryFilter( filter, block ? Number(block) : undefined, ) - const event = events[0] - if (!events[0]) return undefined - if (!event.decode) { - throw new Error('ExecuteVote event decoding error') + if (!events.length) { + return null } - const decoded: ExecuteVoteEventObject = event.decode(event.data, event.topics) + const event = events[0] + return { event, - decoded, + decoded: event.args, } } diff --git a/modules/votes/utils/getEventVoteStart.ts b/modules/votes/utils/getEventVoteStart.ts index 26d9cfbc..c8211be1 100644 --- a/modules/votes/utils/getEventVoteStart.ts +++ b/modules/votes/utils/getEventVoteStart.ts @@ -7,17 +7,17 @@ export async function getEventStartVote( contractVoting: AragonVotingAbi, voteId: string | number, block?: string | number, -) { +): Promise { const filter = contractVoting.filters.StartVote(Number(voteId)) const events = await contractVoting.queryFilter( filter, block ? Number(block) : undefined, block ? Number(block) + 1 : undefined, ) - const event = events[0] - if (!events[0] || !event.decode) { + + if (!events.length) { return null } - const decoded = event.decode(event.data, event.topics) - return decoded as StartVoteEventObject + + return events[0].args } diff --git a/modules/votes/utils/getEventsCastVote.ts b/modules/votes/utils/getEventsCastVote.ts index 5722eede..5420014e 100644 --- a/modules/votes/utils/getEventsCastVote.ts +++ b/modules/votes/utils/getEventsCastVote.ts @@ -1,8 +1,5 @@ import type { AragonVotingAbi } from 'generated' -import type { - CastVoteEventObject, - AttemptCastVoteAsDelegateEventObject, -} from 'generated/AragonVotingAbi' +import type { CastVoteEventObject } from 'generated/AragonVotingAbi' export function unifyEventsVotedWithLast(events: CastVoteEventObject[]) { return events.reverse().reduce( @@ -31,9 +28,7 @@ export async function getEventsCastVote( filter, block ? Number(block) : undefined, ) - const decoded = events.map(e => - e.decode!(e.data, e.topics), - ) as CastVoteEventObject[] + const decoded = events.map(e => e.args) as CastVoteEventObject[] return unifyEventsVotedWithLast(decoded) } @@ -67,11 +62,7 @@ export async function getEventsAttemptCastVoteAsDelegate( >() delegateEvents.forEach(event => { - const decodedEvent = event.decode!( - event.data, - event.topics, - ) as AttemptCastVoteAsDelegateEventObject - decodedEvent.voters.forEach(voter => { + event.args.voters.forEach(voter => { const voterLower = voter.toLowerCase() const existing = voterToLatestVote.get(voterLower) if ( @@ -84,18 +75,14 @@ export async function getEventsAttemptCastVoteAsDelegate( blockNumber: event.blockNumber, transactionIndex: event.transactionIndex, isDelegate: true, - delegate: decodedEvent.delegate, + delegate: event.args.delegate, }) } }) }) castVoteEvents.forEach(event => { - const decodedEvent = event.decode!( - event.data, - event.topics, - ) as CastVoteEventObject - const voterLower = decodedEvent.voter.toLowerCase() + const voterLower = event.args.voter.toLowerCase() const existing = voterToLatestVote.get(voterLower) if ( !existing || @@ -113,22 +100,18 @@ export async function getEventsAttemptCastVoteAsDelegate( return delegateEvents .map(event => { - const decodedEvent = event.decode!( - event.data, - event.topics, - ) as AttemptCastVoteAsDelegateEventObject - const filteredVoters = decodedEvent.voters.filter(voter => { + const filteredVoters = event.args.voters.filter(voter => { const latestVote = voterToLatestVote.get(voter.toLowerCase()) return ( latestVote && latestVote.isDelegate && - latestVote.delegate === decodedEvent.delegate && + latestVote.delegate === event.args.delegate && latestVote.blockNumber === event.blockNumber && latestVote.transactionIndex === event.transactionIndex ) }) return { - ...decodedEvent, + ...event.args, voters: filteredVoters, } })