forked from cerc-io/laconic-wallet
* Connect with dapp using WalletConnect * Pair dapp with wallet * Sign message taken from dapp and return the signature * Add todos * Move wallet connect functions to seperate screen * Change ui * Change ui for wc modals * Add styles * Remove border radius at the bottom * Make review changes * Add dependancy to useEffect * Move pairing modal methods --------- Co-authored-by: Adw8 <adwait@deepstacksoft.com>
60 lines
1.6 KiB
TypeScript
60 lines
1.6 KiB
TypeScript
import '@walletconnect/react-native-compat';
|
|
import '@ethersproject/shims';
|
|
|
|
import { Core } from '@walletconnect/core';
|
|
import { ICore } from '@walletconnect/types';
|
|
import { Web3Wallet, IWeb3Wallet } from '@walletconnect/web3wallet';
|
|
|
|
export let web3wallet: IWeb3Wallet;
|
|
export let core: ICore;
|
|
export let currentETHAddress: string;
|
|
|
|
import { useState, useCallback, useEffect } from 'react';
|
|
import { createOrRestoreEIP155Wallet } from './EIP155Wallet';
|
|
|
|
async function createWeb3Wallet() {
|
|
const { eip155Addresses } = await createOrRestoreEIP155Wallet();
|
|
currentETHAddress = eip155Addresses[0];
|
|
|
|
// TODO: Move to dotenv
|
|
const ENV_PROJECT_ID = 'c97365bf9f06d12a7488de36240b0ff4';
|
|
const core = new Core({
|
|
projectId: ENV_PROJECT_ID,
|
|
});
|
|
|
|
web3wallet = await Web3Wallet.init({
|
|
core,
|
|
metadata: {
|
|
name: 'Web3Wallet React Native Tutorial',
|
|
description: 'ReactNative Web3Wallet',
|
|
url: 'https://walletconnect.com/',
|
|
icons: ['https://avatars.githubusercontent.com/u/37784886'],
|
|
},
|
|
});
|
|
}
|
|
|
|
export default function useInitialization() {
|
|
const [initialized, setInitialized] = useState(false);
|
|
|
|
const onInitialize = useCallback(async () => {
|
|
try {
|
|
await createWeb3Wallet();
|
|
setInitialized(true);
|
|
} catch (err: unknown) {
|
|
console.log('Error for initializing', err);
|
|
}
|
|
}, []);
|
|
|
|
useEffect(() => {
|
|
if (!initialized) {
|
|
onInitialize();
|
|
}
|
|
}, [initialized, onInitialize]);
|
|
|
|
return initialized;
|
|
}
|
|
|
|
export async function web3WalletPair(params: { uri: string }) {
|
|
return await web3wallet.core.pairing.pair({ uri: params.uri });
|
|
}
|