@xyo-network/react-shared 2.54.1 → 2.55.0

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.
@@ -10,7 +10,6 @@ export var State;
10
10
  * usePromise -
11
11
  */
12
12
  export const usePromise = (promise, dependencies = [], debug = undefined) => {
13
- const promiseMemo = useMemo(() => promise?.(), dependencies);
14
13
  const defaultState = {
15
14
  error: undefined,
16
15
  result: undefined,
@@ -37,34 +36,43 @@ export const usePromise = (promise, dependencies = [], debug = undefined) => {
37
36
  }
38
37
  };
39
38
  const [{ error, result, state }, dispatch] = useReducer(reducer, defaultState);
39
+ const promiseMemo = useMemo(() => {
40
+ try {
41
+ return promise?.();
42
+ }
43
+ catch (e) {
44
+ dispatch({
45
+ error: e,
46
+ payload: undefined,
47
+ type: State.rejected,
48
+ });
49
+ }
50
+ }, dependencies);
40
51
  if (debug)
41
52
  console.debug(`usePromise [${debug}] Main Function`);
42
53
  useEffect(() => {
43
- let cancelled = false;
44
54
  dispatch({ type: State.pending });
45
55
  if (debug)
46
- console.debug(`usePromise [${debug}] useEffect [cancelled: ${cancelled}]`);
56
+ console.debug(`usePromise [${debug}] useEffect`);
47
57
  if (promiseMemo instanceof Promise) {
48
58
  promiseMemo
49
59
  .then((payload) => {
50
60
  if (debug)
51
- console.debug(`usePromise [${debug}] then [cancelled: ${cancelled}]`);
52
- !cancelled ??
53
- dispatch({
54
- error: undefined,
55
- payload,
56
- type: State.resolved,
57
- });
61
+ console.debug(`usePromise [${debug}] then`);
62
+ dispatch({
63
+ error: undefined,
64
+ payload,
65
+ type: State.resolved,
66
+ });
58
67
  })
59
68
  .catch((error) => {
60
69
  if (debug)
61
- console.debug(`usePromise [${debug}] catch [cancelled: ${cancelled}]`);
62
- !cancelled ??
63
- dispatch({
64
- error: error,
65
- payload: undefined,
66
- type: State.rejected,
67
- });
70
+ console.debug(`usePromise [${debug}] catch`);
71
+ dispatch({
72
+ error: error,
73
+ payload: undefined,
74
+ type: State.rejected,
75
+ });
68
76
  });
69
77
  }
70
78
  else if (promiseMemo) {
@@ -76,18 +84,16 @@ export const usePromise = (promise, dependencies = [], debug = undefined) => {
76
84
  }
77
85
  else {
78
86
  if (debug)
79
- console.debug(`usePromise [${debug}] no-promise [cancelled: ${cancelled}]`);
80
- !cancelled ??
81
- dispatch({
82
- error: undefined,
83
- payload: undefined,
84
- type: State.resolved,
85
- });
87
+ console.debug(`usePromise [${debug}] no-promise`);
88
+ dispatch({
89
+ error: undefined,
90
+ payload: undefined,
91
+ type: State.resolved,
92
+ });
86
93
  }
87
94
  return () => {
88
95
  if (debug)
89
96
  console.debug(`usePromise [${debug}] useEffect callback`);
90
- cancelled = true;
91
97
  };
92
98
  }, [promiseMemo]);
93
99
  return [result, error, state];
@@ -1 +1 @@
1
- {"version":3,"file":"usePromise.js","sourceRoot":"","sources":["../../../src/hooks/usePromise.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAG9D,OAAO,EAA2B,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAE/E,MAAM,CAAN,IAAY,KAIX;AAJD,WAAY,KAAK;IACf,4BAAmB,CAAA;IACnB,8BAAqB,CAAA;IACrB,8BAAqB,CAAA;AACvB,CAAC,EAJW,KAAK,KAAL,KAAK,QAIhB;AAUD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,OAA8C,EAC9C,eAA+B,EAAE,EACjC,QAA4B,SAAS,EACwB,EAAE;IAC/D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,EAAE,YAAY,CAAC,CAAA;IAE5D,MAAM,YAAY,GAA0B;QAC1C,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,KAAK,CAAC,OAAO;KACrB,CAAA;IAED,MAAM,OAAO,GAAoD,CAAC,MAA6B,EAAE,MAAuB,EAAE,EAAE;QAC1H,QAAQ,MAAM,CAAC,IAAI,EAAE;YACnB,KAAK,KAAK,CAAC,OAAO;gBAChB,OAAO,YAAY,CAAA;YAErB,KAAK,KAAK,CAAC,QAAQ;gBACjB,OAAO;oBACL,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,MAAM,CAAC,OAAO;oBACtB,KAAK,EAAE,KAAK,CAAC,QAAQ;iBACtB,CAAA;YAEH,KAAK,KAAK,CAAC,QAAQ;gBACjB,OAAO;oBACL,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,KAAK,CAAC,QAAQ;iBACtB,CAAA;YAEH;gBACE,MAAM,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;SACzE;IACH,CAAC,CAAA;IAED,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,CAAC,CAAA;IAE9E,IAAI,KAAK;QAAE,OAAO,CAAC,KAAK,CAAC,eAAe,KAAK,iBAAiB,CAAC,CAAA;IAE/D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QACjC,IAAI,KAAK;YAAE,OAAO,CAAC,KAAK,CAAC,eAAe,KAAK,2BAA2B,SAAS,GAAG,CAAC,CAAA;QACrF,IAAI,WAAW,YAAY,OAAO,EAAE;YAClC,WAAW;iBACR,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBAChB,IAAI,KAAK;oBAAE,OAAO,CAAC,KAAK,CAAC,eAAe,KAAK,sBAAsB,SAAS,GAAG,CAAC,CAAA;gBAChF,CAAC,SAAS;oBACR,QAAQ,CAAC;wBACP,KAAK,EAAE,SAAS;wBAChB,OAAO;wBACP,IAAI,EAAE,KAAK,CAAC,QAAQ;qBACrB,CAAC,CAAA;YACN,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,IAAI,KAAK;oBAAE,OAAO,CAAC,KAAK,CAAC,eAAe,KAAK,uBAAuB,SAAS,GAAG,CAAC,CAAA;gBACjF,CAAC,SAAS;oBACR,QAAQ,CAAC;wBACP,KAAK,EAAE,KAAc;wBACrB,OAAO,EAAE,SAAS;wBAClB,IAAI,EAAE,KAAK,CAAC,QAAQ;qBACrB,CAAC,CAAA;YACN,CAAC,CAAC,CAAA;SACL;aAAM,IAAI,WAAW,EAAE;YACtB,QAAQ,CAAC;gBACP,KAAK,EAAE,SAAS;gBAChB,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,KAAK,CAAC,QAAQ;aACrB,CAAC,CAAA;SACH;aAAM;YACL,IAAI,KAAK;gBAAE,OAAO,CAAC,KAAK,CAAC,eAAe,KAAK,4BAA4B,SAAS,GAAG,CAAC,CAAA;YACtF,CAAC,SAAS;gBACR,QAAQ,CAAC;oBACP,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,SAAS;oBAClB,IAAI,EAAE,KAAK,CAAC,QAAQ;iBACrB,CAAC,CAAA;SACL;QACD,OAAO,GAAG,EAAE;YACV,IAAI,KAAK;gBAAE,OAAO,CAAC,KAAK,CAAC,eAAe,KAAK,sBAAsB,CAAC,CAAA;YACpE,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;AAC/B,CAAC,CAAA"}
1
+ {"version":3,"file":"usePromise.js","sourceRoot":"","sources":["../../../src/hooks/usePromise.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"usePromise.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePromise.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,cAAc,EAA2C,MAAM,OAAO,CAAA;AAE/E,oBAAY,KAAK;IACf,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAUD;;GAEG;AACH,eAAO,MAAM,UAAU,0GAGd,MAAM,GAAG,SAAS,gEAoF1B,CAAA"}
1
+ {"version":3,"file":"usePromise.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePromise.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,EAAE,cAAc,EAA2C,MAAM,OAAO,CAAA;AAE/E,oBAAY,KAAK;IACf,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAUD;;GAEG;AACH,eAAO,MAAM,UAAU,0GAGd,MAAM,GAAG,SAAS,gEAyF1B,CAAA"}
package/package.json CHANGED
@@ -12,21 +12,20 @@
12
12
  "dependencies": {
13
13
  "@xylabs/pixel": "^1.4.13",
14
14
  "@xylabs/react-appbar": "^2.17.3",
15
- "@xylabs/react-async-effect": "^2.17.3",
16
15
  "@xylabs/react-button": "^2.17.3",
17
16
  "@xylabs/react-flexbox": "^2.17.3",
18
17
  "@xylabs/react-link": "^2.17.3",
19
18
  "@xylabs/react-shared": "^2.17.3",
20
- "@xyo-network/core": "^2.62.1",
21
- "@xyo-network/payload-model": "^2.62.1",
22
- "@xyo-network/promise": "^2.62.1",
23
- "@xyo-network/react-event": "^2.54.1"
19
+ "@xyo-network/core": "^2.63.1",
20
+ "@xyo-network/payload-model": "^2.63.1",
21
+ "@xyo-network/promise": "^2.63.1",
22
+ "@xyo-network/react-event": "^2.55.0"
24
23
  },
25
24
  "devDependencies": {
26
- "@storybook/react": "^7.0.21",
25
+ "@storybook/react": "^7.0.23",
27
26
  "@xylabs/react-quick-tip-button": "^2.17.3",
28
- "@xylabs/ts-scripts-yarn3": "^2.17.14",
29
- "@xylabs/tsconfig-react": "^2.17.14",
27
+ "@xylabs/ts-scripts-yarn3": "^2.17.17",
28
+ "@xylabs/tsconfig-react": "^2.17.17",
30
29
  "typescript": "^5.1.3"
31
30
  },
32
31
  "peerDependencies": {
@@ -81,5 +80,5 @@
81
80
  },
82
81
  "sideEffects": false,
83
82
  "types": "dist/types/index.d.ts",
84
- "version": "2.54.1"
83
+ "version": "2.55.0"
85
84
  }
@@ -25,8 +25,6 @@ export const usePromise = <TResult>(
25
25
  dependencies: DependencyList = [],
26
26
  debug: string | undefined = undefined,
27
27
  ): [TResult | undefined, Error | undefined, State | undefined] => {
28
- const promiseMemo = useMemo(() => promise?.(), dependencies)
29
-
30
28
  const defaultState: PromiseState<TResult> = {
31
29
  error: undefined,
32
30
  result: undefined,
@@ -59,31 +57,40 @@ export const usePromise = <TResult>(
59
57
 
60
58
  const [{ error, result, state }, dispatch] = useReducer(reducer, defaultState)
61
59
 
60
+ const promiseMemo = useMemo(() => {
61
+ try {
62
+ return promise?.()
63
+ } catch (e) {
64
+ dispatch({
65
+ error: e as Error,
66
+ payload: undefined,
67
+ type: State.rejected,
68
+ })
69
+ }
70
+ }, dependencies)
71
+
62
72
  if (debug) console.debug(`usePromise [${debug}] Main Function`)
63
73
 
64
74
  useEffect(() => {
65
- let cancelled = false
66
75
  dispatch({ type: State.pending })
67
- if (debug) console.debug(`usePromise [${debug}] useEffect [cancelled: ${cancelled}]`)
76
+ if (debug) console.debug(`usePromise [${debug}] useEffect`)
68
77
  if (promiseMemo instanceof Promise) {
69
78
  promiseMemo
70
79
  .then((payload) => {
71
- if (debug) console.debug(`usePromise [${debug}] then [cancelled: ${cancelled}]`)
72
- !cancelled ??
73
- dispatch({
74
- error: undefined,
75
- payload,
76
- type: State.resolved,
77
- })
80
+ if (debug) console.debug(`usePromise [${debug}] then`)
81
+ dispatch({
82
+ error: undefined,
83
+ payload,
84
+ type: State.resolved,
85
+ })
78
86
  })
79
87
  .catch((error) => {
80
- if (debug) console.debug(`usePromise [${debug}] catch [cancelled: ${cancelled}]`)
81
- !cancelled ??
82
- dispatch({
83
- error: error as Error,
84
- payload: undefined,
85
- type: State.rejected,
86
- })
88
+ if (debug) console.debug(`usePromise [${debug}] catch`)
89
+ dispatch({
90
+ error: error as Error,
91
+ payload: undefined,
92
+ type: State.rejected,
93
+ })
87
94
  })
88
95
  } else if (promiseMemo) {
89
96
  dispatch({
@@ -92,17 +99,15 @@ export const usePromise = <TResult>(
92
99
  type: State.resolved,
93
100
  })
94
101
  } else {
95
- if (debug) console.debug(`usePromise [${debug}] no-promise [cancelled: ${cancelled}]`)
96
- !cancelled ??
97
- dispatch({
98
- error: undefined,
99
- payload: undefined,
100
- type: State.resolved,
101
- })
102
+ if (debug) console.debug(`usePromise [${debug}] no-promise`)
103
+ dispatch({
104
+ error: undefined,
105
+ payload: undefined,
106
+ type: State.resolved,
107
+ })
102
108
  }
103
109
  return () => {
104
110
  if (debug) console.debug(`usePromise [${debug}] useEffect callback`)
105
- cancelled = true
106
111
  }
107
112
  }, [promiseMemo])
108
113