@xyo-network/react-node 2.59.0-rc.1 → 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":";;;;AAAA,mEAA2D;AAG3D,4DAAmH;AAEnH,4DAAwD;AACxD,iCAAyC;AAEzC,yCAA4C;AAOrC,MAAM,iBAAiB,GAAG,CAAC,aAAsB,EAAE,MAA6B,EAAmD,EAAE;IAC1I,MAAM,CAAC,YAAY,CAAC,GAAG,IAAA,0BAAe,GAAE,CAAA;IACxC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,GAAkB,CAAA;IACtD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,GAAS,CAAA;IAC3C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,2BAAY,EAAC,MAAM,CAAC,CAAA;IAExD,aAAa,CAAC,MAAM,CAAC,CAAA;IAErB,MAAM,OAAO,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAExD,IAAA,mCAAc;IACZ,uDAAuD;IACvD,CAAO,OAAO,EAAE,EAAE;;QAChB,MAAM,KAAsC,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,EAAE,EAAtD,EAAE,MAAM,EAAE,IAAI,OAAwC,EAAnC,cAAc,sBAAjC,kBAAmC,CAAmB,CAAA;QAC5D,MAAM,gBAAgB,GAA+B,EAAE,CAAA;QACvD,IAAI;YACF,MAAM,UAAU,GAAG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,YAAY,CAAA;YACvC,IAAI,UAAU,EAAE;gBACd,MAAM,aAAa,GAAG,CAAC,IAA6B,EAAE,EAAE;;oBACtD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAA;oBAC/B,IAAI,aAAa,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,OAAO,MAAK,aAAa,IAAI,CAAA,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,0CAAE,IAAI,MAAK,aAAa,CAAC,EAAE;wBAC5G,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,0BAA0B,aAAa,GAAG,CAAC,CAAA;wBACzD,IAAI,WAAW,EAAE;4BACf,IAAI,IAAA,+BAAgB,EAAC,WAAW,CAAC,EAAE;gCACjC,SAAS,CAAC,WAAW,CAAC,CAAA;gCACtB,QAAQ,CAAC,SAAS,CAAC,CAAA;6BACpB;iCAAM;gCACL,MAAM,KAAK,GAAG,KAAK,CACjB,0CAA0C,MAAA,WAAW,CAAC,MAAM,0CAAE,MAAM,IAAI,MAAA,WAAW,CAAC,MAAM,0CAAE,IAAI,IAAI,WAAW,CAAC,OAAO,GAAG,CAC3H,CAAA;gCACD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gCAC5B,SAAS,CAAC,SAAS,CAAC,CAAA;gCACpB,QAAQ,CAAC,KAAK,CAAC,CAAA;6BAChB;yBACF;6BAAM;4BACL,SAAS,CAAC,SAAS,CAAC,CAAA;4BACpB,QAAQ,CAAC,SAAS,CAAC,CAAA;yBACpB;qBACF;gBACH,CAAC,CAAA;gBACD,MAAM,aAAa,GAAG,CAAC,IAA6B,EAAE,EAAE;oBACtD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAA;oBAC/B,IAAI,WAAW,CAAC,OAAO,KAAK,OAAO,EAAE;wBACnC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,2BAA2B,OAAO,GAAG,CAAC,CAAA;wBACpD,SAAS,CAAC,SAAS,CAAC,CAAA;wBACpB,QAAQ,CAAC,SAAS,CAAC,CAAA;qBACpB;gBACH,CAAC,CAAA;gBACD,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;gBAClG,IAAI,OAAO,EAAE,EAAE;oBACb,MAAM,QAAQ,GAAG,IAAA,+BAAgB,EAAC,MAAM,CAAC,CAAA;oBACzC,IAAI,MAAM,EAAE;wBACV,IAAI,CAAC,QAAQ,EAAE;4BACb,MAAM,KAAK,GAAG,KAAK,CAAC,0CAA0C,MAAA,MAAM,CAAC,MAAM,0CAAE,MAAM,IAAI,MAAA,MAAM,CAAC,MAAM,0CAAE,IAAI,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;4BAChI,SAAS,CAAC,SAAS,CAAC,CAAA;4BACpB,QAAQ,CAAC,KAAK,CAAC,CAAA;yBAChB;6BAAM;4BACL,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAA;4BACrE,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAA;4BACrE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,aAAa,aAAa,GAAG,CAAC,CAAA;4BAC5C,SAAS,CAAC,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,IAAI,CAAC,CAAA;4BAC3B,QAAQ,CAAC,SAAS,CAAC,CAAA;yBACpB;qBACF;yBAAM;wBACL,SAAS,CAAC,SAAS,CAAC,CAAA;wBACpB,QAAQ,CAAC,SAAS,CAAC,CAAA;qBACpB;iBACF;aACF;iBAAM;gBACL,IAAI,OAAO,EAAE,EAAE;oBACb,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;oBAC9C,QAAQ,CAAC,SAAS,CAAC,CAAA;iBACpB;aACF;YACD,OAAO,GAAG,EAAE;gBACV,qCAAqC;gBACrC,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;YAC5C,CAAC,CAAA;SACF;QAAC,OAAO,EAAE,EAAE;YACX,IAAI,OAAO,EAAE,EAAE;gBACb,MAAM,KAAK,GAAG,EAAW,CAAA;gBACzB,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;gBAC5B,QAAQ,CAAC,KAAK,CAAC,CAAA;gBACf,SAAS,CAAC,SAAS,CAAC,CAAA;aACrB;SACF;IACH,CAAC,CAAA,EACD,CAAC,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,CAAC,CACnD,CAAA;IAED,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AACxB,CAAC,CAAA;AA3FY,QAAA,iBAAiB,qBA2F7B"}
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"}
@@ -13,27 +13,26 @@ const useModulesFromNode = (filter, config) => {
13
13
  const [providedNode] = (0, provided_1.useProvidedNode)();
14
14
  const [configMemo, setConfigMemo] = (0, react_shared_1.useDataState)(config);
15
15
  const [refreshed, refresh] = (0, react_module_1.useRefresh)();
16
+ const [resolvedModules, setResolvedModules] = (0, react_1.useState)();
16
17
  setConfigMemo(config);
17
18
  //we store this to prevent the need of a deep compare to prevent re-render
18
19
  const modulesLength = (0, react_1.useRef)();
19
20
  const eventUnsubscribe = [];
20
- const [resolvedModules, resolvedModulesError] = (0, react_promise_1.usePromise)(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
21
- const getModulesFromResolution = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
22
- var _a;
23
- const _b = configMemo !== null && configMemo !== void 0 ? configMemo : {}, { logger } = _b, resolverConfig = tslib_1.__rest(_b, ["logger"]);
24
- const activeNode = (_a = configMemo === null || configMemo === void 0 ? void 0 : configMemo.node) !== null && _a !== void 0 ? _a : providedNode;
25
- if (activeNode) {
26
- const allResolvedModules = (0, compact_1.default)((yield activeNode.resolve(filter, resolverConfig)).map((module) => ((0, module_model_1.isModuleInstance)(module) ? module : undefined)));
27
- logger === null || logger === void 0 ? void 0 : logger.log(`getModulesFromResolution:allResolvedModules [${allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length}]`);
28
- if ((allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length) !== modulesLength.current) {
29
- logger === null || logger === void 0 ? void 0 : logger.log(`getModulesFromResolution-setting: [${allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length}]`);
30
- modulesLength.current = allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length;
31
- return allResolvedModules;
32
- }
21
+ const [, resolvedModulesError] = (0, react_promise_1.usePromise)(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
22
+ var _a;
23
+ const _b = configMemo !== null && configMemo !== void 0 ? configMemo : {}, { logger } = _b, resolverConfig = tslib_1.__rest(_b, ["logger"]);
24
+ const activeNode = (_a = configMemo === null || configMemo === void 0 ? void 0 : configMemo.node) !== null && _a !== void 0 ? _a : providedNode;
25
+ if (activeNode) {
26
+ const allResolvedModules = (0, compact_1.default)((yield activeNode.resolve(filter, resolverConfig)).map((module) => ((0, module_model_1.isModuleInstance)(module) ? module : undefined)));
27
+ logger === null || logger === void 0 ? void 0 : logger.debug(`getModulesFromResolution:allResolvedModules [${allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length}]`);
28
+ if ((allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length) !== modulesLength.current) {
29
+ logger === null || logger === void 0 ? void 0 : logger.debug(`getModulesFromResolution-setting: [${allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length}]`);
30
+ modulesLength.current = allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length;
31
+ setResolvedModules(allResolvedModules);
32
+ return allResolvedModules === null || allResolvedModules === void 0 ? void 0 : allResolvedModules.length;
33
33
  }
34
- return undefined;
35
- });
36
- return yield getModulesFromResolution();
34
+ }
35
+ return modulesLength.current;
37
36
  }), [providedNode, filter, configMemo, refreshed]);
38
37
  (0, react_1.useEffect)(() => {
39
38
  var _a;
@@ -45,12 +44,12 @@ const useModulesFromNode = (filter, config) => {
45
44
  }
46
45
  eventUnsubscribe.push(activeNode.on('moduleAttached', ({ module }) => {
47
46
  var _a;
48
- logger === null || logger === void 0 ? void 0 : logger.log(`moduleAttached: useModulesFromNode [${(_a = module.config.name) !== null && _a !== void 0 ? _a : module.address}]`);
47
+ logger === null || logger === void 0 ? void 0 : logger.debug(`moduleAttached: useModulesFromNode [${(_a = module.config.name) !== null && _a !== void 0 ? _a : module.address}]`);
49
48
  refresh();
50
49
  }));
51
50
  eventUnsubscribe.push(activeNode.on('moduleDetached', ({ module }) => {
52
51
  var _a;
53
- logger === null || logger === void 0 ? void 0 : logger.log(`moduleDetached: useModulesFromNode [${(_a = module.config.name) !== null && _a !== void 0 ? _a : module.address}]`);
52
+ logger === null || logger === void 0 ? void 0 : logger.debug(`moduleDetached: useModulesFromNode [${(_a = module.config.name) !== null && _a !== void 0 ? _a : module.address}]`);
54
53
  refresh();
55
54
  }));
56
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useModulesFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useModulesFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -3,32 +3,31 @@ import { isModuleInstance } from '@xyo-network/module-model';
3
3
  import { useRefresh } from '@xyo-network/react-module';
4
4
  import { useDataState } from '@xyo-network/react-shared';
5
5
  import compact from 'lodash/compact';
6
- import { useEffect, useRef } from 'react';
6
+ import { useEffect, useRef, useState } from 'react';
7
7
  import { useProvidedNode } from './provided';
8
8
  export const useModulesFromNode = (filter, config) => {
9
9
  const [providedNode] = useProvidedNode();
10
10
  const [configMemo, setConfigMemo] = useDataState(config);
11
11
  const [refreshed, refresh] = useRefresh();
12
+ const [resolvedModules, setResolvedModules] = useState();
12
13
  setConfigMemo(config);
13
14
  //we store this to prevent the need of a deep compare to prevent re-render
14
15
  const modulesLength = useRef();
15
16
  const eventUnsubscribe = [];
16
- const [resolvedModules, resolvedModulesError] = usePromise(async () => {
17
- const getModulesFromResolution = async () => {
18
- const { logger, ...resolverConfig } = configMemo ?? {};
19
- const activeNode = configMemo?.node ?? providedNode;
20
- if (activeNode) {
21
- const allResolvedModules = compact((await activeNode.resolve(filter, resolverConfig)).map((module) => (isModuleInstance(module) ? module : undefined)));
22
- logger?.log(`getModulesFromResolution:allResolvedModules [${allResolvedModules?.length}]`);
23
- if (allResolvedModules?.length !== modulesLength.current) {
24
- logger?.log(`getModulesFromResolution-setting: [${allResolvedModules?.length}]`);
25
- modulesLength.current = allResolvedModules?.length;
26
- return allResolvedModules;
27
- }
17
+ const [, resolvedModulesError] = usePromise(async () => {
18
+ const { logger, ...resolverConfig } = configMemo ?? {};
19
+ const activeNode = configMemo?.node ?? providedNode;
20
+ if (activeNode) {
21
+ const allResolvedModules = compact((await activeNode.resolve(filter, resolverConfig)).map((module) => (isModuleInstance(module) ? module : undefined)));
22
+ logger?.debug(`getModulesFromResolution:allResolvedModules [${allResolvedModules?.length}]`);
23
+ if (allResolvedModules?.length !== modulesLength.current) {
24
+ logger?.debug(`getModulesFromResolution-setting: [${allResolvedModules?.length}]`);
25
+ modulesLength.current = allResolvedModules?.length;
26
+ setResolvedModules(allResolvedModules);
27
+ return allResolvedModules?.length;
28
28
  }
29
- return undefined;
30
- };
31
- return await getModulesFromResolution();
29
+ }
30
+ return modulesLength.current;
32
31
  }, [providedNode, filter, configMemo, refreshed]);
33
32
  useEffect(() => {
34
33
  const { logger, node } = configMemo ?? {};
@@ -38,11 +37,11 @@ export const useModulesFromNode = (filter, config) => {
38
37
  eventUnsubscribe.pop()?.();
39
38
  }
40
39
  eventUnsubscribe.push(activeNode.on('moduleAttached', ({ module }) => {
41
- logger?.log(`moduleAttached: useModulesFromNode [${module.config.name ?? module.address}]`);
40
+ logger?.debug(`moduleAttached: useModulesFromNode [${module.config.name ?? module.address}]`);
42
41
  refresh();
43
42
  }));
44
43
  eventUnsubscribe.push(activeNode.on('moduleDetached', ({ module }) => {
45
- logger?.log(`moduleDetached: useModulesFromNode [${module.config.name ?? module.address}]`);
44
+ logger?.debug(`moduleDetached: useModulesFromNode [${module.config.name ?? module.address}]`);
46
45
  refresh();
47
46
  }));
48
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useModulesFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useModulesFromNode.js","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useModulesFromNode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAO1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,eAAO,MAAM,kBAAkB,YACpB,YAAY,WACZ,oBAAoB,KAC5B,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CAgEzD,CAAA"}
1
+ {"version":3,"file":"useModulesFromNode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useModulesFromNode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAO1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAE1D,eAAO,MAAM,kBAAkB,YACpB,YAAY,WACZ,oBAAoB,KAC5B,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,GAAG,SAAS,CA8DzD,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.1",
25
- "@xyo-network/react-node-context": "~2.59.0-rc.1",
26
- "@xyo-network/react-node-provider": "~2.59.0-rc.1",
27
- "@xyo-network/react-shared": "~2.59.0-rc.1",
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.1",
37
- "@xyo-network/react-wallet": "~2.59.0-rc.1",
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.1",
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
  }
@@ -4,7 +4,7 @@ import { isModuleInstance, ModuleFilter, ModuleInstance } from '@xyo-network/mod
4
4
  import { useRefresh } from '@xyo-network/react-module'
5
5
  import { useDataState } from '@xyo-network/react-shared'
6
6
  import compact from 'lodash/compact'
7
- import { useEffect, useRef } from 'react'
7
+ import { useEffect, useRef, useState } from 'react'
8
8
 
9
9
  import { useProvidedNode } from './provided'
10
10
  import { ModuleFromNodeConfig } from './useModuleFromNode'
@@ -16,6 +16,7 @@ export const useModulesFromNode = (
16
16
  const [providedNode] = useProvidedNode()
17
17
  const [configMemo, setConfigMemo] = useDataState(config)
18
18
  const [refreshed, refresh] = useRefresh()
19
+ const [resolvedModules, setResolvedModules] = useState<ModuleInstance[]>()
19
20
 
20
21
  setConfigMemo(config)
21
22
 
@@ -24,25 +25,22 @@ export const useModulesFromNode = (
24
25
 
25
26
  const eventUnsubscribe: EventUnsubscribeFunction[] = []
26
27
 
27
- const [resolvedModules, resolvedModulesError] = usePromise<ModuleInstance[] | null | undefined>(async () => {
28
- const getModulesFromResolution = async (): Promise<ModuleInstance[] | null | undefined> => {
29
- const { logger, ...resolverConfig } = configMemo ?? {}
30
- const activeNode = configMemo?.node ?? providedNode
31
- if (activeNode) {
32
- const allResolvedModules = compact(
33
- (await activeNode.resolve(filter, resolverConfig)).map((module) => (isModuleInstance(module) ? module : undefined)),
34
- )
35
- logger?.log(`getModulesFromResolution:allResolvedModules [${allResolvedModules?.length}]`)
36
- if (allResolvedModules?.length !== modulesLength.current) {
37
- logger?.log(`getModulesFromResolution-setting: [${allResolvedModules?.length}]`)
38
- modulesLength.current = allResolvedModules?.length
39
- return allResolvedModules
40
- }
28
+ const [, resolvedModulesError] = usePromise<number | null | undefined>(async () => {
29
+ const { logger, ...resolverConfig } = configMemo ?? {}
30
+ const activeNode = configMemo?.node ?? providedNode
31
+ if (activeNode) {
32
+ const allResolvedModules = compact(
33
+ (await activeNode.resolve(filter, resolverConfig)).map((module) => (isModuleInstance(module) ? module : undefined)),
34
+ )
35
+ logger?.debug(`getModulesFromResolution:allResolvedModules [${allResolvedModules?.length}]`)
36
+ if (allResolvedModules?.length !== modulesLength.current) {
37
+ logger?.debug(`getModulesFromResolution-setting: [${allResolvedModules?.length}]`)
38
+ modulesLength.current = allResolvedModules?.length
39
+ setResolvedModules(allResolvedModules)
40
+ return allResolvedModules?.length
41
41
  }
42
- return undefined
43
42
  }
44
-
45
- return await getModulesFromResolution()
43
+ return modulesLength.current
46
44
  }, [providedNode, filter, configMemo, refreshed])
47
45
 
48
46
  useEffect(() => {
@@ -54,13 +52,13 @@ export const useModulesFromNode = (
54
52
  }
55
53
  eventUnsubscribe.push(
56
54
  activeNode.on('moduleAttached', ({ module }) => {
57
- logger?.log(`moduleAttached: useModulesFromNode [${module.config.name ?? module.address}]`)
55
+ logger?.debug(`moduleAttached: useModulesFromNode [${module.config.name ?? module.address}]`)
58
56
  refresh()
59
57
  }),
60
58
  )
61
59
  eventUnsubscribe.push(
62
60
  activeNode.on('moduleDetached', ({ module }) => {
63
- logger?.log(`moduleDetached: useModulesFromNode [${module.config.name ?? module.address}]`)
61
+ logger?.debug(`moduleDetached: useModulesFromNode [${module.config.name ?? module.address}]`)
64
62
  refresh()
65
63
  }),
66
64
  )