From bfdd19ccf2b1acb9a83968948514d4bde7482be7 Mon Sep 17 00:00:00 2001 From: Baptiste Augrain Date: Tue, 4 Apr 2023 23:29:53 +0200 Subject: [PATCH] fix: banner uses same flag as the notification (#1463) --- patches/fix-eol-banner.patch | 71 ++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 patches/fix-eol-banner.patch diff --git a/patches/fix-eol-banner.patch b/patches/fix-eol-banner.patch new file mode 100644 index 0000000..de5f3f9 --- /dev/null +++ b/patches/fix-eol-banner.patch @@ -0,0 +1,71 @@ +diff --git a/src/vs/workbench/browser/parts/banner/bannerPart.ts b/src/vs/workbench/browser/parts/banner/bannerPart.ts +index b120c94..1bb2b88 100644 +--- a/src/vs/workbench/browser/parts/banner/bannerPart.ts ++++ b/src/vs/workbench/browser/parts/banner/bannerPart.ts +@@ -11,3 +11,3 @@ import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/ + import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; +-import { IStorageService } from 'vs/platform/storage/common/storage'; ++import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; + import { IThemeService } from 'vs/platform/theme/common/themeService'; +@@ -30,2 +30,3 @@ import { widgetClose } from 'vs/platform/theme/common/iconRegistry'; + import { BannerFocused } from 'vs/workbench/common/contextkeys'; ++import { INeverShowAgainOptions, NeverShowAgainScope } from 'vs/platform/notification/common/notification'; + +@@ -67,3 +68,3 @@ export class BannerPart extends Part implements IBannerService { + @IWorkbenchLayoutService layoutService: IWorkbenchLayoutService, +- @IStorageService storageService: IStorageService, ++ @IStorageService private readonly storageService: IStorageService, + @IContextKeyService private readonly contextKeyService: IContextKeyService, +@@ -187,2 +188,14 @@ export class BannerPart extends Part implements IBannerService { + ++ if (item.neverShowAgain) { ++ const scope = this.toStorageScope(item.neverShowAgain); ++ const id = item.neverShowAgain.id; ++ ++ // If the user already picked to not show the notification ++ // again, we return with a no-op notification here ++ if (this.storageService.getBoolean(id, scope)) { ++ this.close(item); ++ return; ++ } ++ } ++ + // Clear previous item +@@ -234,2 +247,15 @@ export class BannerPart extends Part implements IBannerService { + ++ private toStorageScope(options: INeverShowAgainOptions): StorageScope { ++ switch (options.scope) { ++ case NeverShowAgainScope.APPLICATION: ++ return StorageScope.APPLICATION; ++ case NeverShowAgainScope.PROFILE: ++ return StorageScope.PROFILE; ++ case NeverShowAgainScope.WORKSPACE: ++ return StorageScope.WORKSPACE; ++ default: ++ return StorageScope.APPLICATION; ++ } ++ } ++ + toJSON(): object { +diff --git a/src/vs/workbench/electron-sandbox/window.ts b/src/vs/workbench/electron-sandbox/window.ts +index cf6af9d..1344cb5 100644 +--- a/src/vs/workbench/electron-sandbox/window.ts ++++ b/src/vs/workbench/electron-sandbox/window.ts +@@ -725,3 +725,4 @@ export class NativeWindow extends Disposable { + actions, +- icon: Codicon.warning ++ icon: Codicon.warning, ++ neverShowAgain: { id: 'windowseol', isSecondary: true, scope: NeverShowAgainScope.APPLICATION } + }); +diff --git a/src/vs/workbench/services/banner/browser/bannerService.ts b/src/vs/workbench/services/banner/browser/bannerService.ts +index 639b1b2..70e8847 100644 +--- a/src/vs/workbench/services/banner/browser/bannerService.ts ++++ b/src/vs/workbench/services/banner/browser/bannerService.ts +@@ -10,2 +10,3 @@ import { ILinkDescriptor } from 'vs/platform/opener/browser/link'; + import { ThemeIcon } from 'vs/base/common/themables'; ++import { INeverShowAgainOptions } from 'vs/platform/notification/common/notification'; + +@@ -18,2 +19,3 @@ export interface IBannerItem { + readonly onClose?: () => void; ++ readonly neverShowAgain?: INeverShowAgainOptions; + }