laconic-wallet/context/WalletConnectContext.tsx
Adwait Gharpure cf197f386f
Display active sessions on walletconnect page (#50)
* Replace QR icon with WC logo

* Change screen title

* Display active sessions

* Change title

* Display sessions on WalletConnect page

* Display session topic in list item

* Fix types

* Add line

* Change message

* Move useEffect to WalletConnectContext

* Disconnect sessions on resetting wallet

* Review changes

---------

Co-authored-by: Adw8 <adwait@deepstacksoft.com>
2024-03-12 18:23:16 +05:30

49 lines
1.3 KiB
TypeScript

import React, { createContext, useContext, useEffect, useState } from 'react';
import { SessionTypes } from '@walletconnect/types';
import { WalletConnectContextProps } from '../types';
import useInitialization, {
web3wallet,
} from '../utils/wallet-connect/WalletConnectUtils';
const WalletConnectContext = createContext<WalletConnectContextProps>({
requestSession: {},
setRequestSession: () => {},
activeSessions: {},
setActiveSessions: () => {},
});
const useWalletConnect = () => {
const walletConnectContext = useContext(WalletConnectContext);
return walletConnectContext;
};
const WalletConnectProvider = ({ children }: { children: React.ReactNode }) => {
useInitialization();
useEffect(() => {
const sessions = web3wallet?.getActiveSessions() ?? {};
setActiveSessions(sessions);
}, []);
const [requestSession, setRequestSession] = useState<any>({});
const [activeSessions, setActiveSessions] = useState<
Record<string, SessionTypes.Struct>
>({});
return (
<WalletConnectContext.Provider
value={{
requestSession,
setRequestSession,
activeSessions,
setActiveSessions,
}}>
{children}
</WalletConnectContext.Provider>
);
};
export { useWalletConnect, WalletConnectProvider };