@provablehq/aleo-wallet-adaptor-react 0.3.0-alpha.2 → 0.3.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { FC, ReactNode } from 'react';
|
|
3
|
-
import { WalletAdapter, WalletReadyState, WalletName, AleoDeployment } from '@provablehq/aleo-wallet-standard';
|
|
3
|
+
import { WalletAdapter, WalletReadyState, WalletName, RecordStatusFilter, AleoDeployment } from '@provablehq/aleo-wallet-standard';
|
|
4
4
|
import { Network, TransactionOptions, TransactionStatusResponse, TxHistoryResult } from '@provablehq/aleo-types';
|
|
5
5
|
import { WalletError, DecryptPermission } from '@provablehq/aleo-wallet-adaptor-core';
|
|
6
6
|
|
|
@@ -86,7 +86,7 @@ interface WalletContextState {
|
|
|
86
86
|
/**
|
|
87
87
|
* Request records
|
|
88
88
|
*/
|
|
89
|
-
requestRecords: (program: string, includePlaintext?: boolean) => Promise<unknown[]>;
|
|
89
|
+
requestRecords: (program: string, includePlaintext?: boolean, statusFilter?: RecordStatusFilter) => Promise<unknown[]>;
|
|
90
90
|
/**
|
|
91
91
|
* Execute a deployment
|
|
92
92
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { FC, ReactNode } from 'react';
|
|
3
|
-
import { WalletAdapter, WalletReadyState, WalletName, AleoDeployment } from '@provablehq/aleo-wallet-standard';
|
|
3
|
+
import { WalletAdapter, WalletReadyState, WalletName, RecordStatusFilter, AleoDeployment } from '@provablehq/aleo-wallet-standard';
|
|
4
4
|
import { Network, TransactionOptions, TransactionStatusResponse, TxHistoryResult } from '@provablehq/aleo-types';
|
|
5
5
|
import { WalletError, DecryptPermission } from '@provablehq/aleo-wallet-adaptor-core';
|
|
6
6
|
|
|
@@ -86,7 +86,7 @@ interface WalletContextState {
|
|
|
86
86
|
/**
|
|
87
87
|
* Request records
|
|
88
88
|
*/
|
|
89
|
-
requestRecords: (program: string, includePlaintext?: boolean) => Promise<unknown[]>;
|
|
89
|
+
requestRecords: (program: string, includePlaintext?: boolean, statusFilter?: RecordStatusFilter) => Promise<unknown[]>;
|
|
90
90
|
/**
|
|
91
91
|
* Execute a deployment
|
|
92
92
|
*/
|
package/dist/index.js
CHANGED
|
@@ -378,11 +378,11 @@ var AleoWalletProvider = ({
|
|
|
378
378
|
[adapter, handleError, connected]
|
|
379
379
|
);
|
|
380
380
|
const requestRecords = (0, import_react3.useCallback)(
|
|
381
|
-
async (program, includePlaintext) => {
|
|
381
|
+
async (program, includePlaintext, statusFilter) => {
|
|
382
382
|
if (!connected) throw handleError(new import_aleo_wallet_adaptor_core.WalletNotConnectedError());
|
|
383
383
|
if (!adapter || !("requestRecords" in adapter))
|
|
384
384
|
throw handleError(new import_aleo_wallet_adaptor_core.MethodNotImplementedError("requestRecords"));
|
|
385
|
-
return await adapter.requestRecords(program, includePlaintext);
|
|
385
|
+
return await adapter.requestRecords(program, includePlaintext, statusFilter);
|
|
386
386
|
},
|
|
387
387
|
[adapter, handleError, connected]
|
|
388
388
|
);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/context.ts","../src/WalletProvider.tsx","../src/useLocalStorage.ts","../src/useWallet.ts"],"sourcesContent":["export * from './context';\nexport { AleoWalletProvider } from './WalletProvider';\nexport * from './useWallet';\n","import { createContext, useContext } from 'react';\nimport {\n AleoDeployment,\n WalletAdapter,\n WalletName,\n WalletReadyState,\n} from '@provablehq/aleo-wallet-standard';\nimport {\n Network,\n TransactionOptions,\n TransactionStatusResponse,\n TxHistoryResult,\n} from '@provablehq/aleo-types';\n\nexport interface Wallet {\n adapter: WalletAdapter;\n readyState: WalletReadyState;\n}\n\n/**\n * Wallet context state\n */\nexport interface WalletContextState {\n /**\n * All available wallet adapters\n */\n wallets: Wallet[];\n\n /**\n * The connected wallet adapter\n */\n wallet: Wallet | null;\n\n /**\n * The connected account\n */\n address: string | null;\n\n /**\n * Whether the wallet is connected\n */\n connected: boolean;\n\n /**\n * Whether the wallet is connecting\n */\n connecting: boolean;\n\n /**\n * Whether the wallet is disconnecting\n */\n disconnecting: boolean;\n\n /**\n * Whether the wallet is reauthorizing after an account change\n */\n reconnecting: boolean;\n\n /**\n * Whether the wallet is auto-connecting\n */\n autoConnect: boolean;\n\n /**\n * The current network\n */\n network: Network | null;\n\n /**\n * Select a wallet by name\n * @param name The name of the wallet to select\n */\n selectWallet: (name: WalletName) => void;\n\n /**\n * Connect to the selected wallet\n */\n connect: (network: Network) => Promise<void>;\n\n /**\n * Disconnect from the connected wallet\n */\n disconnect: () => Promise<void>;\n\n /**\n * Execute a transaction\n */\n executeTransaction: (\n options: TransactionOptions,\n ) => Promise<{ transactionId: string } | undefined>;\n\n /**\n * Get transaction status\n */\n transactionStatus: (transactionId: string) => Promise<TransactionStatusResponse>;\n\n /**\n * Sign a message\n */\n signMessage: (message: Uint8Array | string) => Promise<Uint8Array | undefined>;\n\n /**\n * Switch the network\n */\n switchNetwork: (network: Network) => Promise<boolean>;\n\n /**\n * Decrypt a ciphertext\n */\n decrypt: (cipherText: string) => Promise<string>;\n\n /**\n * Request records\n */\n requestRecords: (program: string, includePlaintext?: boolean) => Promise<unknown[]>;\n\n /**\n * Execute a deployment\n */\n executeDeployment: (deployment: AleoDeployment) => Promise<{ transactionId: string }>;\n /**\n * get transition view keys(tvk) for a transaction\n */\n transitionViewKeys: (transactionId: string) => Promise<string[]>;\n /**\n * get transaction of specific program\n * @param program The program ID\n * @returns array of transactionId\n */\n requestTransactionHistory: (program: string) => Promise<TxHistoryResult>;\n}\n\n/**\n * Wallet context\n */\nexport const WalletContext = createContext<WalletContextState | undefined>(undefined);\n\n/**\n * Custom hook to use the wallet context\n * @returns The wallet context state\n */\nexport function useWalletContext(): WalletContextState {\n const ctx = useContext(WalletContext);\n if (!ctx) {\n throw new Error('`useWalletContext` must be used inside `AleoWalletProvider`');\n }\n return ctx;\n}\n","import type { FC, ReactNode } from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n WalletName,\n WalletReadyState,\n WalletAdapter,\n AleoDeployment,\n} from '@provablehq/aleo-wallet-standard';\nimport { Network, TransactionOptions } from '@provablehq/aleo-types';\nimport { Wallet, WalletContext } from './context';\nimport { useLocalStorage } from './useLocalStorage';\nimport {\n WalletError,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletNotSelectedError,\n MethodNotImplementedError,\n WalletSwitchNetworkError,\n DecryptPermission,\n} from '@provablehq/aleo-wallet-adaptor-core';\n\nexport interface WalletProviderProps {\n children: ReactNode;\n wallets: WalletAdapter[];\n network?: Network;\n autoConnect?: boolean;\n onError?: (error: WalletError) => void;\n localStorageKey?: string;\n decryptPermission?: DecryptPermission;\n programs?: string[];\n}\n\nconst initialState: {\n wallet: Wallet | null;\n adapter: WalletAdapter | null;\n publicKey: string | null;\n connected: boolean;\n network: Network | null;\n} = {\n wallet: null,\n adapter: null,\n publicKey: null,\n connected: false,\n network: null,\n};\n\nexport const AleoWalletProvider: FC<WalletProviderProps> = ({\n children,\n wallets: adapters,\n autoConnect = false,\n network: initialNetwork = Network.TESTNET,\n onError,\n localStorageKey = 'walletName',\n decryptPermission = DecryptPermission.NoDecrypt,\n programs,\n}) => {\n const [name, setName] = useLocalStorage<WalletName | null>(localStorageKey, null);\n const [{ wallet, adapter, publicKey, connected, network }, setState] = useState(initialState);\n const readyState = adapter?.readyState || WalletReadyState.UNSUPPORTED;\n const [connecting, setConnecting] = useState(false);\n const [disconnecting, setDisconnecting] = useState(false);\n const [reconnecting, setReconnecting] = useState(false);\n const isConnecting = useRef(false);\n const isDisconnecting = useRef(false);\n const isReconnecting = useRef(false);\n const isUnloading = useRef(false);\n const lastAuthorizedAccount = useRef<string | null>(null);\n\n // Wrap adapters to conform to the `Wallet` interface\n const [wallets, setWallets] = useState(() =>\n adapters.map(adapter => ({\n adapter,\n readyState: adapter.readyState,\n })),\n );\n\n // When the adapters change, start to listen for changes to their `readyState`\n useEffect(() => {\n // When the adapters change, wrap them to conform to the `Wallet` interface\n setWallets(wallets =>\n adapters.map((adapter, index) => {\n const wallet = wallets[index];\n // If the wallet hasn't changed, return the same instance\n return wallet && wallet.adapter === adapter && wallet.readyState === adapter.readyState\n ? wallet\n : {\n adapter: adapter,\n readyState: adapter.readyState,\n };\n }),\n );\n\n function handleReadyStateChange(this: WalletAdapter, readyState: WalletReadyState): void {\n setWallets(prevWallets => {\n const index = prevWallets.findIndex(({ adapter }) => adapter === this);\n if (index === -1) return prevWallets;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { adapter } = prevWallets[index]!;\n return [\n ...prevWallets.slice(0, index),\n { adapter, readyState },\n ...prevWallets.slice(index + 1),\n ];\n });\n }\n\n function handleNetworkChange(this: WalletAdapter, network: Network): void {\n setState(state => ({\n ...state,\n network,\n }));\n }\n\n adapters.forEach(adapter => adapter.on('readyStateChange', handleReadyStateChange, adapter));\n adapters.forEach(adapter => adapter.on('networkChange', handleNetworkChange, adapter));\n return () => {\n adapters.forEach(adapter => adapter.off('readyStateChange', handleReadyStateChange, adapter));\n adapters.forEach(adapter => adapter.off('networkChange', handleNetworkChange, adapter));\n };\n }, [adapters]);\n\n // When the selected wallet changes, initialize the state\n useEffect(() => {\n const wallet = name && wallets.find(({ adapter }) => adapter.name === name);\n if (wallet) {\n setState({\n wallet,\n adapter: wallet.adapter,\n connected: wallet.adapter.connected,\n publicKey: wallet.adapter.account?.address ?? null,\n network: wallet.adapter.network ?? null,\n });\n lastAuthorizedAccount.current = wallet.adapter.account?.address ?? null;\n } else {\n setState(initialState);\n lastAuthorizedAccount.current = null;\n }\n }, [name, wallets]);\n\n // If the window is closing or reloading, ignore disconnect and error events from the adapter\n useEffect(() => {\n function listener() {\n isUnloading.current = true;\n }\n\n window.addEventListener('beforeunload', listener);\n return () => window.removeEventListener('beforeunload', listener);\n }, [isUnloading]);\n\n // Handle the adapter's connect event\n const handleConnect = useCallback(() => {\n if (!adapter) return;\n setState(state => ({\n ...state,\n connected: adapter.connected,\n publicKey: adapter.account?.address ?? null,\n network: adapter.network ?? null,\n }));\n lastAuthorizedAccount.current = adapter.account?.address ?? null;\n }, [adapter]);\n\n // Handle the adapter's disconnect event\n const handleDisconnect = useCallback(() => {\n // Clear the selected wallet unless the window is unloading\n if (!isUnloading.current) setName(null);\n lastAuthorizedAccount.current = null;\n }, [isUnloading, setName]);\n\n // Disconnect the adapter from the wallet\n const disconnect = useCallback(async () => {\n if (isDisconnecting.current) return;\n if (!adapter) return setName(null);\n\n isDisconnecting.current = true;\n setDisconnecting(true);\n try {\n await adapter.disconnect();\n } catch (error: unknown) {\n // Clear the selected wallet\n setName(null);\n // Rethrow the error, and handleError will also be called\n throw error;\n } finally {\n setDisconnecting(false);\n isDisconnecting.current = false;\n }\n }, [isDisconnecting, adapter, setName]);\n\n // Handle the adapter's error event, and local errors\n const handleError = useCallback(\n (error: WalletError) => {\n // Call onError unless the window is unloading\n if (!isUnloading.current) (onError || console.error)(error);\n return error;\n },\n [isUnloading, onError],\n );\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback(async () => {\n if (!adapter || isReconnecting.current) return;\n\n isReconnecting.current = true;\n setReconnecting(true);\n setState(state => ({\n ...state,\n publicKey: null,\n connected: false,\n }));\n\n try {\n const account = await adapter.connect(initialNetwork, decryptPermission, programs);\n setState(state => ({\n ...state,\n publicKey: account.address,\n connected: adapter.connected,\n network: adapter.network ?? state.network,\n }));\n lastAuthorizedAccount.current = account.address ?? null;\n } catch (error: unknown) {\n handleError(error as WalletError);\n await disconnect();\n } finally {\n setReconnecting(false);\n isReconnecting.current = false;\n }\n }, [adapter, disconnect, handleError, initialNetwork, decryptPermission, programs]);\n\n // Setup and teardown event listeners when the adapter changes\n useEffect(() => {\n if (adapter) {\n adapter.on('connect', handleConnect);\n adapter.on('disconnect', handleDisconnect);\n adapter.on('error', handleError);\n adapter.on('accountChange', handleAccountChange);\n return () => {\n adapter.off('connect', handleConnect);\n adapter.off('disconnect', handleDisconnect);\n adapter.off('error', handleError);\n adapter.off('accountChange', handleAccountChange);\n };\n }\n }, [adapter, handleConnect, handleDisconnect, handleError, handleAccountChange]);\n\n // When the adapter changes, disconnect the old one\n useEffect(() => {\n return () => {\n if (adapter && adapter.connected) {\n adapter.disconnect();\n }\n };\n }, [adapter]);\n\n // If autoConnect is enabled, try to connect when the adapter changes and is ready\n useEffect(() => {\n if (\n isConnecting.current ||\n isReconnecting.current ||\n connected ||\n !autoConnect ||\n !adapter ||\n !(readyState === WalletReadyState.INSTALLED || readyState === WalletReadyState.LOADABLE)\n )\n return;\n\n (async function () {\n isConnecting.current = true;\n setConnecting(true);\n try {\n const account = await adapter.connect(initialNetwork, decryptPermission, programs);\n lastAuthorizedAccount.current = account.address ?? null;\n } catch (error: unknown) {\n // Clear the selected wallet\n setName(null);\n\n adapter.emit('error', error as WalletError);\n } finally {\n setConnecting(false);\n isConnecting.current = false;\n }\n })();\n }, [isConnecting, connected, autoConnect, adapter, readyState, setName]);\n\n useEffect(() => {\n if (adapter && connected && adapter.network !== initialNetwork) {\n try {\n switchNetwork(initialNetwork);\n } catch (error: unknown) {\n console.error('Failed to switch network, disconnecting');\n disconnect();\n }\n }\n }, [initialNetwork]);\n\n useEffect(() => {\n if (adapter && connected) {\n disconnect();\n }\n }, [decryptPermission, programs]);\n\n // Connect the adapter to the wallet\n const connect = useCallback(async () => {\n if (isConnecting.current || isDisconnecting.current || connected) return;\n if (!adapter) throw handleError(new WalletNotSelectedError());\n\n if (!(readyState === WalletReadyState.INSTALLED || readyState === WalletReadyState.LOADABLE)) {\n // Clear the selected wallet\n setName(null);\n\n if (typeof window !== 'undefined') {\n window.open(adapter.url, '_blank');\n }\n\n throw handleError(new WalletNotReadyError());\n }\n\n isConnecting.current = true;\n setConnecting(true);\n try {\n const account = await adapter.connect(initialNetwork, decryptPermission, programs);\n lastAuthorizedAccount.current = account.address ?? null;\n } catch (error: unknown) {\n // Clear the selected wallet\n setName(null);\n // Rethrow the error, and handleError will also be called\n adapter.emit('error', error as WalletError);\n throw error;\n } finally {\n setConnecting(false);\n isConnecting.current = false;\n }\n }, [isConnecting, isDisconnecting, connected, adapter, readyState, handleError, setName]);\n\n const executeTransaction = useCallback(\n async (transaction: TransactionOptions) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('executeTransaction' in adapter))\n throw handleError(new MethodNotImplementedError('executeTransaction'));\n\n await checkNetwork();\n\n return await adapter.executeTransaction(transaction);\n },\n [adapter, handleError, connected],\n );\n\n const transactionStatus = useCallback(\n async (transactionId: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('transactionStatus' in adapter))\n throw handleError(new MethodNotImplementedError('transactionStatus'));\n\n return await adapter.transactionStatus(transactionId);\n },\n [adapter, handleError, connected],\n );\n\n // Sign an arbitrary message if the wallet supports it\n const signMessage = useMemo(\n () =>\n async (message: Uint8Array | string): Promise<Uint8Array | undefined> => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('signMessage' in adapter))\n throw handleError(new MethodNotImplementedError('signMessage'));\n\n return await adapter.signMessage(\n typeof message === 'string' ? new TextEncoder().encode(message) : message,\n );\n },\n [adapter, handleError, connected],\n );\n\n const switchNetwork = useCallback(\n async (network: Network) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('switchNetwork' in adapter))\n throw handleError(new MethodNotImplementedError('switchNetwork'));\n let switched = false;\n try {\n isConnecting.current = true;\n setConnecting(true);\n await adapter.switchNetwork(network);\n switched = true;\n } catch (error: unknown) {\n if (error instanceof MethodNotImplementedError) {\n await disconnect();\n }\n\n console.error('Failed to switch network');\n } finally {\n isConnecting.current = false;\n setConnecting(false);\n }\n return switched;\n },\n [adapter, handleError, connected],\n );\n\n const decrypt = useCallback(\n async (cipherText: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('decrypt' in adapter))\n throw handleError(new MethodNotImplementedError('decrypt'));\n\n return await adapter.decrypt(cipherText);\n },\n [adapter, handleError, connected],\n );\n\n const requestRecords = useCallback(\n async (program: string, includePlaintext?: boolean) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('requestRecords' in adapter))\n throw handleError(new MethodNotImplementedError('requestRecords'));\n\n return await adapter.requestRecords(program, includePlaintext);\n },\n [adapter, handleError, connected],\n );\n\n const executeDeployment = useCallback(\n async (deployment: AleoDeployment) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('executeDeployment' in adapter))\n throw handleError(new MethodNotImplementedError('executeDeployment'));\n\n return await adapter.executeDeployment(deployment);\n },\n [adapter, handleError, connected],\n );\n\n const transitionViewKeys = useCallback(\n async (transactionId: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('transitionViewKeys' in adapter))\n throw handleError(new MethodNotImplementedError('transitionViewKeys'));\n\n return await adapter.transitionViewKeys(transactionId);\n },\n [adapter, handleError, connected],\n );\n\n const requestTransactionHistory = useCallback(\n async (program: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('requestTransactionHistory' in adapter))\n throw handleError(new MethodNotImplementedError('requestTransactionHistory'));\n\n return await adapter.requestTransactionHistory(program);\n },\n [adapter, handleError, connected],\n );\n\n const checkNetwork = useCallback(async () => {\n if (adapter && adapter.network !== initialNetwork) {\n const switchResult = await switchNetwork(initialNetwork);\n if (!switchResult) {\n throw handleError(new WalletSwitchNetworkError('Failed to switch network'));\n }\n }\n }, [adapter, initialNetwork, switchNetwork]);\n\n return (\n <WalletContext.Provider\n value={{\n autoConnect,\n wallets,\n wallet,\n address: publicKey ?? null,\n connected,\n connecting,\n reconnecting,\n disconnecting,\n network,\n selectWallet: setName,\n connect,\n disconnect,\n executeTransaction,\n transactionStatus,\n signMessage,\n switchNetwork,\n decrypt,\n requestRecords,\n executeDeployment,\n transitionViewKeys,\n requestTransactionHistory,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n","import type { Dispatch, SetStateAction } from 'react';\nimport { useEffect, useRef, useState } from 'react';\n\nexport function useLocalStorage<T>(key: string, defaultState: T): [T, Dispatch<SetStateAction<T>>] {\n const state = useState<T>(() => {\n try {\n const value = localStorage.getItem(key);\n if (value) return JSON.parse(value) as T;\n } catch (error: unknown) {\n if (typeof window !== 'undefined') {\n console.error(error);\n }\n }\n\n return defaultState;\n });\n const value = state[0];\n\n const isFirstRender = useRef(true);\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n try {\n if (value === null) {\n localStorage.removeItem(key);\n } else {\n localStorage.setItem(key, JSON.stringify(value));\n }\n } catch (error: unknown) {\n if (typeof window !== 'undefined') {\n console.error(error);\n }\n }\n }, [value, key]);\n\n return state;\n}\n","import { useWalletContext } from './context';\nimport type { WalletContextState } from './context';\n\n/**\n * Custom hook to use the wallet\n * @returns The wallet context state\n */\nexport function useWallet(): WalletContextState {\n return useWalletContext();\n}\n"],"mappings":"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","names":["import_react","import_react","value","adapter","wallets","wallet","readyState","network"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/context.ts","../src/WalletProvider.tsx","../src/useLocalStorage.ts","../src/useWallet.ts"],"sourcesContent":["export * from './context';\nexport { AleoWalletProvider } from './WalletProvider';\nexport * from './useWallet';\n","import { createContext, useContext } from 'react';\nimport {\n AleoDeployment,\n RecordStatusFilter,\n WalletAdapter,\n WalletName,\n WalletReadyState,\n} from '@provablehq/aleo-wallet-standard';\nimport {\n Network,\n TransactionOptions,\n TransactionStatusResponse,\n TxHistoryResult,\n} from '@provablehq/aleo-types';\n\nexport interface Wallet {\n adapter: WalletAdapter;\n readyState: WalletReadyState;\n}\n\n/**\n * Wallet context state\n */\nexport interface WalletContextState {\n /**\n * All available wallet adapters\n */\n wallets: Wallet[];\n\n /**\n * The connected wallet adapter\n */\n wallet: Wallet | null;\n\n /**\n * The connected account\n */\n address: string | null;\n\n /**\n * Whether the wallet is connected\n */\n connected: boolean;\n\n /**\n * Whether the wallet is connecting\n */\n connecting: boolean;\n\n /**\n * Whether the wallet is disconnecting\n */\n disconnecting: boolean;\n\n /**\n * Whether the wallet is reauthorizing after an account change\n */\n reconnecting: boolean;\n\n /**\n * Whether the wallet is auto-connecting\n */\n autoConnect: boolean;\n\n /**\n * The current network\n */\n network: Network | null;\n\n /**\n * Select a wallet by name\n * @param name The name of the wallet to select\n */\n selectWallet: (name: WalletName) => void;\n\n /**\n * Connect to the selected wallet\n */\n connect: (network: Network) => Promise<void>;\n\n /**\n * Disconnect from the connected wallet\n */\n disconnect: () => Promise<void>;\n\n /**\n * Execute a transaction\n */\n executeTransaction: (\n options: TransactionOptions,\n ) => Promise<{ transactionId: string } | undefined>;\n\n /**\n * Get transaction status\n */\n transactionStatus: (transactionId: string) => Promise<TransactionStatusResponse>;\n\n /**\n * Sign a message\n */\n signMessage: (message: Uint8Array | string) => Promise<Uint8Array | undefined>;\n\n /**\n * Switch the network\n */\n switchNetwork: (network: Network) => Promise<boolean>;\n\n /**\n * Decrypt a ciphertext\n */\n decrypt: (cipherText: string) => Promise<string>;\n\n /**\n * Request records\n */\n requestRecords: (\n program: string,\n includePlaintext?: boolean,\n statusFilter?: RecordStatusFilter,\n ) => Promise<unknown[]>;\n\n /**\n * Execute a deployment\n */\n executeDeployment: (deployment: AleoDeployment) => Promise<{ transactionId: string }>;\n /**\n * get transition view keys(tvk) for a transaction\n */\n transitionViewKeys: (transactionId: string) => Promise<string[]>;\n /**\n * get transaction of specific program\n * @param program The program ID\n * @returns array of transactionId\n */\n requestTransactionHistory: (program: string) => Promise<TxHistoryResult>;\n}\n\n/**\n * Wallet context\n */\nexport const WalletContext = createContext<WalletContextState | undefined>(undefined);\n\n/**\n * Custom hook to use the wallet context\n * @returns The wallet context state\n */\nexport function useWalletContext(): WalletContextState {\n const ctx = useContext(WalletContext);\n if (!ctx) {\n throw new Error('`useWalletContext` must be used inside `AleoWalletProvider`');\n }\n return ctx;\n}\n","import type { FC, ReactNode } from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n WalletName,\n WalletReadyState,\n WalletAdapter,\n AleoDeployment,\n RecordStatusFilter,\n} from '@provablehq/aleo-wallet-standard';\nimport { Network, TransactionOptions } from '@provablehq/aleo-types';\nimport { Wallet, WalletContext } from './context';\nimport { useLocalStorage } from './useLocalStorage';\nimport {\n WalletError,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletNotSelectedError,\n MethodNotImplementedError,\n WalletSwitchNetworkError,\n DecryptPermission,\n} from '@provablehq/aleo-wallet-adaptor-core';\n\nexport interface WalletProviderProps {\n children: ReactNode;\n wallets: WalletAdapter[];\n network?: Network;\n autoConnect?: boolean;\n onError?: (error: WalletError) => void;\n localStorageKey?: string;\n decryptPermission?: DecryptPermission;\n programs?: string[];\n}\n\nconst initialState: {\n wallet: Wallet | null;\n adapter: WalletAdapter | null;\n publicKey: string | null;\n connected: boolean;\n network: Network | null;\n} = {\n wallet: null,\n adapter: null,\n publicKey: null,\n connected: false,\n network: null,\n};\n\nexport const AleoWalletProvider: FC<WalletProviderProps> = ({\n children,\n wallets: adapters,\n autoConnect = false,\n network: initialNetwork = Network.TESTNET,\n onError,\n localStorageKey = 'walletName',\n decryptPermission = DecryptPermission.NoDecrypt,\n programs,\n}) => {\n const [name, setName] = useLocalStorage<WalletName | null>(localStorageKey, null);\n const [{ wallet, adapter, publicKey, connected, network }, setState] = useState(initialState);\n const readyState = adapter?.readyState || WalletReadyState.UNSUPPORTED;\n const [connecting, setConnecting] = useState(false);\n const [disconnecting, setDisconnecting] = useState(false);\n const [reconnecting, setReconnecting] = useState(false);\n const isConnecting = useRef(false);\n const isDisconnecting = useRef(false);\n const isReconnecting = useRef(false);\n const isUnloading = useRef(false);\n const lastAuthorizedAccount = useRef<string | null>(null);\n\n // Wrap adapters to conform to the `Wallet` interface\n const [wallets, setWallets] = useState(() =>\n adapters.map(adapter => ({\n adapter,\n readyState: adapter.readyState,\n })),\n );\n\n // When the adapters change, start to listen for changes to their `readyState`\n useEffect(() => {\n // When the adapters change, wrap them to conform to the `Wallet` interface\n setWallets(wallets =>\n adapters.map((adapter, index) => {\n const wallet = wallets[index];\n // If the wallet hasn't changed, return the same instance\n return wallet && wallet.adapter === adapter && wallet.readyState === adapter.readyState\n ? wallet\n : {\n adapter: adapter,\n readyState: adapter.readyState,\n };\n }),\n );\n\n function handleReadyStateChange(this: WalletAdapter, readyState: WalletReadyState): void {\n setWallets(prevWallets => {\n const index = prevWallets.findIndex(({ adapter }) => adapter === this);\n if (index === -1) return prevWallets;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { adapter } = prevWallets[index]!;\n return [\n ...prevWallets.slice(0, index),\n { adapter, readyState },\n ...prevWallets.slice(index + 1),\n ];\n });\n }\n\n function handleNetworkChange(this: WalletAdapter, network: Network): void {\n setState(state => ({\n ...state,\n network,\n }));\n }\n\n adapters.forEach(adapter => adapter.on('readyStateChange', handleReadyStateChange, adapter));\n adapters.forEach(adapter => adapter.on('networkChange', handleNetworkChange, adapter));\n return () => {\n adapters.forEach(adapter => adapter.off('readyStateChange', handleReadyStateChange, adapter));\n adapters.forEach(adapter => adapter.off('networkChange', handleNetworkChange, adapter));\n };\n }, [adapters]);\n\n // When the selected wallet changes, initialize the state\n useEffect(() => {\n const wallet = name && wallets.find(({ adapter }) => adapter.name === name);\n if (wallet) {\n setState({\n wallet,\n adapter: wallet.adapter,\n connected: wallet.adapter.connected,\n publicKey: wallet.adapter.account?.address ?? null,\n network: wallet.adapter.network ?? null,\n });\n lastAuthorizedAccount.current = wallet.adapter.account?.address ?? null;\n } else {\n setState(initialState);\n lastAuthorizedAccount.current = null;\n }\n }, [name, wallets]);\n\n // If the window is closing or reloading, ignore disconnect and error events from the adapter\n useEffect(() => {\n function listener() {\n isUnloading.current = true;\n }\n\n window.addEventListener('beforeunload', listener);\n return () => window.removeEventListener('beforeunload', listener);\n }, [isUnloading]);\n\n // Handle the adapter's connect event\n const handleConnect = useCallback(() => {\n if (!adapter) return;\n setState(state => ({\n ...state,\n connected: adapter.connected,\n publicKey: adapter.account?.address ?? null,\n network: adapter.network ?? null,\n }));\n lastAuthorizedAccount.current = adapter.account?.address ?? null;\n }, [adapter]);\n\n // Handle the adapter's disconnect event\n const handleDisconnect = useCallback(() => {\n // Clear the selected wallet unless the window is unloading\n if (!isUnloading.current) setName(null);\n lastAuthorizedAccount.current = null;\n }, [isUnloading, setName]);\n\n // Disconnect the adapter from the wallet\n const disconnect = useCallback(async () => {\n if (isDisconnecting.current) return;\n if (!adapter) return setName(null);\n\n isDisconnecting.current = true;\n setDisconnecting(true);\n try {\n await adapter.disconnect();\n } catch (error: unknown) {\n // Clear the selected wallet\n setName(null);\n // Rethrow the error, and handleError will also be called\n throw error;\n } finally {\n setDisconnecting(false);\n isDisconnecting.current = false;\n }\n }, [isDisconnecting, adapter, setName]);\n\n // Handle the adapter's error event, and local errors\n const handleError = useCallback(\n (error: WalletError) => {\n // Call onError unless the window is unloading\n if (!isUnloading.current) (onError || console.error)(error);\n return error;\n },\n [isUnloading, onError],\n );\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback(async () => {\n if (!adapter || isReconnecting.current) return;\n\n isReconnecting.current = true;\n setReconnecting(true);\n setState(state => ({\n ...state,\n publicKey: null,\n connected: false,\n }));\n\n try {\n const account = await adapter.connect(initialNetwork, decryptPermission, programs);\n setState(state => ({\n ...state,\n publicKey: account.address,\n connected: adapter.connected,\n network: adapter.network ?? state.network,\n }));\n lastAuthorizedAccount.current = account.address ?? null;\n } catch (error: unknown) {\n handleError(error as WalletError);\n await disconnect();\n } finally {\n setReconnecting(false);\n isReconnecting.current = false;\n }\n }, [adapter, disconnect, handleError, initialNetwork, decryptPermission, programs]);\n\n // Setup and teardown event listeners when the adapter changes\n useEffect(() => {\n if (adapter) {\n adapter.on('connect', handleConnect);\n adapter.on('disconnect', handleDisconnect);\n adapter.on('error', handleError);\n adapter.on('accountChange', handleAccountChange);\n return () => {\n adapter.off('connect', handleConnect);\n adapter.off('disconnect', handleDisconnect);\n adapter.off('error', handleError);\n adapter.off('accountChange', handleAccountChange);\n };\n }\n }, [adapter, handleConnect, handleDisconnect, handleError, handleAccountChange]);\n\n // When the adapter changes, disconnect the old one\n useEffect(() => {\n return () => {\n if (adapter && adapter.connected) {\n adapter.disconnect();\n }\n };\n }, [adapter]);\n\n // If autoConnect is enabled, try to connect when the adapter changes and is ready\n useEffect(() => {\n if (\n isConnecting.current ||\n isReconnecting.current ||\n connected ||\n !autoConnect ||\n !adapter ||\n !(readyState === WalletReadyState.INSTALLED || readyState === WalletReadyState.LOADABLE)\n )\n return;\n\n (async function () {\n isConnecting.current = true;\n setConnecting(true);\n try {\n const account = await adapter.connect(initialNetwork, decryptPermission, programs);\n lastAuthorizedAccount.current = account.address ?? null;\n } catch (error: unknown) {\n // Clear the selected wallet\n setName(null);\n\n adapter.emit('error', error as WalletError);\n } finally {\n setConnecting(false);\n isConnecting.current = false;\n }\n })();\n }, [isConnecting, connected, autoConnect, adapter, readyState, setName]);\n\n useEffect(() => {\n if (adapter && connected && adapter.network !== initialNetwork) {\n try {\n switchNetwork(initialNetwork);\n } catch (error: unknown) {\n console.error('Failed to switch network, disconnecting');\n disconnect();\n }\n }\n }, [initialNetwork]);\n\n useEffect(() => {\n if (adapter && connected) {\n disconnect();\n }\n }, [decryptPermission, programs]);\n\n // Connect the adapter to the wallet\n const connect = useCallback(async () => {\n if (isConnecting.current || isDisconnecting.current || connected) return;\n if (!adapter) throw handleError(new WalletNotSelectedError());\n\n if (!(readyState === WalletReadyState.INSTALLED || readyState === WalletReadyState.LOADABLE)) {\n // Clear the selected wallet\n setName(null);\n\n if (typeof window !== 'undefined') {\n window.open(adapter.url, '_blank');\n }\n\n throw handleError(new WalletNotReadyError());\n }\n\n isConnecting.current = true;\n setConnecting(true);\n try {\n const account = await adapter.connect(initialNetwork, decryptPermission, programs);\n lastAuthorizedAccount.current = account.address ?? null;\n } catch (error: unknown) {\n // Clear the selected wallet\n setName(null);\n // Rethrow the error, and handleError will also be called\n adapter.emit('error', error as WalletError);\n throw error;\n } finally {\n setConnecting(false);\n isConnecting.current = false;\n }\n }, [isConnecting, isDisconnecting, connected, adapter, readyState, handleError, setName]);\n\n const executeTransaction = useCallback(\n async (transaction: TransactionOptions) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('executeTransaction' in adapter))\n throw handleError(new MethodNotImplementedError('executeTransaction'));\n\n await checkNetwork();\n\n return await adapter.executeTransaction(transaction);\n },\n [adapter, handleError, connected],\n );\n\n const transactionStatus = useCallback(\n async (transactionId: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('transactionStatus' in adapter))\n throw handleError(new MethodNotImplementedError('transactionStatus'));\n\n return await adapter.transactionStatus(transactionId);\n },\n [adapter, handleError, connected],\n );\n\n // Sign an arbitrary message if the wallet supports it\n const signMessage = useMemo(\n () =>\n async (message: Uint8Array | string): Promise<Uint8Array | undefined> => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('signMessage' in adapter))\n throw handleError(new MethodNotImplementedError('signMessage'));\n\n return await adapter.signMessage(\n typeof message === 'string' ? new TextEncoder().encode(message) : message,\n );\n },\n [adapter, handleError, connected],\n );\n\n const switchNetwork = useCallback(\n async (network: Network) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('switchNetwork' in adapter))\n throw handleError(new MethodNotImplementedError('switchNetwork'));\n let switched = false;\n try {\n isConnecting.current = true;\n setConnecting(true);\n await adapter.switchNetwork(network);\n switched = true;\n } catch (error: unknown) {\n if (error instanceof MethodNotImplementedError) {\n await disconnect();\n }\n\n console.error('Failed to switch network');\n } finally {\n isConnecting.current = false;\n setConnecting(false);\n }\n return switched;\n },\n [adapter, handleError, connected],\n );\n\n const decrypt = useCallback(\n async (cipherText: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('decrypt' in adapter))\n throw handleError(new MethodNotImplementedError('decrypt'));\n\n return await adapter.decrypt(cipherText);\n },\n [adapter, handleError, connected],\n );\n\n const requestRecords = useCallback(\n async (program: string, includePlaintext?: boolean, statusFilter?: RecordStatusFilter) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('requestRecords' in adapter))\n throw handleError(new MethodNotImplementedError('requestRecords'));\n\n return await adapter.requestRecords(program, includePlaintext, statusFilter);\n },\n [adapter, handleError, connected],\n );\n\n const executeDeployment = useCallback(\n async (deployment: AleoDeployment) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('executeDeployment' in adapter))\n throw handleError(new MethodNotImplementedError('executeDeployment'));\n\n return await adapter.executeDeployment(deployment);\n },\n [adapter, handleError, connected],\n );\n\n const transitionViewKeys = useCallback(\n async (transactionId: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('transitionViewKeys' in adapter))\n throw handleError(new MethodNotImplementedError('transitionViewKeys'));\n\n return await adapter.transitionViewKeys(transactionId);\n },\n [adapter, handleError, connected],\n );\n\n const requestTransactionHistory = useCallback(\n async (program: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('requestTransactionHistory' in adapter))\n throw handleError(new MethodNotImplementedError('requestTransactionHistory'));\n\n return await adapter.requestTransactionHistory(program);\n },\n [adapter, handleError, connected],\n );\n\n const checkNetwork = useCallback(async () => {\n if (adapter && adapter.network !== initialNetwork) {\n const switchResult = await switchNetwork(initialNetwork);\n if (!switchResult) {\n throw handleError(new WalletSwitchNetworkError('Failed to switch network'));\n }\n }\n }, [adapter, initialNetwork, switchNetwork]);\n\n return (\n <WalletContext.Provider\n value={{\n autoConnect,\n wallets,\n wallet,\n address: publicKey ?? null,\n connected,\n connecting,\n reconnecting,\n disconnecting,\n network,\n selectWallet: setName,\n connect,\n disconnect,\n executeTransaction,\n transactionStatus,\n signMessage,\n switchNetwork,\n decrypt,\n requestRecords,\n executeDeployment,\n transitionViewKeys,\n requestTransactionHistory,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n","import type { Dispatch, SetStateAction } from 'react';\nimport { useEffect, useRef, useState } from 'react';\n\nexport function useLocalStorage<T>(key: string, defaultState: T): [T, Dispatch<SetStateAction<T>>] {\n const state = useState<T>(() => {\n try {\n const value = localStorage.getItem(key);\n if (value) return JSON.parse(value) as T;\n } catch (error: unknown) {\n if (typeof window !== 'undefined') {\n console.error(error);\n }\n }\n\n return defaultState;\n });\n const value = state[0];\n\n const isFirstRender = useRef(true);\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n try {\n if (value === null) {\n localStorage.removeItem(key);\n } else {\n localStorage.setItem(key, JSON.stringify(value));\n }\n } catch (error: unknown) {\n if (typeof window !== 'undefined') {\n console.error(error);\n }\n }\n }, [value, key]);\n\n return state;\n}\n","import { useWalletContext } from './context';\nimport type { WalletContextState } from './context';\n\n/**\n * Custom hook to use the wallet\n * @returns The wallet context state\n */\nexport function useWallet(): WalletContextState {\n return useWalletContext();\n}\n"],"mappings":"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","names":["import_react","import_react","value","adapter","wallets","wallet","readyState","network"]}
|
package/dist/index.mjs
CHANGED
|
@@ -358,11 +358,11 @@ var AleoWalletProvider = ({
|
|
|
358
358
|
[adapter, handleError, connected]
|
|
359
359
|
);
|
|
360
360
|
const requestRecords = useCallback(
|
|
361
|
-
async (program, includePlaintext) => {
|
|
361
|
+
async (program, includePlaintext, statusFilter) => {
|
|
362
362
|
if (!connected) throw handleError(new WalletNotConnectedError());
|
|
363
363
|
if (!adapter || !("requestRecords" in adapter))
|
|
364
364
|
throw handleError(new MethodNotImplementedError("requestRecords"));
|
|
365
|
-
return await adapter.requestRecords(program, includePlaintext);
|
|
365
|
+
return await adapter.requestRecords(program, includePlaintext, statusFilter);
|
|
366
366
|
},
|
|
367
367
|
[adapter, handleError, connected]
|
|
368
368
|
);
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/context.ts","../src/WalletProvider.tsx","../src/useLocalStorage.ts","../src/useWallet.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport {\n AleoDeployment,\n WalletAdapter,\n WalletName,\n WalletReadyState,\n} from '@provablehq/aleo-wallet-standard';\nimport {\n Network,\n TransactionOptions,\n TransactionStatusResponse,\n TxHistoryResult,\n} from '@provablehq/aleo-types';\n\nexport interface Wallet {\n adapter: WalletAdapter;\n readyState: WalletReadyState;\n}\n\n/**\n * Wallet context state\n */\nexport interface WalletContextState {\n /**\n * All available wallet adapters\n */\n wallets: Wallet[];\n\n /**\n * The connected wallet adapter\n */\n wallet: Wallet | null;\n\n /**\n * The connected account\n */\n address: string | null;\n\n /**\n * Whether the wallet is connected\n */\n connected: boolean;\n\n /**\n * Whether the wallet is connecting\n */\n connecting: boolean;\n\n /**\n * Whether the wallet is disconnecting\n */\n disconnecting: boolean;\n\n /**\n * Whether the wallet is reauthorizing after an account change\n */\n reconnecting: boolean;\n\n /**\n * Whether the wallet is auto-connecting\n */\n autoConnect: boolean;\n\n /**\n * The current network\n */\n network: Network | null;\n\n /**\n * Select a wallet by name\n * @param name The name of the wallet to select\n */\n selectWallet: (name: WalletName) => void;\n\n /**\n * Connect to the selected wallet\n */\n connect: (network: Network) => Promise<void>;\n\n /**\n * Disconnect from the connected wallet\n */\n disconnect: () => Promise<void>;\n\n /**\n * Execute a transaction\n */\n executeTransaction: (\n options: TransactionOptions,\n ) => Promise<{ transactionId: string } | undefined>;\n\n /**\n * Get transaction status\n */\n transactionStatus: (transactionId: string) => Promise<TransactionStatusResponse>;\n\n /**\n * Sign a message\n */\n signMessage: (message: Uint8Array | string) => Promise<Uint8Array | undefined>;\n\n /**\n * Switch the network\n */\n switchNetwork: (network: Network) => Promise<boolean>;\n\n /**\n * Decrypt a ciphertext\n */\n decrypt: (cipherText: string) => Promise<string>;\n\n /**\n * Request records\n */\n requestRecords: (program: string, includePlaintext?: boolean) => Promise<unknown[]>;\n\n /**\n * Execute a deployment\n */\n executeDeployment: (deployment: AleoDeployment) => Promise<{ transactionId: string }>;\n /**\n * get transition view keys(tvk) for a transaction\n */\n transitionViewKeys: (transactionId: string) => Promise<string[]>;\n /**\n * get transaction of specific program\n * @param program The program ID\n * @returns array of transactionId\n */\n requestTransactionHistory: (program: string) => Promise<TxHistoryResult>;\n}\n\n/**\n * Wallet context\n */\nexport const WalletContext = createContext<WalletContextState | undefined>(undefined);\n\n/**\n * Custom hook to use the wallet context\n * @returns The wallet context state\n */\nexport function useWalletContext(): WalletContextState {\n const ctx = useContext(WalletContext);\n if (!ctx) {\n throw new Error('`useWalletContext` must be used inside `AleoWalletProvider`');\n }\n return ctx;\n}\n","import type { FC, ReactNode } from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n WalletName,\n WalletReadyState,\n WalletAdapter,\n AleoDeployment,\n} from '@provablehq/aleo-wallet-standard';\nimport { Network, TransactionOptions } from '@provablehq/aleo-types';\nimport { Wallet, WalletContext } from './context';\nimport { useLocalStorage } from './useLocalStorage';\nimport {\n WalletError,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletNotSelectedError,\n MethodNotImplementedError,\n WalletSwitchNetworkError,\n DecryptPermission,\n} from '@provablehq/aleo-wallet-adaptor-core';\n\nexport interface WalletProviderProps {\n children: ReactNode;\n wallets: WalletAdapter[];\n network?: Network;\n autoConnect?: boolean;\n onError?: (error: WalletError) => void;\n localStorageKey?: string;\n decryptPermission?: DecryptPermission;\n programs?: string[];\n}\n\nconst initialState: {\n wallet: Wallet | null;\n adapter: WalletAdapter | null;\n publicKey: string | null;\n connected: boolean;\n network: Network | null;\n} = {\n wallet: null,\n adapter: null,\n publicKey: null,\n connected: false,\n network: null,\n};\n\nexport const AleoWalletProvider: FC<WalletProviderProps> = ({\n children,\n wallets: adapters,\n autoConnect = false,\n network: initialNetwork = Network.TESTNET,\n onError,\n localStorageKey = 'walletName',\n decryptPermission = DecryptPermission.NoDecrypt,\n programs,\n}) => {\n const [name, setName] = useLocalStorage<WalletName | null>(localStorageKey, null);\n const [{ wallet, adapter, publicKey, connected, network }, setState] = useState(initialState);\n const readyState = adapter?.readyState || WalletReadyState.UNSUPPORTED;\n const [connecting, setConnecting] = useState(false);\n const [disconnecting, setDisconnecting] = useState(false);\n const [reconnecting, setReconnecting] = useState(false);\n const isConnecting = useRef(false);\n const isDisconnecting = useRef(false);\n const isReconnecting = useRef(false);\n const isUnloading = useRef(false);\n const lastAuthorizedAccount = useRef<string | null>(null);\n\n // Wrap adapters to conform to the `Wallet` interface\n const [wallets, setWallets] = useState(() =>\n adapters.map(adapter => ({\n adapter,\n readyState: adapter.readyState,\n })),\n );\n\n // When the adapters change, start to listen for changes to their `readyState`\n useEffect(() => {\n // When the adapters change, wrap them to conform to the `Wallet` interface\n setWallets(wallets =>\n adapters.map((adapter, index) => {\n const wallet = wallets[index];\n // If the wallet hasn't changed, return the same instance\n return wallet && wallet.adapter === adapter && wallet.readyState === adapter.readyState\n ? wallet\n : {\n adapter: adapter,\n readyState: adapter.readyState,\n };\n }),\n );\n\n function handleReadyStateChange(this: WalletAdapter, readyState: WalletReadyState): void {\n setWallets(prevWallets => {\n const index = prevWallets.findIndex(({ adapter }) => adapter === this);\n if (index === -1) return prevWallets;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { adapter } = prevWallets[index]!;\n return [\n ...prevWallets.slice(0, index),\n { adapter, readyState },\n ...prevWallets.slice(index + 1),\n ];\n });\n }\n\n function handleNetworkChange(this: WalletAdapter, network: Network): void {\n setState(state => ({\n ...state,\n network,\n }));\n }\n\n adapters.forEach(adapter => adapter.on('readyStateChange', handleReadyStateChange, adapter));\n adapters.forEach(adapter => adapter.on('networkChange', handleNetworkChange, adapter));\n return () => {\n adapters.forEach(adapter => adapter.off('readyStateChange', handleReadyStateChange, adapter));\n adapters.forEach(adapter => adapter.off('networkChange', handleNetworkChange, adapter));\n };\n }, [adapters]);\n\n // When the selected wallet changes, initialize the state\n useEffect(() => {\n const wallet = name && wallets.find(({ adapter }) => adapter.name === name);\n if (wallet) {\n setState({\n wallet,\n adapter: wallet.adapter,\n connected: wallet.adapter.connected,\n publicKey: wallet.adapter.account?.address ?? null,\n network: wallet.adapter.network ?? null,\n });\n lastAuthorizedAccount.current = wallet.adapter.account?.address ?? null;\n } else {\n setState(initialState);\n lastAuthorizedAccount.current = null;\n }\n }, [name, wallets]);\n\n // If the window is closing or reloading, ignore disconnect and error events from the adapter\n useEffect(() => {\n function listener() {\n isUnloading.current = true;\n }\n\n window.addEventListener('beforeunload', listener);\n return () => window.removeEventListener('beforeunload', listener);\n }, [isUnloading]);\n\n // Handle the adapter's connect event\n const handleConnect = useCallback(() => {\n if (!adapter) return;\n setState(state => ({\n ...state,\n connected: adapter.connected,\n publicKey: adapter.account?.address ?? null,\n network: adapter.network ?? null,\n }));\n lastAuthorizedAccount.current = adapter.account?.address ?? null;\n }, [adapter]);\n\n // Handle the adapter's disconnect event\n const handleDisconnect = useCallback(() => {\n // Clear the selected wallet unless the window is unloading\n if (!isUnloading.current) setName(null);\n lastAuthorizedAccount.current = null;\n }, [isUnloading, setName]);\n\n // Disconnect the adapter from the wallet\n const disconnect = useCallback(async () => {\n if (isDisconnecting.current) return;\n if (!adapter) return setName(null);\n\n isDisconnecting.current = true;\n setDisconnecting(true);\n try {\n await adapter.disconnect();\n } catch (error: unknown) {\n // Clear the selected wallet\n setName(null);\n // Rethrow the error, and handleError will also be called\n throw error;\n } finally {\n setDisconnecting(false);\n isDisconnecting.current = false;\n }\n }, [isDisconnecting, adapter, setName]);\n\n // Handle the adapter's error event, and local errors\n const handleError = useCallback(\n (error: WalletError) => {\n // Call onError unless the window is unloading\n if (!isUnloading.current) (onError || console.error)(error);\n return error;\n },\n [isUnloading, onError],\n );\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback(async () => {\n if (!adapter || isReconnecting.current) return;\n\n isReconnecting.current = true;\n setReconnecting(true);\n setState(state => ({\n ...state,\n publicKey: null,\n connected: false,\n }));\n\n try {\n const account = await adapter.connect(initialNetwork, decryptPermission, programs);\n setState(state => ({\n ...state,\n publicKey: account.address,\n connected: adapter.connected,\n network: adapter.network ?? state.network,\n }));\n lastAuthorizedAccount.current = account.address ?? null;\n } catch (error: unknown) {\n handleError(error as WalletError);\n await disconnect();\n } finally {\n setReconnecting(false);\n isReconnecting.current = false;\n }\n }, [adapter, disconnect, handleError, initialNetwork, decryptPermission, programs]);\n\n // Setup and teardown event listeners when the adapter changes\n useEffect(() => {\n if (adapter) {\n adapter.on('connect', handleConnect);\n adapter.on('disconnect', handleDisconnect);\n adapter.on('error', handleError);\n adapter.on('accountChange', handleAccountChange);\n return () => {\n adapter.off('connect', handleConnect);\n adapter.off('disconnect', handleDisconnect);\n adapter.off('error', handleError);\n adapter.off('accountChange', handleAccountChange);\n };\n }\n }, [adapter, handleConnect, handleDisconnect, handleError, handleAccountChange]);\n\n // When the adapter changes, disconnect the old one\n useEffect(() => {\n return () => {\n if (adapter && adapter.connected) {\n adapter.disconnect();\n }\n };\n }, [adapter]);\n\n // If autoConnect is enabled, try to connect when the adapter changes and is ready\n useEffect(() => {\n if (\n isConnecting.current ||\n isReconnecting.current ||\n connected ||\n !autoConnect ||\n !adapter ||\n !(readyState === WalletReadyState.INSTALLED || readyState === WalletReadyState.LOADABLE)\n )\n return;\n\n (async function () {\n isConnecting.current = true;\n setConnecting(true);\n try {\n const account = await adapter.connect(initialNetwork, decryptPermission, programs);\n lastAuthorizedAccount.current = account.address ?? null;\n } catch (error: unknown) {\n // Clear the selected wallet\n setName(null);\n\n adapter.emit('error', error as WalletError);\n } finally {\n setConnecting(false);\n isConnecting.current = false;\n }\n })();\n }, [isConnecting, connected, autoConnect, adapter, readyState, setName]);\n\n useEffect(() => {\n if (adapter && connected && adapter.network !== initialNetwork) {\n try {\n switchNetwork(initialNetwork);\n } catch (error: unknown) {\n console.error('Failed to switch network, disconnecting');\n disconnect();\n }\n }\n }, [initialNetwork]);\n\n useEffect(() => {\n if (adapter && connected) {\n disconnect();\n }\n }, [decryptPermission, programs]);\n\n // Connect the adapter to the wallet\n const connect = useCallback(async () => {\n if (isConnecting.current || isDisconnecting.current || connected) return;\n if (!adapter) throw handleError(new WalletNotSelectedError());\n\n if (!(readyState === WalletReadyState.INSTALLED || readyState === WalletReadyState.LOADABLE)) {\n // Clear the selected wallet\n setName(null);\n\n if (typeof window !== 'undefined') {\n window.open(adapter.url, '_blank');\n }\n\n throw handleError(new WalletNotReadyError());\n }\n\n isConnecting.current = true;\n setConnecting(true);\n try {\n const account = await adapter.connect(initialNetwork, decryptPermission, programs);\n lastAuthorizedAccount.current = account.address ?? null;\n } catch (error: unknown) {\n // Clear the selected wallet\n setName(null);\n // Rethrow the error, and handleError will also be called\n adapter.emit('error', error as WalletError);\n throw error;\n } finally {\n setConnecting(false);\n isConnecting.current = false;\n }\n }, [isConnecting, isDisconnecting, connected, adapter, readyState, handleError, setName]);\n\n const executeTransaction = useCallback(\n async (transaction: TransactionOptions) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('executeTransaction' in adapter))\n throw handleError(new MethodNotImplementedError('executeTransaction'));\n\n await checkNetwork();\n\n return await adapter.executeTransaction(transaction);\n },\n [adapter, handleError, connected],\n );\n\n const transactionStatus = useCallback(\n async (transactionId: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('transactionStatus' in adapter))\n throw handleError(new MethodNotImplementedError('transactionStatus'));\n\n return await adapter.transactionStatus(transactionId);\n },\n [adapter, handleError, connected],\n );\n\n // Sign an arbitrary message if the wallet supports it\n const signMessage = useMemo(\n () =>\n async (message: Uint8Array | string): Promise<Uint8Array | undefined> => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('signMessage' in adapter))\n throw handleError(new MethodNotImplementedError('signMessage'));\n\n return await adapter.signMessage(\n typeof message === 'string' ? new TextEncoder().encode(message) : message,\n );\n },\n [adapter, handleError, connected],\n );\n\n const switchNetwork = useCallback(\n async (network: Network) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('switchNetwork' in adapter))\n throw handleError(new MethodNotImplementedError('switchNetwork'));\n let switched = false;\n try {\n isConnecting.current = true;\n setConnecting(true);\n await adapter.switchNetwork(network);\n switched = true;\n } catch (error: unknown) {\n if (error instanceof MethodNotImplementedError) {\n await disconnect();\n }\n\n console.error('Failed to switch network');\n } finally {\n isConnecting.current = false;\n setConnecting(false);\n }\n return switched;\n },\n [adapter, handleError, connected],\n );\n\n const decrypt = useCallback(\n async (cipherText: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('decrypt' in adapter))\n throw handleError(new MethodNotImplementedError('decrypt'));\n\n return await adapter.decrypt(cipherText);\n },\n [adapter, handleError, connected],\n );\n\n const requestRecords = useCallback(\n async (program: string, includePlaintext?: boolean) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('requestRecords' in adapter))\n throw handleError(new MethodNotImplementedError('requestRecords'));\n\n return await adapter.requestRecords(program, includePlaintext);\n },\n [adapter, handleError, connected],\n );\n\n const executeDeployment = useCallback(\n async (deployment: AleoDeployment) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('executeDeployment' in adapter))\n throw handleError(new MethodNotImplementedError('executeDeployment'));\n\n return await adapter.executeDeployment(deployment);\n },\n [adapter, handleError, connected],\n );\n\n const transitionViewKeys = useCallback(\n async (transactionId: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('transitionViewKeys' in adapter))\n throw handleError(new MethodNotImplementedError('transitionViewKeys'));\n\n return await adapter.transitionViewKeys(transactionId);\n },\n [adapter, handleError, connected],\n );\n\n const requestTransactionHistory = useCallback(\n async (program: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('requestTransactionHistory' in adapter))\n throw handleError(new MethodNotImplementedError('requestTransactionHistory'));\n\n return await adapter.requestTransactionHistory(program);\n },\n [adapter, handleError, connected],\n );\n\n const checkNetwork = useCallback(async () => {\n if (adapter && adapter.network !== initialNetwork) {\n const switchResult = await switchNetwork(initialNetwork);\n if (!switchResult) {\n throw handleError(new WalletSwitchNetworkError('Failed to switch network'));\n }\n }\n }, [adapter, initialNetwork, switchNetwork]);\n\n return (\n <WalletContext.Provider\n value={{\n autoConnect,\n wallets,\n wallet,\n address: publicKey ?? null,\n connected,\n connecting,\n reconnecting,\n disconnecting,\n network,\n selectWallet: setName,\n connect,\n disconnect,\n executeTransaction,\n transactionStatus,\n signMessage,\n switchNetwork,\n decrypt,\n requestRecords,\n executeDeployment,\n transitionViewKeys,\n requestTransactionHistory,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n","import type { Dispatch, SetStateAction } from 'react';\nimport { useEffect, useRef, useState } from 'react';\n\nexport function useLocalStorage<T>(key: string, defaultState: T): [T, Dispatch<SetStateAction<T>>] {\n const state = useState<T>(() => {\n try {\n const value = localStorage.getItem(key);\n if (value) return JSON.parse(value) as T;\n } catch (error: unknown) {\n if (typeof window !== 'undefined') {\n console.error(error);\n }\n }\n\n return defaultState;\n });\n const value = state[0];\n\n const isFirstRender = useRef(true);\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n try {\n if (value === null) {\n localStorage.removeItem(key);\n } else {\n localStorage.setItem(key, JSON.stringify(value));\n }\n } catch (error: unknown) {\n if (typeof window !== 'undefined') {\n console.error(error);\n }\n }\n }, [value, key]);\n\n return state;\n}\n","import { useWalletContext } from './context';\nimport type { WalletContextState } from './context';\n\n/**\n * Custom hook to use the wallet\n * @returns The wallet context state\n */\nexport function useWallet(): WalletContextState {\n return useWalletContext();\n}\n"],"mappings":"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","names":["useEffect","useRef","useState","value","useState","useRef","adapter","useEffect","wallets","wallet","readyState","network"]}
|
|
1
|
+
{"version":3,"sources":["../src/context.ts","../src/WalletProvider.tsx","../src/useLocalStorage.ts","../src/useWallet.ts"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport {\n AleoDeployment,\n RecordStatusFilter,\n WalletAdapter,\n WalletName,\n WalletReadyState,\n} from '@provablehq/aleo-wallet-standard';\nimport {\n Network,\n TransactionOptions,\n TransactionStatusResponse,\n TxHistoryResult,\n} from '@provablehq/aleo-types';\n\nexport interface Wallet {\n adapter: WalletAdapter;\n readyState: WalletReadyState;\n}\n\n/**\n * Wallet context state\n */\nexport interface WalletContextState {\n /**\n * All available wallet adapters\n */\n wallets: Wallet[];\n\n /**\n * The connected wallet adapter\n */\n wallet: Wallet | null;\n\n /**\n * The connected account\n */\n address: string | null;\n\n /**\n * Whether the wallet is connected\n */\n connected: boolean;\n\n /**\n * Whether the wallet is connecting\n */\n connecting: boolean;\n\n /**\n * Whether the wallet is disconnecting\n */\n disconnecting: boolean;\n\n /**\n * Whether the wallet is reauthorizing after an account change\n */\n reconnecting: boolean;\n\n /**\n * Whether the wallet is auto-connecting\n */\n autoConnect: boolean;\n\n /**\n * The current network\n */\n network: Network | null;\n\n /**\n * Select a wallet by name\n * @param name The name of the wallet to select\n */\n selectWallet: (name: WalletName) => void;\n\n /**\n * Connect to the selected wallet\n */\n connect: (network: Network) => Promise<void>;\n\n /**\n * Disconnect from the connected wallet\n */\n disconnect: () => Promise<void>;\n\n /**\n * Execute a transaction\n */\n executeTransaction: (\n options: TransactionOptions,\n ) => Promise<{ transactionId: string } | undefined>;\n\n /**\n * Get transaction status\n */\n transactionStatus: (transactionId: string) => Promise<TransactionStatusResponse>;\n\n /**\n * Sign a message\n */\n signMessage: (message: Uint8Array | string) => Promise<Uint8Array | undefined>;\n\n /**\n * Switch the network\n */\n switchNetwork: (network: Network) => Promise<boolean>;\n\n /**\n * Decrypt a ciphertext\n */\n decrypt: (cipherText: string) => Promise<string>;\n\n /**\n * Request records\n */\n requestRecords: (\n program: string,\n includePlaintext?: boolean,\n statusFilter?: RecordStatusFilter,\n ) => Promise<unknown[]>;\n\n /**\n * Execute a deployment\n */\n executeDeployment: (deployment: AleoDeployment) => Promise<{ transactionId: string }>;\n /**\n * get transition view keys(tvk) for a transaction\n */\n transitionViewKeys: (transactionId: string) => Promise<string[]>;\n /**\n * get transaction of specific program\n * @param program The program ID\n * @returns array of transactionId\n */\n requestTransactionHistory: (program: string) => Promise<TxHistoryResult>;\n}\n\n/**\n * Wallet context\n */\nexport const WalletContext = createContext<WalletContextState | undefined>(undefined);\n\n/**\n * Custom hook to use the wallet context\n * @returns The wallet context state\n */\nexport function useWalletContext(): WalletContextState {\n const ctx = useContext(WalletContext);\n if (!ctx) {\n throw new Error('`useWalletContext` must be used inside `AleoWalletProvider`');\n }\n return ctx;\n}\n","import type { FC, ReactNode } from 'react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n WalletName,\n WalletReadyState,\n WalletAdapter,\n AleoDeployment,\n RecordStatusFilter,\n} from '@provablehq/aleo-wallet-standard';\nimport { Network, TransactionOptions } from '@provablehq/aleo-types';\nimport { Wallet, WalletContext } from './context';\nimport { useLocalStorage } from './useLocalStorage';\nimport {\n WalletError,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletNotSelectedError,\n MethodNotImplementedError,\n WalletSwitchNetworkError,\n DecryptPermission,\n} from '@provablehq/aleo-wallet-adaptor-core';\n\nexport interface WalletProviderProps {\n children: ReactNode;\n wallets: WalletAdapter[];\n network?: Network;\n autoConnect?: boolean;\n onError?: (error: WalletError) => void;\n localStorageKey?: string;\n decryptPermission?: DecryptPermission;\n programs?: string[];\n}\n\nconst initialState: {\n wallet: Wallet | null;\n adapter: WalletAdapter | null;\n publicKey: string | null;\n connected: boolean;\n network: Network | null;\n} = {\n wallet: null,\n adapter: null,\n publicKey: null,\n connected: false,\n network: null,\n};\n\nexport const AleoWalletProvider: FC<WalletProviderProps> = ({\n children,\n wallets: adapters,\n autoConnect = false,\n network: initialNetwork = Network.TESTNET,\n onError,\n localStorageKey = 'walletName',\n decryptPermission = DecryptPermission.NoDecrypt,\n programs,\n}) => {\n const [name, setName] = useLocalStorage<WalletName | null>(localStorageKey, null);\n const [{ wallet, adapter, publicKey, connected, network }, setState] = useState(initialState);\n const readyState = adapter?.readyState || WalletReadyState.UNSUPPORTED;\n const [connecting, setConnecting] = useState(false);\n const [disconnecting, setDisconnecting] = useState(false);\n const [reconnecting, setReconnecting] = useState(false);\n const isConnecting = useRef(false);\n const isDisconnecting = useRef(false);\n const isReconnecting = useRef(false);\n const isUnloading = useRef(false);\n const lastAuthorizedAccount = useRef<string | null>(null);\n\n // Wrap adapters to conform to the `Wallet` interface\n const [wallets, setWallets] = useState(() =>\n adapters.map(adapter => ({\n adapter,\n readyState: adapter.readyState,\n })),\n );\n\n // When the adapters change, start to listen for changes to their `readyState`\n useEffect(() => {\n // When the adapters change, wrap them to conform to the `Wallet` interface\n setWallets(wallets =>\n adapters.map((adapter, index) => {\n const wallet = wallets[index];\n // If the wallet hasn't changed, return the same instance\n return wallet && wallet.adapter === adapter && wallet.readyState === adapter.readyState\n ? wallet\n : {\n adapter: adapter,\n readyState: adapter.readyState,\n };\n }),\n );\n\n function handleReadyStateChange(this: WalletAdapter, readyState: WalletReadyState): void {\n setWallets(prevWallets => {\n const index = prevWallets.findIndex(({ adapter }) => adapter === this);\n if (index === -1) return prevWallets;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { adapter } = prevWallets[index]!;\n return [\n ...prevWallets.slice(0, index),\n { adapter, readyState },\n ...prevWallets.slice(index + 1),\n ];\n });\n }\n\n function handleNetworkChange(this: WalletAdapter, network: Network): void {\n setState(state => ({\n ...state,\n network,\n }));\n }\n\n adapters.forEach(adapter => adapter.on('readyStateChange', handleReadyStateChange, adapter));\n adapters.forEach(adapter => adapter.on('networkChange', handleNetworkChange, adapter));\n return () => {\n adapters.forEach(adapter => adapter.off('readyStateChange', handleReadyStateChange, adapter));\n adapters.forEach(adapter => adapter.off('networkChange', handleNetworkChange, adapter));\n };\n }, [adapters]);\n\n // When the selected wallet changes, initialize the state\n useEffect(() => {\n const wallet = name && wallets.find(({ adapter }) => adapter.name === name);\n if (wallet) {\n setState({\n wallet,\n adapter: wallet.adapter,\n connected: wallet.adapter.connected,\n publicKey: wallet.adapter.account?.address ?? null,\n network: wallet.adapter.network ?? null,\n });\n lastAuthorizedAccount.current = wallet.adapter.account?.address ?? null;\n } else {\n setState(initialState);\n lastAuthorizedAccount.current = null;\n }\n }, [name, wallets]);\n\n // If the window is closing or reloading, ignore disconnect and error events from the adapter\n useEffect(() => {\n function listener() {\n isUnloading.current = true;\n }\n\n window.addEventListener('beforeunload', listener);\n return () => window.removeEventListener('beforeunload', listener);\n }, [isUnloading]);\n\n // Handle the adapter's connect event\n const handleConnect = useCallback(() => {\n if (!adapter) return;\n setState(state => ({\n ...state,\n connected: adapter.connected,\n publicKey: adapter.account?.address ?? null,\n network: adapter.network ?? null,\n }));\n lastAuthorizedAccount.current = adapter.account?.address ?? null;\n }, [adapter]);\n\n // Handle the adapter's disconnect event\n const handleDisconnect = useCallback(() => {\n // Clear the selected wallet unless the window is unloading\n if (!isUnloading.current) setName(null);\n lastAuthorizedAccount.current = null;\n }, [isUnloading, setName]);\n\n // Disconnect the adapter from the wallet\n const disconnect = useCallback(async () => {\n if (isDisconnecting.current) return;\n if (!adapter) return setName(null);\n\n isDisconnecting.current = true;\n setDisconnecting(true);\n try {\n await adapter.disconnect();\n } catch (error: unknown) {\n // Clear the selected wallet\n setName(null);\n // Rethrow the error, and handleError will also be called\n throw error;\n } finally {\n setDisconnecting(false);\n isDisconnecting.current = false;\n }\n }, [isDisconnecting, adapter, setName]);\n\n // Handle the adapter's error event, and local errors\n const handleError = useCallback(\n (error: WalletError) => {\n // Call onError unless the window is unloading\n if (!isUnloading.current) (onError || console.error)(error);\n return error;\n },\n [isUnloading, onError],\n );\n\n // Handle the adapter's account change event\n const handleAccountChange = useCallback(async () => {\n if (!adapter || isReconnecting.current) return;\n\n isReconnecting.current = true;\n setReconnecting(true);\n setState(state => ({\n ...state,\n publicKey: null,\n connected: false,\n }));\n\n try {\n const account = await adapter.connect(initialNetwork, decryptPermission, programs);\n setState(state => ({\n ...state,\n publicKey: account.address,\n connected: adapter.connected,\n network: adapter.network ?? state.network,\n }));\n lastAuthorizedAccount.current = account.address ?? null;\n } catch (error: unknown) {\n handleError(error as WalletError);\n await disconnect();\n } finally {\n setReconnecting(false);\n isReconnecting.current = false;\n }\n }, [adapter, disconnect, handleError, initialNetwork, decryptPermission, programs]);\n\n // Setup and teardown event listeners when the adapter changes\n useEffect(() => {\n if (adapter) {\n adapter.on('connect', handleConnect);\n adapter.on('disconnect', handleDisconnect);\n adapter.on('error', handleError);\n adapter.on('accountChange', handleAccountChange);\n return () => {\n adapter.off('connect', handleConnect);\n adapter.off('disconnect', handleDisconnect);\n adapter.off('error', handleError);\n adapter.off('accountChange', handleAccountChange);\n };\n }\n }, [adapter, handleConnect, handleDisconnect, handleError, handleAccountChange]);\n\n // When the adapter changes, disconnect the old one\n useEffect(() => {\n return () => {\n if (adapter && adapter.connected) {\n adapter.disconnect();\n }\n };\n }, [adapter]);\n\n // If autoConnect is enabled, try to connect when the adapter changes and is ready\n useEffect(() => {\n if (\n isConnecting.current ||\n isReconnecting.current ||\n connected ||\n !autoConnect ||\n !adapter ||\n !(readyState === WalletReadyState.INSTALLED || readyState === WalletReadyState.LOADABLE)\n )\n return;\n\n (async function () {\n isConnecting.current = true;\n setConnecting(true);\n try {\n const account = await adapter.connect(initialNetwork, decryptPermission, programs);\n lastAuthorizedAccount.current = account.address ?? null;\n } catch (error: unknown) {\n // Clear the selected wallet\n setName(null);\n\n adapter.emit('error', error as WalletError);\n } finally {\n setConnecting(false);\n isConnecting.current = false;\n }\n })();\n }, [isConnecting, connected, autoConnect, adapter, readyState, setName]);\n\n useEffect(() => {\n if (adapter && connected && adapter.network !== initialNetwork) {\n try {\n switchNetwork(initialNetwork);\n } catch (error: unknown) {\n console.error('Failed to switch network, disconnecting');\n disconnect();\n }\n }\n }, [initialNetwork]);\n\n useEffect(() => {\n if (adapter && connected) {\n disconnect();\n }\n }, [decryptPermission, programs]);\n\n // Connect the adapter to the wallet\n const connect = useCallback(async () => {\n if (isConnecting.current || isDisconnecting.current || connected) return;\n if (!adapter) throw handleError(new WalletNotSelectedError());\n\n if (!(readyState === WalletReadyState.INSTALLED || readyState === WalletReadyState.LOADABLE)) {\n // Clear the selected wallet\n setName(null);\n\n if (typeof window !== 'undefined') {\n window.open(adapter.url, '_blank');\n }\n\n throw handleError(new WalletNotReadyError());\n }\n\n isConnecting.current = true;\n setConnecting(true);\n try {\n const account = await adapter.connect(initialNetwork, decryptPermission, programs);\n lastAuthorizedAccount.current = account.address ?? null;\n } catch (error: unknown) {\n // Clear the selected wallet\n setName(null);\n // Rethrow the error, and handleError will also be called\n adapter.emit('error', error as WalletError);\n throw error;\n } finally {\n setConnecting(false);\n isConnecting.current = false;\n }\n }, [isConnecting, isDisconnecting, connected, adapter, readyState, handleError, setName]);\n\n const executeTransaction = useCallback(\n async (transaction: TransactionOptions) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('executeTransaction' in adapter))\n throw handleError(new MethodNotImplementedError('executeTransaction'));\n\n await checkNetwork();\n\n return await adapter.executeTransaction(transaction);\n },\n [adapter, handleError, connected],\n );\n\n const transactionStatus = useCallback(\n async (transactionId: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('transactionStatus' in adapter))\n throw handleError(new MethodNotImplementedError('transactionStatus'));\n\n return await adapter.transactionStatus(transactionId);\n },\n [adapter, handleError, connected],\n );\n\n // Sign an arbitrary message if the wallet supports it\n const signMessage = useMemo(\n () =>\n async (message: Uint8Array | string): Promise<Uint8Array | undefined> => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('signMessage' in adapter))\n throw handleError(new MethodNotImplementedError('signMessage'));\n\n return await adapter.signMessage(\n typeof message === 'string' ? new TextEncoder().encode(message) : message,\n );\n },\n [adapter, handleError, connected],\n );\n\n const switchNetwork = useCallback(\n async (network: Network) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('switchNetwork' in adapter))\n throw handleError(new MethodNotImplementedError('switchNetwork'));\n let switched = false;\n try {\n isConnecting.current = true;\n setConnecting(true);\n await adapter.switchNetwork(network);\n switched = true;\n } catch (error: unknown) {\n if (error instanceof MethodNotImplementedError) {\n await disconnect();\n }\n\n console.error('Failed to switch network');\n } finally {\n isConnecting.current = false;\n setConnecting(false);\n }\n return switched;\n },\n [adapter, handleError, connected],\n );\n\n const decrypt = useCallback(\n async (cipherText: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('decrypt' in adapter))\n throw handleError(new MethodNotImplementedError('decrypt'));\n\n return await adapter.decrypt(cipherText);\n },\n [adapter, handleError, connected],\n );\n\n const requestRecords = useCallback(\n async (program: string, includePlaintext?: boolean, statusFilter?: RecordStatusFilter) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('requestRecords' in adapter))\n throw handleError(new MethodNotImplementedError('requestRecords'));\n\n return await adapter.requestRecords(program, includePlaintext, statusFilter);\n },\n [adapter, handleError, connected],\n );\n\n const executeDeployment = useCallback(\n async (deployment: AleoDeployment) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('executeDeployment' in adapter))\n throw handleError(new MethodNotImplementedError('executeDeployment'));\n\n return await adapter.executeDeployment(deployment);\n },\n [adapter, handleError, connected],\n );\n\n const transitionViewKeys = useCallback(\n async (transactionId: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('transitionViewKeys' in adapter))\n throw handleError(new MethodNotImplementedError('transitionViewKeys'));\n\n return await adapter.transitionViewKeys(transactionId);\n },\n [adapter, handleError, connected],\n );\n\n const requestTransactionHistory = useCallback(\n async (program: string) => {\n if (!connected) throw handleError(new WalletNotConnectedError());\n if (!adapter || !('requestTransactionHistory' in adapter))\n throw handleError(new MethodNotImplementedError('requestTransactionHistory'));\n\n return await adapter.requestTransactionHistory(program);\n },\n [adapter, handleError, connected],\n );\n\n const checkNetwork = useCallback(async () => {\n if (adapter && adapter.network !== initialNetwork) {\n const switchResult = await switchNetwork(initialNetwork);\n if (!switchResult) {\n throw handleError(new WalletSwitchNetworkError('Failed to switch network'));\n }\n }\n }, [adapter, initialNetwork, switchNetwork]);\n\n return (\n <WalletContext.Provider\n value={{\n autoConnect,\n wallets,\n wallet,\n address: publicKey ?? null,\n connected,\n connecting,\n reconnecting,\n disconnecting,\n network,\n selectWallet: setName,\n connect,\n disconnect,\n executeTransaction,\n transactionStatus,\n signMessage,\n switchNetwork,\n decrypt,\n requestRecords,\n executeDeployment,\n transitionViewKeys,\n requestTransactionHistory,\n }}\n >\n {children}\n </WalletContext.Provider>\n );\n};\n","import type { Dispatch, SetStateAction } from 'react';\nimport { useEffect, useRef, useState } from 'react';\n\nexport function useLocalStorage<T>(key: string, defaultState: T): [T, Dispatch<SetStateAction<T>>] {\n const state = useState<T>(() => {\n try {\n const value = localStorage.getItem(key);\n if (value) return JSON.parse(value) as T;\n } catch (error: unknown) {\n if (typeof window !== 'undefined') {\n console.error(error);\n }\n }\n\n return defaultState;\n });\n const value = state[0];\n\n const isFirstRender = useRef(true);\n useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false;\n return;\n }\n try {\n if (value === null) {\n localStorage.removeItem(key);\n } else {\n localStorage.setItem(key, JSON.stringify(value));\n }\n } catch (error: unknown) {\n if (typeof window !== 'undefined') {\n console.error(error);\n }\n }\n }, [value, key]);\n\n return state;\n}\n","import { useWalletContext } from './context';\nimport type { WalletContextState } from './context';\n\n/**\n * Custom hook to use the wallet\n * @returns The wallet context state\n */\nexport function useWallet(): WalletContextState {\n return useWalletContext();\n}\n"],"mappings":"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","names":["useEffect","useRef","useState","value","useState","useRef","adapter","useEffect","wallets","wallet","readyState","network"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@provablehq/aleo-wallet-adaptor-react",
|
|
3
|
-
"version": "0.3.0-alpha.
|
|
3
|
+
"version": "0.3.0-alpha.4",
|
|
4
4
|
"description": "React integration for wallet adapter",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
],
|
|
12
12
|
"sideEffects": false,
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@provablehq/aleo-types": "0.3.0-alpha.
|
|
15
|
-
"@provablehq/aleo-wallet-
|
|
16
|
-
"@provablehq/aleo-wallet-
|
|
14
|
+
"@provablehq/aleo-types": "0.3.0-alpha.4",
|
|
15
|
+
"@provablehq/aleo-wallet-standard": "0.3.0-alpha.4",
|
|
16
|
+
"@provablehq/aleo-wallet-adaptor-core": "0.3.0-alpha.4"
|
|
17
17
|
},
|
|
18
18
|
"repository": {
|
|
19
19
|
"type": "git",
|