forked from cerc-io/laconic-wallet
* 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>
49 lines
1.3 KiB
TypeScript
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 };
|