Fixes bug in observable event adaptor. (#188196)

This commit is contained in:
Henning Dieterichs
2023-07-18 23:17:29 +02:00
committed by GitHub
parent bfdd302155
commit c0da4d47e8
2 changed files with 32 additions and 1 deletions
+1
View File
@@ -682,6 +682,7 @@ export namespace Event {
}
};
observable.addObserver(observer);
observable.reportChanges();
return {
dispose() {
observable.removeObserver(observer);
+31 -1
View File
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import * as assert from 'assert';
import { Emitter } from 'vs/base/common/event';
import { Emitter, Event } from 'vs/base/common/event';
import { ISettableObservable, autorun, derived, ITransaction, observableFromEvent, observableValue, transaction, keepAlive } from 'vs/base/common/observable';
import { BaseObservable, IObservable, IObserver } from 'vs/base/common/observableImpl/base';
@@ -962,6 +962,36 @@ suite('observables', () => {
myObservable2.set(1, tx);
});
});
test('bug: fromObservableLight doesnt subscribe', () => {
const log = new Log();
const myObservable = new LoggingObservableValue('myObservable', 0, log);
const myDerived = derived('myDerived', reader => {
const val = myObservable.read(reader);
log.log(`myDerived.computed(myObservable2: ${val})`);
return val % 10;
});
const e = Event.fromObservableLight(myDerived);
log.log('event created');
e(() => {
log.log('event fired');
});
myObservable.set(1, undefined);
assert.deepStrictEqual(log.getAndClearEntries(), [
'event created',
'myObservable.firstObserverAdded',
'myObservable.get',
'myDerived.computed(myObservable2: 0)',
'myObservable.set (value 1)',
'myObservable.get',
'myDerived.computed(myObservable2: 1)',
'event fired',
]);
});
});
export class LoggingObserver implements IObserver {