@xyo-network/react-module 2.56.2 → 2.56.4
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/Card/Module/CardActions.js +1 -1
- package/dist/cjs/components/Card/Module/CardActions.js.map +1 -1
- package/dist/cjs/components/Card/Module/CardHeader.js +4 -6
- package/dist/cjs/components/Card/Module/CardHeader.js.map +1 -1
- package/dist/cjs/components/Card/Module/components/DiscoverDialog.js +1 -1
- package/dist/cjs/components/Card/Module/components/DiscoverDialog.js.map +1 -1
- package/dist/cjs/components/DetailsBox.js +7 -9
- package/dist/cjs/components/DetailsBox.js.map +1 -1
- package/dist/cjs/components/TableCell.js +1 -3
- package/dist/cjs/components/TableCell.js.map +1 -1
- package/dist/cjs/hooks/WrappedModuleHookFactory.js +36 -0
- package/dist/cjs/hooks/WrappedModuleHookFactory.js.map +1 -0
- package/dist/cjs/hooks/WrappedModulesHookFactory.js +36 -0
- package/dist/cjs/hooks/WrappedModulesHookFactory.js.map +1 -0
- package/dist/cjs/hooks/index.js +4 -0
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/useRefresh.js +18 -0
- package/dist/cjs/hooks/useRefresh.js.map +1 -0
- package/dist/cjs/hooks/useWrappedModule.js +3 -33
- package/dist/cjs/hooks/useWrappedModule.js.map +1 -1
- package/dist/cjs/hooks/useWrappedModules.js +7 -0
- package/dist/cjs/hooks/useWrappedModules.js.map +1 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/docs.json +5297 -793
- package/dist/esm/components/Card/Module/CardHeader.js +4 -6
- package/dist/esm/components/Card/Module/CardHeader.js.map +1 -1
- package/dist/esm/components/DetailsBox.js +6 -8
- package/dist/esm/components/DetailsBox.js.map +1 -1
- package/dist/esm/components/TableCell.js +1 -3
- package/dist/esm/components/TableCell.js.map +1 -1
- package/dist/esm/hooks/WrappedModuleHookFactory.js +33 -0
- package/dist/esm/hooks/WrappedModuleHookFactory.js.map +1 -0
- package/dist/esm/hooks/WrappedModulesHookFactory.js +33 -0
- package/dist/esm/hooks/WrappedModulesHookFactory.js.map +1 -0
- package/dist/esm/hooks/index.js +4 -0
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/useRefresh.js +14 -0
- package/dist/esm/hooks/useRefresh.js.map +1 -0
- package/dist/esm/hooks/useWrappedModule.js +2 -31
- package/dist/esm/hooks/useWrappedModule.js.map +1 -1
- package/dist/esm/hooks/useWrappedModules.js +4 -0
- package/dist/esm/hooks/useWrappedModules.js.map +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/types/components/Card/Module/CardHeader.d.ts.map +1 -1
- package/dist/types/components/DetailsBox.d.ts.map +1 -1
- package/dist/types/components/TableCell.d.ts.map +1 -1
- package/dist/types/hooks/WrappedModuleHookFactory.d.ts +35 -0
- package/dist/types/hooks/WrappedModuleHookFactory.d.ts.map +1 -0
- package/dist/types/hooks/WrappedModulesHookFactory.d.ts +35 -0
- package/dist/types/hooks/WrappedModulesHookFactory.d.ts.map +1 -0
- package/dist/types/hooks/index.d.ts +4 -0
- package/dist/types/hooks/index.d.ts.map +1 -1
- package/dist/types/hooks/useRefresh.d.ts +4 -0
- package/dist/types/hooks/useRefresh.d.ts.map +1 -0
- package/dist/types/hooks/useWrappedModule.d.ts +58 -5
- package/dist/types/hooks/useWrappedModule.d.ts.map +1 -1
- package/dist/types/hooks/useWrappedModules.d.ts +59 -0
- package/dist/types/hooks/useWrappedModules.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/components/Card/Module/CardHeader.tsx +6 -8
- package/src/components/DetailsBox.tsx +7 -8
- package/src/components/TableCell.tsx +1 -3
- package/src/hooks/WrappedModuleHookFactory.tsx +41 -0
- package/src/hooks/WrappedModulesHookFactory.tsx +41 -0
- package/src/hooks/index.ts +4 -0
- package/src/hooks/useRefresh.tsx +17 -0
- package/src/hooks/useWrappedModule.tsx +3 -38
- package/src/hooks/useWrappedModules.tsx +5 -0
- package/src/index.ts +1 -0
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
import { CardHeader, CardHeaderProps } from '@mui/material'
|
|
2
|
-
import {
|
|
2
|
+
import { Module } from '@xyo-network/module'
|
|
3
3
|
import { findNetworkComponent } from '@xyo-network/react-shared'
|
|
4
4
|
|
|
5
5
|
import { ModuleRenderProps } from '../../../ModuleRenderProps'
|
|
6
6
|
|
|
7
|
-
const getModuleIcons = (moduleType: string,
|
|
8
|
-
return
|
|
7
|
+
const getModuleIcons = (moduleType: string, module: Module) => {
|
|
8
|
+
return module?.queries.find((query) => query.startsWith(`network.xyo.query.${moduleType}`)) ? findNetworkComponent(moduleType)?.icon : null
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export const ModuleCardHeader: React.FC<ModuleRenderProps & CardHeaderProps> = ({ subheader, avatar, title, module, ...props }) => {
|
|
12
|
-
const wrapper = module ? ModuleWrapper.wrap(module) : undefined
|
|
13
|
-
|
|
14
12
|
return (
|
|
15
13
|
<CardHeader
|
|
16
14
|
title={title ?? module?.config.name ?? 'Module'}
|
|
17
|
-
subheader={subheader ??
|
|
15
|
+
subheader={subheader ?? module?.address}
|
|
18
16
|
avatar={
|
|
19
17
|
avatar ?? (
|
|
20
18
|
<>
|
|
21
|
-
{
|
|
19
|
+
{module
|
|
22
20
|
? ['sentinel', 'bridge', 'archivist', 'diviner', 'node', 'witness'].map((moduleType) => {
|
|
23
|
-
const Icon = getModuleIcons(moduleType,
|
|
21
|
+
const Icon = getModuleIcons(moduleType, module)
|
|
24
22
|
return Icon ? <Icon fontSize={'large'} color="primary" /> : null
|
|
25
23
|
})
|
|
26
24
|
: null}
|
|
@@ -2,25 +2,24 @@ import { EthAddress } from '@xylabs/eth-address'
|
|
|
2
2
|
import { ButtonEx } from '@xylabs/react-button'
|
|
3
3
|
import { EthAccountBox } from '@xylabs/react-crypto'
|
|
4
4
|
import { FlexBoxProps, FlexCol, FlexRow } from '@xylabs/react-flexbox'
|
|
5
|
-
import {
|
|
5
|
+
import { Module } from '@xyo-network/module'
|
|
6
6
|
import { findNetworkComponent } from '@xyo-network/react-shared'
|
|
7
7
|
import { useState } from 'react'
|
|
8
8
|
|
|
9
9
|
import { ModuleRenderProps } from '../ModuleRenderProps'
|
|
10
10
|
|
|
11
|
-
const getModuleIcon = (moduleType: string,
|
|
12
|
-
return
|
|
11
|
+
const getModuleIcon = (moduleType: string, module: Module) => {
|
|
12
|
+
return module?.queries.find((query) => query.startsWith(`network.xyo.query.${moduleType}`)) ? findNetworkComponent(moduleType)?.icon() : null
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export const ModuleDetailsBox: React.FC<ModuleRenderProps & FlexBoxProps> = ({ children, module, ...props }) => {
|
|
16
|
-
const wrapper = module ? ModuleWrapper.wrap(module) : undefined
|
|
17
16
|
const [showQueries, setShowQueries] = useState(false)
|
|
18
17
|
return (
|
|
19
18
|
<FlexCol {...props}>
|
|
20
19
|
<FlexRow>
|
|
21
|
-
{
|
|
20
|
+
{module
|
|
22
21
|
? ['sentinel', 'bridge', 'archivist', 'diviner', 'node'].map((moduleType) => {
|
|
23
|
-
const icon = getModuleIcon(moduleType,
|
|
22
|
+
const icon = getModuleIcon(moduleType, module)
|
|
24
23
|
return icon ? (
|
|
25
24
|
<ButtonEx onClick={() => setShowQueries(!showQueries)} key={moduleType}>
|
|
26
25
|
{icon}
|
|
@@ -28,11 +27,11 @@ export const ModuleDetailsBox: React.FC<ModuleRenderProps & FlexBoxProps> = ({ c
|
|
|
28
27
|
) : null
|
|
29
28
|
})
|
|
30
29
|
: null}
|
|
31
|
-
<EthAccountBox address={EthAddress.fromString(
|
|
30
|
+
<EthAccountBox address={EthAddress.fromString(module?.address)} />
|
|
32
31
|
</FlexRow>
|
|
33
32
|
|
|
34
33
|
{showQueries
|
|
35
|
-
?
|
|
34
|
+
? module?.queries.map((query) => {
|
|
36
35
|
return <FlexRow key={query}>{query}</FlexRow>
|
|
37
36
|
})
|
|
38
37
|
: null}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { TableCell, TableCellProps } from '@mui/material'
|
|
2
2
|
import { EthAddress } from '@xylabs/eth-address'
|
|
3
3
|
import { EthAccountBox } from '@xylabs/react-crypto'
|
|
4
|
-
import { ModuleWrapper } from '@xyo-network/module'
|
|
5
4
|
|
|
6
5
|
import { ModuleRenderProps } from '../ModuleRenderProps'
|
|
7
6
|
|
|
8
7
|
export const ModuleTableCell: React.FC<ModuleRenderProps & TableCellProps> = ({ children, module, ...props }) => {
|
|
9
|
-
const wrapper = module ? ModuleWrapper.wrap(module) : undefined
|
|
10
8
|
return (
|
|
11
9
|
<TableCell {...props}>
|
|
12
|
-
<EthAccountBox address={EthAddress.fromString(
|
|
10
|
+
<EthAccountBox address={EthAddress.fromString(module?.address)} />
|
|
13
11
|
{children}
|
|
14
12
|
</TableCell>
|
|
15
13
|
)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { AccountInstance } from '@xyo-network/account-model'
|
|
2
|
+
import { Logger } from '@xyo-network/core'
|
|
3
|
+
import { ConstructableModuleWrapper, ModuleWrapper } from '@xyo-network/module'
|
|
4
|
+
import { useWrapperAccount } from '@xyo-network/react-wallet'
|
|
5
|
+
import { useEffect, useState } from 'react'
|
|
6
|
+
|
|
7
|
+
export const WrappedModuleHookFactory = {
|
|
8
|
+
create: <TModuleWrapper extends ModuleWrapper>(wrapperObject: ConstructableModuleWrapper<TModuleWrapper>, name?: string) => {
|
|
9
|
+
const useHook = (
|
|
10
|
+
module?: TModuleWrapper['module'] | null,
|
|
11
|
+
account?: AccountInstance | null,
|
|
12
|
+
logger?: Logger,
|
|
13
|
+
): [TModuleWrapper | undefined, Error | undefined] => {
|
|
14
|
+
logger?.debug(`Render: ${name}`)
|
|
15
|
+
const [wrapperAccount] = useWrapperAccount()
|
|
16
|
+
|
|
17
|
+
const [wrapper, setWrapper] = useState<TModuleWrapper>()
|
|
18
|
+
const [error, setError] = useState<Error>()
|
|
19
|
+
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
const walletToUse = account || wrapperAccount
|
|
22
|
+
if (module && walletToUse) {
|
|
23
|
+
try {
|
|
24
|
+
const wrapper = wrapperObject.wrap(module, walletToUse)
|
|
25
|
+
setWrapper(wrapper)
|
|
26
|
+
setError(undefined)
|
|
27
|
+
} catch (ex) {
|
|
28
|
+
setWrapper(undefined)
|
|
29
|
+
setError(ex as Error)
|
|
30
|
+
}
|
|
31
|
+
} else {
|
|
32
|
+
setWrapper(undefined)
|
|
33
|
+
setError(undefined)
|
|
34
|
+
}
|
|
35
|
+
}, [module, account, wrapperAccount])
|
|
36
|
+
|
|
37
|
+
return [wrapper, error]
|
|
38
|
+
}
|
|
39
|
+
return useHook
|
|
40
|
+
},
|
|
41
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { AccountInstance } from '@xyo-network/account-model'
|
|
2
|
+
import { Logger } from '@xyo-network/core'
|
|
3
|
+
import { ConstructableModuleWrapper, ModuleWrapper } from '@xyo-network/module'
|
|
4
|
+
import { useWrapperAccount } from '@xyo-network/react-wallet'
|
|
5
|
+
import { useEffect, useState } from 'react'
|
|
6
|
+
|
|
7
|
+
export const WrappedModulesHookFactory = {
|
|
8
|
+
create: <TModuleWrapper extends ModuleWrapper>(wrapperObject: ConstructableModuleWrapper<TModuleWrapper>, name?: string) => {
|
|
9
|
+
const useHook = (
|
|
10
|
+
modules?: TModuleWrapper['module'][],
|
|
11
|
+
account?: AccountInstance,
|
|
12
|
+
logger?: Logger,
|
|
13
|
+
): [TModuleWrapper[] | undefined, Error | undefined] => {
|
|
14
|
+
logger?.debug(`Render: ${name}`)
|
|
15
|
+
const [wrapperAccount] = useWrapperAccount()
|
|
16
|
+
|
|
17
|
+
const [wrappers, setWrappers] = useState<TModuleWrapper[]>()
|
|
18
|
+
const [error, setError] = useState<Error>()
|
|
19
|
+
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
const walletToUse = account || wrapperAccount
|
|
22
|
+
if (module && walletToUse) {
|
|
23
|
+
try {
|
|
24
|
+
const wrappers = modules?.map((module) => wrapperObject.wrap(module, walletToUse))
|
|
25
|
+
setWrappers(wrappers)
|
|
26
|
+
setError(undefined)
|
|
27
|
+
} catch (ex) {
|
|
28
|
+
setWrappers(undefined)
|
|
29
|
+
setError(ex as Error)
|
|
30
|
+
}
|
|
31
|
+
} else {
|
|
32
|
+
setWrappers(undefined)
|
|
33
|
+
setError(undefined)
|
|
34
|
+
}
|
|
35
|
+
}, [modules, account, wrapperAccount])
|
|
36
|
+
|
|
37
|
+
return [wrappers, error]
|
|
38
|
+
}
|
|
39
|
+
return useHook
|
|
40
|
+
},
|
|
41
|
+
}
|
package/src/hooks/index.ts
CHANGED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useState } from 'react'
|
|
2
|
+
|
|
3
|
+
export type RefreshCallback = () => boolean
|
|
4
|
+
export type DisableCallback = () => void
|
|
5
|
+
|
|
6
|
+
export const useRefresh = (): [boolean, RefreshCallback, DisableCallback] => {
|
|
7
|
+
const [enabled, setEnabled] = useState(1)
|
|
8
|
+
return [
|
|
9
|
+
!!enabled,
|
|
10
|
+
() => {
|
|
11
|
+
const enabledCount = enabled + 1
|
|
12
|
+
setEnabled(enabledCount)
|
|
13
|
+
return !!enabledCount
|
|
14
|
+
},
|
|
15
|
+
() => setEnabled(0),
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -1,40 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ConstructableModuleWrapper, Module, ModuleWrapper } from '@xyo-network/module'
|
|
3
|
-
import { useWrapperWallet } from '@xyo-network/react-wallet'
|
|
4
|
-
import { WalletInstance } from '@xyo-network/wallet-model'
|
|
5
|
-
import { useEffect, useState } from 'react'
|
|
1
|
+
import { ModuleWrapper } from '@xyo-network/module'
|
|
6
2
|
|
|
7
|
-
|
|
8
|
-
wrapperObject: ConstructableModuleWrapper<TModuleWrapper>,
|
|
9
|
-
name?: string,
|
|
10
|
-
) => {
|
|
11
|
-
const useHook = (module?: Module, wallet?: WalletInstance, logger?: Logger): [TModuleWrapper | undefined, Error | undefined] => {
|
|
12
|
-
logger?.debug(`Render: ${name}`)
|
|
13
|
-
const wrapperWallet = useWrapperWallet()
|
|
3
|
+
import { WrappedModuleHookFactory } from './WrappedModuleHookFactory'
|
|
14
4
|
|
|
15
|
-
|
|
16
|
-
const [error, setError] = useState<Error>()
|
|
17
|
-
|
|
18
|
-
useEffect(() => {
|
|
19
|
-
const walletToUse = wallet || wrapperWallet
|
|
20
|
-
if (module && walletToUse) {
|
|
21
|
-
try {
|
|
22
|
-
const wrapper = wrapperObject.wrap(module, walletToUse)
|
|
23
|
-
setWrapper(wrapper)
|
|
24
|
-
setError(undefined)
|
|
25
|
-
} catch (ex) {
|
|
26
|
-
setWrapper(undefined)
|
|
27
|
-
setError(ex as Error)
|
|
28
|
-
}
|
|
29
|
-
} else {
|
|
30
|
-
setWrapper(undefined)
|
|
31
|
-
setError(undefined)
|
|
32
|
-
}
|
|
33
|
-
}, [module, wallet, wrapperWallet])
|
|
34
|
-
|
|
35
|
-
return [wrapper, error]
|
|
36
|
-
}
|
|
37
|
-
return useHook
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export const useWrappedModule = WrappedModuleHookFactory(ModuleWrapper, 'useWrappedModule')
|
|
5
|
+
export const useWrappedModule = WrappedModuleHookFactory.create(ModuleWrapper, 'useWrappedModule')
|
package/src/index.ts
CHANGED