-
Notifications
You must be signed in to change notification settings - Fork 320
/
Copy pathpage-client.tsx
32 lines (28 loc) · 1.31 KB
/
page-client.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
'use client';
import { LookupTableEntriesCard } from '@components/account/address-lookup-table/LookupTableEntriesCard';
import { isAddressLookupTableAccount } from '@components/account/address-lookup-table/types';
import { ParsedAccountRenderer } from '@components/account/ParsedAccountRenderer';
import React from 'react';
import { Address } from 'web3js-experimental';
type Props = Readonly<{
params: {
address: string;
};
}>;
function AddressLookupTableEntriesRenderer({
account,
onNotFound,
}: React.ComponentProps<React.ComponentProps<typeof ParsedAccountRenderer>['renderComponent']>) {
const parsedData = account?.data.parsed;
const rawData = account?.data.raw;
if (parsedData && parsedData.program === 'address-lookup-table' && parsedData.parsed.type === 'lookupTable') {
return <LookupTableEntriesCard parsedLookupTable={parsedData.parsed.info} />;
} else if (rawData && isAddressLookupTableAccount(account.owner.toBase58() as Address, rawData)) {
return <LookupTableEntriesCard lookupTableAccountData={rawData} />;
} else {
return onNotFound();
}
}
export default function AddressLookupTableEntriesPageClient({ params: { address } }: Props) {
return <ParsedAccountRenderer address={address} renderComponent={AddressLookupTableEntriesRenderer} />;
}