Просмотр исходного кода

Return a promise from openDoc (#23309)

GitOrigin-RevId: a2801ce482e48a061269d819aff16a6c6e507955
Alf Eaton 1 год назад
Родитель
Сommit
341f84ca80

+ 8 - 0
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<Doc>()
+
       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,