git: fix range staging timing issues

This commit is contained in:
Joao Moreno
2017-02-17 16:51:56 +01:00
parent 8423993f5c
commit 88d72dbe54
2 changed files with 10 additions and 9 deletions

View File

@@ -6,6 +6,7 @@
'use strict';
import { workspace, Uri, Disposable, Event, EventEmitter } from 'vscode';
import { debounce } from './decorators';
import { Model } from './model';
export class GitContentProvider {
@@ -15,7 +16,7 @@ export class GitContentProvider {
private onDidChangeEmitter = new EventEmitter<Uri>();
get onDidChange(): Event<Uri> { return this.onDidChangeEmitter.event; }
private uris = new Set<Uri>();
private uris: { [uri: string]: Uri } = Object.create(null) as { [uri: string]: Uri };
constructor(private model: Model) {
this.disposables.push(
@@ -24,10 +25,11 @@ export class GitContentProvider {
);
}
private fireChangeEvents(arg): void {
for (let uri of this.uris) {
this.onDidChangeEmitter.fire(uri);
}
@debounce(300)
private fireChangeEvents(): void {
Object.keys(this.uris).forEach(key => {
this.onDidChangeEmitter.fire(this.uris[key]);
});
}
async provideTextDocumentContent(uri: Uri): Promise<string> {
@@ -42,10 +44,10 @@ export class GitContentProvider {
try {
const result = await this.model.show(ref, uri);
this.uris.add(uri);
this.uris[uri.toString()] = uri;
return result;
} catch (err) {
this.uris.delete(uri);
delete this.uris[uri.toString()];
return '';
}
}