Skip to content

Commit 19f6385

Browse files
authored
Merge pull request #32 from kleros/fix/get-request-info-check
Fix/get request info check
2 parents 11c3669 + d0a9b12 commit 19f6385

File tree

2 files changed

+35
-9
lines changed

2 files changed

+35
-9
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "gtcr-subgraph",
3-
"version": "1.1.7",
3+
"version": "1.1.8",
44
"description": "Subgraph for Generalized TCR contracts",
55
"scripts": {
66
"clean": "graph clean",

src/LightGeneralizedTCRMapping.ts

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -304,15 +304,24 @@ export function handleRequestSubmitted(event: RequestSubmitted): void {
304304
let newStatus = getExtendedStatus(item.disputed, item.status);
305305

306306
let requestIndex = item.numberOfRequests.minus(BigInt.fromI32(1));
307-
let requestInfo = tcr.getRequestInfo(event.params._itemID, requestIndex);
307+
let requestInfo = tcr.try_getRequestInfo(event.params._itemID, requestIndex);
308+
if (requestInfo.reverted) {
309+
log.error(
310+
`getRequestInfo reverted for LItem : {}, requestIndex : {}`,
311+
[graphItemID, requestIndex.toString()],
312+
);
313+
item.save();
314+
return;
315+
}
316+
308317
let requestID = graphItemID + '-' + requestIndex.toString();
309318

310319
let request = new LRequest(requestID);
311320
request.disputed = false;
312321
request.arbitrator = tcr.arbitrator();
313322
request.arbitratorExtraData = tcr.arbitratorExtraData();
314323
request.challenger = ZERO_ADDRESS;
315-
request.requester = requestInfo.value4[1];
324+
request.requester = requestInfo.value.value4[1];
316325
request.item = item.id;
317326
request.registry = registry.id;
318327
request.registryAddress = event.address;
@@ -453,7 +462,16 @@ export function handleRequestChallenged(event: Dispute): void {
453462
let newStatus = getExtendedStatus(item.disputed, item.status);
454463

455464
let requestIndex = item.numberOfRequests.minus(BigInt.fromI32(1));
456-
let requestInfo = tcr.getRequestInfo(itemID, requestIndex);
465+
let requestInfo = tcr.try_getRequestInfo(itemID, requestIndex);
466+
if (requestInfo.reverted) {
467+
log.error(
468+
`Failed to fetch request info for LItem : {}, requestIndex : {}`,
469+
[graphItemID, requestIndex.toString()],
470+
);
471+
item.save();
472+
return;
473+
}
474+
457475
let requestID = graphItemID + '-' + requestIndex.toString();
458476
let request = LRequest.load(requestID);
459477
if (!request) {
@@ -462,7 +480,7 @@ export function handleRequestChallenged(event: Dispute): void {
462480
}
463481

464482
request.disputed = true;
465-
request.challenger = requestInfo.value4[2];
483+
request.challenger = requestInfo.value.value4[2];
466484
request.numberOfRounds = BigInt.fromI32(2);
467485
request.disputeID = event.params._disputeID;
468486

@@ -641,7 +659,15 @@ export function handleStatusUpdated(event: ItemStatusChange): void {
641659
item.latestRequestResolutionTime = event.block.timestamp;
642660

643661
let requestIndex = item.numberOfRequests.minus(BigInt.fromI32(1));
644-
let requestInfo = tcr.getRequestInfo(event.params._itemID, requestIndex);
662+
let requestInfo = tcr.try_getRequestInfo(event.params._itemID, requestIndex);
663+
if (requestInfo.reverted) {
664+
log.error(
665+
`Failed to fetch request info for LItem : {}, requestIndex : {}`,
666+
[graphItemID, requestIndex.toString()],
667+
);
668+
item.save();
669+
return;
670+
}
645671

646672
let requestID = graphItemID + '-' + requestIndex.toString();
647673
let request = LRequest.load(requestID);
@@ -654,7 +680,7 @@ export function handleStatusUpdated(event: ItemStatusChange): void {
654680
request.resolutionTime = event.block.timestamp;
655681
request.resolutionTx = event.transaction.hash;
656682
// requestInfo.value6 is request.ruling.
657-
request.disputeOutcome = getFinalRuling(requestInfo.value6);
683+
request.disputeOutcome = getFinalRuling(requestInfo.value.value6);
658684

659685
// Iterate over every contribution and mark it as withdrawable if it is.
660686
// Start from the second round as the first is automatically withdrawn
@@ -685,11 +711,11 @@ export function handleStatusUpdated(event: ItemStatusChange): void {
685711
return;
686712
}
687713

688-
if (requestInfo.value6 == NO_RULING_CODE) {
714+
if (requestInfo.value.value6 == NO_RULING_CODE) {
689715
// The final ruling is refuse to rule. There is no winner
690716
// or loser so every contribution is withdrawable.
691717
contribution.withdrawable = true;
692-
} else if (requestInfo.value6 == REQUESTER_CODE) {
718+
} else if (requestInfo.value.value6 == REQUESTER_CODE) {
693719
// The requester won so only contributions to the requester
694720
// are withdrawable.
695721
// The only exception is in the case the last round the loser

0 commit comments

Comments
 (0)