diff --git a/src/vs/workbench/parts/update/electron-browser/update.ts b/src/vs/workbench/parts/update/electron-browser/update.ts index 3e74855267d2ebf12a930aa7c04cd1940c67ec03..4a9c61896ed13b62866f89b962ed68db4f028df8 100644 --- a/src/vs/workbench/parts/update/electron-browser/update.ts +++ b/src/vs/workbench/parts/update/electron-browser/update.ts @@ -45,6 +45,8 @@ const NotNowAction = new Action( () => TPromise.as(true) ); +let releaseNotesCache: Object = {}; + export function loadReleaseNotes(accessor: ServicesAccessor, version: string): TPromise { const requestService = accessor.get(IRequestService); const keybindingService = accessor.get(IKeybindingService); @@ -59,6 +61,17 @@ export function loadReleaseNotes(accessor: ServicesAccessor, version: string): T const url = `${baseUrl}/v${versionLabel}.md`; const unassigned = nls.localize('unassigned', "unassigned"); + const storeReleaseNotes = (text: string): TPromise => { + releaseNotesCache[version] = text; + return new TPromise((c, e) => c(releaseNotesCache[version])); + }; + + const getReleaseNotes = (): TPromise => { + return new TPromise((c, e) => { + c(releaseNotesCache[version]); + }); + }; + const patchKeybindings = (text: string): string => { const kb = (match: string, kb: string) => { const keybinding = keybindingService.lookupKeybindings(kb)[0]; @@ -91,9 +104,14 @@ export function loadReleaseNotes(accessor: ServicesAccessor, version: string): T .replace(/kbstyle\(([^\)]+)\)/gi, kbstyle); }; - return requestService.request({ url }) - .then(asText) - .then(text => patchKeybindings(text)); + if (releaseNotesCache[version]) { + return getReleaseNotes() + .then(text => patchKeybindings(text)); + } else { + return requestService.request({ url }) + .then(asText) + .then(text => storeReleaseNotes(patchKeybindings(text))); + } } export class OpenLatestReleaseNotesInBrowserAction extends Action {