@xyo-network/react-node 2.59.0-rc.2 → 2.59.0-rc.3

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.
@@ -2,102 +2,42 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useModuleFromNode = void 0;
4
4
  const tslib_1 = require("tslib");
5
- const react_async_effect_1 = require("@xylabs/react-async-effect");
6
- const module_model_1 = require("@xyo-network/module-model");
7
- const react_shared_1 = require("@xyo-network/react-shared");
5
+ const react_promise_1 = require("@xylabs/react-promise");
6
+ const module_1 = require("@xyo-network/module");
8
7
  const react_1 = require("react");
9
8
  const provided_1 = require("./provided");
10
9
  const useModuleFromNode = (nameOrAddress, config) => {
11
10
  const [providedNode] = (0, provided_1.useProvidedNode)();
12
- const [module, setModule] = (0, react_1.useState)();
13
- const [error, setError] = (0, react_1.useState)();
14
- const [configMemo, setConfigMemo] = (0, react_shared_1.useDataState)(config);
15
- setConfigMemo(config);
16
- const address = (0, react_1.useMemo)(() => module === null || module === void 0 ? void 0 : module.address, [module]);
17
- (0, react_async_effect_1.useAsyncEffect)(
18
- // eslint-disable-next-line react-hooks/exhaustive-deps
19
- (mounted) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
20
- var _a, _b;
21
- const _c = configMemo !== null && configMemo !== void 0 ? configMemo : {}, { logger, node } = _c, resolverConfig = tslib_1.__rest(_c, ["logger", "node"]);
22
- const eventUnsubscribe = [];
23
- try {
24
- const activeNode = node !== null && node !== void 0 ? node : providedNode;
25
- if (activeNode) {
26
- const attachHandler = (args) => {
27
- var _a, _b, _c;
28
- const eventModule = args.module;
29
- if (nameOrAddress && ((eventModule === null || eventModule === void 0 ? void 0 : eventModule.address) === nameOrAddress || ((_a = eventModule === null || eventModule === void 0 ? void 0 : eventModule.config) === null || _a === void 0 ? void 0 : _a.name) === nameOrAddress)) {
30
- logger === null || logger === void 0 ? void 0 : logger.debug(`attachHandler-setting [${nameOrAddress}]`);
31
- if (eventModule) {
32
- if ((0, module_model_1.isModuleInstance)(eventModule)) {
33
- setModule(eventModule);
34
- setError(undefined);
35
- }
36
- else {
37
- const error = Error(`Attached module failed identity check [${(_b = eventModule.config) === null || _b === void 0 ? void 0 : _b.schema}:${(_c = eventModule.config) === null || _c === void 0 ? void 0 : _c.name}:${eventModule.address}]`);
38
- console.error(error.message);
39
- setModule(undefined);
40
- setError(error);
41
- }
42
- }
43
- else {
44
- setModule(undefined);
45
- setError(undefined);
46
- }
47
- }
48
- };
49
- const detachHandler = (args) => {
50
- const eventModule = args.module;
51
- if (eventModule.address === address) {
52
- logger === null || logger === void 0 ? void 0 : logger.debug(`detachHandler-clearing [${address}]`);
53
- setModule(undefined);
54
- setError(undefined);
55
- }
56
- };
57
- const module = nameOrAddress ? yield activeNode.resolve(nameOrAddress, resolverConfig) : undefined;
58
- if (mounted()) {
59
- const instance = (0, module_model_1.asModuleInstance)(module);
60
- if (module) {
61
- if (!instance) {
62
- const error = Error(`Attached module failed identity check [${(_a = module.config) === null || _a === void 0 ? void 0 : _a.schema}:${(_b = module.config) === null || _b === void 0 ? void 0 : _b.name}:${module.address}]`);
63
- setModule(undefined);
64
- setError(error);
65
- }
66
- else {
67
- eventUnsubscribe.push(activeNode.on('moduleAttached', attachHandler));
68
- eventUnsubscribe.push(activeNode.on('moduleDetached', detachHandler));
69
- logger === null || logger === void 0 ? void 0 : logger.debug(`resolved [${nameOrAddress}]`);
70
- setModule(instance !== null && instance !== void 0 ? instance : null);
71
- setError(undefined);
72
- }
73
- }
74
- else {
75
- setModule(undefined);
76
- setError(undefined);
77
- }
11
+ const _a = config !== null && config !== void 0 ? config : {}, { logger, node: paramNode } = _a, resolveConfig = tslib_1.__rest(_a, ["logger", "node"]);
12
+ const [result, setResult] = (0, react_1.useState)();
13
+ const [, error] = (0, react_promise_1.usePromise)(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
14
+ logger === null || logger === void 0 ? void 0 : logger.debug('useModuleFromNode: resolving');
15
+ const activeNode = paramNode !== null && paramNode !== void 0 ? paramNode : providedNode;
16
+ if (activeNode && nameOrAddress) {
17
+ activeNode.on('moduleAttached', ({ module }) => {
18
+ var _a, _b;
19
+ logger === null || logger === void 0 ? void 0 : logger.debug(`useModuleFromNode: moduleAttached [${(_a = module.config.name) !== null && _a !== void 0 ? _a : module.address}]`);
20
+ if (module.address === nameOrAddress || ((_b = module.config) === null || _b === void 0 ? void 0 : _b.name) === nameOrAddress) {
21
+ setResult((0, module_1.asModuleInstance)(module));
78
22
  }
79
- }
80
- else {
81
- if (mounted()) {
82
- setModule(activeNode ? activeNode : undefined);
83
- setError(undefined);
23
+ });
24
+ activeNode.on('moduleDetached', ({ module }) => {
25
+ var _a, _b;
26
+ logger === null || logger === void 0 ? void 0 : logger.debug(`useModuleFromNode: moduleDetached [${(_a = module.config.name) !== null && _a !== void 0 ? _a : module.address}]`);
27
+ if (module.address === nameOrAddress || ((_b = module.config) === null || _b === void 0 ? void 0 : _b.name) === nameOrAddress) {
28
+ setResult(undefined);
84
29
  }
85
- }
86
- return () => {
87
- //remove the event handler on unmount
88
- eventUnsubscribe.forEach((func) => func());
89
- };
30
+ });
31
+ const result = yield activeNode.resolve(nameOrAddress, resolveConfig);
32
+ console.log(`Result: ${result === null || result === void 0 ? void 0 : result.address}`);
33
+ setResult(result);
34
+ return result;
90
35
  }
91
- catch (ex) {
92
- if (mounted()) {
93
- const error = ex;
94
- logger === null || logger === void 0 ? void 0 : logger.error(error.message);
95
- setError(error);
96
- setModule(undefined);
97
- }
98
- }
99
- }), [nameOrAddress, providedNode, address, configMemo]);
100
- return [module, error];
36
+ console.log('Result: No Node');
37
+ return undefined;
38
+ // eslint-disable-next-line react-hooks/exhaustive-deps
39
+ }), [paramNode, providedNode, nameOrAddress]);
40
+ return [result, error];
101
41
  };
102
42
  exports.useModuleFromNode = useModuleFromNode;
103
43
  //# sourceMappingURL=useModuleFromNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModuleFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModuleFromNode.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useModuleFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModuleFromNode.tsx"],"names":[],"mappings":";;;;AAAA,yDAAkD;AAElD,gDAAsD;AAGtD,iCAAgC;AAEhC,yCAA4C;AAOrC,MAAM,iBAAiB,GAAG,CAAC,aAAsB,EAAE,MAA6B,EAAmD,EAAE;IAC1I,MAAM,CAAC,YAAY,CAAC,GAAG,IAAA,0BAAe,GAAE,CAAA;IACxC,MAAM,KAAgD,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,EAAE,EAA5D,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,OAAmC,EAA9B,aAAa,sBAA3C,kBAA6C,CAAe,CAAA;IAClE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,GAA8B,CAAA;IAClE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,IAAA,0BAAU,EAAC,GAAS,EAAE;QACtC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAC7C,MAAM,UAAU,GAAG,SAAS,aAAT,SAAS,cAAT,SAAS,GAAI,YAAY,CAAA;QAC5C,IAAI,UAAU,IAAI,aAAa,EAAE;YAC/B,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;;gBAC7C,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,sCAAsC,MAAA,MAAM,CAAC,MAAM,CAAC,IAAI,mCAAI,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;gBAC5F,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,IAAI,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,IAAI,MAAK,aAAa,EAAE;oBAC7E,SAAS,CAAC,IAAA,yBAAgB,EAAC,MAAM,CAAC,CAAC,CAAA;iBACpC;YACH,CAAC,CAAC,CAAA;YACF,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;;gBAC7C,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,sCAAsC,MAAA,MAAM,CAAC,MAAM,CAAC,IAAI,mCAAI,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;gBAC5F,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,IAAI,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,IAAI,MAAK,aAAa,EAAE;oBAC7E,SAAS,CAAC,SAAS,CAAC,CAAA;iBACrB;YACH,CAAC,CAAC,CAAA;YACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;YACrE,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,CAAC,CAAA;YACzC,SAAS,CAAC,MAAM,CAAC,CAAA;YACjB,OAAO,MAAM,CAAA;SACd;QACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC9B,OAAO,SAAS,CAAA;QAChB,uDAAuD;IACzD,CAAC,CAAA,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAA;IAC5C,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AACxB,CAAC,CAAA;AA9BY,QAAA,iBAAiB,qBA8B7B"}
@@ -1,96 +1,36 @@
1
- import { useAsyncEffect } from '@xylabs/react-async-effect';
2
- import { asModuleInstance, isModuleInstance } from '@xyo-network/module-model';
3
- import { useDataState } from '@xyo-network/react-shared';
4
- import { useMemo, useState } from 'react';
1
+ import { usePromise } from '@xylabs/react-promise';
2
+ import { asModuleInstance } from '@xyo-network/module';
3
+ import { useState } from 'react';
5
4
  import { useProvidedNode } from './provided';
6
5
  export const useModuleFromNode = (nameOrAddress, config) => {
7
6
  const [providedNode] = useProvidedNode();
8
- const [module, setModule] = useState();
9
- const [error, setError] = useState();
10
- const [configMemo, setConfigMemo] = useDataState(config);
11
- setConfigMemo(config);
12
- const address = useMemo(() => module?.address, [module]);
13
- useAsyncEffect(
14
- // eslint-disable-next-line react-hooks/exhaustive-deps
15
- async (mounted) => {
16
- const { logger, node, ...resolverConfig } = configMemo ?? {};
17
- const eventUnsubscribe = [];
18
- try {
19
- const activeNode = node ?? providedNode;
20
- if (activeNode) {
21
- const attachHandler = (args) => {
22
- const eventModule = args.module;
23
- if (nameOrAddress && (eventModule?.address === nameOrAddress || eventModule?.config?.name === nameOrAddress)) {
24
- logger?.debug(`attachHandler-setting [${nameOrAddress}]`);
25
- if (eventModule) {
26
- if (isModuleInstance(eventModule)) {
27
- setModule(eventModule);
28
- setError(undefined);
29
- }
30
- else {
31
- const error = Error(`Attached module failed identity check [${eventModule.config?.schema}:${eventModule.config?.name}:${eventModule.address}]`);
32
- console.error(error.message);
33
- setModule(undefined);
34
- setError(error);
35
- }
36
- }
37
- else {
38
- setModule(undefined);
39
- setError(undefined);
40
- }
41
- }
42
- };
43
- const detachHandler = (args) => {
44
- const eventModule = args.module;
45
- if (eventModule.address === address) {
46
- logger?.debug(`detachHandler-clearing [${address}]`);
47
- setModule(undefined);
48
- setError(undefined);
49
- }
50
- };
51
- const module = nameOrAddress ? await activeNode.resolve(nameOrAddress, resolverConfig) : undefined;
52
- if (mounted()) {
53
- const instance = asModuleInstance(module);
54
- if (module) {
55
- if (!instance) {
56
- const error = Error(`Attached module failed identity check [${module.config?.schema}:${module.config?.name}:${module.address}]`);
57
- setModule(undefined);
58
- setError(error);
59
- }
60
- else {
61
- eventUnsubscribe.push(activeNode.on('moduleAttached', attachHandler));
62
- eventUnsubscribe.push(activeNode.on('moduleDetached', detachHandler));
63
- logger?.debug(`resolved [${nameOrAddress}]`);
64
- setModule(instance ?? null);
65
- setError(undefined);
66
- }
67
- }
68
- else {
69
- setModule(undefined);
70
- setError(undefined);
71
- }
7
+ const { logger, node: paramNode, ...resolveConfig } = config ?? {};
8
+ const [result, setResult] = useState();
9
+ const [, error] = usePromise(async () => {
10
+ logger?.debug('useModuleFromNode: resolving');
11
+ const activeNode = paramNode ?? providedNode;
12
+ if (activeNode && nameOrAddress) {
13
+ activeNode.on('moduleAttached', ({ module }) => {
14
+ logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`);
15
+ if (module.address === nameOrAddress || module.config?.name === nameOrAddress) {
16
+ setResult(asModuleInstance(module));
72
17
  }
73
- }
74
- else {
75
- if (mounted()) {
76
- setModule(activeNode ? activeNode : undefined);
77
- setError(undefined);
18
+ });
19
+ activeNode.on('moduleDetached', ({ module }) => {
20
+ logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`);
21
+ if (module.address === nameOrAddress || module.config?.name === nameOrAddress) {
22
+ setResult(undefined);
78
23
  }
79
- }
80
- return () => {
81
- //remove the event handler on unmount
82
- eventUnsubscribe.forEach((func) => func());
83
- };
24
+ });
25
+ const result = await activeNode.resolve(nameOrAddress, resolveConfig);
26
+ console.log(`Result: ${result?.address}`);
27
+ setResult(result);
28
+ return result;
84
29
  }
85
- catch (ex) {
86
- if (mounted()) {
87
- const error = ex;
88
- logger?.error(error.message);
89
- setError(error);
90
- setModule(undefined);
91
- }
92
- }
93
- }, [nameOrAddress, providedNode, address, configMemo]);
94
- return [module, error];
30
+ console.log('Result: No Node');
31
+ return undefined;
32
+ // eslint-disable-next-line react-hooks/exhaustive-deps
33
+ }, [paramNode, providedNode, nameOrAddress]);
34
+ return [result, error];
95
35
  };
96
36
  //# sourceMappingURL=useModuleFromNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useModuleFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModuleFromNode.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useModuleFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModuleFromNode.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAGtD,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAO5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,aAAsB,EAAE,MAA6B,EAAmD,EAAE;IAC1I,MAAM,CAAC,YAAY,CAAC,GAAG,eAAe,EAAE,CAAA;IACxC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,IAAI,EAAE,CAAA;IAClE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,EAA8B,CAAA;IAClE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;QACtC,MAAM,EAAE,KAAK,CAAC,8BAA8B,CAAC,CAAA;QAC7C,MAAM,UAAU,GAAG,SAAS,IAAI,YAAY,CAAA;QAC5C,IAAI,UAAU,IAAI,aAAa,EAAE;YAC/B,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC7C,MAAM,EAAE,KAAK,CAAC,sCAAsC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;gBAC5F,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,aAAa,EAAE;oBAC7E,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;iBACpC;YACH,CAAC,CAAC,CAAA;YACF,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC7C,MAAM,EAAE,KAAK,CAAC,sCAAsC,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;gBAC5F,IAAI,MAAM,CAAC,OAAO,KAAK,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,aAAa,EAAE;oBAC7E,SAAS,CAAC,SAAS,CAAC,CAAA;iBACrB;YACH,CAAC,CAAC,CAAA;YACF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;YACrE,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,EAAE,OAAO,EAAE,CAAC,CAAA;YACzC,SAAS,CAAC,MAAM,CAAC,CAAA;YACjB,OAAO,MAAM,CAAA;SACd;QACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC9B,OAAO,SAAS,CAAA;QAChB,uDAAuD;IACzD,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAA;IAC5C,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AACxB,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useModuleFromNode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useModuleFromNode.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,EAAsC,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AACnH,OAAO,EAAoD,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAMlG,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,iBAAiB,mBAAoB,MAAM,WAAW,oBAAoB,KAAG,CAAC,cAAc,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CA2FvI,CAAA"}
1
+ {"version":3,"file":"useModuleFromNode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useModuleFromNode.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAKhD,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG;IACvD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,iBAAiB,mBAAoB,MAAM,WAAW,oBAAoB,KAAG,CAAC,cAAc,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CA8BvI,CAAA"}
package/package.json CHANGED
@@ -21,10 +21,10 @@
21
21
  "@xyo-network/module-model": "^2.67.0",
22
22
  "@xyo-network/node": "^2.67.0",
23
23
  "@xyo-network/node-model": "^2.67.0",
24
- "@xyo-network/react-module": "~2.59.0-rc.2",
25
- "@xyo-network/react-node-context": "~2.59.0-rc.2",
26
- "@xyo-network/react-node-provider": "~2.59.0-rc.2",
27
- "@xyo-network/react-shared": "~2.59.0-rc.2",
24
+ "@xyo-network/react-module": "~2.59.0-rc.3",
25
+ "@xyo-network/react-node-context": "~2.59.0-rc.3",
26
+ "@xyo-network/react-node-provider": "~2.59.0-rc.3",
27
+ "@xyo-network/react-shared": "~2.59.0-rc.3",
28
28
  "lodash": "^4.17.21"
29
29
  },
30
30
  "devDependencies": {
@@ -33,8 +33,8 @@
33
33
  "@xylabs/ts-scripts-yarn3": "^2.19.0",
34
34
  "@xylabs/tsconfig-react": "^2.19.0",
35
35
  "@xyo-network/payload-model": "^2.67.0",
36
- "@xyo-network/react-storybook": "~2.59.0-rc.2",
37
- "@xyo-network/react-wallet": "~2.59.0-rc.2",
36
+ "@xyo-network/react-storybook": "~2.59.0-rc.3",
37
+ "@xyo-network/react-wallet": "~2.59.0-rc.3",
38
38
  "typescript": "^5.1.6"
39
39
  },
40
40
  "peerDependencies": {
@@ -89,6 +89,6 @@
89
89
  },
90
90
  "sideEffects": false,
91
91
  "types": "dist/types/index.d.ts",
92
- "version": "2.59.0-rc.2",
92
+ "version": "2.59.0-rc.3",
93
93
  "stableVersion": "2.58.0"
94
94
  }
@@ -1,10 +1,9 @@
1
- import { useAsyncEffect } from '@xylabs/react-async-effect'
1
+ import { usePromise } from '@xylabs/react-promise'
2
2
  import { Logger } from '@xyo-network/logger'
3
- import { EventUnsubscribeFunction } from '@xyo-network/module-events'
4
- import { asModuleInstance, isModuleInstance, ModuleFilterOptions, ModuleInstance } from '@xyo-network/module-model'
5
- import { ModuleAttachedEventArgs, ModuleDetachedEventArgs, NodeInstance } from '@xyo-network/node'
6
- import { useDataState } from '@xyo-network/react-shared'
7
- import { useMemo, useState } from 'react'
3
+ import { asModuleInstance } from '@xyo-network/module'
4
+ import { ModuleFilterOptions, ModuleInstance } from '@xyo-network/module-model'
5
+ import { NodeInstance } from '@xyo-network/node'
6
+ import { useState } from 'react'
8
7
 
9
8
  import { useProvidedNode } from './provided'
10
9
 
@@ -15,93 +14,32 @@ export type ModuleFromNodeConfig = ModuleFilterOptions & {
15
14
 
16
15
  export const useModuleFromNode = (nameOrAddress?: string, config?: ModuleFromNodeConfig): [ModuleInstance | undefined, Error | undefined] => {
17
16
  const [providedNode] = useProvidedNode()
18
- const [module, setModule] = useState<ModuleInstance>()
19
- const [error, setError] = useState<Error>()
20
- const [configMemo, setConfigMemo] = useDataState(config)
21
-
22
- setConfigMemo(config)
23
-
24
- const address = useMemo(() => module?.address, [module])
25
-
26
- useAsyncEffect(
27
- // eslint-disable-next-line react-hooks/exhaustive-deps
28
- async (mounted) => {
29
- const { logger, node, ...resolverConfig } = configMemo ?? {}
30
- const eventUnsubscribe: EventUnsubscribeFunction[] = []
31
- try {
32
- const activeNode = node ?? providedNode
33
- if (activeNode) {
34
- const attachHandler = (args: ModuleAttachedEventArgs) => {
35
- const eventModule = args.module
36
- if (nameOrAddress && (eventModule?.address === nameOrAddress || eventModule?.config?.name === nameOrAddress)) {
37
- logger?.debug(`attachHandler-setting [${nameOrAddress}]`)
38
- if (eventModule) {
39
- if (isModuleInstance(eventModule)) {
40
- setModule(eventModule)
41
- setError(undefined)
42
- } else {
43
- const error = Error(
44
- `Attached module failed identity check [${eventModule.config?.schema}:${eventModule.config?.name}:${eventModule.address}]`,
45
- )
46
- console.error(error.message)
47
- setModule(undefined)
48
- setError(error)
49
- }
50
- } else {
51
- setModule(undefined)
52
- setError(undefined)
53
- }
54
- }
55
- }
56
- const detachHandler = (args: ModuleDetachedEventArgs) => {
57
- const eventModule = args.module
58
- if (eventModule.address === address) {
59
- logger?.debug(`detachHandler-clearing [${address}]`)
60
- setModule(undefined)
61
- setError(undefined)
62
- }
63
- }
64
- const module = nameOrAddress ? await activeNode.resolve(nameOrAddress, resolverConfig) : undefined
65
- if (mounted()) {
66
- const instance = asModuleInstance(module)
67
- if (module) {
68
- if (!instance) {
69
- const error = Error(`Attached module failed identity check [${module.config?.schema}:${module.config?.name}:${module.address}]`)
70
- setModule(undefined)
71
- setError(error)
72
- } else {
73
- eventUnsubscribe.push(activeNode.on('moduleAttached', attachHandler))
74
- eventUnsubscribe.push(activeNode.on('moduleDetached', detachHandler))
75
- logger?.debug(`resolved [${nameOrAddress}]`)
76
- setModule(instance ?? null)
77
- setError(undefined)
78
- }
79
- } else {
80
- setModule(undefined)
81
- setError(undefined)
82
- }
83
- }
84
- } else {
85
- if (mounted()) {
86
- setModule(activeNode ? activeNode : undefined)
87
- setError(undefined)
88
- }
17
+ const { logger, node: paramNode, ...resolveConfig } = config ?? {}
18
+ const [result, setResult] = useState<ModuleInstance | undefined>()
19
+ const [, error] = usePromise(async () => {
20
+ logger?.debug('useModuleFromNode: resolving')
21
+ const activeNode = paramNode ?? providedNode
22
+ if (activeNode && nameOrAddress) {
23
+ activeNode.on('moduleAttached', ({ module }) => {
24
+ logger?.debug(`useModuleFromNode: moduleAttached [${module.config.name ?? module.address}]`)
25
+ if (module.address === nameOrAddress || module.config?.name === nameOrAddress) {
26
+ setResult(asModuleInstance(module))
89
27
  }
90
- return () => {
91
- //remove the event handler on unmount
92
- eventUnsubscribe.forEach((func) => func())
28
+ })
29
+ activeNode.on('moduleDetached', ({ module }) => {
30
+ logger?.debug(`useModuleFromNode: moduleDetached [${module.config.name ?? module.address}]`)
31
+ if (module.address === nameOrAddress || module.config?.name === nameOrAddress) {
32
+ setResult(undefined)
93
33
  }
94
- } catch (ex) {
95
- if (mounted()) {
96
- const error = ex as Error
97
- logger?.error(error.message)
98
- setError(error)
99
- setModule(undefined)
100
- }
101
- }
102
- },
103
- [nameOrAddress, providedNode, address, configMemo],
104
- )
105
-
106
- return [module, error]
34
+ })
35
+ const result = await activeNode.resolve(nameOrAddress, resolveConfig)
36
+ console.log(`Result: ${result?.address}`)
37
+ setResult(result)
38
+ return result
39
+ }
40
+ console.log('Result: No Node')
41
+ return undefined
42
+ // eslint-disable-next-line react-hooks/exhaustive-deps
43
+ }, [paramNode, providedNode, nameOrAddress])
44
+ return [result, error]
107
45
  }