diff --git a/app/terms/page.tsx b/app/terms/page.tsx deleted file mode 100644 index ec2753b..0000000 --- a/app/terms/page.tsx +++ /dev/null @@ -1,29 +0,0 @@ -function PlaceholderParagraph() { - return ( -

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus lacinia odio vitae vestibulum. Donec magna purus, - lacinia vel hendrerit vitae, vulputate suscipit leo. Donec sed tincidunt libero. Sed cursus euismod purus, id - tempus tellus malesuada at. Nulla facilisi. Duis sed eros mollis, tincidunt nibh sit amet, ultricies sapien. - Pellentesque orci quis hendrerit et cursus. Maecenas lacinia velit vitae est finibus, vitae dictum neque - hendrerit. Aenean ac eleifend enim. Pellentesque pellentesque erat vel ipsum ultrices, at tempus neque suscipit. - Pellentesque auctor nisl ut lectus sagittis, vel elementum ligula egestas. Vivamus at hendrerit metus. In - condimentum massa id nisi aliquet, nec vulputate turpis ultrices. Nullam at libero ultrices, ultrices sapien ac, - iaculis urna. Nulla venenatis, nisl scelerisque sollicitudin fermentum, neque elit posuere turpis, id mollis eros - orci vitae felis. -

- ); -} - -export default function Page() { - return ( -
-

Terms of Service

-
- - - - -
-
- ); -} diff --git a/components/Navbar/ConnectWalletButton.tsx b/components/Navbar/ConnectWalletButton.tsx index 332ce27..ab29f14 100644 --- a/components/Navbar/ConnectWalletButton.tsx +++ b/components/Navbar/ConnectWalletButton.tsx @@ -1,20 +1,65 @@ 'use client'; + import { shortenAddress } from '@/utils'; import { useWeb3Modal } from '@web3modal/wagmi/react'; -import { useAccount, useNetwork } from 'wagmi'; +import { useAccount, useNetwork, useSignMessage } from 'wagmi'; import ClientOnly from '../../utils/ClientOnly'; import { useEffect, useState } from 'react'; import clsx from 'clsx'; import { sepolia } from 'wagmi/chains'; +import { getSignMessageRequest, verifySignature } from '@/lib/server/platform'; export default function ConnectWalletButton() { + const notConnectedText = 'Connect Wallet'; + const { open } = useWeb3Modal(); const { address, isConnected } = useAccount(); + const { signMessageAsync } = useSignMessage(); const { chain } = useNetwork(); + const [buttonText, setButtonText] = useState(notConnectedText); + const [requireSign, setRequireSign] = useState(false); const [isCorrectNetwork, setIsCorrectNetwork] = useState(false); const connectedText = address ? `Connected: ${shortenAddress(address as string)} (${chain ? chain.name : ''})` : ''; - const notConnectedText = 'Connect Wallet'; - const buttonText = isConnected ? (isCorrectNetwork ? connectedText : 'Switch to sepolia') : notConnectedText; + + useEffect(() => { + // check if address previously signed + const validatedAddress = sessionStorage.getItem('validatedAddress'); + if (isConnected) { + if (isCorrectNetwork) { + if (!validatedAddress) { + setRequireSign(true); + setButtonText('Sign Message'); + } else { + setButtonText(connectedText); + } + } else { + setButtonText('Switch to sepolia'); + } + } + }, [connectedText, isConnected, isCorrectNetwork]); + + const signIn = async () => { + try { + const chainId = chain?.id; + if (!address || !chainId) return; + + setButtonText('Signing in...'); + + const { signingMessage } = await getSignMessageRequest(address); + + console.log({ signingMessage }); + const signature = await signMessageAsync({ message: signingMessage }); + const verifyRes = await verifySignature(signature, address); + console.log({ verifyRes }); + + sessionStorage.setItem('validatedAddress', address); + setRequireSign(false); + setButtonText(connectedText); + } catch (e) { + setRequireSign(true); + setButtonText('Sign Message'); + } + }; useEffect(() => { if (chain?.id === sepolia.id) { @@ -27,7 +72,7 @@ export default function ConnectWalletButton() { return (