Skip to content

Commit b1167af

Browse files
committed
Enhance error handling in LookupView to include error messages and update EtherscanVerifier to check contract verification status correctly
1 parent 147daf5 commit b1167af

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

apps/contract-verification/src/app/Verifiers/EtherscanVerifier.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,16 +237,16 @@ export class EtherscanVerifier extends AbstractVerifier {
237237

238238
const lookupResponse: EtherscanGetSourceCodeResponse = await response.json()
239239

240-
if (lookupResponse.result[0].ABI === 'Contract source code not verified' || !lookupResponse.result[0].SourceCode || (lookupResponse.result as unknown as string) === 'Contract source code not verified') {
241-
return { status: 'not verified' }
242-
}
243-
244240
if (lookupResponse.status !== '1' || !lookupResponse.message.startsWith('OK')) {
245241
const errorResponse = lookupResponse as unknown as EtherscanRpcResponse
246242
console.error('Error on Etherscan API lookup at ' + this.apiUrl + '\nStatus: ' + errorResponse.status + '\nMessage: ' + errorResponse.message + '\nResult: ' + errorResponse.result)
247243
throw new Error(errorResponse.result)
248244
}
249245

246+
if (lookupResponse.result[0].ABI === 'Contract source code not verified' || !lookupResponse.result[0].SourceCode || (lookupResponse.result as unknown as string) === 'Contract source code not verified') {
247+
return { status: 'not verified' }
248+
}
249+
250250
const lookupUrl = this.getContractCodeUrl(contractAddress, chainId)
251251
const { sourceFiles, targetFilePath } = this.processReceivedFiles(lookupResponse.result[0], contractAddress, chainId)
252252

apps/contract-verification/src/app/types/VerificationTypes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,5 @@ export interface LookupResponse {
8080
lookupUrl?: string
8181
sourceFiles?: SourceFile[]
8282
targetFilePath?: string
83+
errorMessage?: string
8384
}

apps/contract-verification/src/app/views/LookupView.tsx

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export const LookupView = () => {
5252
.catch((err) =>
5353
setLookupResult((prev) => {
5454
console.error(err)
55-
return { ...prev, [verifierId]: { status: 'lookup failed' } }
55+
return { ...prev, [verifierId]: { status: 'lookup failed', errorMessage: err.message } }
5656
})
5757
)
5858
.finally(() => setLoadingVerifiers((prev) => ({ ...prev, [verifierId]: false })))
@@ -129,9 +129,21 @@ export const LookupView = () => {
129129
<div>
130130
<div className="pt-2">
131131
Status:{' '}
132-
<span className="font-weight-bold" style={{ textTransform: 'capitalize' }}>
133-
{lookupResults[verifierId].status}
134-
</span>{' '}
132+
{lookupResults[verifierId].status === 'lookup failed' && !!lookupResults[verifierId].errorMessage ? (
133+
<CustomTooltip
134+
placement="top"
135+
tooltipClasses=" text-break"
136+
tooltipText={lookupResults[verifierId].errorMessage}
137+
>
138+
<span className="font-weight-bold" style={{ textTransform: 'capitalize' }}>
139+
{lookupResults[verifierId].status}
140+
</span>
141+
</CustomTooltip>
142+
) : (
143+
<span className="font-weight-bold" style={{ textTransform: 'capitalize' }}>
144+
{lookupResults[verifierId].status}
145+
</span>
146+
)}{' '}
135147
{!!lookupResults[verifierId].lookupUrl && verifierId === 'Blockscout' ? <CopyToClipboard tip="Copy code URL" content={lookupResults[verifierId].lookupUrl} direction="top" /> : !!lookupResults[verifierId].lookupUrl && <a href={lookupResults[verifierId].lookupUrl} target="_blank" className="fa fas fa-arrow-up-right-from-square"></a>}
136148
</div>
137149
{!!lookupResults[verifierId].sourceFiles && lookupResults[verifierId].sourceFiles.length > 0 && (

0 commit comments

Comments
 (0)