diff --git a/web/src/components/Verdict/FinalDecision.tsx b/web/src/components/Verdict/FinalDecision.tsx index 3191c53c8..d58a216ce 100644 --- a/web/src/components/Verdict/FinalDecision.tsx +++ b/web/src/components/Verdict/FinalDecision.tsx @@ -93,13 +93,14 @@ const FinalDecision: React.FC = ({ arbitrable }) => { const localRounds = getLocalRounds(votingHistory?.dispute?.disputeKitDispute); const ruled = disputeDetails?.dispute?.ruled ?? false; const periodIndex = Periods[disputeDetails?.dispute?.period ?? "evidence"]; - const { data: currentRulingArray } = useReadKlerosCoreCurrentRuling({ + const { data: currentRulingArray, isLoading: isLoadingCurrentRuling } = useReadKlerosCoreCurrentRuling({ query: { refetchInterval: REFETCH_INTERVAL }, args: [BigInt(id ?? 0)], chainId: DEFAULT_CHAIN, }); - const currentRuling = Number(currentRulingArray?.[0]); - const answer = populatedDisputeData?.answers?.[currentRuling! - 1]; + const currentRuling = Number(currentRulingArray?.[0] ?? 0); + + const answer = populatedDisputeData?.answers?.find((answer) => BigInt(answer.id) === BigInt(currentRuling)); const rounds = votingHistory?.dispute?.rounds; const jurorRewardsDispersed = useMemo(() => Boolean(rounds?.every((round) => round.jurorRewardsDispersed)), [rounds]); const buttonText = useMemo(() => { @@ -122,13 +123,21 @@ const FinalDecision: React.FC = ({ arbitrable }) => { {ruled && ( The jury decided in favor of: - + {isLoadingCurrentRuling ? ( + + ) : ( + + )} )} {!ruled && periodIndex > 1 && localRounds?.at(localRounds.length - 1)?.totalVoted > 0 && ( This option is winning: - + {isLoadingCurrentRuling ? ( + + ) : ( + + )} )} diff --git a/web/src/hooks/useClassicAppealContext.tsx b/web/src/hooks/useClassicAppealContext.tsx index ea5b66297..85e037723 100644 --- a/web/src/hooks/useClassicAppealContext.tsx +++ b/web/src/hooks/useClassicAppealContext.tsx @@ -133,11 +133,11 @@ const getCurrentLocalRound = (dispute?: ClassicAppealQuery["dispute"]) => { }; const getOptions = (dispute?: DisputeDetails, classicDispute?: ClassicAppealQuery["dispute"]) => { - if (!dispute) return []; + if (!dispute || Object.keys(dispute).length === 0) return []; const currentLocalRound = getCurrentLocalRound(classicDispute); const classicAnswers = currentLocalRound?.answers; - const options = dispute.answers.map((answer) => { + const options = dispute.answers?.map((answer) => { const classicAnswer = classicAnswers?.find((classicAnswer) => BigInt(classicAnswer.answerId) == BigInt(answer.id)); // converting hexadecimal id to stringified bigint to match id fomr subgraph return {