Skip to content

Commit 4a6ebe0

Browse files
authored
1 parent a307d64 commit 4a6ebe0

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

extensions/git/src/decorationProvider.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import * as path from 'path';
88
import { Repository, GitResourceGroup } from './repository';
99
import { Model } from './model';
1010
import { debounce } from './decorators';
11-
import { filterEvent, dispose, anyEvent, fireEvent, PromiseSource, combinedDisposable } from './util';
11+
import { filterEvent, dispose, anyEvent, fireEvent, PromiseSource, combinedDisposable, runAndSubscribeEvent } from './util';
1212
import { Change, GitErrorCodes, Status } from './api/git';
1313

1414
class GitIgnoreDecorationProvider implements FileDecorationProvider {
@@ -101,7 +101,7 @@ class GitDecorationProvider implements FileDecorationProvider {
101101
constructor(private repository: Repository) {
102102
this.disposables.push(
103103
window.registerFileDecorationProvider(this),
104-
repository.onDidRunGitStatus(this.onDidRunGitStatus, this)
104+
runAndSubscribeEvent(repository.onDidRunGitStatus, () => this.onDidRunGitStatus())
105105
);
106106
}
107107

@@ -162,8 +162,10 @@ class GitIncomingChangesFileDecorationProvider implements FileDecorationProvider
162162
private readonly disposables: Disposable[] = [];
163163

164164
constructor(private readonly repository: Repository) {
165-
this.disposables.push(window.registerFileDecorationProvider(this));
166-
repository.historyProvider.onDidChangeCurrentHistoryItemGroup(this.onDidChangeCurrentHistoryItemGroup, this, this.disposables);
165+
this.disposables.push(
166+
window.registerFileDecorationProvider(this),
167+
runAndSubscribeEvent(repository.historyProvider.onDidChangeCurrentHistoryItemGroup, () => this.onDidChangeCurrentHistoryItemGroup())
168+
);
167169
}
168170

169171
private async onDidChangeCurrentHistoryItemGroup(): Promise<void> {

extensions/git/src/util.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ export function filterEvent<T>(event: Event<T>, filter: (e: T) => boolean): Even
4747
return (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]) => event(e => filter(e) && listener.call(thisArgs, e), null, disposables);
4848
}
4949

50+
export function runAndSubscribeEvent<T>(event: Event<T>, handler: (e: T) => any, initial: T): IDisposable;
51+
export function runAndSubscribeEvent<T>(event: Event<T>, handler: (e: T | undefined) => any): IDisposable;
52+
export function runAndSubscribeEvent<T>(event: Event<T>, handler: (e: T | undefined) => any, initial?: T): IDisposable {
53+
handler(initial);
54+
return event(e => handler(e));
55+
}
56+
5057
export function anyEvent<T>(...events: Event<T>[]): Event<T> {
5158
return (listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]) => {
5259
const result = combinedDisposable(events.map(event => event(i => listener.call(thisArgs, i))));

0 commit comments

Comments
 (0)