@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.
- package/hooks/useElements.js +14 -8
- package/hooks/useElements.js.map +1 -1
- package/package.json +1 -1
package/hooks/useElements.js
CHANGED
@@ -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
|
-
|
14
|
-
|
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
|
-
|
48
|
+
await loadMore();
|
43
49
|
}
|
44
50
|
return {
|
45
51
|
items,
|
package/hooks/useElements.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useElements.js","sourceRoot":"","sources":["../../src/hooks/useElements.tsx"],"names":[],"mappings":";;;AAAA,iFAAuE;AACvE,
|
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"}
|