Skip to content

Commit 7135652

Browse files
fix missing data when reloading
1 parent 8ba37f5 commit 7135652

3 files changed

Lines changed: 20 additions & 9 deletions

File tree

lib/Onyx.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@ function init({
7373
OnyxUtils.initStoreValues(keys, initialKeyStates, evictableKeys);
7474

7575
// Initialize all of our keys with data provided then give green light to any pending connections
76-
Promise.all([cache.addEvictableKeysToRecentlyAccessedList(OnyxUtils.isCollectionKey), OnyxUtils.initializeWithDefaultKeyStates()]).then(OnyxUtils.getDeferredInitTask().resolve);
76+
Promise.all([cache.addEvictableKeysToRecentlyAccessedList(OnyxUtils.isCollectionKey, OnyxUtils.getAllKeys), OnyxUtils.initializeWithDefaultKeyStates()]).then(
77+
OnyxUtils.getDeferredInitTask().resolve,
78+
);
7779
}
7880

7981
/**

lib/OnyxCache.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -336,11 +336,13 @@ class OnyxCache {
336336
* the recently accessed list when initializing the app. This
337337
* enables keys that have not recently been accessed to be
338338
* removed.
339+
* @param isCollectionKeyFn - Function to determine if a key is a collection key
340+
* @param getAllKeysFn - Function to get all keys, defaults to Storage.getAllKeys
339341
*/
340-
addEvictableKeysToRecentlyAccessedList(isCollectionKeyFn: (key: OnyxKey) => boolean): Promise<void> {
341-
return Storage.getAllKeys().then((keys: string[]) => {
342+
addEvictableKeysToRecentlyAccessedList(isCollectionKeyFn: (key: OnyxKey) => boolean, getAllKeysFn: () => Promise<Set<OnyxKey>>): Promise<void> {
343+
return getAllKeysFn().then((keys: Set<OnyxKey>) => {
342344
this.evictionAllowList.forEach((evictableKey) => {
343-
keys.forEach((key: string) => {
345+
keys.forEach((key: OnyxKey) => {
344346
if (!this.isKeyMatch(evictableKey, key)) {
345347
return;
346348
}

tests/perf-test/OnyxUtils.perf-test.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,19 @@ describe('OnyxUtils', () => {
279279
};
280280

281281
test('one call adding 1k keys', async () => {
282-
await measureAsyncFunction(() => OnyxCache.addEvictableKeysToRecentlyAccessedList(() => false), {
283-
beforeEach: async () => {
284-
await Onyx.multiSet(data);
282+
await measureAsyncFunction(
283+
() =>
284+
OnyxCache.addEvictableKeysToRecentlyAccessedList(
285+
() => false,
286+
() => Promise.resolve(new Set(Object.keys(data))),
287+
),
288+
{
289+
beforeEach: async () => {
290+
await Onyx.multiSet(data);
291+
},
292+
afterEach: clearOnyxAfterEachMeasure,
285293
},
286-
afterEach: clearOnyxAfterEachMeasure,
287-
});
294+
);
288295
});
289296
});
290297

0 commit comments

Comments
 (0)