@xyo-network/react-chain-provider 1.8.3 → 1.9.0
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.
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import { JsonRpcXyoViewer } from '@xyo-network/xl1-rpc';
|
|
2
1
|
/**
|
|
3
2
|
* Creates a JsonRpcXyoViewer instance based on the provided networkId.
|
|
4
3
|
* @param networkId - a network id like 'sequence', 'local', etc.
|
|
5
|
-
* @returns An instance of
|
|
4
|
+
* @returns An instance of XyoViewer if the networkId is found in wallet gateways
|
|
6
5
|
* otherwise undefined.
|
|
7
6
|
*/
|
|
8
|
-
export declare const useViewerFromWallet: (networkId?: string) =>
|
|
9
|
-
/**
|
|
10
|
-
* TODO - Decide on PostMessageRpcTransport vs PostMessageBus
|
|
11
|
-
* Potentially hide the PostMessageBus instead the PostMessageRpcTransport
|
|
12
|
-
*/
|
|
7
|
+
export declare const useViewerFromWallet: (networkId?: string) => import("@xyo-network/xl1-protocol").XyoViewer | undefined;
|
|
13
8
|
//# sourceMappingURL=useViewerFromWallet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useViewerFromWallet.d.ts","sourceRoot":"","sources":["../../../../src/hooks/viewer/useViewerFromWallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useViewerFromWallet.d.ts","sourceRoot":"","sources":["../../../../src/hooks/viewer/useViewerFromWallet.ts"],"names":[],"mappings":"AAQA;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,GAAI,YAAY,MAAM,8DAoBrD,CAAA"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -183,26 +183,33 @@ var useHttpRpcViewer = /* @__PURE__ */ __name((url) => {
|
|
|
183
183
|
}, "useHttpRpcViewer");
|
|
184
184
|
|
|
185
185
|
// src/hooks/viewer/useViewerFromWallet.ts
|
|
186
|
+
import { usePromise as usePromise3 } from "@xylabs/react-promise";
|
|
186
187
|
import { isDefined as isDefined2, isTruthy, isUndefined as isUndefined6 } from "@xylabs/typeof";
|
|
187
|
-
import {
|
|
188
|
-
|
|
189
|
-
var walletConnections = /* @__PURE__ */ __name(() => globalThis.xyo?.connections, "walletConnections");
|
|
188
|
+
import { useEffect as useEffect2, useMemo as useMemo7 } from "react";
|
|
189
|
+
var gateways = /* @__PURE__ */ __name(() => globalThis.xyo?.client?.gateways, "gateways");
|
|
190
190
|
var useViewerFromWallet = /* @__PURE__ */ __name((networkId) => {
|
|
191
|
-
const
|
|
192
|
-
if (
|
|
193
|
-
return networkId;
|
|
191
|
+
const networkGateway = useMemo7(() => {
|
|
192
|
+
if (isDefined2(networkId) && isDefined2(gateways()?.[networkId])) {
|
|
193
|
+
return gateways()?.[networkId];
|
|
194
194
|
}
|
|
195
195
|
}, [
|
|
196
196
|
networkId
|
|
197
197
|
]);
|
|
198
|
-
const
|
|
199
|
-
if (isUndefined6(
|
|
200
|
-
const
|
|
201
|
-
return
|
|
198
|
+
const [gatewayViewer, rpcError] = usePromise3(async () => {
|
|
199
|
+
if (isUndefined6(networkGateway)) return;
|
|
200
|
+
const connection = await networkGateway.connection();
|
|
201
|
+
return connection.viewer;
|
|
202
202
|
}, [
|
|
203
|
-
|
|
203
|
+
networkGateway
|
|
204
204
|
]);
|
|
205
|
-
|
|
205
|
+
useEffect2(() => {
|
|
206
|
+
if (isTruthy(rpcError)) {
|
|
207
|
+
console.error("Error creating viewer from wallet:", rpcError);
|
|
208
|
+
}
|
|
209
|
+
}, [
|
|
210
|
+
rpcError
|
|
211
|
+
]);
|
|
212
|
+
return gatewayViewer;
|
|
206
213
|
}, "useViewerFromWallet");
|
|
207
214
|
export {
|
|
208
215
|
useAddressBalance,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useAddressBalance.ts","../../src/hooks/useCurrentBlock.ts","../../src/hooks/useHttpRpcRunner.ts","../../src/hooks/useNetwork.ts","../../src/hooks/useSigner.ts","../../src/hooks/viewer/useCheckRpc.ts","../../src/hooks/viewer/useHttpRpcViewer.ts","../../src/hooks/viewer/useViewerFromWallet.ts"],"sourcesContent":["import type { Address } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isUndefined, isUndefinedOrNull } from '@xylabs/typeof'\nimport { ShiftedBigInt } from '@xyo-network/chain-wrappers'\nimport type { AttoXL1, XyoViewer } from '@xyo-network/xl1-protocol'\nimport { useMemo, useState } from 'react'\n\nexport const useAddressBalance = (\n // address to get balance for\n address?: Address,\n // viewer to use for fetching balance\n viewer?: XyoViewer,\n // refresh balance trigger\n refresh?: number,\n) => {\n const [balancesResult, setBalancesResult] = useState<AttoXL1 | null>()\n const [loading, setLoading] = useState(false)\n\n const [, balancesError] = usePromise(async () => {\n if (isUndefined(viewer) || isUndefined(address)) return\n setLoading(true)\n setBalancesResult(undefined)\n const balance = await viewer.accountBalance(address)\n setBalancesResult(balance as AttoXL1)\n setLoading(false)\n }, [address, viewer, refresh])\n\n useMemo(() => {\n if (balancesError) {\n setLoading(false)\n }\n }, [balancesError])\n\n const shiftedBigInt = useMemo(() => {\n if (typeof balancesResult !== 'bigint') return\n return new ShiftedBigInt(balancesResult, {\n places: 18, maxDecimal: 18, maxCharacters: 9, minDecimals: 1, locale: navigator.language,\n })\n }, [balancesResult])\n\n const balanceIntlFriendly = useMemo(() => {\n return shiftedBigInt?.toFullString()\n }, [shiftedBigInt])\n\n const shortBalanceIntlFriendly = useMemo(() => {\n return isUndefinedOrNull(balancesResult)\n ? undefined\n : (balancesResult < 1_000_000_000_000n && balancesResult > 0n) ? '<0.00001' : shiftedBigInt?.toShortString()\n }, [shiftedBigInt])\n\n return {\n address,\n balanceForAddress: balancesResult,\n balanceIntlFriendly,\n shortBalanceIntlFriendly,\n error: balancesError,\n loading,\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol'\n\nexport const useCurrentBlock = (refresh = 1, viewer?: XyoViewer) => {\n return usePromise(async () => {\n if (viewer && refresh > 0) {\n const block = await viewer.currentBlock()\n return block\n }\n }, [viewer, refresh])\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport {\n AllRpcSchemas, HttpRpcTransport, JsonRpcXyoRunner,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useHttpRpcRunner = (url?: string) => {\n return useMemo(() => {\n if (isUndefined(url)) {\n return\n }\n const transport = new HttpRpcTransport(`${url}/rpc`, AllRpcSchemas)\n return new JsonRpcXyoRunner(transport)\n }, [url])\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport type { DefaultNetworkIds } from '@xyo-network/xl1-protocol'\nimport { MemoryXyoNetwork } from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useNetwork = (id?: DefaultNetworkIds) => {\n const network = useMemo(() => {\n if (isUndefined(id)) return\n return new MemoryXyoNetwork(id)\n }, [id])\n\n return network\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport type { XyoConnectionProvider, XyoSigner } from '@xyo-network/xl1-protocol'\nimport { MemoryXyoSigner } from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useSigner = (_provider?: XyoConnectionProvider, account?: AccountInstance) => {\n return useMemo<XyoSigner | undefined>(() => account ? new MemoryXyoSigner(account) : undefined, [account])\n}\n","import { delay } from '@xylabs/delay'\nimport { isDefined, isUndefined } from '@xylabs/typeof'\nimport { LocalNetwork, SequenceNetwork } from '@xyo-network/chain-network-model'\nimport {\n HttpRpcTransport, JsonRpcXyoViewer, XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport {\n useEffect, useMemo, useState,\n} from 'react'\n\nconst INTERVAL = 5000 // 5 seconds\n\nconst localRpcEndpoint: string = `${LocalNetwork.url}/rpc`\nconst sequenceRpcEndpoint: string = `${SequenceNetwork.url}/rpc`\n\nexport const useCheckLocalRpc = () => {\n const isLocalProducer = useCheckRpc(localRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckSequenceRpc = () => {\n const isLocalProducer = useCheckRpc(sequenceRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckRpc = (endpoint?: string) => {\n const [isLocalProducer, setIsLocalProducer] = useState(false)\n const [error, setError] = useState<Error>()\n\n const viewer = useMemo(() => {\n if (isUndefined(endpoint)) return\n\n const transport = new HttpRpcTransport(endpoint, XyoViewerRpcSchemas)\n const viewer = new JsonRpcXyoViewer(transport)\n return viewer\n }, [endpoint])\n\n useEffect(() => {\n if (isUndefined(viewer)) return\n\n void (async () => {\n setError(undefined)\n while (!isLocalProducer) {\n try {\n const block = await viewer.currentBlock()\n setIsLocalProducer(isDefined(block))\n } catch (err) {\n setError(err as Error)\n setIsLocalProducer(false)\n }\n await delay(INTERVAL)\n }\n })()\n }, [viewer])\n\n return { isLocalProducer, error }\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport {\n HttpRpcTransport, JsonRpcXyoViewer, XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useHttpRpcViewer = (url?: string) => {\n const resolvedViewer = useMemo(() => {\n if (isUndefined(url)) {\n return\n }\n const transport = new HttpRpcTransport(`${url}/rpc`, XyoViewerRpcSchemas)\n return new JsonRpcXyoViewer(transport)\n }, [url])\n\n return resolvedViewer\n}\n","import {\n isDefined, isTruthy, isUndefined,\n} from '@xylabs/typeof'\nimport {\n JsonRpcXyoViewer,\n PostMessageRpcTransport,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\n// NOTE: Eventually this value will come from a context or similar, but for now we are using a global\n// Get known wallet connections from the global Xyo object\nconst walletConnections = () => globalThis.xyo?.connections\n\n/**\n * Creates a JsonRpcXyoViewer instance based on the provided networkId.\n * @param networkId - a network id like 'sequence', 'local', etc.\n * @returns An instance of JsonRpcXyoViewer if the networkId is found in walletConnections,\n * otherwise undefined.\n */\nexport const useViewerFromWallet = (networkId?: string) => {\n const networkConnection = useMemo(() => {\n if (isTruthy(networkId) && isDefined(walletConnections()) && isDefined(walletConnections()?.[networkId])) {\n return networkId\n }\n }, [networkId])\n\n const rpcProvider = useMemo(() => {\n if (isUndefined(networkConnection)) return\n const transport = new PostMessageRpcTransport(networkConnection)\n return new JsonRpcXyoViewer(transport)\n }, [networkConnection])\n\n return rpcProvider\n}\n\n/**\n * TODO - Decide on PostMessageRpcTransport vs PostMessageBus\n * Potentially hide the PostMessageBus instead the PostMessageRpcTransport\n */\n"],"mappings":"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","names":["usePromise","isUndefined","isUndefinedOrNull","ShiftedBigInt","useMemo","useState","useAddressBalance","address","viewer","refresh","balancesResult","setBalancesResult","useState","loading","setLoading","balancesError","usePromise","isUndefined","undefined","balance","accountBalance","useMemo","shiftedBigInt","ShiftedBigInt","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","balanceIntlFriendly","toFullString","shortBalanceIntlFriendly","isUndefinedOrNull","toShortString","balanceForAddress","error","usePromise","useCurrentBlock","refresh","viewer","usePromise","block","currentBlock","isUndefined","AllRpcSchemas","HttpRpcTransport","JsonRpcXyoRunner","useMemo","useHttpRpcRunner","url","useMemo","isUndefined","transport","HttpRpcTransport","AllRpcSchemas","JsonRpcXyoRunner","isUndefined","MemoryXyoNetwork","useMemo","useNetwork","id","network","useMemo","isUndefined","MemoryXyoNetwork","MemoryXyoSigner","useMemo","useSigner","_provider","account","useMemo","MemoryXyoSigner","undefined","delay","isDefined","isUndefined","LocalNetwork","SequenceNetwork","HttpRpcTransport","JsonRpcXyoViewer","XyoViewerRpcSchemas","useEffect","useMemo","useState","INTERVAL","localRpcEndpoint","LocalNetwork","url","sequenceRpcEndpoint","SequenceNetwork","useCheckLocalRpc","isLocalProducer","useCheckRpc","useCheckSequenceRpc","endpoint","setIsLocalProducer","useState","error","setError","viewer","useMemo","isUndefined","transport","HttpRpcTransport","XyoViewerRpcSchemas","JsonRpcXyoViewer","useEffect","undefined","block","currentBlock","isDefined","err","delay","isUndefined","HttpRpcTransport","JsonRpcXyoViewer","XyoViewerRpcSchemas","useMemo","useHttpRpcViewer","url","resolvedViewer","useMemo","isUndefined","transport","HttpRpcTransport","XyoViewerRpcSchemas","JsonRpcXyoViewer","isDefined","isTruthy","isUndefined","JsonRpcXyoViewer","PostMessageRpcTransport","useMemo","walletConnections","globalThis","xyo","connections","useViewerFromWallet","networkId","networkConnection","useMemo","isTruthy","isDefined","rpcProvider","isUndefined","transport","PostMessageRpcTransport","JsonRpcXyoViewer"]}
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useAddressBalance.ts","../../src/hooks/useCurrentBlock.ts","../../src/hooks/useHttpRpcRunner.ts","../../src/hooks/useNetwork.ts","../../src/hooks/useSigner.ts","../../src/hooks/viewer/useCheckRpc.ts","../../src/hooks/viewer/useHttpRpcViewer.ts","../../src/hooks/viewer/useViewerFromWallet.ts"],"sourcesContent":["import type { Address } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isUndefined, isUndefinedOrNull } from '@xylabs/typeof'\nimport { ShiftedBigInt } from '@xyo-network/chain-wrappers'\nimport type { AttoXL1, XyoViewer } from '@xyo-network/xl1-protocol'\nimport { useMemo, useState } from 'react'\n\nexport const useAddressBalance = (\n // address to get balance for\n address?: Address,\n // viewer to use for fetching balance\n viewer?: XyoViewer,\n // refresh balance trigger\n refresh?: number,\n) => {\n const [balancesResult, setBalancesResult] = useState<AttoXL1 | null>()\n const [loading, setLoading] = useState(false)\n\n const [, balancesError] = usePromise(async () => {\n if (isUndefined(viewer) || isUndefined(address)) return\n setLoading(true)\n setBalancesResult(undefined)\n const balance = await viewer.accountBalance(address)\n setBalancesResult(balance as AttoXL1)\n setLoading(false)\n }, [address, viewer, refresh])\n\n useMemo(() => {\n if (balancesError) {\n setLoading(false)\n }\n }, [balancesError])\n\n const shiftedBigInt = useMemo(() => {\n if (typeof balancesResult !== 'bigint') return\n return new ShiftedBigInt(balancesResult, {\n places: 18, maxDecimal: 18, maxCharacters: 9, minDecimals: 1, locale: navigator.language,\n })\n }, [balancesResult])\n\n const balanceIntlFriendly = useMemo(() => {\n return shiftedBigInt?.toFullString()\n }, [shiftedBigInt])\n\n const shortBalanceIntlFriendly = useMemo(() => {\n return isUndefinedOrNull(balancesResult)\n ? undefined\n : (balancesResult < 1_000_000_000_000n && balancesResult > 0n) ? '<0.00001' : shiftedBigInt?.toShortString()\n }, [shiftedBigInt])\n\n return {\n address,\n balanceForAddress: balancesResult,\n balanceIntlFriendly,\n shortBalanceIntlFriendly,\n error: balancesError,\n loading,\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol'\n\nexport const useCurrentBlock = (refresh = 1, viewer?: XyoViewer) => {\n return usePromise(async () => {\n if (viewer && refresh > 0) {\n const block = await viewer.currentBlock()\n return block\n }\n }, [viewer, refresh])\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport {\n AllRpcSchemas, HttpRpcTransport, JsonRpcXyoRunner,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useHttpRpcRunner = (url?: string) => {\n return useMemo(() => {\n if (isUndefined(url)) {\n return\n }\n const transport = new HttpRpcTransport(`${url}/rpc`, AllRpcSchemas)\n return new JsonRpcXyoRunner(transport)\n }, [url])\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport type { DefaultNetworkIds } from '@xyo-network/xl1-protocol'\nimport { MemoryXyoNetwork } from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useNetwork = (id?: DefaultNetworkIds) => {\n const network = useMemo(() => {\n if (isUndefined(id)) return\n return new MemoryXyoNetwork(id)\n }, [id])\n\n return network\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport type { XyoConnectionProvider, XyoSigner } from '@xyo-network/xl1-protocol'\nimport { MemoryXyoSigner } from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useSigner = (_provider?: XyoConnectionProvider, account?: AccountInstance) => {\n return useMemo<XyoSigner | undefined>(() => account ? new MemoryXyoSigner(account) : undefined, [account])\n}\n","import { delay } from '@xylabs/delay'\nimport { isDefined, isUndefined } from '@xylabs/typeof'\nimport { LocalNetwork, SequenceNetwork } from '@xyo-network/chain-network-model'\nimport {\n HttpRpcTransport, JsonRpcXyoViewer, XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport {\n useEffect, useMemo, useState,\n} from 'react'\n\nconst INTERVAL = 5000 // 5 seconds\n\nconst localRpcEndpoint: string = `${LocalNetwork.url}/rpc`\nconst sequenceRpcEndpoint: string = `${SequenceNetwork.url}/rpc`\n\nexport const useCheckLocalRpc = () => {\n const isLocalProducer = useCheckRpc(localRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckSequenceRpc = () => {\n const isLocalProducer = useCheckRpc(sequenceRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckRpc = (endpoint?: string) => {\n const [isLocalProducer, setIsLocalProducer] = useState(false)\n const [error, setError] = useState<Error>()\n\n const viewer = useMemo(() => {\n if (isUndefined(endpoint)) return\n\n const transport = new HttpRpcTransport(endpoint, XyoViewerRpcSchemas)\n const viewer = new JsonRpcXyoViewer(transport)\n return viewer\n }, [endpoint])\n\n useEffect(() => {\n if (isUndefined(viewer)) return\n\n void (async () => {\n setError(undefined)\n while (!isLocalProducer) {\n try {\n const block = await viewer.currentBlock()\n setIsLocalProducer(isDefined(block))\n } catch (err) {\n setError(err as Error)\n setIsLocalProducer(false)\n }\n await delay(INTERVAL)\n }\n })()\n }, [viewer])\n\n return { isLocalProducer, error }\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport {\n HttpRpcTransport, JsonRpcXyoViewer, XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useHttpRpcViewer = (url?: string) => {\n const resolvedViewer = useMemo(() => {\n if (isUndefined(url)) {\n return\n }\n const transport = new HttpRpcTransport(`${url}/rpc`, XyoViewerRpcSchemas)\n return new JsonRpcXyoViewer(transport)\n }, [url])\n\n return resolvedViewer\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n isDefined, isTruthy, isUndefined,\n} from '@xylabs/typeof'\nimport { useEffect, useMemo } from 'react'\n\nconst gateways = () => globalThis.xyo?.client?.gateways\n\n/**\n * Creates a JsonRpcXyoViewer instance based on the provided networkId.\n * @param networkId - a network id like 'sequence', 'local', etc.\n * @returns An instance of XyoViewer if the networkId is found in wallet gateways\n * otherwise undefined.\n */\nexport const useViewerFromWallet = (networkId?: string) => {\n const networkGateway = useMemo(() => {\n if (isDefined(networkId) && isDefined(gateways()?.[networkId])) {\n return gateways()?.[networkId]\n }\n }, [networkId])\n\n const [gatewayViewer, rpcError] = usePromise(async () => {\n if (isUndefined(networkGateway)) return\n const connection = await networkGateway.connection()\n return connection.viewer\n }, [networkGateway])\n\n useEffect(() => {\n if (isTruthy(rpcError)) {\n console.error('Error creating viewer from wallet:', rpcError)\n }\n }, [rpcError])\n\n return gatewayViewer\n}\n"],"mappings":"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","names":["usePromise","isUndefined","isUndefinedOrNull","ShiftedBigInt","useMemo","useState","useAddressBalance","address","viewer","refresh","balancesResult","setBalancesResult","useState","loading","setLoading","balancesError","usePromise","isUndefined","undefined","balance","accountBalance","useMemo","shiftedBigInt","ShiftedBigInt","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","balanceIntlFriendly","toFullString","shortBalanceIntlFriendly","isUndefinedOrNull","toShortString","balanceForAddress","error","usePromise","useCurrentBlock","refresh","viewer","usePromise","block","currentBlock","isUndefined","AllRpcSchemas","HttpRpcTransport","JsonRpcXyoRunner","useMemo","useHttpRpcRunner","url","useMemo","isUndefined","transport","HttpRpcTransport","AllRpcSchemas","JsonRpcXyoRunner","isUndefined","MemoryXyoNetwork","useMemo","useNetwork","id","network","useMemo","isUndefined","MemoryXyoNetwork","MemoryXyoSigner","useMemo","useSigner","_provider","account","useMemo","MemoryXyoSigner","undefined","delay","isDefined","isUndefined","LocalNetwork","SequenceNetwork","HttpRpcTransport","JsonRpcXyoViewer","XyoViewerRpcSchemas","useEffect","useMemo","useState","INTERVAL","localRpcEndpoint","LocalNetwork","url","sequenceRpcEndpoint","SequenceNetwork","useCheckLocalRpc","isLocalProducer","useCheckRpc","useCheckSequenceRpc","endpoint","setIsLocalProducer","useState","error","setError","viewer","useMemo","isUndefined","transport","HttpRpcTransport","XyoViewerRpcSchemas","JsonRpcXyoViewer","useEffect","undefined","block","currentBlock","isDefined","err","delay","isUndefined","HttpRpcTransport","JsonRpcXyoViewer","XyoViewerRpcSchemas","useMemo","useHttpRpcViewer","url","resolvedViewer","useMemo","isUndefined","transport","HttpRpcTransport","XyoViewerRpcSchemas","JsonRpcXyoViewer","usePromise","isDefined","isTruthy","isUndefined","useEffect","useMemo","gateways","globalThis","xyo","client","useViewerFromWallet","networkId","networkGateway","useMemo","isDefined","gatewayViewer","rpcError","usePromise","isUndefined","connection","viewer","useEffect","isTruthy","console","error"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/react-chain-provider",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.9.0",
|
|
5
5
|
"description": "XYO Layer One API",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -41,15 +41,15 @@
|
|
|
41
41
|
"src"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@xylabs/delay": "^
|
|
45
|
-
"@xylabs/hex": "^
|
|
46
|
-
"@xylabs/react-promise": "^
|
|
47
|
-
"@xylabs/typeof": "^
|
|
48
|
-
"@xyo-network/account-model": "^
|
|
49
|
-
"@xyo-network/chain-network-model": "^1.
|
|
50
|
-
"@xyo-network/chain-wrappers": "^1.
|
|
51
|
-
"@xyo-network/xl1-protocol": "^1.
|
|
52
|
-
"@xyo-network/xl1-rpc": "^1.
|
|
44
|
+
"@xylabs/delay": "^5.0.0",
|
|
45
|
+
"@xylabs/hex": "^5.0.0",
|
|
46
|
+
"@xylabs/react-promise": "^7.0.0",
|
|
47
|
+
"@xylabs/typeof": "^5.0.0",
|
|
48
|
+
"@xyo-network/account-model": "^5.0.0",
|
|
49
|
+
"@xyo-network/chain-network-model": "^1.9.0",
|
|
50
|
+
"@xyo-network/chain-wrappers": "^1.9.0",
|
|
51
|
+
"@xyo-network/xl1-protocol": "^1.8.0",
|
|
52
|
+
"@xyo-network/xl1-rpc": "^1.9.0",
|
|
53
53
|
"react": "^19.1.1"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
@@ -57,11 +57,11 @@
|
|
|
57
57
|
"@emotion/styled": "^11.14.1",
|
|
58
58
|
"@mui/material": "^7.2.0",
|
|
59
59
|
"@storybook/react-vite": "^9.0.18",
|
|
60
|
-
"@types/react": "^19.1.
|
|
61
|
-
"@xylabs/ts-scripts-yarn3": "^7.0.
|
|
62
|
-
"@xylabs/tsconfig-react": "^7.0.
|
|
63
|
-
"@xyo-network/chain-network-model": "^1.
|
|
64
|
-
"@xyo-network/react-chain-model": "^1.
|
|
60
|
+
"@types/react": "^19.1.9",
|
|
61
|
+
"@xylabs/ts-scripts-yarn3": "^7.0.2",
|
|
62
|
+
"@xylabs/tsconfig-react": "^7.0.2",
|
|
63
|
+
"@xyo-network/chain-network-model": "^1.9.0",
|
|
64
|
+
"@xyo-network/react-chain-model": "^1.9.0",
|
|
65
65
|
"knip": "^5.62.0",
|
|
66
66
|
"typescript": "^5.8.3"
|
|
67
67
|
},
|
|
@@ -1,39 +1,35 @@
|
|
|
1
|
+
import { usePromise } from '@xylabs/react-promise'
|
|
1
2
|
import {
|
|
2
3
|
isDefined, isTruthy, isUndefined,
|
|
3
4
|
} from '@xylabs/typeof'
|
|
4
|
-
import {
|
|
5
|
-
JsonRpcXyoViewer,
|
|
6
|
-
PostMessageRpcTransport,
|
|
7
|
-
} from '@xyo-network/xl1-rpc'
|
|
8
|
-
import { useMemo } from 'react'
|
|
5
|
+
import { useEffect, useMemo } from 'react'
|
|
9
6
|
|
|
10
|
-
|
|
11
|
-
// Get known wallet connections from the global Xyo object
|
|
12
|
-
const walletConnections = () => globalThis.xyo?.connections
|
|
7
|
+
const gateways = () => globalThis.xyo?.client?.gateways
|
|
13
8
|
|
|
14
9
|
/**
|
|
15
10
|
* Creates a JsonRpcXyoViewer instance based on the provided networkId.
|
|
16
11
|
* @param networkId - a network id like 'sequence', 'local', etc.
|
|
17
|
-
* @returns An instance of
|
|
12
|
+
* @returns An instance of XyoViewer if the networkId is found in wallet gateways
|
|
18
13
|
* otherwise undefined.
|
|
19
14
|
*/
|
|
20
15
|
export const useViewerFromWallet = (networkId?: string) => {
|
|
21
|
-
const
|
|
22
|
-
if (
|
|
23
|
-
return networkId
|
|
16
|
+
const networkGateway = useMemo(() => {
|
|
17
|
+
if (isDefined(networkId) && isDefined(gateways()?.[networkId])) {
|
|
18
|
+
return gateways()?.[networkId]
|
|
24
19
|
}
|
|
25
20
|
}, [networkId])
|
|
26
21
|
|
|
27
|
-
const
|
|
28
|
-
if (isUndefined(
|
|
29
|
-
const
|
|
30
|
-
return
|
|
31
|
-
}, [
|
|
22
|
+
const [gatewayViewer, rpcError] = usePromise(async () => {
|
|
23
|
+
if (isUndefined(networkGateway)) return
|
|
24
|
+
const connection = await networkGateway.connection()
|
|
25
|
+
return connection.viewer
|
|
26
|
+
}, [networkGateway])
|
|
32
27
|
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (isTruthy(rpcError)) {
|
|
30
|
+
console.error('Error creating viewer from wallet:', rpcError)
|
|
31
|
+
}
|
|
32
|
+
}, [rpcError])
|
|
35
33
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
* Potentially hide the PostMessageBus instead the PostMessageRpcTransport
|
|
39
|
-
*/
|
|
34
|
+
return gatewayViewer
|
|
35
|
+
}
|