Page MenuHomePhabricator

D13861.diff
No OneTemporary

D13861.diff

diff --git a/lib/shared/dm-ops/dm-ops-queue-handler.react.js b/lib/shared/dm-ops/dm-ops-queue-handler.react.js
--- a/lib/shared/dm-ops/dm-ops-queue-handler.react.js
+++ b/lib/shared/dm-ops/dm-ops-queue-handler.react.js
@@ -63,7 +63,6 @@
}, [prune]);
const threadInfos = useSelector(threadInfoSelector);
- const prevThreadInfosRef = React.useRef({});
const queuedThreadOperations = useSelector(
state => state.queuedDMOperations.threadQueue,
@@ -95,14 +94,20 @@
const { enqueue } = useActionsQueue(processItem);
- React.useEffect(() => {
- const prevThreadInfos = prevThreadInfosRef.current;
- prevThreadInfosRef.current = threadInfos;
+ const runningThreadOperations = React.useRef<Set<string>>(new Set());
+ React.useEffect(() => {
for (const threadID in queuedThreadOperations) {
- if (!threadInfos[threadID] || prevThreadInfos[threadID]) {
+ if (!threadInfos[threadID]) {
+ continue;
+ }
+
+ if (runningThreadOperations.current.has(threadID)) {
continue;
}
+
+ runningThreadOperations.current.add(threadID);
+
enqueue([
...queuedThreadOperations[threadID].map(item => ({
type: 'operation',
@@ -117,6 +122,10 @@
},
},
},
+ {
+ type: 'function',
+ itemFunction: () => runningThreadOperations.current.delete(threadID),
+ },
]);
}
}, [dispatch, enqueue, queuedThreadOperations, threadInfos]);

File Metadata

Mime Type
text/plain
Expires
Fri, Nov 8, 6:41 AM (22 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2440344
Default Alt Text
D13861.diff (1 KB)

Event Timeline