Skip to content

Commit c9555fc

Browse files
committed
Fix stale onyx collection member key data when clearing
1 parent ace9abf commit c9555fc

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

lib/Onyx.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import type {
99
InitOptions,
1010
KeyValueMapping,
1111
OnyxInputKeyValueMapping,
12-
OnyxCollection,
1312
MixedOperationsQueue,
1413
OnyxKey,
1514
OnyxMergeCollectionInput,
@@ -309,9 +308,11 @@ function clear(keysToPreserve: OnyxKey[] = []): Promise<void> {
309308
cache.clearNullishStorageKeys();
310309

311310
const keysToBeClearedFromStorage: OnyxKey[] = [];
312-
const keyValuesToResetAsCollection: Record<OnyxKey, OnyxCollection<KeyValueMapping[OnyxKey]>> = {};
311+
const keyValuesToResetAsCollection: Record<
312+
OnyxKey,
313+
{oldValues: Record<string, KeyValueMapping[OnyxKey] | undefined>; newValues: Record<string, KeyValueMapping[OnyxKey] | undefined>}
314+
> = {};
313315
const keyValuesToResetIndividually: KeyValueMapping = {};
314-
315316
const allKeys = new Set([...cachedKeys, ...initialKeys]);
316317

317318
// The only keys that should not be cleared are:
@@ -344,9 +345,10 @@ function clear(keysToPreserve: OnyxKey[] = []): Promise<void> {
344345

345346
if (collectionKey) {
346347
if (!keyValuesToResetAsCollection[collectionKey]) {
347-
keyValuesToResetAsCollection[collectionKey] = {};
348+
keyValuesToResetAsCollection[collectionKey] = {oldValues: {}, newValues: {}};
348349
}
349-
keyValuesToResetAsCollection[collectionKey]![key] = newValue ?? undefined;
350+
keyValuesToResetAsCollection[collectionKey].oldValues[key] = oldValue;
351+
keyValuesToResetAsCollection[collectionKey].newValues[key] = newValue ?? undefined;
350352
} else {
351353
keyValuesToResetIndividually[key] = newValue ?? undefined;
352354
}
@@ -368,7 +370,7 @@ function clear(keysToPreserve: OnyxKey[] = []): Promise<void> {
368370
updatePromises.push(OnyxUtils.scheduleSubscriberUpdate(key, value));
369371
}
370372
for (const [key, value] of Object.entries(keyValuesToResetAsCollection)) {
371-
updatePromises.push(OnyxUtils.scheduleNotifyCollectionSubscribers(key, value));
373+
updatePromises.push(OnyxUtils.scheduleNotifyCollectionSubscribers(key, value.newValues, value.oldValues));
372374
}
373375

374376
const defaultKeyValuePairs = Object.entries(

0 commit comments

Comments
 (0)