@@ -202,16 +202,15 @@ function MonacoEditor ({
202
202
editorRef . current ! . setModel ( null )
203
203
return
204
204
}
205
- let cancelled = false
206
- async function updateModel ( ) {
205
+ const disposableStore = new DisposableStore ( )
206
+ async function updateModel ( ) : Promise < void > {
207
207
modelRef . current = undefined
208
208
editorRef . current ! . setModel ( null )
209
209
setModelReady ( false )
210
210
211
211
const value = valueRef . current
212
212
let modelIRef : IReference < ITextFileEditorModel > | undefined
213
213
let model : monaco . editor . ITextModel
214
- const disposableStore = new DisposableStore ( )
215
214
if ( fileUri != null ) {
216
215
const uri = monaco . Uri . parse ( fileUri )
217
216
@@ -224,9 +223,8 @@ function MonacoEditor ({
224
223
}
225
224
} )
226
225
modelIRef = ( await modelIRefPromise ) !
227
- if ( cancelled ) {
228
- modelIRef . dispose ( )
229
- return ( ) => { }
226
+ if ( disposableStore . isDisposed ) {
227
+ return
230
228
}
231
229
disposableStore . add ( modelIRef . object . onDidSave ( lastOnDidSave ) )
232
230
model = modelIRef . object . textEditorModel !
@@ -243,17 +241,17 @@ function MonacoEditor ({
243
241
if ( editorRef . current != null ) {
244
242
lastRestoreViewState ( editorRef . current , model )
245
243
}
246
- return ( ) => {
247
- if ( editorRef . current != null ) {
248
- lastSaveViewState ( editorRef . current , model )
244
+ disposableStore . add ( {
245
+ dispose ( ) {
246
+ if ( editorRef . current != null ) {
247
+ lastSaveViewState ( editorRef . current , model )
248
+ }
249
249
}
250
- disposableStore . dispose ( )
251
- }
250
+ } )
252
251
}
253
- const disposePromise = updateModel ( )
252
+ updateModel ( ) . catch ( console . error )
254
253
return ( ) => {
255
- cancelled = true
256
- disposePromise . then ( dispose => dispose ( ) , console . error )
254
+ disposableStore . dispose ( )
257
255
}
258
256
} , [ monacoLanguage , fileUri , valueRef , lastSaveViewState , lastRestoreViewState , hasValue , lastOnDidSave ] )
259
257
0 commit comments