diff --git a/apps/web/package.json b/apps/web/package.json index 9a717e54a..5d613753a 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -10,18 +10,17 @@ "dependencies": { "@heroicons/vue": "^1.0.6", "@solana/web3.js": "^1.63.1", - "@wagmi/core": "^1.3.8", - "@walletconnect/web3-provider": "^1.8.0", - "@web3modal/ethereum": "^2.7.1", - "@web3modal/html": "^2.7.1", + "@walletconnect/sign-client": "^2.9.2", + "@walletconnect/types": "^2.9.2", + "@walletconnect/universal-provider": "^2.9.2", "@web3modal/standalone": "^2.4.3", "borsh": "^0.7.0", "buffer": "^6.0.3", + "caip-api": "^1.4.6", "d3": "^7.8.1", "ethers": "^5.7.2", "supertokens-web-js": "^0.5.0", "util": "^0.12.5", - "viem": "^1.4.1", "vue": "^3.2.25", "vue-router": "^4.0.15", "web3": "^1.8.1", diff --git a/apps/web/src/composables/wallet.ts b/apps/web/src/composables/wallet.ts index b9b88affd..dced72c9d 100644 --- a/apps/web/src/composables/wallet.ts +++ b/apps/web/src/composables/wallet.ts @@ -42,7 +42,7 @@ export default function useWallet() { // const { solanaProviderList, sendSolanaTransaction, signSolanaMessage } = useSolana() const { getTrezorAddress, loginWithTrezor, sendTrezorTransaction, signTrezorMessage } = useTrezor() const { addAccount, getUser, checkIfSecondaryAddress, checkIfPrimaryUserExists, removeAccount, setUser, setUserAnalytics, setUserAccountBalances, updatePrimaryAddress, user } = useUsers() - const { web3modal, disconnectWalletConnect, getWalletConnectAddressAndBalance, loginWithWalletConnectV2 } = useWalletConnectV2() + const { /* web3modal, disconnectWalletConnect, getWalletConnectAddressAndBalance, */ loginWithWalletConnectV2 } = useWalletConnectV2() function getColdStorageAddress(provider: ProviderString, currency: Currency = 'ETH') { if (provider === 'Ledger') { @@ -184,7 +184,7 @@ export default function useWallet() { setSelectedCurrency('') setPrimaryAddress('') setUserAnalytics() - await disconnectWalletConnect() + // await disconnectWalletConnect() await refreshBreakdown() // TODO: Fix bug that doesn't allow you to log in without refreshing page after a user logs out window.location.reload() @@ -291,15 +291,15 @@ export default function useWallet() { try { if (provider === 'WalletConnect') { setSelectedProvider(provider) - web3modal.openModal() + // web3modal.openModal() // TODO: Need a way of unsubscribing from events - web3modal.subscribeEvents(async (event) => { - const { name } = event - if (name === 'ACCOUNT_CONNECTED') { - const walletConnectAddressAndBalance = await getWalletConnectAddressAndBalance() - setWalletProviderAddresses([walletConnectAddressAndBalance]) - } - }) + // web3modal.subscribeEvents(async (event) => { + // const { name } = event + // if (name === 'ACCOUNT_CONNECTED') { + // const walletConnectAddressAndBalance = await getWalletConnectAddressAndBalance() + // setWalletProviderAddresses([walletConnectAddressAndBalance]) + // } + // }) } else if (ethersProviderList.includes(provider)) { setSelectedProvider(provider) const ethersAddresses = await getEthersAddressWithBalance(provider) as CryptoAddress[] diff --git a/apps/web/src/composables/walletConnectV2.ts b/apps/web/src/composables/walletConnectV2.ts index f4269a6c8..7decf8160 100644 --- a/apps/web/src/composables/walletConnectV2.ts +++ b/apps/web/src/composables/walletConnectV2.ts @@ -1,60 +1,32 @@ import { ethers } from 'ethers' -import { EthersWalletConnectSigner } from '@casimir/wallets' -import { EthereumClient, w3mConnectors, w3mProvider } from '@web3modal/ethereum' -import { Web3Modal } from '@web3modal/html' -import { configureChains, createConfig, mainnet, signMessage } from '@wagmi/core' -import { publicProvider } from '@wagmi/core/providers/public' -import { CryptoAddress, LoginCredentials } from '@casimir/types' -import { infuraProvider } from '@wagmi/core/providers/infura' +import { LoginCredentials } from '@casimir/types' import useAuth from '@/composables/auth' -import useEthers from '@/composables/ethers' import useEnvironment from '@/composables/environment' +import { EthersWalletConnectSigner } from '@casimir/wallets' -const { getEthersBalance } = useEthers() const { createSiweMessage, signInWithEthereum } = useAuth() const { ethereumUrl } = useEnvironment() -// const chains = [mainnet] -const projectId = '8e6877b49198d7a9f9561b8712805726' - - - -const { chains, publicClient } = configureChains( - [mainnet], - [w3mProvider({ projectId }), publicProvider()] -) -const wagmiConfig = createConfig({ - autoConnect: true, - connectors: w3mConnectors({ projectId, chains }), - publicClient -}) - export default function useWalletConnectV2() { - const ethereumClient = new EthereumClient(wagmiConfig, chains) - const web3modal = new Web3Modal({ projectId }, ethereumClient) + // TODO: Implement this in order to show ability to stake async function getEthersWalletConnectSignerV2() { - // const options = { - // provider: new ethers.providers.JsonRpcProvider(ethereumUrl), - // // baseURL: speculosUrl - // } - // return new EthersWalletConnectSigner(options) - const signer = EthersWalletConnectSigner.create({}) - // const signer = await EthersWalletConnectSigner.create({ provider: new ethers.providers.JsonRpcProvider(ethereumUrl) }) - console.log('signer :>> ', signer) - return signer - } - - async function getWalletConnectAddressAndBalance() : Promise { - const { address } = (ethereumClient.getAccount()) - const balance = (await getEthersBalance(address as string)).toString() - return { - address: address?.toLowerCase() as string, - balance: balance as string + const options = { + provider: new ethers.providers.JsonRpcProvider(ethereumUrl), + // rpcUrl: ethereumUrl } + const signer = new EthersWalletConnectSigner(options) + const initializedWallet = await signer.initializeWalletConnectClient() + // const connect = await initializedWallet.connect({}) + // console.log('connect :>> ', connect) + const mainnetCaip = 'eip155:1' + const goerliCaip = 'eip155:5' + const connectWalletResult = await signer.connectWallet(goerliCaip) + return signer } + // TODO: Check on signMessage async function loginWithWalletConnectV2(loginCredentials: LoginCredentials) { const { provider, address, currency } = loginCredentials try { @@ -73,8 +45,6 @@ export default function useWalletConnectV2() { } return { - web3modal, - getWalletConnectAddressAndBalance, getEthersWalletConnectSignerV2, loginWithWalletConnectV2 } diff --git a/apps/web/src/layouts/default-layout.vue b/apps/web/src/layouts/default-layout.vue index 616d1981b..f9bfc49a9 100644 --- a/apps/web/src/layouts/default-layout.vue +++ b/apps/web/src/layouts/default-layout.vue @@ -7,16 +7,11 @@ import VueFeather from 'vue-feather' import useFormat from '@/composables/format' import useScreenDimensions from '@/composables/screenDimensions' import useUser from '@/composables/users' -import useWalletConnectV2 from '@/composables/walletConnectV2' -const { getEthersWalletConnectSignerV2 } = useWalletConnectV2() - -async function func() { - await getEthersWalletConnectSignerV2() -} import useWallet from '@/composables/wallet' +import WalletConnectProvider from '@/components/WalletConnectProvider.vue' const authFlowCardNumber = ref(1) -const selectedProivder = ref(null as null | string) +const selectedProvider = ref(null as null | string) const termsCheckbox = ref(true) const openRouterMenu = ref(false) @@ -78,14 +73,7 @@ onUnmounted(() =>{