diff --git a/src/vs/workbench/parts/update/electron-browser/update.ts b/src/vs/workbench/parts/update/electron-browser/update.ts index 4a9c61896ed13b62866f89b962ed68db4f028df8..b2471615aee61283604974611b4d9ab26ebebbb7 100644 --- a/src/vs/workbench/parts/update/electron-browser/update.ts +++ b/src/vs/workbench/parts/update/electron-browser/update.ts @@ -45,7 +45,7 @@ const NotNowAction = new Action( () => TPromise.as(true) ); -let releaseNotesCache: Object = {}; +const releaseNotesCache: { [version: string]: TPromise; } = Object.create(null); export function loadReleaseNotes(accessor: ServicesAccessor, version: string): TPromise { const requestService = accessor.get(IRequestService); @@ -61,17 +61,6 @@ 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]; @@ -104,14 +93,13 @@ export function loadReleaseNotes(accessor: ServicesAccessor, version: string): T .replace(/kbstyle\(([^\)]+)\)/gi, kbstyle); }; - if (releaseNotesCache[version]) { - return getReleaseNotes() - .then(text => patchKeybindings(text)); - } else { - return requestService.request({ url }) + if (!releaseNotesCache[version]) { + releaseNotesCache[version] = requestService.request({ url }) .then(asText) - .then(text => storeReleaseNotes(patchKeybindings(text))); + .then(text => patchKeybindings(text)); } + + return releaseNotesCache[version]; } export class OpenLatestReleaseNotesInBrowserAction extends Action {