@dropfi/xrpl-react 0.1.8 → 0.1.9

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.cjs CHANGED
@@ -20,24 +20,25 @@ function useXrplReact() {
20
20
  const [error, setError] = react.useState(null);
21
21
  const [isConnecting, setIsConnecting] = react.useState(false);
22
22
  react.useEffect(() => {
23
- if (typeof window === 'undefined' || !window.xrpl)
23
+ if (typeof window === 'undefined')
24
24
  return;
25
- window.xrpl?.initialize?.();
26
- setInitialized(true);
27
- }, []);
28
- react.useEffect(() => {
29
- if (typeof window === 'undefined' || !window.xrpl)
25
+ const xrpl = window.xrpl;
26
+ if (!xrpl)
30
27
  return;
31
28
  const handleSelectedNetwork = (val) => setNetwork(val);
32
29
  const handleSelectedAddress = (val) => setAddress(val);
33
30
  const handleConnectedAccounts = (val) => setConnectedAccounts(val);
34
- window.xrpl?.on?.('xrpl_selectedNetwork', handleSelectedNetwork);
35
- window.xrpl?.on?.('xrpl_selectedAddress', handleSelectedAddress);
36
- window.xrpl?.on?.('xrpl_connectedAccounts', handleConnectedAccounts);
31
+ // 1) attach listeners
32
+ xrpl.on?.('xrpl_selectedNetwork', handleSelectedNetwork);
33
+ xrpl.on?.('xrpl_selectedAddress', handleSelectedAddress);
34
+ xrpl.on?.('xrpl_connectedAccounts', handleConnectedAccounts);
35
+ // 2) then initialize
36
+ xrpl.initialize?.();
37
+ setInitialized(true);
37
38
  return () => {
38
- window.xrpl?.off?.('xrpl_selectedNetwork', handleSelectedNetwork);
39
- window.xrpl?.off?.('xrpl_selectedAddress', handleSelectedAddress);
40
- window.xrpl?.off?.('xrpl_connectedAccounts', handleConnectedAccounts);
39
+ xrpl.off?.('xrpl_selectedNetwork', handleSelectedNetwork);
40
+ xrpl.off?.('xrpl_selectedAddress', handleSelectedAddress);
41
+ xrpl.off?.('xrpl_connectedAccounts', handleConnectedAccounts);
41
42
  };
42
43
  }, []);
43
44
  const connect = async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/provider.tsx","../src/useXrplReact.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport interface XrplProviderConfig {\n // Add any future config options here\n}\n\ninterface XrplContextValue {\n config?: XrplProviderConfig;\n}\n\nexport const XrplContext = createContext<XrplContextValue | null>(null);\n\nexport interface XrplProviderProps {\n config?: XrplProviderConfig;\n children: React.ReactNode;\n}\n\nexport const XrplProvider: React.FC<XrplProviderProps> = ({ config, children }) => {\n return <XrplContext.Provider value={{ config }}>{children}</XrplContext.Provider>;\n};\n","import { useContext, useEffect, useMemo, useState } from 'react';\nimport { XrplContext } from './provider';\n\nexport function useXrplReact() {\n const context = useContext(XrplContext);\n if (!context) {\n throw new Error('useXrplReact must be used within a XrplProvider');\n }\n\n const [address, setAddress] = useState<string | undefined>();\n const [connectedAccounts, setConnectedAccounts] = useState<string[]>([]);\n const [network, setNetwork] = useState<string>('mainnet');\n const [initialized, setInitialized] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isConnecting, setIsConnecting] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined' || !window.xrpl) return;\n window.xrpl?.initialize?.();\n setInitialized(true);\n }, []);\n\n useEffect(() => {\n if (typeof window === 'undefined' || !window.xrpl) return;\n\n const handleSelectedNetwork = (val: string) => setNetwork(val);\n const handleSelectedAddress = (val: string) => setAddress(val);\n const handleConnectedAccounts = (val: string[]) => setConnectedAccounts(val);\n\n window.xrpl?.on?.('xrpl_selectedNetwork', handleSelectedNetwork);\n window.xrpl?.on?.('xrpl_selectedAddress', handleSelectedAddress);\n window.xrpl?.on?.('xrpl_connectedAccounts', handleConnectedAccounts);\n\n return () => {\n window.xrpl?.off?.('xrpl_selectedNetwork', handleSelectedNetwork);\n window.xrpl?.off?.('xrpl_selectedAddress', handleSelectedAddress);\n window.xrpl?.off?.('xrpl_connectedAccounts', handleConnectedAccounts);\n };\n }, []);\n\n const connect = async () => {\n setIsConnecting(true);\n try {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const response = await window.xrpl.connect();\n setAddress(response);\n return response;\n } catch (err: any) {\n setError(err.message);\n throw err;\n } finally {\n setIsConnecting(false);\n }\n };\n\n const disconnect = async () => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n await window.xrpl.disconnect(address);\n setAddress(undefined);\n };\n\n const sendTransaction = async (tx: any) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.sendTransaction(tx);\n };\n\n const changeNetwork = async (network: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.changeNetwork(network);\n };\n\n const signMessage = async (message: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const res = await window.xrpl.signMessage(message);\n if (res.error) throw new Error(res.error);\n return res;\n };\n\n return useMemo(\n () => ({\n address,\n wallet: address,\n isConnected: connectedAccounts.includes(address || ''),\n connect,\n disconnect,\n sendTransaction,\n changeNetwork,\n connectedAccounts,\n network,\n error,\n isConnecting,\n signMessage,\n initialized,\n }),\n [address, connectedAccounts, network, error, isConnecting, initialized],\n );\n}\n"],"names":["createContext","_jsx","useContext","useState","useEffect","useMemo"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/provider.tsx","../src/useXrplReact.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport interface XrplProviderConfig {\n // Add any future config options here\n}\n\ninterface XrplContextValue {\n config?: XrplProviderConfig;\n}\n\nexport const XrplContext = createContext<XrplContextValue | null>(null);\n\nexport interface XrplProviderProps {\n config?: XrplProviderConfig;\n children: React.ReactNode;\n}\n\nexport const XrplProvider: React.FC<XrplProviderProps> = ({ config, children }) => {\n return <XrplContext.Provider value={{ config }}>{children}</XrplContext.Provider>;\n};\n","import { useContext, useEffect, useMemo, useState } from 'react';\nimport { XrplContext } from './provider';\n\nexport function useXrplReact() {\n const context = useContext(XrplContext);\n if (!context) {\n throw new Error('useXrplReact must be used within a XrplProvider');\n }\n\n const [address, setAddress] = useState<string | undefined>();\n const [connectedAccounts, setConnectedAccounts] = useState<string[]>([]);\n const [network, setNetwork] = useState<string>('mainnet');\n const [initialized, setInitialized] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isConnecting, setIsConnecting] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const xrpl = window.xrpl;\n if (!xrpl) return;\n\n const handleSelectedNetwork = (val: string) => setNetwork(val);\n const handleSelectedAddress = (val: string) => setAddress(val);\n const handleConnectedAccounts = (val: string[]) => setConnectedAccounts(val);\n\n // 1) attach listeners\n xrpl.on?.('xrpl_selectedNetwork', handleSelectedNetwork);\n xrpl.on?.('xrpl_selectedAddress', handleSelectedAddress);\n xrpl.on?.('xrpl_connectedAccounts', handleConnectedAccounts);\n\n // 2) then initialize\n xrpl.initialize?.();\n setInitialized(true);\n\n return () => {\n xrpl.off?.('xrpl_selectedNetwork', handleSelectedNetwork);\n xrpl.off?.('xrpl_selectedAddress', handleSelectedAddress);\n xrpl.off?.('xrpl_connectedAccounts', handleConnectedAccounts);\n };\n }, []);\n\n const connect = async () => {\n setIsConnecting(true);\n try {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const response = await window.xrpl.connect();\n setAddress(response);\n return response;\n } catch (err: any) {\n setError(err.message);\n throw err;\n } finally {\n setIsConnecting(false);\n }\n };\n\n const disconnect = async () => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n await window.xrpl.disconnect(address);\n setAddress(undefined);\n };\n\n const sendTransaction = async (tx: any) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.sendTransaction(tx);\n };\n\n const changeNetwork = async (network: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.changeNetwork(network);\n };\n\n const signMessage = async (message: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const res = await window.xrpl.signMessage(message);\n if (res.error) throw new Error(res.error);\n return res;\n };\n\n return useMemo(\n () => ({\n address,\n wallet: address,\n isConnected: connectedAccounts.includes(address || ''),\n connect,\n disconnect,\n sendTransaction,\n changeNetwork,\n connectedAccounts,\n network,\n error,\n isConnecting,\n signMessage,\n initialized,\n }),\n [address, connectedAccounts, network, error, isConnecting, initialized],\n );\n}\n"],"names":["createContext","_jsx","useContext","useState","useEffect","useMemo"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -18,24 +18,25 @@ function useXrplReact() {
18
18
  const [error, setError] = useState(null);
19
19
  const [isConnecting, setIsConnecting] = useState(false);
20
20
  useEffect(() => {
21
- if (typeof window === 'undefined' || !window.xrpl)
21
+ if (typeof window === 'undefined')
22
22
  return;
23
- window.xrpl?.initialize?.();
24
- setInitialized(true);
25
- }, []);
26
- useEffect(() => {
27
- if (typeof window === 'undefined' || !window.xrpl)
23
+ const xrpl = window.xrpl;
24
+ if (!xrpl)
28
25
  return;
29
26
  const handleSelectedNetwork = (val) => setNetwork(val);
30
27
  const handleSelectedAddress = (val) => setAddress(val);
31
28
  const handleConnectedAccounts = (val) => setConnectedAccounts(val);
32
- window.xrpl?.on?.('xrpl_selectedNetwork', handleSelectedNetwork);
33
- window.xrpl?.on?.('xrpl_selectedAddress', handleSelectedAddress);
34
- window.xrpl?.on?.('xrpl_connectedAccounts', handleConnectedAccounts);
29
+ // 1) attach listeners
30
+ xrpl.on?.('xrpl_selectedNetwork', handleSelectedNetwork);
31
+ xrpl.on?.('xrpl_selectedAddress', handleSelectedAddress);
32
+ xrpl.on?.('xrpl_connectedAccounts', handleConnectedAccounts);
33
+ // 2) then initialize
34
+ xrpl.initialize?.();
35
+ setInitialized(true);
35
36
  return () => {
36
- window.xrpl?.off?.('xrpl_selectedNetwork', handleSelectedNetwork);
37
- window.xrpl?.off?.('xrpl_selectedAddress', handleSelectedAddress);
38
- window.xrpl?.off?.('xrpl_connectedAccounts', handleConnectedAccounts);
37
+ xrpl.off?.('xrpl_selectedNetwork', handleSelectedNetwork);
38
+ xrpl.off?.('xrpl_selectedAddress', handleSelectedAddress);
39
+ xrpl.off?.('xrpl_connectedAccounts', handleConnectedAccounts);
39
40
  };
40
41
  }, []);
41
42
  const connect = async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/provider.tsx","../src/useXrplReact.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport interface XrplProviderConfig {\n // Add any future config options here\n}\n\ninterface XrplContextValue {\n config?: XrplProviderConfig;\n}\n\nexport const XrplContext = createContext<XrplContextValue | null>(null);\n\nexport interface XrplProviderProps {\n config?: XrplProviderConfig;\n children: React.ReactNode;\n}\n\nexport const XrplProvider: React.FC<XrplProviderProps> = ({ config, children }) => {\n return <XrplContext.Provider value={{ config }}>{children}</XrplContext.Provider>;\n};\n","import { useContext, useEffect, useMemo, useState } from 'react';\nimport { XrplContext } from './provider';\n\nexport function useXrplReact() {\n const context = useContext(XrplContext);\n if (!context) {\n throw new Error('useXrplReact must be used within a XrplProvider');\n }\n\n const [address, setAddress] = useState<string | undefined>();\n const [connectedAccounts, setConnectedAccounts] = useState<string[]>([]);\n const [network, setNetwork] = useState<string>('mainnet');\n const [initialized, setInitialized] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isConnecting, setIsConnecting] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined' || !window.xrpl) return;\n window.xrpl?.initialize?.();\n setInitialized(true);\n }, []);\n\n useEffect(() => {\n if (typeof window === 'undefined' || !window.xrpl) return;\n\n const handleSelectedNetwork = (val: string) => setNetwork(val);\n const handleSelectedAddress = (val: string) => setAddress(val);\n const handleConnectedAccounts = (val: string[]) => setConnectedAccounts(val);\n\n window.xrpl?.on?.('xrpl_selectedNetwork', handleSelectedNetwork);\n window.xrpl?.on?.('xrpl_selectedAddress', handleSelectedAddress);\n window.xrpl?.on?.('xrpl_connectedAccounts', handleConnectedAccounts);\n\n return () => {\n window.xrpl?.off?.('xrpl_selectedNetwork', handleSelectedNetwork);\n window.xrpl?.off?.('xrpl_selectedAddress', handleSelectedAddress);\n window.xrpl?.off?.('xrpl_connectedAccounts', handleConnectedAccounts);\n };\n }, []);\n\n const connect = async () => {\n setIsConnecting(true);\n try {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const response = await window.xrpl.connect();\n setAddress(response);\n return response;\n } catch (err: any) {\n setError(err.message);\n throw err;\n } finally {\n setIsConnecting(false);\n }\n };\n\n const disconnect = async () => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n await window.xrpl.disconnect(address);\n setAddress(undefined);\n };\n\n const sendTransaction = async (tx: any) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.sendTransaction(tx);\n };\n\n const changeNetwork = async (network: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.changeNetwork(network);\n };\n\n const signMessage = async (message: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const res = await window.xrpl.signMessage(message);\n if (res.error) throw new Error(res.error);\n return res;\n };\n\n return useMemo(\n () => ({\n address,\n wallet: address,\n isConnected: connectedAccounts.includes(address || ''),\n connect,\n disconnect,\n sendTransaction,\n changeNetwork,\n connectedAccounts,\n network,\n error,\n isConnecting,\n signMessage,\n initialized,\n }),\n [address, connectedAccounts, network, error, isConnecting, initialized],\n );\n}\n"],"names":["_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/provider.tsx","../src/useXrplReact.tsx"],"sourcesContent":["import { createContext } from 'react';\n\nexport interface XrplProviderConfig {\n // Add any future config options here\n}\n\ninterface XrplContextValue {\n config?: XrplProviderConfig;\n}\n\nexport const XrplContext = createContext<XrplContextValue | null>(null);\n\nexport interface XrplProviderProps {\n config?: XrplProviderConfig;\n children: React.ReactNode;\n}\n\nexport const XrplProvider: React.FC<XrplProviderProps> = ({ config, children }) => {\n return <XrplContext.Provider value={{ config }}>{children}</XrplContext.Provider>;\n};\n","import { useContext, useEffect, useMemo, useState } from 'react';\nimport { XrplContext } from './provider';\n\nexport function useXrplReact() {\n const context = useContext(XrplContext);\n if (!context) {\n throw new Error('useXrplReact must be used within a XrplProvider');\n }\n\n const [address, setAddress] = useState<string | undefined>();\n const [connectedAccounts, setConnectedAccounts] = useState<string[]>([]);\n const [network, setNetwork] = useState<string>('mainnet');\n const [initialized, setInitialized] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [isConnecting, setIsConnecting] = useState(false);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const xrpl = window.xrpl;\n if (!xrpl) return;\n\n const handleSelectedNetwork = (val: string) => setNetwork(val);\n const handleSelectedAddress = (val: string) => setAddress(val);\n const handleConnectedAccounts = (val: string[]) => setConnectedAccounts(val);\n\n // 1) attach listeners\n xrpl.on?.('xrpl_selectedNetwork', handleSelectedNetwork);\n xrpl.on?.('xrpl_selectedAddress', handleSelectedAddress);\n xrpl.on?.('xrpl_connectedAccounts', handleConnectedAccounts);\n\n // 2) then initialize\n xrpl.initialize?.();\n setInitialized(true);\n\n return () => {\n xrpl.off?.('xrpl_selectedNetwork', handleSelectedNetwork);\n xrpl.off?.('xrpl_selectedAddress', handleSelectedAddress);\n xrpl.off?.('xrpl_connectedAccounts', handleConnectedAccounts);\n };\n }, []);\n\n const connect = async () => {\n setIsConnecting(true);\n try {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const response = await window.xrpl.connect();\n setAddress(response);\n return response;\n } catch (err: any) {\n setError(err.message);\n throw err;\n } finally {\n setIsConnecting(false);\n }\n };\n\n const disconnect = async () => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n await window.xrpl.disconnect(address);\n setAddress(undefined);\n };\n\n const sendTransaction = async (tx: any) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.sendTransaction(tx);\n };\n\n const changeNetwork = async (network: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n return await window.xrpl.changeNetwork(network);\n };\n\n const signMessage = async (message: string) => {\n if (!window.xrpl) throw new Error('No window.xrpl found');\n const res = await window.xrpl.signMessage(message);\n if (res.error) throw new Error(res.error);\n return res;\n };\n\n return useMemo(\n () => ({\n address,\n wallet: address,\n isConnected: connectedAccounts.includes(address || ''),\n connect,\n disconnect,\n sendTransaction,\n changeNetwork,\n connectedAccounts,\n network,\n error,\n isConnecting,\n signMessage,\n initialized,\n }),\n [address, connectedAccounts, network, error, isConnecting, initialized],\n );\n}\n"],"names":["_jsx"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dropfi/xrpl-react",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "React provider and hook for XRPL dApps using DropFi wallet",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",