Update chat, sign, core, logger, utils, sync (#169)

* Update chat, sign, core, logger, utils, sync

* Remove extensions
This commit is contained in:
Celine Sarafa 2023-05-31 12:25:27 +03:00 committed by GitHub
parent a60069941f
commit 2ff0874778
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 305 additions and 885 deletions

View File

@ -15,9 +15,12 @@
"@json-rpc-tools/utils": "1.7.6", "@json-rpc-tools/utils": "1.7.6",
"@nextui-org/react": "1.0.8-beta.5", "@nextui-org/react": "1.0.8-beta.5",
"@solana/web3.js": "1.43.0", "@solana/web3.js": "1.43.0",
"@walletconnect/chat-client": "^0.3.2", "@walletconnect/chat-client": "^0.7.0",
"@walletconnect/sign-client": "2.0.0-rc.4", "@walletconnect/core": "^2.7.7",
"@walletconnect/utils": "2.0.0-rc.4", "@walletconnect/logger": "^2.0.1",
"@walletconnect/sign-client": "^2.7.7",
"@walletconnect/sync-client": "^0.3.4",
"@walletconnect/utils": "^2.7.7",
"@web3modal/core": "^2.0.0-beta.7", "@web3modal/core": "^2.0.0-beta.7",
"@web3modal/standalone": "^2.0.0-beta.7", "@web3modal/standalone": "^2.0.0-beta.7",
"@web3modal/ui": "^2.0.0-beta.7", "@web3modal/ui": "^2.0.0-beta.7",
@ -38,7 +41,7 @@
"devDependencies": { "devDependencies": {
"@types/node": "17.0.35", "@types/node": "17.0.35",
"@types/react": "18.0.9", "@types/react": "18.0.9",
"@walletconnect/types": "2.0.0-rc.4", "@walletconnect/types": "^2.7.7",
"eslint": "8.15.0", "eslint": "8.15.0",
"eslint-config-next": "12.1.6", "eslint-config-next": "12.1.6",
"eslint-config-prettier": "8.5.0", "eslint-config-prettier": "8.5.0",

View File

@ -42,22 +42,8 @@ export default function SessionChainCard({ namespace }: IProps) {
return ( return (
<Fragment> <Fragment>
{chains.map(chainId => { {chains.map(chainId => {
const extensionMethods: SessionTypes.Namespace['methods'] = [] const allMethods = [...namespace.methods]
const extensionEvents: SessionTypes.Namespace['events'] = [] const allEvents = [...namespace.events]
namespace.extension?.map(({ accounts, methods, events }) => {
accounts.forEach(account => {
const [type, chain] = account.split(':')
const chainId = `${type}:${chain}`
if (chains.includes(chainId)) {
extensionMethods.push(...methods)
extensionEvents.push(...events)
}
})
})
const allMethods = [...namespace.methods, ...extensionMethods]
const allEvents = [...namespace.events, ...extensionEvents]
// @ts-expect-error // @ts-expect-error
const rgb = CHAIN_METADATA[chainId]?.rgb const rgb = CHAIN_METADATA[chainId]?.rgb

View File

@ -31,19 +31,9 @@ interface IProps {
export default function SessionProposalChainCard({ requiredNamespace }: IProps) { export default function SessionProposalChainCard({ requiredNamespace }: IProps) {
return ( return (
<Fragment> <Fragment>
{requiredNamespace.chains.map(chainId => { {requiredNamespace.chains?.map(chainId => {
const extensionMethods: ProposalTypes.RequiredNamespace['methods'] = [] const allMethods = [...requiredNamespace.methods]
const extensionEvents: ProposalTypes.RequiredNamespace['events'] = [] const allEvents = [...requiredNamespace.events]
requiredNamespace.extension?.map(({ chains, methods, events }) => {
if (chains.includes(chainId)) {
extensionMethods.push(...methods)
extensionEvents.push(...events)
}
})
const allMethods = [...requiredNamespace.methods, ...extensionMethods]
const allEvents = [...requiredNamespace.events, ...extensionEvents]
// @ts-expect-error // @ts-expect-error
const rgb = CHAIN_METADATA[chainId]?.rgb const rgb = CHAIN_METADATA[chainId]?.rgb

View File

@ -25,12 +25,20 @@ export default function useWalletConnectEventsManager(initialized: boolean) {
console.log('session_request', requestEvent) console.log('session_request', requestEvent)
const { topic, params } = requestEvent const { topic, params } = requestEvent
const { request } = params const { request } = params
const requestSession = signClient.session.get(topic) const session = signClient.session.get(topic)
const requestSession = {
...session,
optionalNamespaces: {},
pairingTopic: session.topic
}
switch (request.method) { switch (request.method) {
case EIP155_SIGNING_METHODS.ETH_SIGN: case EIP155_SIGNING_METHODS.ETH_SIGN:
case EIP155_SIGNING_METHODS.PERSONAL_SIGN: case EIP155_SIGNING_METHODS.PERSONAL_SIGN:
return ModalStore.open('SessionSignModal', { requestEvent, requestSession }) return ModalStore.open('SessionSignModal', {
requestEvent,
requestSession
})
case EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA: case EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA:
case EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V3: case EIP155_SIGNING_METHODS.ETH_SIGN_TYPED_DATA_V3:
@ -61,8 +69,6 @@ export default function useWalletConnectEventsManager(initialized: boolean) {
*****************************************************************************/ *****************************************************************************/
useEffect(() => { useEffect(() => {
if (initialized) { if (initialized) {
signClient.on('session_proposal', onSessionProposal)
signClient.on('session_request', onSessionRequest)
// TODOs // TODOs
signClient.on('session_ping', data => console.log('ping', data)) signClient.on('session_ping', data => console.log('ping', data))
signClient.on('session_event', data => console.log('event', data)) signClient.on('session_event', data => console.log('event', data))

View File

@ -1,8 +1,11 @@
import SignClient from '@walletconnect/sign-client' import SignClient from '@walletconnect/sign-client'
import { ChatClient, IChatClient } from '@walletconnect/chat-client' import { ChatClient, IChatClient } from '@walletconnect/chat-client'
import { ISyncClient, SyncClient, SyncStore } from '@walletconnect/sync-client'
import { Core } from '@walletconnect/core'
export let signClient: SignClient export let signClient: SignClient
export let chatClient: IChatClient export let chatClient: IChatClient
export let syncClient: ISyncClient
export async function createSignClient() { export async function createSignClient() {
signClient = await SignClient.init({ signClient = await SignClient.init({
@ -19,10 +22,22 @@ export async function createSignClient() {
// FIXME: update relayUrl here to not hardcode local relay. // FIXME: update relayUrl here to not hardcode local relay.
export async function createChatClient() { export async function createChatClient() {
chatClient = await ChatClient.init({ const projectId = process.env.NEXT_PUBLIC_PROJECT_ID
logger: 'debug',
keyseverUrl: 'https://keys.walletconnect.com', const core = new Core({ projectId })
projectId: process.env.NEXT_PUBLIC_PROJECT_ID,
syncClient = await SyncClient.init({
core,
projectId,
relayUrl: process.env.NEXT_PUBLIC_RELAY_URL ?? 'wss://relay.walletconnect.com' relayUrl: process.env.NEXT_PUBLIC_RELAY_URL ?? 'wss://relay.walletconnect.com'
}) })
chatClient = await ChatClient.init({
logger: 'debug',
keyserverUrl: 'https://keys.walletconnect.com',
projectId: projectId ?? '',
relayUrl: process.env.NEXT_PUBLIC_RELAY_URL ?? 'wss://relay.walletconnect.com',
syncClient,
SyncStoreController: SyncStore
})
} }

View File

@ -52,7 +52,7 @@ export default function SessionProposalModal() {
const namespaces: SessionTypes.Namespaces = {} const namespaces: SessionTypes.Namespaces = {}
Object.keys(requiredNamespaces).forEach(key => { Object.keys(requiredNamespaces).forEach(key => {
const accounts: string[] = [] const accounts: string[] = []
requiredNamespaces[key].chains.map(chain => { requiredNamespaces[key].chains?.map(chain => {
selectedAccounts[key].map(acc => accounts.push(`${chain}:${acc}`)) selectedAccounts[key].map(acc => accounts.push(`${chain}:${acc}`))
}) })
namespaces[key] = { namespaces[key] = {

File diff suppressed because it is too large Load Diff