Skip to content

Commit ef64ed4

Browse files
authored
Aggressive caching with Open Current File as Release Notes (microsoft#205846)
Fixes microsoft#205675
1 parent bf48061 commit ef64ed4

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

src/vs/workbench/contrib/update/browser/releaseNotesEditor.ts

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ export class ReleaseNotesManager {
4545
private readonly disposables = new DisposableStore();
4646

4747
public constructor(
48-
private readonly _useCurrentFile: boolean,
4948
@IEnvironmentService private readonly _environmentService: IEnvironmentService,
5049
@IKeybindingService private readonly _keybindingService: IKeybindingService,
5150
@ILanguageService private readonly _languageService: ILanguageService,
@@ -81,8 +80,8 @@ export class ReleaseNotesManager {
8180
}
8281
}
8382

84-
public async show(version: string): Promise<boolean> {
85-
const releaseNoteText = await this.loadReleaseNotes(version);
83+
public async show(version: string, useCurrentFile: boolean): Promise<boolean> {
84+
const releaseNoteText = await this.loadReleaseNotes(version, useCurrentFile);
8685
this._lastText = releaseNoteText;
8786
const html = await this.renderBody(releaseNoteText);
8887
const title = nls.localize('releaseNotesInputName', "Release Notes: {0}", version);
@@ -137,7 +136,7 @@ export class ReleaseNotesManager {
137136
return true;
138137
}
139138

140-
private async loadReleaseNotes(version: string): Promise<string> {
139+
private async loadReleaseNotes(version: string, useCurrentFile: boolean): Promise<string> {
141140
const match = /^(\d+\.\d+)\./.exec(version);
142141
if (!match) {
143142
throw new Error('not found');
@@ -199,7 +198,12 @@ export class ReleaseNotesManager {
199198
const fetchReleaseNotes = async () => {
200199
let text;
201200
try {
202-
text = this._useCurrentFile ? this._codeEditorService.getActiveCodeEditor()?.getModel()?.getValue() : await asTextOrError(await this._requestService.request({ url }, CancellationToken.None));
201+
if (useCurrentFile) {
202+
const file = this._codeEditorService.getActiveCodeEditor()?.getModel()?.getValue();
203+
text = file ? file.substring(file.indexOf('#')) : undefined;
204+
} else {
205+
text = await asTextOrError(await this._requestService.request({ url }, CancellationToken.None));
206+
}
203207
} catch {
204208
throw new Error('Failed to fetch release notes');
205209
}
@@ -211,6 +215,10 @@ export class ReleaseNotesManager {
211215
return patchKeybindings(text);
212216
};
213217

218+
// Don't cache the current file
219+
if (useCurrentFile) {
220+
return fetchReleaseNotes();
221+
}
214222
if (!this._releaseNotesCache.has(version)) {
215223
this._releaseNotesCache.set(version, (async () => {
216224
try {

src/vs/workbench/contrib/update/browser/update.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ let releaseNotesManager: ReleaseNotesManager | undefined = undefined;
4040

4141
export function showReleaseNotesInEditor(instantiationService: IInstantiationService, version: string, useCurrentFile: boolean) {
4242
if (!releaseNotesManager) {
43-
releaseNotesManager = instantiationService.createInstance(ReleaseNotesManager, useCurrentFile);
43+
releaseNotesManager = instantiationService.createInstance(ReleaseNotesManager);
4444
}
4545

46-
return releaseNotesManager.show(version);
46+
return releaseNotesManager.show(version, useCurrentFile);
4747
}
4848

4949
async function openLatestReleaseNotesInBrowser(accessor: ServicesAccessor) {

0 commit comments

Comments
 (0)