@@ -7,7 +7,7 @@ import { mapFindFirst } from '../../../../../base/common/arraysFind.js';
77import { itemsEquals } from '../../../../../base/common/equals.js' ;
88import { BugIndicatingError , onUnexpectedExternalError } from '../../../../../base/common/errors.js' ;
99import { Emitter } from '../../../../../base/common/event.js' ;
10- import { Disposable } from '../../../../../base/common/lifecycle.js' ;
10+ import { Disposable , DisposableStore } from '../../../../../base/common/lifecycle.js' ;
1111import { IObservable , IObservableWithChange , IReader , ITransaction , autorun , constObservable , derived , derivedHandleChanges , derivedOpts , mapObservableArrayCached , observableFromEvent , observableSignal , observableValue , recomputeInitiallyAndOnChange , subtransaction , transaction } from '../../../../../base/common/observable.js' ;
1212import { firstNonWhitespaceIndex } from '../../../../../base/common/strings.js' ;
1313import { isDefined } from '../../../../../base/common/types.js' ;
@@ -143,7 +143,7 @@ export class InlineCompletionsModel extends Disposable {
143143 const snippetController = SnippetController2 . get ( this . _editor ) ;
144144 this . _isInSnippetMode = snippetController ?. isInSnippetObservable ?? constObservable ( false ) ;
145145
146- defaultAccountService . getDefaultAccount ( ) . then ( account => this . sku . set ( skuFromAccount ( account ) , undefined ) ) ;
146+ defaultAccountService . getDefaultAccount ( ) . then ( createDisposableCb ( account => this . sku . set ( skuFromAccount ( account ) , undefined ) , this . _store ) ) ;
147147 this . _register ( defaultAccountService . onDidChangeDefaultAccount ( account => this . sku . set ( skuFromAccount ( account ) , undefined ) ) ) ;
148148
149149 this . _typing = this . _register ( new TypingInterval ( this . textModel ) ) ;
@@ -1280,3 +1280,25 @@ function skuFromAccount(account: IDefaultAccount | null): InlineSuggestSku | und
12801280 }
12811281 return undefined ;
12821282}
1283+
1284+ class DisposableCallback < T > {
1285+ private _cb : ( ( e : T ) => void ) | undefined ;
1286+
1287+ constructor ( cb : ( e : T ) => void ) {
1288+ this . _cb = cb ;
1289+ }
1290+
1291+ dispose ( ) : void {
1292+ this . _cb = undefined ;
1293+ }
1294+
1295+ readonly handler = ( val : T ) => {
1296+ return this . _cb ?.( val ) ;
1297+ } ;
1298+ }
1299+
1300+ function createDisposableCb < T > ( cb : ( e : T ) => void , store : DisposableStore ) : ( e : T ) => void {
1301+ const dcb = new DisposableCallback ( cb ) ;
1302+ store . add ( dcb ) ;
1303+ return dcb . handler ;
1304+ }
0 commit comments