quasvel
Version:
Access and interact with Aragon Organizations and their apps.
97 lines (86 loc) • 2.14 kB
text/typescript
import { QueryResult } from '@aragon/connect-thegraph'
import Vote from '../../models/Vote'
import { VoteData } from '../../types'
function buildVote(vote: any, connector: any, provider: any): Vote {
const {
id,
voting,
voteId,
creator,
context,
status,
actionId,
challengeId,
challenger,
challengeEndDate,
disputeId,
setting,
startDate,
totalPower,
snapshotBlock,
yeas,
nays,
pausedAt,
pauseDuration,
quietEndingExtensionDuration,
quietEndingSnapshotSupport,
script,
settledAt,
disputedAt,
executedAt,
isAccepted,
collateralRequirement,
submitterArbitratorFee,
challengerArbitratorFee,
} = vote
const voteData: VoteData = {
id,
votingId: voting.id,
voteId,
creator,
duration: setting.voteTime,
quietEndingExtension: setting.quietEndingExtension,
context,
status,
actionId,
challengeId,
challenger,
challengeEndDate,
disputeId,
settingId: setting.id,
startDate,
totalPower,
snapshotBlock,
yeas,
nays,
pausedAt,
pauseDuration,
quietEndingExtensionDuration,
quietEndingSnapshotSupport,
script,
settledAt,
disputedAt,
executedAt,
isAccepted,
tokenId: voting.token.id,
tokenDecimals: voting.token.decimals,
collateralRequirementId: collateralRequirement.id,
submitterArbitratorFeeId: submitterArbitratorFee ? submitterArbitratorFee.id : null,
challengerArbitratorFeeId: challengerArbitratorFee ? challengerArbitratorFee.id : null
}
return new Vote(voteData, connector, provider)
}
export function parseVote(result: QueryResult, connector: any, provider: any): Vote {
const vote = result.data.vote
if (!vote) {
throw new Error('Unable to parse vote.')
}
return buildVote(vote, connector, provider)
}
export function parseVotes(result: QueryResult, connector: any, provider: any): Vote[] {
const votes = result.data.votes
if (!votes) {
throw new Error('Unable to parse votes.')
}
return votes.map((vote: any) => buildVote(vote, connector, provider))
}