import { EIP155_CHAINS, TEIP155Chain } from '@/data/EIP155Data' import ModalStore from '@/store/ModalStore' import { approveEIP155Request, rejectEIP155Request } from '@/utils/EIP155RequestHandlerUtil' import { getSignParamsMessage } from '@/utils/HelperUtil' import { walletConnectClient } from '@/utils/WalletConnectUtil' import { Avatar, Button, Col, Container, Divider, Link, Modal, Row, Text } from '@nextui-org/react' import { Fragment } from 'react' export default function SessionSignModal() { // Get request and wallet data from store const requestEvent = ModalStore.state.data?.requestEvent const requestSession = ModalStore.state.data?.requestSession // Ensure request and wallet are defined if (!requestEvent || !requestSession) { return Missing request data } // Get required request data const { chainId } = requestEvent const { method, params } = requestEvent.request const { protocol } = requestSession.relay const { name, icons, url } = requestSession.peer.metadata // Get message, convert it to UTF8 string if it is valid hex const message = getSignParamsMessage(params) // Handle approve action (logic varies based on request method) async function onApprove() { if (requestEvent) { const response = await approveEIP155Request(requestEvent) await walletConnectClient.respond({ topic: requestEvent.topic, response }) ModalStore.close() } } // Handle reject action async function onReject() { if (requestEvent) { const response = rejectEIP155Request(requestEvent.request) await walletConnectClient.respond({ topic: requestEvent.topic, response }) ModalStore.close() } } return ( Sign Message {name} {url} Blockchain {EIP155_CHAINS[chainId as TEIP155Chain]?.name ?? chainId} Message {message} Method {method} Relay Protocol {protocol} ) }