@integration-app/react 0.1.16 → 0.1.17

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,13 +5,18 @@ const integration_app_context_1 = require("../contexts/integration-app-context")
5
5
  const react_1 = require("react");
6
6
  function useElements(initialQuery, accessorGenerator) {
7
7
  const integrationApp = (0, integration_app_context_1.useIntegrationApp)();
8
+ const refreshId = (0, react_1.useRef)(0);
8
9
  const [items, setItems] = (0, react_1.useState)([]);
9
10
  const [nextCursor, setNextCursor] = (0, react_1.useState)(undefined);
10
11
  const [loading, setLoading] = (0, react_1.useState)(false);
11
12
  const [error, setError] = (0, react_1.useState)(null);
12
13
  async function loadMore() {
13
- setError(null);
14
- setLoading(true);
14
+ const startingRefreshId = refreshId.current;
15
+ function setStateIfCurrentRefresh(stateSetter, valueGetter) {
16
+ stateSetter((value) => startingRefreshId === refreshId.current ? valueGetter(value) : value);
17
+ }
18
+ setStateIfCurrentRefresh(setError, () => null);
19
+ setStateIfCurrentRefresh(setLoading, () => true);
15
20
  const queryParams = {
16
21
  ...initialQuery,
17
22
  };
@@ -19,14 +24,14 @@ function useElements(initialQuery, accessorGenerator) {
19
24
  queryParams.cursor = nextCursor;
20
25
  try {
21
26
  const data = await accessorGenerator(integrationApp).find(queryParams);
22
- setNextCursor(data.cursor);
23
- setItems([...items, ...data.items]);
27
+ setStateIfCurrentRefresh(setNextCursor, () => data.cursor);
28
+ setStateIfCurrentRefresh(setItems, (items) => [...items, ...data.items]);
24
29
  }
25
30
  catch (e) {
26
- setError(e);
31
+ setStateIfCurrentRefresh(setError, () => e);
27
32
  }
28
33
  finally {
29
- setLoading(false);
34
+ setStateIfCurrentRefresh(setLoading, () => false);
30
35
  }
31
36
  }
32
37
  (0, react_1.useEffect)(() => {
@@ -36,10 +41,11 @@ function useElements(initialQuery, accessorGenerator) {
36
41
  }
37
42
  refresh();
38
43
  }, [JSON.stringify(initialQuery)]);
39
- function refresh() {
44
+ async function refresh() {
45
+ refreshId.current += 1;
40
46
  setItems([]);
41
47
  setNextCursor(undefined);
42
- return loadMore();
48
+ await loadMore();
43
49
  }
44
50
  return {
45
51
  items,
@@ -1 +1 @@
1
- {"version":3,"file":"useElements.js","sourceRoot":"","sources":["../../src/hooks/useElements.tsx"],"names":[],"mappings":";;;AAAA,iFAAuE;AACvE,iCAA2C;AAuB3C,SAAgB,WAAW,CACzB,YAAuB,EACvB,iBAAgE;IAEhE,MAAM,cAAc,GAAG,IAAA,2CAAiB,GAAE,CAAA;IAE1C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAY,EAAE,CAAC,CAAA;IACjD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAM,SAAS,CAAC,CAAA;IAC5D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAA;IACtD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAQ,IAAI,CAAC,CAAA;IAE/C,KAAK,UAAU,QAAQ;QACrB,QAAQ,CAAC,IAAI,CAAC,CAAA;QACd,UAAU,CAAC,IAAI,CAAC,CAAA;QAEhB,MAAM,WAAW,GAAG;YAClB,GAAG,YAAY;SAChB,CAAA;QAED,IAAI,UAAU;YAAE,WAAW,CAAC,MAAM,GAAG,UAAU,CAAA;QAE/C,IAAI;YACF,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAEtE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC1B,QAAQ,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;SACpC;QAAC,OAAO,CAAC,EAAE;YACV,QAAQ,CAAC,CAAC,CAAC,CAAA;SACZ;gBAAS;YACR,UAAU,CAAC,KAAK,CAAC,CAAA;SAClB;IACH,CAAC;IAGD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,cAAc,EAAE;YACnB,QAAQ,CACN,IAAI,KAAK,CACP,mFAAmF,CACpF,CACF,CAAA;YAED,OAAM;SACP;QAED,OAAO,EAAE,CAAA;IACX,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAElC,SAAS,OAAO;QACd,QAAQ,CAAC,EAAE,CAAC,CAAA;QACZ,aAAa,CAAC,SAAS,CAAC,CAAA;QACxB,OAAO,QAAQ,EAAE,CAAA;IACnB,CAAC;IAED,OAAO;QACL,KAAK;QAEL,OAAO;QACP,QAAQ;QAER,OAAO;QAEP,KAAK;KACN,CAAA;AACH,CAAC;AAhED,kCAgEC"}
1
+ {"version":3,"file":"useElements.js","sourceRoot":"","sources":["../../src/hooks/useElements.tsx"],"names":[],"mappings":";;;AAAA,iFAAuE;AACvE,iCAAmD;AAuBnD,SAAgB,WAAW,CACzB,YAAuB,EACvB,iBAAgE;IAEhE,MAAM,cAAc,GAAG,IAAA,2CAAiB,GAAE,CAAA;IAE1C,MAAM,SAAS,GAAG,IAAA,cAAM,EAAS,CAAC,CAAC,CAAA;IACnC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAY,EAAE,CAAC,CAAA;IACjD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,IAAA,gBAAQ,EAAM,SAAS,CAAC,CAAA;IAC5D,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAA;IACtD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAQ,IAAI,CAAC,CAAA;IAE/C,KAAK,UAAU,QAAQ;QACrB,MAAM,iBAAiB,GAAG,SAAS,CAAC,OAAO,CAAA;QAE3C,SAAS,wBAAwB,CAAC,WAAW,EAAE,WAAyB;YAItE,WAAW,CAAC,CAAC,KAAK,EAAE,EAAE,CACpB,iBAAiB,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CACrE,CAAA;QACH,CAAC;QAED,wBAAwB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QAC9C,wBAAwB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QAEhD,MAAM,WAAW,GAAG;YAClB,GAAG,YAAY;SAChB,CAAA;QAED,IAAI,UAAU;YAAE,WAAW,CAAC,MAAM,GAAG,UAAU,CAAA;QAE/C,IAAI;YACF,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;YAEtE,wBAAwB,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAC1D,wBAAwB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;SACzE;QAAC,OAAO,CAAC,EAAE;YACV,wBAAwB,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;SAC5C;gBAAS;YACR,wBAAwB,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;SAClD;IACH,CAAC;IAGD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,cAAc,EAAE;YACnB,QAAQ,CACN,IAAI,KAAK,CACP,mFAAmF,CACpF,CACF,CAAA;YAED,OAAM;SACP;QAED,OAAO,EAAE,CAAA;IACX,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAElC,KAAK,UAAU,OAAO;QACpB,SAAS,CAAC,OAAO,IAAI,CAAC,CAAA;QACtB,QAAQ,CAAC,EAAE,CAAC,CAAA;QACZ,aAAa,CAAC,SAAS,CAAC,CAAA;QACxB,MAAM,QAAQ,EAAE,CAAA;IAClB,CAAC;IAED,OAAO;QACL,KAAK;QAEL,OAAO;QACP,QAAQ;QAER,OAAO;QAEP,KAAK;KACN,CAAA;AACH,CAAC;AA7ED,kCA6EC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integration-app/react",
3
- "version": "0.1.16",
3
+ "version": "0.1.17",
4
4
  "description": "React SDK for building native integrations.",
5
5
  "author": "integration.app",
6
6
  "scripts": {