Skip to content

Commit 68801ba

Browse files
fix: automatic address table
Updates L1ContractTable to pull addresses from the JSON file directly instead of getting it as an NPM dependency which needs to be updated regularly.
1 parent 12470cd commit 68801ba

File tree

4 files changed

+4500
-3382
lines changed

4 files changed

+4500
-3382
lines changed

components/AddressTable.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { ReactElement } from 'react'
22
import { CHAIN_CONSTANTS, LEGACY_CONTRACT_NAMES } from '@/utils/constants'
33

4-
interface TableAddresses {
4+
export interface TableAddresses {
55
[contract: string]: string
66
}
77

@@ -37,7 +37,7 @@ export function AddressTable({
3737
Object.entries(filtered)
3838
.map(([contract, address]) => {
3939
return (
40-
<tr key={`${chain}.${address}`} className="nx-m-0 nx-border-t nx-border-gray-300 nx-p-0 dark:nx-border-gray-600 even:nx-bg-gray-100 even:dark:nx-bg-gray-600/20">
40+
<tr key={`${chain}.${contract}.${address}`} className="nx-m-0 nx-border-t nx-border-gray-300 nx-p-0 dark:nx-border-gray-600 even:nx-bg-gray-100 even:dark:nx-bg-gray-600/20">
4141
<td className="nx-m-0 nx-border nx-border-gray-300 nx-px-4 nx-py-2 dark:nx-border-gray-600">
4242
<code className="nx-border-black nx-border-opacity-[0.04] nx-bg-opacity-[0.03] nx-bg-black nx-break-words nx-rounded-md nx-border nx-py-0.5 nx-px-[.25em] nx-text-[.9em] dark:nx-border-white/10 dark:nx-bg-white/10">
4343
{contract}

components/L1ContractTable.tsx

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import type { ReactElement } from 'react'
2-
import * as addresses from 'superchain-registry/superchain/extra/addresses/addresses.json'
3-
import { AddressTable } from '@/components/AddressTable'
2+
import { useEffect, useState } from 'react'
3+
import { AddressTable, TableAddresses } from '@/components/AddressTable'
4+
5+
const ADDRESSES_URL = 'https://raw.githubusercontent.com/ethereum-optimism/superchain-registry/main/superchain/extra/addresses/addresses.json';
46

57
export function L1ContractTable({
68
chain,
@@ -11,16 +13,47 @@ export function L1ContractTable({
1113
explorer: string,
1214
legacy: boolean
1315
}): ReactElement {
16+
const [addresses, setAddresses] = useState<Record<string, any> | null>(null)
17+
const [loading, setLoading] = useState(true)
18+
const [error, setError] = useState<string | null>(null)
19+
20+
useEffect(() => {
21+
async function fetchAddresses() {
22+
try {
23+
const response = await fetch(ADDRESSES_URL)
24+
if (!response.ok) {
25+
throw new Error('Failed to fetch addresses')
26+
}
27+
const data = await response.json()
28+
setAddresses(data)
29+
} catch (err) {
30+
setError(err.message)
31+
} finally {
32+
setLoading(false)
33+
}
34+
}
35+
36+
fetchAddresses()
37+
}, [])
38+
39+
if (loading) {
40+
return <div>Loading...</div>
41+
}
42+
43+
if (error) {
44+
return <div>Error: {error}</div>
45+
}
46+
1447
return (
1548
<AddressTable
1649
chain={chain}
1750
explorer={explorer}
1851
legacy={legacy}
1952
addresses={
20-
Object.entries(addresses)
53+
addresses && Object.entries(addresses)
2154
.find(([chainid, ]) => {
2255
return chainid === chain
23-
})[1]
56+
})?.[1] as TableAddresses
2457
}
2558
/>
2659
)

package.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,7 @@
2222
"nextra": "2.13.2",
2323
"nextra-theme-docs": "2.13.2",
2424
"react": "^18.2.0",
25-
"react-dom": "^18.2.0",
26-
"superchain-registry": "github:ethereum-optimism/superchain-registry#main"
25+
"react-dom": "^18.2.0"
2726
},
2827
"devDependencies": {
2928
"@double-great/remark-lint-alt-text": "^1.0.0",

0 commit comments

Comments
 (0)