@xyo-network/react-node 2.45.0-rc.16 → 2.45.0-rc.18
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/hooks/index.js +1 -0
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/useArchiveArchivists.js +1 -1
- package/dist/cjs/hooks/useArchiveArchivists.js.map +1 -1
- package/dist/cjs/hooks/useModule.js +45 -3
- package/dist/cjs/hooks/useModule.js.map +1 -1
- package/dist/cjs/hooks/useModules.js +1 -1
- package/dist/cjs/hooks/useModules.js.map +1 -1
- package/dist/cjs/hooks/useNode.js +16 -56
- package/dist/cjs/hooks/useNode.js.map +1 -1
- package/dist/cjs/hooks/useProvidedNode.js +13 -9
- package/dist/cjs/hooks/useProvidedNode.js.map +1 -1
- package/dist/cjs/hooks/useWrappedModule.js +33 -0
- package/dist/cjs/hooks/useWrappedModule.js.map +1 -0
- package/dist/docs.json +627 -1510
- package/dist/esm/hooks/index.js +1 -0
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/useArchiveArchivists.js +2 -2
- package/dist/esm/hooks/useArchiveArchivists.js.map +1 -1
- package/dist/esm/hooks/useModule.js +43 -3
- package/dist/esm/hooks/useModule.js.map +1 -1
- package/dist/esm/hooks/useModules.js +2 -2
- package/dist/esm/hooks/useModules.js.map +1 -1
- package/dist/esm/hooks/useNode.js +15 -54
- package/dist/esm/hooks/useNode.js.map +1 -1
- package/dist/esm/hooks/useProvidedNode.js +10 -8
- package/dist/esm/hooks/useProvidedNode.js.map +1 -1
- package/dist/esm/hooks/useWrappedModule.js +29 -0
- package/dist/esm/hooks/useWrappedModule.js.map +1 -0
- package/dist/types/hooks/index.d.ts +1 -0
- package/dist/types/hooks/index.d.ts.map +1 -1
- package/dist/types/hooks/useModule.d.ts +22 -58
- package/dist/types/hooks/useModule.d.ts.map +1 -1
- package/dist/types/hooks/useNode.d.ts +2 -59
- package/dist/types/hooks/useNode.d.ts.map +1 -1
- package/dist/types/hooks/useProvidedNode.d.ts +3 -6
- package/dist/types/hooks/useProvidedNode.d.ts.map +1 -1
- package/dist/types/hooks/useWrappedModule.d.ts +38 -0
- package/dist/types/hooks/useWrappedModule.d.ts.map +1 -0
- package/package.json +4 -4
- package/src/components/Node.stories.tsx +1 -1
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useArchiveArchivists.tsx +2 -2
- package/src/hooks/useModule.tsx +44 -3
- package/src/hooks/useModules.ts +2 -2
- package/src/hooks/useNode.tsx +14 -77
- package/src/hooks/useProvidedNode.tsx +12 -12
- package/src/hooks/useWrappedModule.tsx +37 -0
package/src/hooks/useModule.tsx
CHANGED
|
@@ -1,5 +1,46 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useAsyncEffect } from '@xylabs/react-shared'
|
|
2
|
+
import { Module } from '@xyo-network/module-model'
|
|
3
|
+
import { useState } from 'react'
|
|
2
4
|
|
|
3
|
-
import {
|
|
5
|
+
import { useProvidedWrappedNode } from './useProvidedNode'
|
|
4
6
|
|
|
5
|
-
export const useModule =
|
|
7
|
+
export const useModule = <TModule extends Module = Module>(nameOrAddress?: string): [TModule | undefined, Error | undefined] => {
|
|
8
|
+
const [node, nodeError] = useProvidedWrappedNode()
|
|
9
|
+
const [module, setModule] = useState<TModule>()
|
|
10
|
+
const [error, setError] = useState<Error>()
|
|
11
|
+
useAsyncEffect(
|
|
12
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
13
|
+
async (mounted) => {
|
|
14
|
+
try {
|
|
15
|
+
if (nodeError) {
|
|
16
|
+
console.log(`Setting NodeError [${nodeError.message}]`)
|
|
17
|
+
setError(nodeError)
|
|
18
|
+
setModule(undefined)
|
|
19
|
+
} else {
|
|
20
|
+
if (node) {
|
|
21
|
+
const module: TModule | undefined = nameOrAddress ? await node.resolve<TModule>(nameOrAddress) : (await node.resolve<TModule>()).pop()
|
|
22
|
+
if (mounted()) {
|
|
23
|
+
console.log(`Setting Module [${module?.address}]`)
|
|
24
|
+
setModule(module)
|
|
25
|
+
setError(undefined)
|
|
26
|
+
}
|
|
27
|
+
} else {
|
|
28
|
+
console.log('Setting All to undefined')
|
|
29
|
+
setError(undefined)
|
|
30
|
+
setModule(undefined)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
} catch (ex) {
|
|
34
|
+
if (mounted()) {
|
|
35
|
+
const error = ex as Error
|
|
36
|
+
console.log(`Setting Error [${error.message}]`)
|
|
37
|
+
setError(error)
|
|
38
|
+
setModule(undefined)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
[nameOrAddress, node, nodeError],
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
return [module, error]
|
|
46
|
+
}
|
package/src/hooks/useModules.ts
CHANGED
|
@@ -2,10 +2,10 @@ import { useAsyncEffect } from '@xylabs/react-shared'
|
|
|
2
2
|
import { Module, ModuleFilter } from '@xyo-network/module'
|
|
3
3
|
import { useState } from 'react'
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { useProvidedWrappedNode } from './useProvidedNode'
|
|
6
6
|
|
|
7
7
|
export const useModules = <T extends Module = Module>(filter?: ModuleFilter) => {
|
|
8
|
-
const [node] =
|
|
8
|
+
const [node] = useProvidedWrappedNode()
|
|
9
9
|
const [modules, setModules] = useState<T[]>()
|
|
10
10
|
|
|
11
11
|
useAsyncEffect(
|
package/src/hooks/useNode.tsx
CHANGED
|
@@ -1,82 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
import { useAsyncEffect } from '@xylabs/react-shared'
|
|
3
|
-
import { Account } from '@xyo-network/account'
|
|
4
|
-
import { Module, ModuleWrapper } from '@xyo-network/module'
|
|
5
|
-
import { NodeModule, NodeWrapper } from '@xyo-network/node'
|
|
6
|
-
import { useState } from 'react'
|
|
1
|
+
import { NodeModule } from '@xyo-network/node'
|
|
7
2
|
|
|
8
|
-
import {
|
|
3
|
+
import { useModule } from './useModule'
|
|
4
|
+
import { useProvidedWrappedNode } from './useProvidedNode'
|
|
9
5
|
|
|
10
|
-
export
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
) => TWrapper | undefined
|
|
6
|
+
export const useNode = (nameOrAddress?: string): [NodeModule | undefined, Error | undefined] => {
|
|
7
|
+
const [providedNode, providedNodeError] = useProvidedWrappedNode()
|
|
8
|
+
const [node, nodeError] = useModule<NodeModule>(nameOrAddress)
|
|
14
9
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
) => {
|
|
24
|
-
function use(name?: string): [TModule | undefined, Error | undefined]
|
|
25
|
-
function use(name: string | undefined, wrap: true | Account): [TWrapper | undefined, Error | undefined]
|
|
26
|
-
function use(wrap: true | Account): [TWrapper | undefined, Error | undefined]
|
|
27
|
-
function use(address: string): [TModule | undefined, Error | undefined]
|
|
28
|
-
function use(address: string, wrap: true | Account): [TWrapper | undefined, Error | undefined]
|
|
29
|
-
function use(
|
|
30
|
-
nameOrAddressOrWrapOrAccount?: string | boolean | Account,
|
|
31
|
-
wrap: boolean | Account = false,
|
|
32
|
-
): [TWrapper | TModule | undefined, Error | undefined] {
|
|
33
|
-
const [node, nodeError] = useProvidedNode()
|
|
34
|
-
const shouldWrap = typeof nameOrAddressOrWrapOrAccount === 'boolean' ? nameOrAddressOrWrapOrAccount : wrap
|
|
35
|
-
const account = typeof nameOrAddressOrWrapOrAccount === 'object' ? nameOrAddressOrWrapOrAccount : typeof wrap === 'boolean' ? undefined : wrap
|
|
36
|
-
const nameOrAddress = typeof nameOrAddressOrWrapOrAccount === 'string' ? nameOrAddressOrWrapOrAccount : undefined
|
|
37
|
-
const [module, setModule] = useState<TModule | TWrapper>()
|
|
38
|
-
const [error, setError] = useState<Error>()
|
|
39
|
-
useAsyncEffect(
|
|
40
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
41
|
-
async (mounted) => {
|
|
42
|
-
try {
|
|
43
|
-
if (nodeError) {
|
|
44
|
-
console.log(`Setting NodeError [${nodeError.message}]`)
|
|
45
|
-
setError(nodeError)
|
|
46
|
-
setModule(undefined)
|
|
47
|
-
} else {
|
|
48
|
-
const wrappedNode = NodeWrapper.tryWrap(node)
|
|
49
|
-
if (wrappedNode) {
|
|
50
|
-
const module: TModule | undefined = nameOrAddress
|
|
51
|
-
? await wrappedNode?.resolve<TModule>(nameOrAddress)
|
|
52
|
-
: (await wrappedNode.resolve<TModule>()).pop()
|
|
53
|
-
const finalModule = shouldWrap ? wrapFunc(module, account) : module
|
|
54
|
-
if (mounted()) {
|
|
55
|
-
console.log(`Setting Module [${finalModule?.address}]`)
|
|
56
|
-
setModule(finalModule)
|
|
57
|
-
setError(undefined)
|
|
58
|
-
}
|
|
59
|
-
} else {
|
|
60
|
-
console.log('Setting All to undefined')
|
|
61
|
-
setError(undefined)
|
|
62
|
-
setModule(undefined)
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
} catch (ex) {
|
|
66
|
-
if (mounted()) {
|
|
67
|
-
const error = ex as Error
|
|
68
|
-
console.log(`Setting Error [${error.message}]`)
|
|
69
|
-
setError(error)
|
|
70
|
-
setModule(undefined)
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
[wrap, node, nameOrAddress, nodeError, shouldWrap, account],
|
|
75
|
-
)
|
|
76
|
-
|
|
77
|
-
return [module, error]
|
|
10
|
+
if (nameOrAddress) {
|
|
11
|
+
if (providedNode) {
|
|
12
|
+
return [node, nodeError]
|
|
13
|
+
} else {
|
|
14
|
+
return [providedNode, providedNodeError]
|
|
15
|
+
}
|
|
16
|
+
} else {
|
|
17
|
+
return [providedNode, providedNodeError]
|
|
78
18
|
}
|
|
79
|
-
return use
|
|
80
19
|
}
|
|
81
|
-
|
|
82
|
-
export const useNode = createUseModuleHook<NodeModule, NodeWrapper>((module) => NodeWrapper.tryWrap(module))
|
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AccountInstance } from '@xyo-network/account-model'
|
|
2
2
|
import { NodeModule, NodeWrapper } from '@xyo-network/node'
|
|
3
3
|
import { useContext, useEffect, useState } from 'react'
|
|
4
4
|
|
|
5
5
|
import { NodeContext } from '../contexts'
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
function useProvidedNodeFunc(wrap: false): [NodeModule | undefined, Error | undefined]
|
|
9
|
-
function useProvidedNodeFunc(wrap: true | Account): [NodeWrapper | undefined, Error | undefined]
|
|
10
|
-
function useProvidedNodeFunc(wrap: boolean | Account | undefined): [NodeModule | NodeWrapper | undefined, Error | undefined] {
|
|
7
|
+
export const useProvidedNode = (): [NodeModule | undefined] => {
|
|
11
8
|
const { node } = useContext(NodeContext)
|
|
9
|
+
|
|
10
|
+
return [node]
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const useProvidedWrappedNode = (account?: AccountInstance): [NodeWrapper | undefined, Error | undefined] => {
|
|
14
|
+
const [node] = useProvidedNode()
|
|
12
15
|
const [wrappedNode, setWrappedNode] = useState<NodeWrapper>()
|
|
13
16
|
const [error, setError] = useState<Error>()
|
|
14
17
|
|
|
15
18
|
useEffect(() => {
|
|
16
19
|
try {
|
|
17
20
|
if (node) {
|
|
18
|
-
|
|
19
|
-
const wrappedNode = wrap ? NodeWrapper.wrap(node, account) : undefined
|
|
20
|
-
setWrappedNode(wrappedNode)
|
|
21
|
+
setWrappedNode(NodeWrapper.wrap(node, account))
|
|
21
22
|
setError(undefined)
|
|
22
23
|
}
|
|
23
24
|
} catch (ex) {
|
|
25
|
+
setWrappedNode(undefined)
|
|
24
26
|
setError(ex as Error)
|
|
25
27
|
}
|
|
26
|
-
}, [node,
|
|
28
|
+
}, [node, account])
|
|
27
29
|
|
|
28
|
-
return [
|
|
30
|
+
return [wrappedNode, error]
|
|
29
31
|
}
|
|
30
|
-
|
|
31
|
-
export const useProvidedNode = useProvidedNodeFunc
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* eslint-disable react-hooks/rules-of-hooks */
|
|
2
|
+
import { AccountInstance } from '@xyo-network/account-model'
|
|
3
|
+
import { ModuleWrapper } from '@xyo-network/module'
|
|
4
|
+
import { useEffect, useState } from 'react'
|
|
5
|
+
|
|
6
|
+
import { useModule } from './useModule'
|
|
7
|
+
|
|
8
|
+
export interface WrapperStatic<TModuleWrapper extends ModuleWrapper = ModuleWrapper> {
|
|
9
|
+
wrap: (module?: TModuleWrapper['module'], account?: AccountInstance) => TModuleWrapper
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const WrappedModuleHookFactory = <TModuleWrapper extends ModuleWrapper = ModuleWrapper>(wrapperObject: WrapperStatic<TModuleWrapper>) => {
|
|
13
|
+
return (nameOrAddress?: string, account?: AccountInstance): [TModuleWrapper | undefined, Error | undefined] => {
|
|
14
|
+
const [module, moduleError] = useModule<TModuleWrapper['module']>(nameOrAddress)
|
|
15
|
+
|
|
16
|
+
const [wrapper, setWrapper] = useState<TModuleWrapper>()
|
|
17
|
+
const [error, setError] = useState<Error>()
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (module) {
|
|
20
|
+
try {
|
|
21
|
+
const wrapper = wrapperObject.wrap(module, account) as TModuleWrapper
|
|
22
|
+
setWrapper(wrapper)
|
|
23
|
+
} catch (ex) {
|
|
24
|
+
setWrapper(undefined)
|
|
25
|
+
setError(ex as Error)
|
|
26
|
+
}
|
|
27
|
+
} else {
|
|
28
|
+
setWrapper(undefined)
|
|
29
|
+
setError(moduleError)
|
|
30
|
+
}
|
|
31
|
+
}, [module, account, moduleError])
|
|
32
|
+
|
|
33
|
+
return [wrapper, error]
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
export const useWrappedModule = WrappedModuleHookFactory(ModuleWrapper)
|