Merge pull request #22964 from overleaf/ae-project-search-flush

Ensure that open docs are flushed before running full project search

GitOrigin-RevId: 6707cf982018908a37957503add73a085c749f61
This commit is contained in:
Alf Eaton
2025-01-23 09:34:58 +00:00
committed by Copybot
parent fdc4ccc62b
commit dfd448cd85
4 changed files with 49 additions and 36 deletions
@@ -95,4 +95,35 @@ export class OpenDocuments {
}
return ids
}
async awaitBufferedOps(signal: AbortSignal) {
if (this.hasUnsavedChanges()) {
const { promise, resolve } = Promise.withResolvers<void>()
let resolved = false
const listener = () => {
if (!this.hasUnsavedChanges()) {
debugConsole.log('saved')
window.removeEventListener('doc:saved', listener)
resolved = true
resolve()
}
}
window.addEventListener('doc:saved', listener)
signal.addEventListener('abort', () => {
if (!resolved) {
debugConsole.log('aborted')
window.removeEventListener('doc:saved', listener)
resolve()
}
})
this.flushAll()
await promise
}
}
}