wallet-connect-web-examples/wallets/react-wallet-eip155/src/views/LegacySessionSignModal.tsx
0xAsimetriq 2379c795ce
eip155 example (#115)
* eip155 example

* temp fix for duplicate accs
2023-02-15 17:11:42 +02:00

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>
)
}