@thru/react-sdk 0.1.38 → 0.2.1
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.ts +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
- package/src/hooks/useWallet.ts +7 -0
package/dist/index.d.ts
CHANGED
|
@@ -57,6 +57,7 @@ declare function useWallet(): {
|
|
|
57
57
|
accounts: _thru_chain_interfaces.WalletAccount[];
|
|
58
58
|
connect: (options?: ConnectOptions) => Promise<ConnectResult>;
|
|
59
59
|
disconnect: () => Promise<void>;
|
|
60
|
+
mountInline: (container: HTMLElement) => Promise<void>;
|
|
60
61
|
isConnected: boolean;
|
|
61
62
|
isConnecting: boolean;
|
|
62
63
|
selectedAccount: _thru_chain_interfaces.WalletAccount | null;
|
package/dist/index.js
CHANGED
|
@@ -188,11 +188,16 @@ function useWallet() {
|
|
|
188
188
|
throw error;
|
|
189
189
|
}
|
|
190
190
|
};
|
|
191
|
+
const mountInline = async (container) => {
|
|
192
|
+
const readySdk = walletRef.current ?? await waitForWallet(() => walletRef.current);
|
|
193
|
+
await readySdk.mountInline(container);
|
|
194
|
+
};
|
|
191
195
|
return {
|
|
192
196
|
wallet: wallet?.thru,
|
|
193
197
|
accounts,
|
|
194
198
|
connect,
|
|
195
199
|
disconnect,
|
|
200
|
+
mountInline,
|
|
196
201
|
isConnected: isConnected && !!wallet,
|
|
197
202
|
isConnecting,
|
|
198
203
|
selectedAccount,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ThruContext.ts","../src/ThruProvider.tsx","../src/hooks/useThru.ts","../src/hooks/useAccounts.ts","../src/hooks/useWallet.ts"],"names":["useEffect"],"mappings":"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","file":"index.js","sourcesContent":["import { BrowserSDK } from \"@thru/browser-sdk\";\nimport { WalletAccount } from \"@thru/chain-interfaces\";\nimport { Thru } from \"@thru/thru-sdk/client\";\nimport { createContext } from \"react\";\n\nexport interface ThruContextValue {\n wallet: BrowserSDK | null;\n isConnected: boolean;\n accounts: WalletAccount[];\n isConnecting: boolean;\n error: Error | null;\n thru: Thru | null;\n selectedAccount: WalletAccount | null;\n selectAccount: (account: WalletAccount) => Promise<void>;\n}\n\nconst defaultContextValue: ThruContextValue = {\n wallet: null,\n isConnected: false,\n accounts: [],\n isConnecting: false,\n error: null,\n thru: null,\n selectedAccount: null,\n selectAccount: async () => undefined,\n};\n\nexport const ThruContext = createContext<ThruContextValue>(defaultContextValue);\n","'use client';\n\nimport { BrowserSDK, type BrowserSDKConfig, type WalletAccount } from '@thru/browser-sdk';\nimport type { Thru } from '@thru/thru-sdk/client';\nimport { ReactNode, useCallback, useEffect, useState } from 'react';\nimport { ThruContext } from './ThruContext';\n\nexport interface ThruProviderProps {\n children: ReactNode;\n config: BrowserSDKConfig;\n}\n\n/**\n * ThruProvider - React context provider for Thru Wallet SDK\n * Wraps the BrowserSDK and exposes state via context\n */\nexport function ThruProvider({ children, config }: ThruProviderProps) {\n const [sdk, setSdk] = useState<BrowserSDK | null>(null);\n const [thru, setThru] = useState<Thru | null>(null);\n const [isConnected, setIsConnected] = useState(false);\n const [accounts, setAccounts] = useState<WalletAccount[]>([]);\n const [isConnecting, setIsConnecting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [selectedAccount, setSelectedAccount] = useState<WalletAccount | null>(null);\n\n useEffect(() => {\n // Create SDK instance\n const sdkInstance = new BrowserSDK(config);\n setSdk(sdkInstance);\n setThru(sdkInstance.getThru());\n\n const updateAccountsFromSdk = () => {\n setAccounts(sdkInstance.getAccounts());\n };\n\n const updateSelectedAccount = (account?: WalletAccount | null) => {\n if (account) {\n setSelectedAccount(account);\n return;\n }\n const fallback = sdkInstance.getSelectedAccount() ?? sdkInstance.getAccounts()[0] ?? null;\n setSelectedAccount(fallback);\n };\n\n sdkInstance.initialize().catch((err) => {\n console.error('Failed to initialize SDK:', err);\n setError(err);\n });\n\n // Listen to SDK events\n const handleConnect = (result: any) => {\n // Check if this is the initial \"connecting\" status or actual connection\n if (result.status === 'connecting') {\n setIsConnecting(true);\n setError(null);\n } else {\n setIsConnected(true);\n updateAccountsFromSdk();\n setIsConnecting(false);\n setError(null);\n if (result?.accounts?.length) {\n setSelectedAccount(result.accounts[0]);\n } else {\n updateSelectedAccount();\n }\n }\n };\n\n const resetData = () => {\n setIsConnected(false);\n setAccounts([]);\n setIsConnecting(false);\n setSelectedAccount(null);\n };\n\n const handleDisconnect = () => {\n resetData();\n };\n\n const handleError = (err: any) => {\n setError(err.error || new Error('Unknown error'));\n setIsConnecting(false);\n };\n\n const handleLock = () => {\n resetData();\n };\n\n const handleAccountChanged = (account: WalletAccount | null | undefined) => {\n updateAccountsFromSdk();\n updateSelectedAccount(account ?? undefined);\n };\n\n sdkInstance.on('connect', handleConnect);\n sdkInstance.on('disconnect', handleDisconnect);\n sdkInstance.on('error', handleError);\n sdkInstance.on('lock', handleLock);\n sdkInstance.on('accountChanged', handleAccountChanged);\n\n // Cleanup on unmount\n return () => {\n sdkInstance.off('connect', handleConnect);\n sdkInstance.off('disconnect', handleDisconnect);\n sdkInstance.off('error', handleError);\n sdkInstance.off('lock', handleLock);\n sdkInstance.off('accountChanged', handleAccountChanged);\n sdkInstance.destroy();\n };\n }, []); // Empty dependency array - only create SDK once\n\n const selectAccount = useCallback(async (account: WalletAccount) => {\n if (!sdk) {\n throw new Error('BrowserSDK not initialized');\n }\n\n try {\n const updated = await sdk.selectAccount(account.address);\n setSelectedAccount(updated);\n setAccounts(prev => {\n const index = prev.findIndex(acc => acc.address === updated.address);\n if (index >= 0) {\n const next = [...prev];\n next[index] = updated;\n return next;\n }\n return [...prev, updated];\n });\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to select account'));\n throw err;\n }\n }, [sdk]);\n\n return (\n <ThruContext.Provider\n value={{\n thru,\n wallet: sdk,\n isConnected,\n accounts,\n isConnecting,\n error,\n selectedAccount,\n selectAccount,\n }}\n >\n {children}\n </ThruContext.Provider>\n );\n}\n","import { useContext } from \"react\";\nimport { ThruContext } from \"../ThruContext\";\n\n/**\n * useThru - Access the Thru SDK context\n * Must be used within a ThruProvider\n */\nexport function useThru() {\n const context = useContext(ThruContext);\n return context;\n}","import type { WalletAccount } from '@thru/chain-interfaces';\nimport { useEffect, useMemo } from 'react';\nimport { useThru } from './useThru';\n\nexport interface UseAccountsResult {\n accounts: WalletAccount[];\n selectedAccount: WalletAccount | null;\n isConnected: boolean;\n isConnecting: boolean;\n}\n\nexport interface UseAccountsOptions {\n onAccountSelect?: (account: WalletAccount) => void;\n}\n\n/**\n * useAccounts - Exposes connected wallet accounts and selection helpers.\n */\nexport function useAccounts(options?: UseAccountsOptions): UseAccountsResult {\n const { accounts, selectedAccount, isConnected, isConnecting } = useThru();\n const externalOnSelect = options?.onAccountSelect;\n\n useEffect(() => {\n if (selectedAccount) {\n externalOnSelect?.(selectedAccount);\n }\n }, [externalOnSelect, selectedAccount]);\n\n return useMemo(\n () => ({\n accounts,\n selectedAccount,\n isConnected,\n isConnecting,\n }),\n [accounts, selectedAccount, isConnected, isConnecting]\n );\n}\n","import { BrowserSDK, ConnectOptions } from '@thru/browser-sdk';\nimport type { ConnectResult, IThruChain } from '@thru/chain-interfaces';\nimport { useEffect, useRef } from 'react';\nimport { useThru } from './useThru';\n\nfunction waitForWallet(getWallet: () => BrowserSDK | null, timeout = 5000, interval = 100): Promise<BrowserSDK> {\n return new Promise((resolve, reject) => {\n const start = Date.now();\n const check = () => {\n const sdk = getWallet();\n if (sdk) return resolve(sdk);\n if (Date.now() - start > timeout) return reject(new Error('SDK not initialized in time'));\n setTimeout(check, interval);\n };\n check();\n });\n}\n\n/**\n * useThruChain - Hook for accessing the Thru chain API exposed by the Browser SDK.\n * Returns the chain instance (if available) and a boolean indicating readiness.\n */\nexport function useWallet() {\n const { wallet, isConnected, accounts, selectedAccount, selectAccount, isConnecting } = useThru();\n const walletRef = useRef(wallet);\n\n useEffect(() => {\n walletRef.current = wallet;\n }, [wallet]);\n\n const disconnect = async (): Promise<void> => {\n if (!wallet) {\n throw new Error('SDK not initialized');\n }\n await wallet.disconnect();\n };\n\n const connect = async (options?: ConnectOptions): Promise<ConnectResult> => {\n try {\n const readySdk =\n walletRef.current ?? (await waitForWallet(() => walletRef.current));\n const result = await readySdk.connect(options);\n return result;\n } catch (err) {\n const error = err as Error;\n throw error;\n }\n };\n\n return {\n wallet: wallet?.thru as IThruChain | undefined,\n accounts,\n connect,\n disconnect,\n isConnected: isConnected && !!wallet,\n isConnecting,\n selectedAccount,\n selectAccount,\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/ThruContext.ts","../src/ThruProvider.tsx","../src/hooks/useThru.ts","../src/hooks/useAccounts.ts","../src/hooks/useWallet.ts"],"names":["useEffect"],"mappings":";;;;;AAgBA,IAAM,mBAAA,GAAwC;AAAA,EAC1C,MAAA,EAAQ,IAAA;AAAA,EACR,WAAA,EAAa,KAAA;AAAA,EACb,UAAU,EAAC;AAAA,EACX,YAAA,EAAc,KAAA;AAAA,EACd,KAAA,EAAO,IAAA;AAAA,EACP,IAAA,EAAM,IAAA;AAAA,EACN,eAAA,EAAiB,IAAA;AAAA,EACjB,eAAe,YAAY;AAC/B,CAAA;AAEO,IAAM,WAAA,GAAc,cAAgC,mBAAmB,CAAA;ACXvE,SAAS,YAAA,CAAa,EAAE,QAAA,EAAU,MAAA,EAAO,EAAsB;AACpE,EAAA,MAAM,CAAC,GAAA,EAAK,MAAM,CAAA,GAAI,SAA4B,IAAI,CAAA;AACtD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,SAAsB,IAAI,CAAA;AAClD,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,QAAA,CAA0B,EAAE,CAAA;AAC5D,EAAA,MAAM,CAAC,YAAA,EAAc,eAAe,CAAA,GAAI,SAAS,KAAK,CAAA;AACtD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA;AACrD,EAAA,MAAM,CAAC,eAAA,EAAiB,kBAAkB,CAAA,GAAI,SAA+B,IAAI,CAAA;AAEjF,EAAA,SAAA,CAAU,MAAM;AAEd,IAAA,MAAM,WAAA,GAAc,IAAI,UAAA,CAAW,MAAM,CAAA;AACzC,IAAA,MAAA,CAAO,WAAW,CAAA;AAClB,IAAA,OAAA,CAAQ,WAAA,CAAY,SAAS,CAAA;AAE7B,IAAA,MAAM,wBAAwB,MAAM;AAClC,MAAA,WAAA,CAAY,WAAA,CAAY,aAAa,CAAA;AAAA,IACvC,CAAA;AAEA,IAAA,MAAM,qBAAA,GAAwB,CAAC,OAAA,KAAmC;AAChE,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,kBAAA,CAAmB,OAAO,CAAA;AAC1B,QAAA;AAAA,MACF;AACA,MAAA,MAAM,QAAA,GAAW,YAAY,kBAAA,EAAmB,IAAK,YAAY,WAAA,EAAY,CAAE,CAAC,CAAA,IAAK,IAAA;AACrF,MAAA,kBAAA,CAAmB,QAAQ,CAAA;AAAA,IAC7B,CAAA;AAEA,IAAA,WAAA,CAAY,UAAA,EAAW,CAAE,KAAA,CAAM,CAAC,GAAA,KAAQ;AACtC,MAAA,OAAA,CAAQ,KAAA,CAAM,6BAA6B,GAAG,CAAA;AAC9C,MAAA,QAAA,CAAS,GAAG,CAAA;AAAA,IACd,CAAC,CAAA;AAGD,IAAA,MAAM,aAAA,GAAgB,CAAC,MAAA,KAAgB;AAErC,MAAA,IAAI,MAAA,CAAO,WAAW,YAAA,EAAc;AAClC,QAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,QAAA,QAAA,CAAS,IAAI,CAAA;AAAA,MACf,CAAA,MAAO;AACL,QAAA,cAAA,CAAe,IAAI,CAAA;AACnB,QAAA,qBAAA,EAAsB;AACtB,QAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,QAAA,QAAA,CAAS,IAAI,CAAA;AACb,QAAA,IAAI,MAAA,EAAQ,UAAU,MAAA,EAAQ;AAC5B,UAAA,kBAAA,CAAmB,MAAA,CAAO,QAAA,CAAS,CAAC,CAAC,CAAA;AAAA,QACvC,CAAA,MAAO;AACL,UAAA,qBAAA,EAAsB;AAAA,QACxB;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,cAAA,CAAe,KAAK,CAAA;AACpB,MAAA,WAAA,CAAY,EAAE,CAAA;AACd,MAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,MAAA,kBAAA,CAAmB,IAAI,CAAA;AAAA,IACzB,CAAA;AAEA,IAAA,MAAM,mBAAmB,MAAM;AAC7B,MAAA,SAAA,EAAU;AAAA,IACZ,CAAA;AAEA,IAAA,MAAM,WAAA,GAAc,CAAC,GAAA,KAAa;AAChC,MAAA,QAAA,CAAS,GAAA,CAAI,KAAA,IAAS,IAAI,KAAA,CAAM,eAAe,CAAC,CAAA;AAChD,MAAA,eAAA,CAAgB,KAAK,CAAA;AAAA,IACvB,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACvB,MAAA,SAAA,EAAU;AAAA,IACZ,CAAA;AAEA,IAAA,MAAM,oBAAA,GAAuB,CAAC,OAAA,KAA8C;AAC1E,MAAA,qBAAA,EAAsB;AACtB,MAAA,qBAAA,CAAsB,WAAW,MAAS,CAAA;AAAA,IAC5C,CAAA;AAEA,IAAA,WAAA,CAAY,EAAA,CAAG,WAAW,aAAa,CAAA;AACvC,IAAA,WAAA,CAAY,EAAA,CAAG,cAAc,gBAAgB,CAAA;AAC7C,IAAA,WAAA,CAAY,EAAA,CAAG,SAAS,WAAW,CAAA;AACnC,IAAA,WAAA,CAAY,EAAA,CAAG,QAAQ,UAAU,CAAA;AACjC,IAAA,WAAA,CAAY,EAAA,CAAG,kBAAkB,oBAAoB,CAAA;AAGrD,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,CAAY,GAAA,CAAI,WAAW,aAAa,CAAA;AACxC,MAAA,WAAA,CAAY,GAAA,CAAI,cAAc,gBAAgB,CAAA;AAC9C,MAAA,WAAA,CAAY,GAAA,CAAI,SAAS,WAAW,CAAA;AACpC,MAAA,WAAA,CAAY,GAAA,CAAI,QAAQ,UAAU,CAAA;AAClC,MAAA,WAAA,CAAY,GAAA,CAAI,kBAAkB,oBAAoB,CAAA;AACtD,MAAA,WAAA,CAAY,OAAA,EAAQ;AAAA,IACtB,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAgB,WAAA,CAAY,OAAO,OAAA,KAA2B;AAClE,IAAA,IAAI,CAAC,GAAA,EAAK;AACR,MAAA,MAAM,IAAI,MAAM,4BAA4B,CAAA;AAAA,IAC9C;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,OAAA,GAAU,MAAM,GAAA,CAAI,aAAA,CAAc,QAAQ,OAAO,CAAA;AACvD,MAAA,kBAAA,CAAmB,OAAO,CAAA;AAC1B,MAAA,WAAA,CAAY,CAAA,IAAA,KAAQ;AAClB,QAAA,MAAM,QAAQ,IAAA,CAAK,SAAA,CAAU,SAAO,GAAA,CAAI,OAAA,KAAY,QAAQ,OAAO,CAAA;AACnE,QAAA,IAAI,SAAS,CAAA,EAAG;AACd,UAAA,MAAM,IAAA,GAAO,CAAC,GAAG,IAAI,CAAA;AACrB,UAAA,IAAA,CAAK,KAAK,CAAA,GAAI,OAAA;AACd,UAAA,OAAO,IAAA;AAAA,QACT;AACA,QAAA,OAAO,CAAC,GAAG,IAAA,EAAM,OAAO,CAAA;AAAA,MAC1B,CAAC,CAAA;AAAA,IACH,SAAS,GAAA,EAAK;AACZ,MAAA,QAAA,CAAS,eAAe,KAAA,GAAQ,GAAA,GAAM,IAAI,KAAA,CAAM,0BAA0B,CAAC,CAAA;AAC3E,MAAA,MAAM,GAAA;AAAA,IACR;AAAA,EACF,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,uBACE,GAAA;AAAA,IAAC,WAAA,CAAY,QAAA;AAAA,IAAZ;AAAA,MACC,KAAA,EAAO;AAAA,QACL,IAAA;AAAA,QACA,MAAA,EAAQ,GAAA;AAAA,QACR,WAAA;AAAA,QACA,QAAA;AAAA,QACA,YAAA;AAAA,QACA,KAAA;AAAA,QACA,eAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC;AAAA;AAAA,GACH;AAEJ;AC9IO,SAAS,OAAA,GAAU;AACtB,EAAA,MAAM,OAAA,GAAU,WAAW,WAAW,CAAA;AACtC,EAAA,OAAO,OAAA;AACX;;;ACQO,SAAS,YAAY,OAAA,EAAiD;AAC3E,EAAA,MAAM,EAAE,QAAA,EAAU,eAAA,EAAiB,WAAA,EAAa,YAAA,KAAiB,OAAA,EAAQ;AACzE,EAAA,MAAM,mBAAmB,OAAA,EAAS,eAAA;AAElC,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,eAAA,EAAiB;AACnB,MAAA,gBAAA,GAAmB,eAAe,CAAA;AAAA,IACpC;AAAA,EACF,CAAA,EAAG,CAAC,gBAAA,EAAkB,eAAe,CAAC,CAAA;AAEtC,EAAA,OAAO,OAAA;AAAA,IACL,OAAO;AAAA,MACL,QAAA;AAAA,MACA,eAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA,CAAC,QAAA,EAAU,eAAA,EAAiB,WAAA,EAAa,YAAY;AAAA,GACvD;AACF;AChCA,SAAS,aAAA,CAAc,SAAA,EAAoC,OAAA,GAAU,GAAA,EAAM,WAAW,GAAA,EAA0B;AAC9G,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAA,KAAW;AACtC,IAAA,MAAM,KAAA,GAAQ,KAAK,GAAA,EAAI;AACvB,IAAA,MAAM,QAAQ,MAAM;AAClB,MAAA,MAAM,MAAM,SAAA,EAAU;AACtB,MAAA,IAAI,GAAA,EAAK,OAAO,OAAA,CAAQ,GAAG,CAAA;AAC3B,MAAA,IAAI,IAAA,CAAK,GAAA,EAAI,GAAI,KAAA,GAAQ,OAAA,SAAgB,MAAA,CAAO,IAAI,KAAA,CAAM,6BAA6B,CAAC,CAAA;AACxF,MAAA,UAAA,CAAW,OAAO,QAAQ,CAAA;AAAA,IAC5B,CAAA;AACA,IAAA,KAAA,EAAM;AAAA,EACR,CAAC,CAAA;AACH;AAMO,SAAS,SAAA,GAAY;AAC1B,EAAA,MAAM,EAAE,QAAQ,WAAA,EAAa,QAAA,EAAU,iBAAiB,aAAA,EAAe,YAAA,KAAiB,OAAA,EAAQ;AAChG,EAAA,MAAM,SAAA,GAAY,OAAO,MAAM,CAAA;AAE/B,EAAAA,UAAU,MAAM;AACd,IAAA,SAAA,CAAU,OAAA,GAAU,MAAA;AAAA,EACtB,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,MAAM,aAAa,YAA2B;AAC5C,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAM,IAAI,MAAM,qBAAqB,CAAA;AAAA,IACvC;AACA,IAAA,MAAM,OAAO,UAAA,EAAW;AAAA,EAC1B,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,OAAO,OAAA,KAAqD;AAC1E,IAAA,IAAI;AACF,MAAA,MAAM,WACJ,SAAA,CAAU,OAAA,IAAY,MAAM,aAAA,CAAc,MAAM,UAAU,OAAO,CAAA;AACnE,MAAA,MAAM,MAAA,GAAS,MAAM,QAAA,CAAS,OAAA,CAAQ,OAAO,CAAA;AAC7C,MAAA,OAAO,MAAA;AAAA,IACT,SAAS,GAAA,EAAK;AACZ,MAAA,MAAM,KAAA,GAAQ,GAAA;AACd,MAAA,MAAM,KAAA;AAAA,IACR;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,WAAA,GAAc,OAAO,SAAA,KAA0C;AACnE,IAAA,MAAM,WACJ,SAAA,CAAU,OAAA,IAAY,MAAM,aAAA,CAAc,MAAM,UAAU,OAAO,CAAA;AACnE,IAAA,MAAM,QAAA,CAAS,YAAY,SAAS,CAAA;AAAA,EACtC,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,QAAQ,MAAA,EAAQ,IAAA;AAAA,IAChB,QAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA,EAAa,WAAA,IAAe,CAAC,CAAC,MAAA;AAAA,IAC9B,YAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF","file":"index.js","sourcesContent":["import { BrowserSDK } from \"@thru/browser-sdk\";\nimport { WalletAccount } from \"@thru/chain-interfaces\";\nimport { Thru } from \"@thru/thru-sdk/client\";\nimport { createContext } from \"react\";\n\nexport interface ThruContextValue {\n wallet: BrowserSDK | null;\n isConnected: boolean;\n accounts: WalletAccount[];\n isConnecting: boolean;\n error: Error | null;\n thru: Thru | null;\n selectedAccount: WalletAccount | null;\n selectAccount: (account: WalletAccount) => Promise<void>;\n}\n\nconst defaultContextValue: ThruContextValue = {\n wallet: null,\n isConnected: false,\n accounts: [],\n isConnecting: false,\n error: null,\n thru: null,\n selectedAccount: null,\n selectAccount: async () => undefined,\n};\n\nexport const ThruContext = createContext<ThruContextValue>(defaultContextValue);\n","'use client';\n\nimport { BrowserSDK, type BrowserSDKConfig, type WalletAccount } from '@thru/browser-sdk';\nimport type { Thru } from '@thru/thru-sdk/client';\nimport { ReactNode, useCallback, useEffect, useState } from 'react';\nimport { ThruContext } from './ThruContext';\n\nexport interface ThruProviderProps {\n children: ReactNode;\n config: BrowserSDKConfig;\n}\n\n/**\n * ThruProvider - React context provider for Thru Wallet SDK\n * Wraps the BrowserSDK and exposes state via context\n */\nexport function ThruProvider({ children, config }: ThruProviderProps) {\n const [sdk, setSdk] = useState<BrowserSDK | null>(null);\n const [thru, setThru] = useState<Thru | null>(null);\n const [isConnected, setIsConnected] = useState(false);\n const [accounts, setAccounts] = useState<WalletAccount[]>([]);\n const [isConnecting, setIsConnecting] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n const [selectedAccount, setSelectedAccount] = useState<WalletAccount | null>(null);\n\n useEffect(() => {\n // Create SDK instance\n const sdkInstance = new BrowserSDK(config);\n setSdk(sdkInstance);\n setThru(sdkInstance.getThru());\n\n const updateAccountsFromSdk = () => {\n setAccounts(sdkInstance.getAccounts());\n };\n\n const updateSelectedAccount = (account?: WalletAccount | null) => {\n if (account) {\n setSelectedAccount(account);\n return;\n }\n const fallback = sdkInstance.getSelectedAccount() ?? sdkInstance.getAccounts()[0] ?? null;\n setSelectedAccount(fallback);\n };\n\n sdkInstance.initialize().catch((err) => {\n console.error('Failed to initialize SDK:', err);\n setError(err);\n });\n\n // Listen to SDK events\n const handleConnect = (result: any) => {\n // Check if this is the initial \"connecting\" status or actual connection\n if (result.status === 'connecting') {\n setIsConnecting(true);\n setError(null);\n } else {\n setIsConnected(true);\n updateAccountsFromSdk();\n setIsConnecting(false);\n setError(null);\n if (result?.accounts?.length) {\n setSelectedAccount(result.accounts[0]);\n } else {\n updateSelectedAccount();\n }\n }\n };\n\n const resetData = () => {\n setIsConnected(false);\n setAccounts([]);\n setIsConnecting(false);\n setSelectedAccount(null);\n };\n\n const handleDisconnect = () => {\n resetData();\n };\n\n const handleError = (err: any) => {\n setError(err.error || new Error('Unknown error'));\n setIsConnecting(false);\n };\n\n const handleLock = () => {\n resetData();\n };\n\n const handleAccountChanged = (account: WalletAccount | null | undefined) => {\n updateAccountsFromSdk();\n updateSelectedAccount(account ?? undefined);\n };\n\n sdkInstance.on('connect', handleConnect);\n sdkInstance.on('disconnect', handleDisconnect);\n sdkInstance.on('error', handleError);\n sdkInstance.on('lock', handleLock);\n sdkInstance.on('accountChanged', handleAccountChanged);\n\n // Cleanup on unmount\n return () => {\n sdkInstance.off('connect', handleConnect);\n sdkInstance.off('disconnect', handleDisconnect);\n sdkInstance.off('error', handleError);\n sdkInstance.off('lock', handleLock);\n sdkInstance.off('accountChanged', handleAccountChanged);\n sdkInstance.destroy();\n };\n }, []); // Empty dependency array - only create SDK once\n\n const selectAccount = useCallback(async (account: WalletAccount) => {\n if (!sdk) {\n throw new Error('BrowserSDK not initialized');\n }\n\n try {\n const updated = await sdk.selectAccount(account.address);\n setSelectedAccount(updated);\n setAccounts(prev => {\n const index = prev.findIndex(acc => acc.address === updated.address);\n if (index >= 0) {\n const next = [...prev];\n next[index] = updated;\n return next;\n }\n return [...prev, updated];\n });\n } catch (err) {\n setError(err instanceof Error ? err : new Error('Failed to select account'));\n throw err;\n }\n }, [sdk]);\n\n return (\n <ThruContext.Provider\n value={{\n thru,\n wallet: sdk,\n isConnected,\n accounts,\n isConnecting,\n error,\n selectedAccount,\n selectAccount,\n }}\n >\n {children}\n </ThruContext.Provider>\n );\n}\n","import { useContext } from \"react\";\nimport { ThruContext } from \"../ThruContext\";\n\n/**\n * useThru - Access the Thru SDK context\n * Must be used within a ThruProvider\n */\nexport function useThru() {\n const context = useContext(ThruContext);\n return context;\n}","import type { WalletAccount } from '@thru/chain-interfaces';\nimport { useEffect, useMemo } from 'react';\nimport { useThru } from './useThru';\n\nexport interface UseAccountsResult {\n accounts: WalletAccount[];\n selectedAccount: WalletAccount | null;\n isConnected: boolean;\n isConnecting: boolean;\n}\n\nexport interface UseAccountsOptions {\n onAccountSelect?: (account: WalletAccount) => void;\n}\n\n/**\n * useAccounts - Exposes connected wallet accounts and selection helpers.\n */\nexport function useAccounts(options?: UseAccountsOptions): UseAccountsResult {\n const { accounts, selectedAccount, isConnected, isConnecting } = useThru();\n const externalOnSelect = options?.onAccountSelect;\n\n useEffect(() => {\n if (selectedAccount) {\n externalOnSelect?.(selectedAccount);\n }\n }, [externalOnSelect, selectedAccount]);\n\n return useMemo(\n () => ({\n accounts,\n selectedAccount,\n isConnected,\n isConnecting,\n }),\n [accounts, selectedAccount, isConnected, isConnecting]\n );\n}\n","import { BrowserSDK, ConnectOptions } from '@thru/browser-sdk';\nimport type { ConnectResult, IThruChain } from '@thru/chain-interfaces';\nimport { useEffect, useRef } from 'react';\nimport { useThru } from './useThru';\n\nfunction waitForWallet(getWallet: () => BrowserSDK | null, timeout = 5000, interval = 100): Promise<BrowserSDK> {\n return new Promise((resolve, reject) => {\n const start = Date.now();\n const check = () => {\n const sdk = getWallet();\n if (sdk) return resolve(sdk);\n if (Date.now() - start > timeout) return reject(new Error('SDK not initialized in time'));\n setTimeout(check, interval);\n };\n check();\n });\n}\n\n/**\n * useThruChain - Hook for accessing the Thru chain API exposed by the Browser SDK.\n * Returns the chain instance (if available) and a boolean indicating readiness.\n */\nexport function useWallet() {\n const { wallet, isConnected, accounts, selectedAccount, selectAccount, isConnecting } = useThru();\n const walletRef = useRef(wallet);\n\n useEffect(() => {\n walletRef.current = wallet;\n }, [wallet]);\n\n const disconnect = async (): Promise<void> => {\n if (!wallet) {\n throw new Error('SDK not initialized');\n }\n await wallet.disconnect();\n };\n\n const connect = async (options?: ConnectOptions): Promise<ConnectResult> => {\n try {\n const readySdk =\n walletRef.current ?? (await waitForWallet(() => walletRef.current));\n const result = await readySdk.connect(options);\n return result;\n } catch (err) {\n const error = err as Error;\n throw error;\n }\n };\n\n const mountInline = async (container: HTMLElement): Promise<void> => {\n const readySdk =\n walletRef.current ?? (await waitForWallet(() => walletRef.current));\n await readySdk.mountInline(container);\n };\n\n return {\n wallet: wallet?.thru as IThruChain | undefined,\n accounts,\n connect,\n disconnect,\n mountInline,\n isConnected: isConnected && !!wallet,\n isConnecting,\n selectedAccount,\n selectAccount,\n };\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thru/react-sdk",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@thru/browser-sdk": "0.1
|
|
15
|
-
"@thru/chain-interfaces": "0.1
|
|
16
|
-
"@thru/thru-sdk": "0.1
|
|
14
|
+
"@thru/browser-sdk": "0.2.1",
|
|
15
|
+
"@thru/chain-interfaces": "0.2.1",
|
|
16
|
+
"@thru/thru-sdk": "0.2.1"
|
|
17
17
|
},
|
|
18
18
|
"peerDependencies": {
|
|
19
19
|
"react": "^18.0.0 || ^19.0.0",
|
package/src/hooks/useWallet.ts
CHANGED
|
@@ -47,11 +47,18 @@ export function useWallet() {
|
|
|
47
47
|
}
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
+
const mountInline = async (container: HTMLElement): Promise<void> => {
|
|
51
|
+
const readySdk =
|
|
52
|
+
walletRef.current ?? (await waitForWallet(() => walletRef.current));
|
|
53
|
+
await readySdk.mountInline(container);
|
|
54
|
+
};
|
|
55
|
+
|
|
50
56
|
return {
|
|
51
57
|
wallet: wallet?.thru as IThruChain | undefined,
|
|
52
58
|
accounts,
|
|
53
59
|
connect,
|
|
54
60
|
disconnect,
|
|
61
|
+
mountInline,
|
|
55
62
|
isConnected: isConnected && !!wallet,
|
|
56
63
|
isConnecting,
|
|
57
64
|
selectedAccount,
|