98 lines
2.7 KiB
TypeScript
98 lines
2.7 KiB
TypeScript
import ProjectInfoCard from '@/components/ProjectInfoCard'
|
|
import RequesDetailsCard from '@/components/RequestDetalilsCard'
|
|
import RequestMethodCard from '@/components/RequestMethodCard'
|
|
import RequestModalContainer from '@/components/RequestModalContainer'
|
|
import ModalStore from '@/store/ModalStore'
|
|
import { approveEIP155Request, rejectEIP155Request } from '@/utils/EIP155RequestHandlerUtil'
|
|
import { getSignParamsMessage } from '@/utils/HelperUtil'
|
|
import { legacySignClient } from '@/utils/LegacyWalletConnectUtil'
|
|
import { Button, Col, Divider, Modal, Row, Text } from '@nextui-org/react'
|
|
import { Fragment } from 'react'
|
|
|
|
export default function LegacySessionSignModal() {
|
|
// Get request and wallet data from store
|
|
const requestEvent = ModalStore.state.data?.legacyCallRequestEvent
|
|
const requestSession = ModalStore.state.data?.legacyRequestSession
|
|
|
|
// Ensure request and wallet are defined
|
|
if (!requestEvent || !requestSession) {
|
|
return <Text>Missing request data</Text>
|
|
}
|
|
|
|
// Get required request data
|
|
const { id, method, params } = requestEvent
|
|
|
|
// 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 { result } = await approveEIP155Request({
|
|
id,
|
|
topic: '',
|
|
params: { request: { method, params }, chainId: '1' }
|
|
})
|
|
|
|
legacySignClient.approveRequest({
|
|
id,
|
|
result
|
|
})
|
|
ModalStore.close()
|
|
}
|
|
}
|
|
|
|
// Handle reject action
|
|
async function onReject() {
|
|
if (requestEvent) {
|
|
const { error } = rejectEIP155Request({
|
|
id,
|
|
topic: '',
|
|
params: { request: { method, params }, chainId: '1' }
|
|
})
|
|
legacySignClient.rejectRequest({
|
|
id,
|
|
error
|
|
})
|
|
ModalStore.close()
|
|
}
|
|
}
|
|
|
|
return (
|
|
<Fragment>
|
|
<RequestModalContainer title="Sign Message">
|
|
<ProjectInfoCard metadata={requestSession.peerMeta!} />
|
|
|
|
<Divider y={2} />
|
|
|
|
<RequesDetailsCard
|
|
chains={['eip155:' + legacySignClient.chainId]}
|
|
protocol={legacySignClient.protocol}
|
|
/>
|
|
|
|
<Divider y={2} />
|
|
|
|
<Row>
|
|
<Col>
|
|
<Text h5>Message</Text>
|
|
<Text color="$gray400">{message}</Text>
|
|
</Col>
|
|
</Row>
|
|
|
|
<Divider y={2} />
|
|
|
|
<RequestMethodCard methods={[method]} />
|
|
</RequestModalContainer>
|
|
|
|
<Modal.Footer>
|
|
<Button auto flat color="error" onPress={onReject}>
|
|
Reject
|
|
</Button>
|
|
<Button auto flat color="success" onPress={onApprove}>
|
|
Approve
|
|
</Button>
|
|
</Modal.Footer>
|
|
</Fragment>
|
|
)
|
|
}
|