Skip to content

Commit 33f3532

Browse files
authored
Merge branch 'fix(web)/staking-refetch-and-improving-fetching-timing' into fix(web)/dashboard-data-and-wallet-connection
2 parents ae90c62 + f4285ed commit 33f3532

18 files changed

+136
-98
lines changed

web/src/components/Verdict/DisputeTimeline.tsx

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@ import { useParams } from "react-router-dom";
33
import styled, { useTheme } from "styled-components";
44
import { _TimelineItem1, CustomTimeline } from "@kleros/ui-components-library";
55
import { Periods } from "consts/periods";
6-
import { useVotingHistory } from "queries/useVotingHistory";
7-
import { useDisputeTemplate } from "queries/useDisputeTemplate";
6+
import { ClassicRound } from "src/graphql/graphql";
87
import { DisputeDetailsQuery, useDisputeDetailsQuery } from "queries/useDisputeDetailsQuery";
8+
import { useDisputeTemplate } from "queries/useDisputeTemplate";
9+
import { useVotingHistory } from "queries/useVotingHistory";
10+
import CalendarIcon from "assets/svgs/icons/calendar.svg";
911
import ClosedCaseIcon from "assets/svgs/icons/check-circle-outline.svg";
1012
import AppealedCaseIcon from "assets/svgs/icons/close-circle.svg";
11-
import CalendarIcon from "assets/svgs/icons/calendar.svg";
1213

1314
const Container = styled.div`
1415
display: flex;
@@ -59,31 +60,31 @@ const getCaseEventTimes = (
5960

6061
type TimelineItems = [_TimelineItem1, ..._TimelineItem1[]];
6162

62-
const useItems = (disputeDetails?: DisputeDetailsQuery) => {
63-
const { data: disputeTemplate } = useDisputeTemplate();
63+
const useItems = (disputeDetails?: DisputeDetailsQuery, arbitrable?: `0x${string}`) => {
6464
const { id } = useParams();
6565
const { data: votingHistory } = useVotingHistory(id);
66-
const localRounds = votingHistory?.dispute?.disputeKitDispute?.localRounds;
66+
const { data: disputeTemplate } = useDisputeTemplate(id, arbitrable);
67+
const localRounds: ClassicRound[] = votingHistory?.dispute?.disputeKitDispute?.localRounds;
6768
const theme = useTheme();
6869

6970
return useMemo<TimelineItems | undefined>(() => {
7071
const dispute = disputeDetails?.dispute;
7172
if (dispute) {
73+
const rulingOverride = dispute.overridden;
74+
const parsedDisputeFinalRuling = parseInt(dispute.currentRuling);
7275
const currentPeriodIndex = Periods[dispute.period];
7376
const lastPeriodChange = dispute.lastPeriodChange;
7477
const courtTimePeriods = dispute.court.timesPerPeriod;
7578
return localRounds?.reduce<TimelineItems>(
7679
(acc, { winningChoice }, index) => {
77-
const parsedWinningChoice = parseInt(winningChoice);
80+
const parsedRoundChoice = parseInt(winningChoice);
7881
const eventDate = getCaseEventTimes(lastPeriodChange, currentPeriodIndex, courtTimePeriods, false);
79-
const icon = disputeDetails?.dispute?.ruled && index === localRounds.length - 1 ? ClosedCaseIcon : "";
82+
const icon = dispute.ruled && !rulingOverride && index === localRounds.length - 1 ? ClosedCaseIcon : "";
8083

8184
acc.push({
8285
title: `Jury Decision - Round ${index + 1}`,
8386
party:
84-
parsedWinningChoice !== 0
85-
? disputeTemplate?.answers?.[parseInt(winningChoice) - 1].title
86-
: "Refuse to Arbitrate",
87+
parsedRoundChoice !== 0 ? disputeTemplate?.answers?.[parsedRoundChoice - 1].title : "Refuse to Arbitrate",
8788
subtitle: eventDate,
8889
rightSided: true,
8990
variant: theme.secondaryPurple,
@@ -98,6 +99,17 @@ const useItems = (disputeDetails?: DisputeDetailsQuery) => {
9899
rightSided: true,
99100
Icon: AppealedCaseIcon,
100101
});
102+
} else if (rulingOverride && parsedDisputeFinalRuling !== parsedRoundChoice) {
103+
acc.push({
104+
title: "Won by Appeal",
105+
party:
106+
parsedDisputeFinalRuling !== 0
107+
? disputeTemplate?.answers?.[parsedDisputeFinalRuling - 1].title
108+
: "Refuse to Arbitrate",
109+
subtitle: eventDate,
110+
rightSided: true,
111+
Icon: ClosedCaseIcon,
112+
});
101113
}
102114

103115
return acc;
@@ -117,10 +129,14 @@ const useItems = (disputeDetails?: DisputeDetailsQuery) => {
117129
}, [disputeDetails, disputeTemplate, localRounds, theme]);
118130
};
119131

120-
const DisputeTimeline: React.FC = () => {
132+
interface IDisputeTimeline {
133+
arbitrable?: `0x${string}`;
134+
}
135+
136+
const DisputeTimeline: React.FC<IDisputeTimeline> = ({ arbitrable }) => {
121137
const { id } = useParams();
122138
const { data: disputeDetails } = useDisputeDetailsQuery(id);
123-
const items = useItems(disputeDetails);
139+
const items = useItems(disputeDetails, arbitrable);
124140

125141
return (
126142
<Container>

web/src/components/Verdict/FinalDecision.tsx

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { useNavigate, useParams } from "react-router-dom";
33
import styled from "styled-components";
44
import Identicon from "react-identicons";
55
import ArrowIcon from "assets/svgs/icons/arrow.svg";
6-
import { useDisputeTemplate } from "queries/useDisputeTemplate";
7-
import { useDisputeDetailsQuery } from "queries/useDisputeDetailsQuery";
86
import { useKlerosCoreCurrentRuling } from "hooks/contracts/generated";
7+
import { useDisputeDetailsQuery } from "queries/useDisputeDetailsQuery";
8+
import { useDisputeTemplate } from "queries/useDisputeTemplate";
99
import LightButton from "../LightButton";
1010
import VerdictBanner from "./VerdictBanner";
1111

@@ -75,9 +75,13 @@ const AnswerTitle = styled.h3`
7575
margin: 0;
7676
`;
7777

78-
const FinalDecision: React.FC = () => {
78+
interface IFinalDecision {
79+
arbitrable?: `0x${string}`;
80+
}
81+
82+
const FinalDecision: React.FC<IFinalDecision> = ({ arbitrable }) => {
7983
const { id } = useParams();
80-
const { data: disputeTemplate } = useDisputeTemplate(id);
84+
const { data: disputeTemplate } = useDisputeTemplate(id, arbitrable);
8185
const { data: disputeDetails } = useDisputeDetailsQuery(id);
8286
const ruled = disputeDetails?.dispute?.ruled ?? false;
8387
const navigate = useNavigate();

web/src/components/Verdict/index.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,15 @@ const Container = styled.div`
99
gap: 24px;
1010
`;
1111

12-
const Verdict: React.FC = () => {
12+
interface IVerdict {
13+
arbitrable?: `0x${string}`;
14+
}
15+
16+
const Verdict: React.FC<IVerdict> = ({ arbitrable }) => {
1317
return (
1418
<Container>
15-
<FinalDecision />
16-
<DisputeTimeline />
19+
<FinalDecision arbitrable={arbitrable} />
20+
<DisputeTimeline arbitrable={arbitrable} />
1721
</Container>
1822
);
1923
};

web/src/context/Web3Provider.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const chains = [arbitrumGoerli, gnosisChiado];
1212
const projectId = process.env.WALLETCONNECT_PROJECT_ID ?? "6efaa26765fa742153baf9281e218217";
1313

1414
const { publicClient, webSocketPublicClient } = configureChains(chains, [
15-
alchemyProvider({ apiKey: process.env.ALCHEMY_API_KEY ?? "" }),
15+
alchemyProvider({ apiKey: process.env.ALCHEMY_API_KEY ?? "HAAmSjN1RzxG1LNsGh9Je72bYVPsyFfQ" }),
1616
jsonRpcProvider({
1717
rpc: () => ({
1818
http: `https://rpc.chiadochain.net`,

web/src/graphql/gql.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const documents = {
2323
types.CourtPolicyUriDocument,
2424
'\n query CourtTree {\n court(id: "1") {\n name\n id\n children(orderBy: name) {\n name\n id\n children {\n name\n id\n children {\n name\n id\n children {\n name\n id\n children {\n name\n id\n }\n }\n }\n }\n }\n }\n }\n':
2525
types.CourtTreeDocument,
26-
"\n query DisputeDetails($disputeID: ID!) {\n dispute(id: $disputeID) {\n court {\n id\n timesPerPeriod\n hiddenVotes\n feeForJuror\n }\n arbitrated {\n id\n }\n period\n ruled\n lastPeriodChange\n currentRound {\n id\n }\n currentRoundIndex\n }\n }\n":
26+
"\n query DisputeDetails($disputeID: ID!) {\n dispute(id: $disputeID) {\n court {\n id\n timesPerPeriod\n hiddenVotes\n feeForJuror\n }\n arbitrated {\n id\n }\n period\n ruled\n lastPeriodChange\n currentRuling\n overridden\n tied\n currentRound {\n id\n }\n currentRoundIndex\n }\n }\n":
2727
types.DisputeDetailsDocument,
2828
"\n query Draw($address: String, $disputeID: String, $roundID: String) {\n draws(where: { dispute: $disputeID, juror: $address, round: $roundID }) {\n voteID\n }\n }\n":
2929
types.DrawDocument,
@@ -85,8 +85,8 @@ export function graphql(
8585
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
8686
*/
8787
export function graphql(
88-
source: "\n query DisputeDetails($disputeID: ID!) {\n dispute(id: $disputeID) {\n court {\n id\n timesPerPeriod\n hiddenVotes\n feeForJuror\n }\n arbitrated {\n id\n }\n period\n ruled\n lastPeriodChange\n currentRound {\n id\n }\n currentRoundIndex\n }\n }\n"
89-
): (typeof documents)["\n query DisputeDetails($disputeID: ID!) {\n dispute(id: $disputeID) {\n court {\n id\n timesPerPeriod\n hiddenVotes\n feeForJuror\n }\n arbitrated {\n id\n }\n period\n ruled\n lastPeriodChange\n currentRound {\n id\n }\n currentRoundIndex\n }\n }\n"];
88+
source: "\n query DisputeDetails($disputeID: ID!) {\n dispute(id: $disputeID) {\n court {\n id\n timesPerPeriod\n hiddenVotes\n feeForJuror\n }\n arbitrated {\n id\n }\n period\n ruled\n lastPeriodChange\n currentRuling\n overridden\n tied\n currentRound {\n id\n }\n currentRoundIndex\n }\n }\n"
89+
): (typeof documents)["\n query DisputeDetails($disputeID: ID!) {\n dispute(id: $disputeID) {\n court {\n id\n timesPerPeriod\n hiddenVotes\n feeForJuror\n }\n arbitrated {\n id\n }\n period\n ruled\n lastPeriodChange\n currentRuling\n overridden\n tied\n currentRound {\n id\n }\n currentRoundIndex\n }\n }\n"];
9090
/**
9191
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
9292
*/

0 commit comments

Comments
 (0)