From 341f84ca80d5ea2e6e0c81aa4d71df00861ff352 Mon Sep 17 00:00:00 2001 From: Alf Eaton Date: Tue, 4 Feb 2025 09:07:05 +0000 Subject: [PATCH] Return a promise from openDoc (#23309) GitOrigin-RevId: a2801ce482e48a061269d819aff16a6c6e507955 --- .../features/ide-react/context/editor-manager-context.tsx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/services/web/frontend/js/features/ide-react/context/editor-manager-context.tsx b/services/web/frontend/js/features/ide-react/context/editor-manager-context.tsx index 91de3cbdcd..a0c67efaa4 100644 --- a/services/web/frontend/js/features/ide-react/context/editor-manager-context.tsx +++ b/services/web/frontend/js/features/ide-react/context/editor-manager-context.tsx @@ -427,6 +427,9 @@ export const EditorManagerProvider: FC = ({ children }) => { const openDoc = useCallback( async (doc: Doc, options: OpenDocOptions = {}) => { debugConsole.log(`[openDoc] Opening ${doc._id}`) + + const { promise, resolve, reject } = Promise.withResolvers() + if (view === 'editor') { // store position of previous doc before switching docs eventEmitter.emit('store-doc-position') @@ -458,6 +461,8 @@ export const EditorManagerProvider: FC = ({ children }) => { eventEmitter.emit('editor:gotoOffset', options) }) } + + resolve(doc) } // If we already have the document open, or are opening the document, we can return at this point. @@ -493,7 +498,10 @@ export const EditorManagerProvider: FC = ({ children }) => { t('error_opening_document'), t('error_opening_document_detail') ) + reject(error) } + + return promise }, [ eventEmitter,