@peerbit/react 0.0.17 → 0.0.18
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.
- package/lib/esm/useQuery.js +13 -8
- package/lib/esm/useQuery.js.map +1 -1
- package/package.json +2 -2
- package/src/useQuery.tsx +25 -9
package/lib/esm/useQuery.js
CHANGED
|
@@ -17,14 +17,15 @@ export const useQuery = (db, options) => {
|
|
|
17
17
|
const loadingMoreRef = useRef(false);
|
|
18
18
|
const iteratorRef = useRef(null);
|
|
19
19
|
const emptyResultsRef = useRef(false);
|
|
20
|
-
const updateAll = (combined) => {
|
|
21
|
-
logWithId(options, "Loading more items, new combined length", combined.length);
|
|
20
|
+
const updateAll = (combined, fromChange) => {
|
|
21
|
+
logWithId(options, "Loading more items, new combined length", combined.length, "from change", fromChange);
|
|
22
22
|
allRef.current = combined;
|
|
23
23
|
setAll(combined);
|
|
24
24
|
};
|
|
25
25
|
const reset = () => {
|
|
26
|
+
logWithId(options, "RESET FROM " + allRef.current.length);
|
|
26
27
|
emptyResultsRef.current = false;
|
|
27
|
-
iteratorRef.current?.iterator.done() &&
|
|
28
|
+
!iteratorRef.current?.iterator.done() &&
|
|
28
29
|
iteratorRef.current?.iterator?.close();
|
|
29
30
|
iteratorRef.current = null;
|
|
30
31
|
setAll([]);
|
|
@@ -70,7 +71,9 @@ export const useQuery = (db, options) => {
|
|
|
70
71
|
handleChange = async (e) => {
|
|
71
72
|
// while we are iterating, we might get new documents.. so this method inserts them where they should be
|
|
72
73
|
let filteredChange = await mergeFunction(e.detail);
|
|
73
|
-
if (!filteredChange
|
|
74
|
+
if (!filteredChange ||
|
|
75
|
+
(filteredChange.added.length === 0 &&
|
|
76
|
+
filteredChange.removed.length === 0)) {
|
|
74
77
|
return;
|
|
75
78
|
}
|
|
76
79
|
let merged = [];
|
|
@@ -80,13 +83,14 @@ export const useQuery = (db, options) => {
|
|
|
80
83
|
];
|
|
81
84
|
}
|
|
82
85
|
else {
|
|
83
|
-
await db.index.updateResults(allRef.current, filteredChange, options?.query || {}, options?.resolve ?? true);
|
|
86
|
+
merged = await db.index.updateResults(allRef.current, filteredChange, options?.query || {}, options?.resolve ?? true);
|
|
84
87
|
const expectedDiff = filteredChange.added.length -
|
|
85
88
|
filteredChange.removed.length;
|
|
86
89
|
if (merged === allRef.current ||
|
|
87
90
|
(expectedDiff !== 0 &&
|
|
88
91
|
merged.length === allRef.current.length)) {
|
|
89
92
|
// no change
|
|
93
|
+
logWithId(options, "no change after merge");
|
|
90
94
|
return;
|
|
91
95
|
}
|
|
92
96
|
}
|
|
@@ -96,7 +100,7 @@ export const useQuery = (db, options) => {
|
|
|
96
100
|
merged: merged.length,
|
|
97
101
|
allRef: allRef.current.length,
|
|
98
102
|
});
|
|
99
|
-
updateAll(options?.reverse ? merged.reverse() : merged);
|
|
103
|
+
updateAll(options?.reverse ? merged.reverse() : merged, e.detail);
|
|
100
104
|
};
|
|
101
105
|
db.events.addEventListener("change", handleChange);
|
|
102
106
|
}
|
|
@@ -157,11 +161,12 @@ export const useQuery = (db, options) => {
|
|
|
157
161
|
const combined = options?.reverse
|
|
158
162
|
? [...newItemsNoHash.reverse(), ...prev]
|
|
159
163
|
: [...prev, ...newItemsNoHash];
|
|
160
|
-
updateAll(combined);
|
|
164
|
+
updateAll(combined, null);
|
|
161
165
|
}
|
|
162
166
|
else {
|
|
163
167
|
logWithId(options, "no new items, not updating state for iterator" +
|
|
164
|
-
iteratorRef.current?.id
|
|
168
|
+
iteratorRef.current?.id +
|
|
169
|
+
" existing results length", allRef.current.length);
|
|
165
170
|
}
|
|
166
171
|
}
|
|
167
172
|
catch (error) {
|
package/lib/esm/useQuery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../../src/useQuery.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EACH,WAAW,GAKd,MAAM,mBAAmB,CAAC;AAS3B,MAAM,SAAS,GAAG,CACd,OAAyD,EACzD,GAAG,IAAW,EAChB,EAAE;IACA,IAAI,CAAC,OAAO,EAAE,KAAK;QAAE,OAAO;IAE5B,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC;SAAM,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAC3C,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAMpB,EAAoB,EACpB,OA2BgB,EAClB,EAAE;IACA,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAoB,EAAE,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,MAAM,CAAoB,EAAE,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,WAAW,GAAG,MAAM,CAGhB,IAAI,CAAC,CAAC;IAChB,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"useQuery.js","sourceRoot":"","sources":["../../src/useQuery.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peerbit/react",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.18",
|
|
4
4
|
"homepage": "https://dao-xyz.github.io/peerbit-examples",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "lib/esm/index.js",
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
"last 1 safari version"
|
|
71
71
|
]
|
|
72
72
|
},
|
|
73
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "b5151c6b800226ed660cdec491fbf6f05a021c2f"
|
|
74
74
|
}
|
package/src/useQuery.tsx
CHANGED
|
@@ -73,11 +73,16 @@ export const useQuery = <
|
|
|
73
73
|
} | null>(null);
|
|
74
74
|
const emptyResultsRef = useRef(false);
|
|
75
75
|
|
|
76
|
-
const updateAll = (
|
|
76
|
+
const updateAll = (
|
|
77
|
+
combined: WithContext<RT>[],
|
|
78
|
+
fromChange?: DocumentsChange<any> | null
|
|
79
|
+
) => {
|
|
77
80
|
logWithId(
|
|
78
81
|
options,
|
|
79
82
|
"Loading more items, new combined length",
|
|
80
|
-
combined.length
|
|
83
|
+
combined.length,
|
|
84
|
+
"from change",
|
|
85
|
+
fromChange
|
|
81
86
|
);
|
|
82
87
|
|
|
83
88
|
allRef.current = combined;
|
|
@@ -86,8 +91,10 @@ export const useQuery = <
|
|
|
86
91
|
};
|
|
87
92
|
|
|
88
93
|
const reset = () => {
|
|
94
|
+
logWithId(options, "RESET FROM " + allRef.current.length);
|
|
95
|
+
|
|
89
96
|
emptyResultsRef.current = false;
|
|
90
|
-
iteratorRef.current?.iterator.done() &&
|
|
97
|
+
!iteratorRef.current?.iterator.done() &&
|
|
91
98
|
iteratorRef.current?.iterator?.close();
|
|
92
99
|
iteratorRef.current = null;
|
|
93
100
|
setAll([]);
|
|
@@ -141,9 +148,12 @@ export const useQuery = <
|
|
|
141
148
|
: (change: DocumentsChange<T>) => change;
|
|
142
149
|
handleChange = async (e: CustomEvent<DocumentsChange<T>>) => {
|
|
143
150
|
// while we are iterating, we might get new documents.. so this method inserts them where they should be
|
|
144
|
-
|
|
145
151
|
let filteredChange = await mergeFunction(e.detail);
|
|
146
|
-
if (
|
|
152
|
+
if (
|
|
153
|
+
!filteredChange ||
|
|
154
|
+
(filteredChange.added.length === 0 &&
|
|
155
|
+
filteredChange.removed.length === 0)
|
|
156
|
+
) {
|
|
147
157
|
return;
|
|
148
158
|
}
|
|
149
159
|
let merged: WithContext<RT>[] = [];
|
|
@@ -155,7 +165,7 @@ export const useQuery = <
|
|
|
155
165
|
),
|
|
156
166
|
];
|
|
157
167
|
} else {
|
|
158
|
-
await db.index.updateResults(
|
|
168
|
+
merged = await db.index.updateResults(
|
|
159
169
|
allRef.current,
|
|
160
170
|
filteredChange,
|
|
161
171
|
options?.query || {},
|
|
@@ -171,6 +181,7 @@ export const useQuery = <
|
|
|
171
181
|
merged.length === allRef.current.length)
|
|
172
182
|
) {
|
|
173
183
|
// no change
|
|
184
|
+
logWithId(options, "no change after merge");
|
|
174
185
|
return;
|
|
175
186
|
}
|
|
176
187
|
}
|
|
@@ -182,7 +193,10 @@ export const useQuery = <
|
|
|
182
193
|
allRef: allRef.current.length,
|
|
183
194
|
});
|
|
184
195
|
|
|
185
|
-
updateAll(
|
|
196
|
+
updateAll(
|
|
197
|
+
options?.reverse ? merged.reverse() : merged,
|
|
198
|
+
e.detail
|
|
199
|
+
);
|
|
186
200
|
};
|
|
187
201
|
db.events.addEventListener("change", handleChange);
|
|
188
202
|
}
|
|
@@ -265,12 +279,14 @@ export const useQuery = <
|
|
|
265
279
|
const combined = options?.reverse
|
|
266
280
|
? [...newItemsNoHash.reverse(), ...prev]
|
|
267
281
|
: [...prev, ...newItemsNoHash];
|
|
268
|
-
updateAll(combined);
|
|
282
|
+
updateAll(combined, null);
|
|
269
283
|
} else {
|
|
270
284
|
logWithId(
|
|
271
285
|
options,
|
|
272
286
|
"no new items, not updating state for iterator" +
|
|
273
|
-
iteratorRef.current?.id
|
|
287
|
+
iteratorRef.current?.id +
|
|
288
|
+
" existing results length",
|
|
289
|
+
allRef.current.length
|
|
274
290
|
);
|
|
275
291
|
}
|
|
276
292
|
} catch (error) {
|