Skip to content

Commit a1638ea

Browse files
committed
Revert "Merge pull request Expensify#758 from Expensify/revert-724-VickyStash/poc/get-rid-of-macro-micro-tasks"
This reverts commit 381c36a, reversing changes made to 1ab73fe.
1 parent 2ae39de commit a1638ea

8 files changed

Lines changed: 143 additions & 174 deletions

File tree

lib/Onyx.ts

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -266,9 +266,8 @@ function merge<TKey extends OnyxKey>(key: TKey, changes: OnyxMergeInput<TKey>):
266266
return Promise.resolve();
267267
}
268268

269-
return OnyxMerge.applyMerge(key, existingValue, validChanges).then(({mergedValue, updatePromise}) => {
269+
return OnyxMerge.applyMerge(key, existingValue, validChanges).then(({mergedValue}) => {
270270
OnyxUtils.sendActionToDevTools(OnyxUtils.METHOD.MERGE, key, changes, mergedValue);
271-
return updatePromise;
272271
});
273272
} catch (error) {
274273
Logger.logAlert(`An error occurred while applying merge for key: ${key}, Error: ${error}`);
@@ -380,16 +379,6 @@ function clear(keysToPreserve: OnyxKey[] = []): Promise<void> {
380379
keysToBeClearedFromStorage.push(key);
381380
}
382381

383-
const updatePromises: Array<Promise<void>> = [];
384-
385-
// Notify the subscribers for each key/value group so they can receive the new values
386-
for (const [key, value] of Object.entries(keyValuesToResetIndividually)) {
387-
updatePromises.push(OnyxUtils.scheduleSubscriberUpdate(key, value));
388-
}
389-
for (const [key, value] of Object.entries(keyValuesToResetAsCollection)) {
390-
updatePromises.push(OnyxUtils.scheduleNotifyCollectionSubscribers(key, value.newValues, value.oldValues));
391-
}
392-
393382
// Exclude RAM-only keys to prevent them from being saved to storage
394383
const defaultKeyValuePairs = Object.entries(
395384
Object.keys(defaultKeyStates)
@@ -408,7 +397,14 @@ function clear(keysToPreserve: OnyxKey[] = []): Promise<void> {
408397
.then(() => Storage.multiSet(defaultKeyValuePairs))
409398
.then(() => {
410399
DevTools.clearState(keysToPreserve);
411-
return Promise.all(updatePromises);
400+
401+
// Notify the subscribers for each key/value group so they can receive the new values
402+
for (const [key, value] of Object.entries(keyValuesToResetIndividually)) {
403+
OnyxUtils.keyChanged(key, value);
404+
}
405+
for (const [key, value] of Object.entries(keyValuesToResetAsCollection)) {
406+
OnyxUtils.keysChanged(key, value.newValues, value.oldValues);
407+
}
412408
});
413409
})
414410
.then(() => undefined);

lib/OnyxMerge/index.native.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,20 @@ const applyMerge: ApplyMerge = <TKey extends OnyxKey, TValue extends OnyxInput<T
2626
OnyxUtils.logKeyChanged(OnyxUtils.METHOD.MERGE, key, mergedValue, hasChanged);
2727

2828
// This approach prioritizes fast UI changes without waiting for data to be stored in device storage.
29-
const updatePromise = OnyxUtils.broadcastUpdate(key, mergedValue as OnyxValue<TKey>, hasChanged);
29+
OnyxUtils.broadcastUpdate(key, mergedValue as OnyxValue<TKey>, hasChanged);
3030

3131
const shouldSkipStorageOperations = !hasChanged || OnyxUtils.isRamOnlyKey(key);
3232

3333
// If the value has not changed, calling Storage.setItem() would be redundant and a waste of performance, so return early instead.
3434
// If the key is marked as RAM-only, it should not be saved nor updated in the storage.
3535
if (shouldSkipStorageOperations) {
36-
return Promise.resolve({mergedValue, updatePromise});
36+
return Promise.resolve({mergedValue});
3737
}
3838

3939
// For native platforms we use `mergeItem` that will take advantage of JSON_PATCH and JSON_REPLACE SQL operations to
4040
// merge the object in a performant way.
4141
return Storage.mergeItem(key, batchedChanges as OnyxValue<TKey>, replaceNullPatches).then(() => ({
4242
mergedValue,
43-
updatePromise,
4443
}));
4544
};
4645

lib/OnyxMerge/index.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,19 @@ const applyMerge: ApplyMerge = <TKey extends OnyxKey, TValue extends OnyxInput<T
1818
OnyxUtils.logKeyChanged(OnyxUtils.METHOD.MERGE, key, mergedValue, hasChanged);
1919

2020
// This approach prioritizes fast UI changes without waiting for data to be stored in device storage.
21-
const updatePromise = OnyxUtils.broadcastUpdate(key, mergedValue as OnyxValue<TKey>, hasChanged);
21+
OnyxUtils.broadcastUpdate(key, mergedValue as OnyxValue<TKey>, hasChanged);
2222

2323
const shouldSkipStorageOperations = !hasChanged || OnyxUtils.isRamOnlyKey(key);
2424

2525
// If the value has not changed, calling Storage.setItem() would be redundant and a waste of performance, so return early instead.
2626
// If the key is marked as RAM-only, it should not be saved nor updated in the storage.
2727
if (shouldSkipStorageOperations) {
28-
return Promise.resolve({mergedValue, updatePromise});
28+
return Promise.resolve({mergedValue});
2929
}
3030

3131
// For web platforms we use `setItem` since the object was already merged with its changes before.
3232
return Storage.setItem(key, mergedValue as OnyxValue<TKey>).then(() => ({
3333
mergedValue,
34-
updatePromise,
3534
}));
3635
};
3736

lib/OnyxMerge/types.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import type {OnyxInput, OnyxKey} from '../types';
22

33
type ApplyMergeResult<TValue> = {
44
mergedValue: TValue;
5-
updatePromise: Promise<void>;
65
};
76

87
type ApplyMerge = <TKey extends OnyxKey, TValue extends OnyxInput<OnyxKey> | undefined, TChange extends OnyxInput<OnyxKey> | null>(

0 commit comments

Comments
 (0)