@xyo-network/react-node 2.56.3 → 2.56.5
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/cjs/components/render/ModuleDescriptionBox.js +1 -1
- package/dist/cjs/components/render/ModuleDescriptionBox.js.map +1 -1
- package/dist/cjs/components/render/RenderModule.js +2 -4
- package/dist/cjs/components/render/RenderModule.js.map +1 -1
- package/dist/cjs/hooks/provided/useProvidedNode.js.map +1 -1
- package/dist/cjs/hooks/useModuleFromNode.js +32 -31
- package/dist/cjs/hooks/useModuleFromNode.js.map +1 -1
- package/dist/cjs/hooks/useModulesFromNode.js +5 -5
- package/dist/cjs/hooks/useModulesFromNode.js.map +1 -1
- package/dist/cjs/hooks/useNodeFromNode.js +1 -1
- package/dist/cjs/hooks/useNodeFromNode.js.map +1 -1
- package/dist/cjs/hooks/useNodesFromNode.js +1 -1
- package/dist/cjs/hooks/useNodesFromNode.js.map +1 -1
- package/dist/cjs/hooks/wrapped/WrappedModuleFromNodeHookFactory.js +1 -1
- package/dist/cjs/hooks/wrapped/WrappedModuleFromNodeHookFactory.js.map +1 -1
- package/dist/cjs/hooks/wrapped/WrappedModulesFromNodeHookFactory.js +2 -2
- package/dist/cjs/hooks/wrapped/WrappedModulesFromNodeHookFactory.js.map +1 -1
- package/dist/cjs/hooks/wrapped/provided/useWrappedProvidedNode.js.map +1 -1
- package/dist/docs.json +789 -856
- package/dist/esm/components/render/ModuleDescriptionBox.js +1 -1
- package/dist/esm/components/render/ModuleDescriptionBox.js.map +1 -1
- package/dist/esm/components/render/RenderModule.js +2 -4
- package/dist/esm/components/render/RenderModule.js.map +1 -1
- package/dist/esm/hooks/provided/useProvidedNode.js.map +1 -1
- package/dist/esm/hooks/useModuleFromNode.js +32 -31
- package/dist/esm/hooks/useModuleFromNode.js.map +1 -1
- package/dist/esm/hooks/useModulesFromNode.js +5 -5
- package/dist/esm/hooks/useModulesFromNode.js.map +1 -1
- package/dist/esm/hooks/useNodeFromNode.js +1 -1
- package/dist/esm/hooks/useNodeFromNode.js.map +1 -1
- package/dist/esm/hooks/useNodesFromNode.js +1 -1
- package/dist/esm/hooks/useNodesFromNode.js.map +1 -1
- package/dist/esm/hooks/wrapped/WrappedModuleFromNodeHookFactory.js +1 -1
- package/dist/esm/hooks/wrapped/WrappedModuleFromNodeHookFactory.js.map +1 -1
- package/dist/esm/hooks/wrapped/WrappedModulesFromNodeHookFactory.js +2 -2
- package/dist/esm/hooks/wrapped/WrappedModulesFromNodeHookFactory.js.map +1 -1
- package/dist/esm/hooks/wrapped/provided/useWrappedProvidedNode.js.map +1 -1
- package/dist/types/components/render/ModuleDescriptionBox.d.ts +1 -1
- package/dist/types/components/render/ModuleDescriptionBox.d.ts.map +1 -1
- package/dist/types/components/render/RenderModule.d.ts.map +1 -1
- package/dist/types/hooks/provided/useProvidedNode.d.ts +1 -1
- package/dist/types/hooks/provided/useProvidedNode.d.ts.map +1 -1
- package/dist/types/hooks/useModuleFromNode.d.ts +1 -2
- package/dist/types/hooks/useModuleFromNode.d.ts.map +1 -1
- package/dist/types/hooks/useModulesFromNode.d.ts +1 -2
- package/dist/types/hooks/useModulesFromNode.d.ts.map +1 -1
- package/dist/types/hooks/useNodeFromNode.d.ts +2 -3
- package/dist/types/hooks/useNodeFromNode.d.ts.map +1 -1
- package/dist/types/hooks/useNodesFromNode.d.ts +2 -3
- package/dist/types/hooks/useNodesFromNode.d.ts.map +1 -1
- package/dist/types/hooks/wrapped/WrappedModuleFromNodeHookFactory.d.ts.map +1 -1
- package/dist/types/hooks/wrapped/WrappedModulesFromNodeHookFactory.d.ts +1 -1
- package/dist/types/hooks/wrapped/WrappedModulesFromNodeHookFactory.d.ts.map +1 -1
- package/dist/types/hooks/wrapped/provided/useWrappedProvidedNode.d.ts +1 -1
- package/dist/types/hooks/wrapped/provided/useWrappedProvidedNode.d.ts.map +1 -1
- package/dist/types/hooks/wrapped/useWrappedModulesFromNode.d.ts +1 -1
- package/package.json +12 -12
- package/src/components/Node.stories.tsx +2 -3
- package/src/components/render/ModuleDescriptionBox.tsx +6 -4
- package/src/components/render/RenderModule.tsx +3 -4
- package/src/hooks/provided/useProvidedNode.tsx +1 -1
- package/src/hooks/useModuleFromNode.tsx +32 -35
- package/src/hooks/useModulesFromNode.ts +5 -7
- package/src/hooks/useNodeFromNode.tsx +2 -3
- package/src/hooks/useNodesFromNode.tsx +1 -3
- package/src/hooks/wrapped/WrappedModuleFromNodeHookFactory.tsx +0 -1
- package/src/hooks/wrapped/WrappedModulesFromNodeHookFactory.tsx +2 -2
- package/src/hooks/wrapped/provided/useWrappedProvidedNode.tsx +1 -1
|
@@ -3,20 +3,18 @@ import { Logger } from '@xyo-network/core'
|
|
|
3
3
|
import { EventUnsubscribeFunction } from '@xyo-network/module'
|
|
4
4
|
import { Module, ModuleFilter } from '@xyo-network/module-model'
|
|
5
5
|
import { ModuleAttachedEventArgs, ModuleDetachedEventArgs } from '@xyo-network/node'
|
|
6
|
-
import { WalletInstance } from '@xyo-network/wallet-model'
|
|
7
6
|
import { useMemo, useState } from 'react'
|
|
8
7
|
|
|
9
|
-
import {
|
|
8
|
+
import { useProvidedNode } from './provided'
|
|
10
9
|
|
|
11
10
|
export const useModuleFromNode = <TModule extends Module = Module>(
|
|
12
11
|
nameOrAddressOrFilter?: string | ModuleFilter,
|
|
13
|
-
wallet?: WalletInstance,
|
|
14
12
|
logger?: Logger,
|
|
15
|
-
): [TModule | undefined, Error | undefined] => {
|
|
13
|
+
): [TModule | null | undefined, Error | undefined] => {
|
|
16
14
|
const nameOrAddress = useMemo(() => (typeof nameOrAddressOrFilter === 'string' ? nameOrAddressOrFilter : undefined), [nameOrAddressOrFilter])
|
|
17
15
|
const filter = useMemo(() => (typeof nameOrAddressOrFilter === 'object' ? nameOrAddressOrFilter : undefined), [nameOrAddressOrFilter])
|
|
18
|
-
const [node
|
|
19
|
-
const [module, setModule] = useState<TModule>()
|
|
16
|
+
const [node] = useProvidedNode()
|
|
17
|
+
const [module, setModule] = useState<TModule | null>()
|
|
20
18
|
const [error, setError] = useState<Error>()
|
|
21
19
|
|
|
22
20
|
const address = useMemo(() => module?.address, [module])
|
|
@@ -26,40 +24,39 @@ export const useModuleFromNode = <TModule extends Module = Module>(
|
|
|
26
24
|
async (mounted) => {
|
|
27
25
|
const eventUnsubscribe: EventUnsubscribeFunction[] = []
|
|
28
26
|
try {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
if (node) {
|
|
28
|
+
const attachHandler = (args: ModuleAttachedEventArgs) => {
|
|
29
|
+
const eventModule = args.module
|
|
30
|
+
if (nameOrAddress && (eventModule.address === nameOrAddress || eventModule?.config.name === nameOrAddress)) {
|
|
31
|
+
logger?.debug(`attachHandler-setting [${nameOrAddress}]`)
|
|
32
|
+
setModule(eventModule as TModule)
|
|
33
|
+
setError(undefined)
|
|
34
|
+
}
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
const detachHandler = (args: ModuleDetachedEventArgs) => {
|
|
37
|
+
const eventModule = args.module
|
|
38
|
+
if (eventModule.address === address) {
|
|
39
|
+
logger?.debug(`detachHandler-clearing [${address}]`)
|
|
40
|
+
setModule(undefined)
|
|
41
|
+
setError(undefined)
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
const module: TModule | undefined = nameOrAddress
|
|
45
|
+
? (await node.downResolver.resolve<TModule>({ address: [nameOrAddress], name: [nameOrAddress] })).pop()
|
|
46
|
+
: (await node.downResolver.resolve<TModule>(filter)).pop()
|
|
47
|
+
if (mounted()) {
|
|
48
|
+
eventUnsubscribe.push(node.on('moduleAttached', attachHandler))
|
|
49
|
+
eventUnsubscribe.push(node.on('moduleDetached', detachHandler))
|
|
50
|
+
logger?.debug(`resolved [${nameOrAddress}]`)
|
|
51
|
+
setModule(module)
|
|
44
52
|
setError(undefined)
|
|
45
53
|
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (eventModule.address === address) {
|
|
50
|
-
logger?.debug(`detachHandler-clearing [${address}]`)
|
|
51
|
-
setModule(undefined)
|
|
54
|
+
} else {
|
|
55
|
+
if (mounted()) {
|
|
56
|
+
setModule(node)
|
|
52
57
|
setError(undefined)
|
|
53
58
|
}
|
|
54
59
|
}
|
|
55
|
-
const module: TModule | undefined = nameOrAddress ? await node.resolve<TModule>(nameOrAddress) : (await node.resolve<TModule>(filter)).pop()
|
|
56
|
-
if (mounted()) {
|
|
57
|
-
eventUnsubscribe.push(node.on('moduleAttached', attachHandler))
|
|
58
|
-
eventUnsubscribe.push(node.on('moduleDetached', detachHandler))
|
|
59
|
-
logger?.debug(`resolved [${nameOrAddress}]`)
|
|
60
|
-
setModule(module)
|
|
61
|
-
setError(undefined)
|
|
62
|
-
}
|
|
63
60
|
return () => {
|
|
64
61
|
//remove the event handler on unmount
|
|
65
62
|
eventUnsubscribe.forEach((func) => func())
|
|
@@ -73,7 +70,7 @@ export const useModuleFromNode = <TModule extends Module = Module>(
|
|
|
73
70
|
}
|
|
74
71
|
}
|
|
75
72
|
},
|
|
76
|
-
[nameOrAddress, node,
|
|
73
|
+
[nameOrAddress, node, address, filter, logger],
|
|
77
74
|
)
|
|
78
75
|
|
|
79
76
|
return [module, error]
|
|
@@ -2,17 +2,15 @@ import { usePromise } from '@xylabs/react-promise'
|
|
|
2
2
|
import { Logger } from '@xyo-network/core'
|
|
3
3
|
import { EventUnsubscribeFunction } from '@xyo-network/module'
|
|
4
4
|
import { Module, ModuleFilter } from '@xyo-network/module-model'
|
|
5
|
-
import { WalletInstance } from '@xyo-network/wallet-model'
|
|
6
5
|
import { useEffect, useRef } from 'react'
|
|
7
6
|
|
|
8
|
-
import {
|
|
7
|
+
import { useProvidedNode } from './provided'
|
|
9
8
|
|
|
10
9
|
export const useModulesFromNode = <TModule extends Module = Module>(
|
|
11
10
|
filter?: ModuleFilter,
|
|
12
|
-
wallet?: WalletInstance,
|
|
13
11
|
logger?: Logger,
|
|
14
|
-
): [TModule[] | undefined, Error | undefined] => {
|
|
15
|
-
const [node
|
|
12
|
+
): [TModule[] | null | undefined, Error | undefined] => {
|
|
13
|
+
const [node] = useProvidedNode()
|
|
16
14
|
|
|
17
15
|
const modulesLength = useRef<number>()
|
|
18
16
|
|
|
@@ -21,7 +19,7 @@ export const useModulesFromNode = <TModule extends Module = Module>(
|
|
|
21
19
|
const [resolvedModules, resolvedModulesError] = usePromise<TModule[] | undefined>(async () => {
|
|
22
20
|
const getModulesFromResolution = async () => {
|
|
23
21
|
if (node) {
|
|
24
|
-
const resolvedModules: TModule[] | undefined = await node.resolve<TModule>(filter)
|
|
22
|
+
const resolvedModules: TModule[] | undefined = await node.downResolver.resolve<TModule>(filter)
|
|
25
23
|
if (resolvedModules?.length !== modulesLength.current) {
|
|
26
24
|
logger?.debug(`getModulesFromResolution-setting: [${resolvedModules?.length}]`)
|
|
27
25
|
modulesLength.current = resolvedModules?.length
|
|
@@ -54,7 +52,7 @@ export const useModulesFromNode = <TModule extends Module = Module>(
|
|
|
54
52
|
//unsubscribe events
|
|
55
53
|
eventUnsubscribe.forEach((func) => func())
|
|
56
54
|
}
|
|
57
|
-
}, [filter, node, logger
|
|
55
|
+
}, [filter, node, logger])
|
|
58
56
|
|
|
59
57
|
return [resolvedModules, resolvedModulesError]
|
|
60
58
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { Logger } from '@xyo-network/core'
|
|
2
2
|
import { ModuleFilter } from '@xyo-network/module'
|
|
3
3
|
import { NodeModule } from '@xyo-network/node'
|
|
4
|
-
import { WalletInstance } from '@xyo-network/wallet-model'
|
|
5
4
|
|
|
6
5
|
import { useModuleFromNode } from './useModuleFromNode'
|
|
7
6
|
|
|
8
|
-
export const useNodeFromNode = (nameOrAddressOrFilter?: string | ModuleFilter,
|
|
9
|
-
useModuleFromNode<NodeModule>(nameOrAddressOrFilter,
|
|
7
|
+
export const useNodeFromNode = (nameOrAddressOrFilter?: string | ModuleFilter, logger?: Logger) =>
|
|
8
|
+
useModuleFromNode<NodeModule>(nameOrAddressOrFilter, logger)
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { Logger } from '@xyo-network/core'
|
|
2
2
|
import { ModuleFilter } from '@xyo-network/module'
|
|
3
3
|
import { NodeModule } from '@xyo-network/node'
|
|
4
|
-
import { WalletInstance } from '@xyo-network/wallet-model'
|
|
5
4
|
|
|
6
5
|
import { useModulesFromNode } from './useModulesFromNode'
|
|
7
6
|
|
|
8
|
-
export const useNodesFromNode = (filter?: ModuleFilter,
|
|
9
|
-
useModulesFromNode<NodeModule>(filter, wallet, logger)
|
|
7
|
+
export const useNodesFromNode = (filter?: ModuleFilter, logger?: Logger) => useModulesFromNode<NodeModule>(filter, logger)
|
|
@@ -12,11 +12,11 @@ export const WrappedModulesFromNodeHookFactory = {
|
|
|
12
12
|
const filter = {
|
|
13
13
|
query: [wrapperObject.requiredQueries],
|
|
14
14
|
}
|
|
15
|
-
const useHook = (account?: WalletInstance,
|
|
15
|
+
const useHook = (account?: WalletInstance, logger?: Logger): [TModuleWrapper[] | undefined, Error | undefined] => {
|
|
16
16
|
logger?.debug(`Render: ${name}`)
|
|
17
17
|
|
|
18
18
|
const [accountToUse] = useAccount({ account })
|
|
19
|
-
const [modules, moduleError] = useModulesFromNode<TModuleWrapper['module']>(filter,
|
|
19
|
+
const [modules, moduleError] = useModulesFromNode<TModuleWrapper['module']>(filter, logger)
|
|
20
20
|
|
|
21
21
|
const [wrappers, setWrappers] = useState<TModuleWrapper[]>()
|
|
22
22
|
const [error, setError] = useState<Error>()
|
|
@@ -5,7 +5,7 @@ import { useEffect, useState } from 'react'
|
|
|
5
5
|
|
|
6
6
|
import { useProvidedNode } from '../../provided'
|
|
7
7
|
|
|
8
|
-
export const useWrappedProvidedNode = (wallet?: WalletInstance): [NodeWrapper | undefined, Error | undefined] => {
|
|
8
|
+
export const useWrappedProvidedNode = (wallet?: WalletInstance | null): [NodeWrapper | undefined, Error | undefined] => {
|
|
9
9
|
const [walletToUse] = useWallet({ wallet })
|
|
10
10
|
const [node] = useProvidedNode()
|
|
11
11
|
const [wrappedNode, setWrappedNode] = useState<NodeWrapper>()
|