Skip to content

Commit bfcf9d3

Browse files
authored
Feat/gsteenkamp/managed disputer (#259)
1 parent 4f60773 commit bfcf9d3

File tree

7 files changed

+31
-7
lines changed

7 files changed

+31
-7
lines changed

src/components/LivenessProgressBar.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ interface Props {
1212
endTime: number;
1313
fontSize?: number;
1414
marginBottom?: number;
15+
endedLabel?: string;
1516
}
1617
/**
1718
* A progress bar that shows the time remaining until a request or assertion
@@ -24,6 +25,7 @@ export function LivenessProgressBar({
2425
endTime,
2526
fontSize,
2627
marginBottom,
28+
endedLabel = "Ended",
2729
}: Props) {
2830
const [now, setNow] = useState(new Date());
2931

@@ -67,7 +69,7 @@ export function LivenessProgressBar({
6769
} as CSSProperties
6870
}
6971
>
70-
{isEnded ? "Ended" : timeRemainingString}
72+
{isEnded ? endedLabel : timeRemainingString}
7173
</Text>
7274
<_Root value={normalizedPercent}>
7375
<_Indicator

src/components/OracleQueryList/ItemDetails.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ export function ItemDetails({
2525
reward,
2626
valueText,
2727
proposeOptions,
28+
oracleType,
2829
} = item;
30+
const isManaged = oracleType === "Managed Optimistic Oracle V2";
2931

3032
const valuesToShow = Array.isArray(valueText)
3133
? valueText
@@ -55,12 +57,17 @@ export function ItemDetails({
5557
{livenessEndsMilliseconds !== undefined &&
5658
timeMilliseconds !== undefined ? (
5759
<ItemDetailsInnerWrapper>
58-
<ItemDetailsText>Challenge Period Left</ItemDetailsText>
60+
<ItemDetailsText>
61+
{isManaged
62+
? "Minimum Challenge Period Left"
63+
: "Challenge Period Left"}
64+
</ItemDetailsText>
5965
<LivenessProgressBar
6066
startTime={timeMilliseconds}
6167
endTime={livenessEndsMilliseconds}
6268
fontSize={12}
6369
marginBottom={0}
70+
endedLabel={isManaged ? "Challenge Period Extended" : undefined}
6471
/>
6572
</ItemDetailsInnerWrapper>
6673
) : undefined}

src/components/OracleQueryTable/Headers.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import styled from "styled-components";
66
* @param page - the page of the app, used to determine which columns to show
77
*/
88
export function Headers({ page }: { page: PageName }) {
9-
const verify = ["Query", "Proposal", "Bond", "Challenge period left"];
9+
const verify = ["Query", "Proposal", "Bond", "Minimum challenge period left"];
1010

1111
const propose = ["Query", "Type", "Bond", "Reward"];
1212

src/components/OracleQueryTable/VerifyCells.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@ export function VerifyCells({
1515
bond,
1616
chainId,
1717
tokenAddress,
18+
oracleType,
1819
}: OracleQueryUI) {
20+
const isManaged = oracleType === "Managed Optimistic Oracle V2";
1921
const valuesToShow = Array.isArray(valueText)
2022
? valueText
2123
: [maybeGetValueTextFromOptions(valueText, proposeOptions)];
@@ -48,6 +50,7 @@ export function VerifyCells({
4850
<LivenessProgressBar
4951
startTime={timeMilliseconds}
5052
endTime={livenessEndsMilliseconds}
53+
endedLabel={isManaged ? "Challenge Period Extended" : undefined}
5154
/>
5255
</TD>
5356
) : undefined}

src/components/Panel/Actions/Details.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,10 @@ export function Details({
88
formattedLivenessEndsIn,
99
tokenAddress,
1010
chainId,
11+
oracleType,
1112
}: OracleQueryUI) {
1213
const hasReward = reward !== null;
14+
const isManaged = oracleType === "Managed Optimistic Oracle V2";
1315

1416
return (
1517
<div className="mb-4 bg-white rounded-md py-2 px-3">
@@ -45,7 +47,9 @@ export function Details({
4547
)}
4648
<TextWrapper>
4749
<Text>
48-
Challenge period ends
50+
{isManaged
51+
? "Minimum challenge period ends"
52+
: "Challenge period ends"}
4953
<InformationIcon content={livenessInformation} />
5054
</Text>
5155
<Text>{formattedLivenessEndsIn}</Text>

src/helpers/converters.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import type {
2121
Assertion,
2222
ChainId,
2323
ChainName,
24+
OracleType,
2425
ParsedOOV1GraphEntity,
2526
ParsedOOV2GraphEntity,
2627
Request,
@@ -146,7 +147,10 @@ export function isSupportedChain(chainId: number): chainId is ChainId {
146147
return chainId in chainsById;
147148
}
148149

149-
function getRequestActionType(state: RequestState | undefined): ActionType {
150+
function getRequestActionType(
151+
state: RequestState | undefined,
152+
oracleType: OracleType,
153+
): ActionType {
150154
// goes to `propose` page
151155
if (state === "Requested") {
152156
return "propose";
@@ -155,6 +159,10 @@ function getRequestActionType(state: RequestState | undefined): ActionType {
155159
if (state === "Proposed") {
156160
return "dispute";
157161
}
162+
// MOOv2 requests may still be disputed after challenge period ends
163+
if (state === "Expired" && oracleType === "Managed Optimistic Oracle V2") {
164+
return "dispute";
165+
}
158166
// also goes to `verify` page
159167
if (state === "Disputed" || state === "Expired") {
160168
return "settle";
@@ -696,7 +704,7 @@ export function requestToOracleQuery(request: Request): OracleQueryUI {
696704
oracleType,
697705
oracleAddress,
698706
chainName: getChainName(chainId),
699-
actionType: getRequestActionType(state),
707+
actionType: getRequestActionType(state, oracleType),
700708
moreInformation: [],
701709
project: "Unknown",
702710
};

src/helpers/util.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ export function isValidChainId(
258258
export function isValidOracleType(
259259
oracleType: string | undefined,
260260
): oracleType is OracleType {
261-
return !!oracleType && oracleType in oracleTypes;
261+
return !!oracleType && oracleTypes.includes(oracleType as OracleType);
262262
}
263263

264264
export function isWagmiAddress(

0 commit comments

Comments
 (0)