Skip to content

Commit

Permalink
Merge pull request #712 from clrfund/fix/rejected-recipient
Browse files Browse the repository at this point in the history
Fix incorrect mapping of recipient reject status
  • Loading branch information
yuetloo authored Sep 5, 2023
2 parents d9ed7ce + 44a20bb commit 863a562
Showing 1 changed file with 51 additions and 13 deletions.
64 changes: 51 additions & 13 deletions vue-app/src/api/recipient-registry-optimistic.ts
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ export enum RequestStatus {
Rejected = 'Rejected',
Executed = 'Live',
PendingRemoval = 'Pending removal',
RemovalAccepted = 'Removal accepted',
Removed = 'Removed',
}

Expand All @@ -74,6 +75,50 @@ export interface Request {
requester: string
}

interface RecipientRequestData {
requestType: RequestTypeCode
verified: boolean
rejected: boolean
acceptanceDate: DateTime
}

/**
* Map a recipient submission request to a status
* @param request `request type`, `verified`, `rejected` mapped
* by the subgraph, OptimisticRecipientRegistryMapping.ts,
* will be used to map the request status.
*
* Action | request type | verified | rejected
* ========================================================
* Add Requested | 0 | false | false
* Remove Requested | 1 | false | false
* Add Challenged | 0 | true | true
* Remove Challenged | 0 | true | false
* Add Resolved | 0 | true | false
* Remove Resolved | 1 | true | false
*
* @returns RequestStatus
*/
function mapRequestStatus(request: RecipientRequestData): RequestStatus {
let status: RequestStatus

if (request.rejected) {
status = RequestStatus.Rejected
} else {
if (request.verified) {
status = request.requestType === RequestTypeCode.Removal ? RequestStatus.Removed : RequestStatus.Executed
} else {
if (request.requestType === RequestTypeCode.Removal) {
status = hasDateElapsed(request.acceptanceDate) ? RequestStatus.RemovalAccepted : RequestStatus.PendingRemoval
} else {
status = hasDateElapsed(request.acceptanceDate) ? RequestStatus.Accepted : RequestStatus.Submitted
}
}
}

return status
}

export async function getRequests(registryInfo: RegistryInfo, registryAddress: string): Promise<Request[]> {
const data = await sdk.GetRecipients({
registryAddress: registryAddress.toLowerCase(),
Expand Down Expand Up @@ -118,26 +163,19 @@ export async function getRequests(registryInfo: RegistryInfo, registryAddress: s
const request: Request = {
transactionHash: recipient.requestResolvedHash || recipient.requestSubmittedHash,
type: RequestType[RequestTypeCode[requestType]],
status: hasDateElapsed(acceptanceDate) ? RequestStatus.Accepted : RequestStatus.Submitted,
status: mapRequestStatus({
requestType,
rejected: Boolean(recipient.rejected),
acceptanceDate,
verified: Boolean(recipient.verified),
}),
acceptanceDate,
recipientId: recipient.id,
recipient: recipient.recipientAddress,
metadata,
requester,
}

if (recipient.rejected) {
request.status = RequestStatus.Rejected
}

if (recipient.verified) {
request.status = requestType === RequestTypeCode.Removal ? RequestStatus.Removed : RequestStatus.Executed
} else {
if (requestType === RequestTypeCode.Removal) {
request.status = RequestStatus.PendingRemoval
}
}

// In case there are two requests submissions events, we always prioritize
// the last one since you can only have one request per recipient
requests[request.recipientId] = request
Expand Down

0 comments on commit 863a562

Please sign in to comment.