diff --git a/src/behaviours/preferences/navigation-to-extension-specific-preferences.test.tsx b/src/behaviours/preferences/navigation-to-extension-specific-preferences.test.tsx index 891dfd018a..37bd15dbdb 100644 --- a/src/behaviours/preferences/navigation-to-extension-specific-preferences.test.tsx +++ b/src/behaviours/preferences/navigation-to-extension-specific-preferences.test.tsx @@ -90,8 +90,9 @@ describe("preferences - navigation to extension specific preferences", () => { beforeEach(async () => { const someTestExtension = getRendererExtensionFake(extensionStubWithExtensionSpecificPreferenceItems); const extensionWithoutPreferences = getRendererExtensionFake(extensionStubWithoutPreferences); + const extensionWithSpecificTab = getRendererExtensionFake(extensionStubWithShowInPreferencesTab); - await applicationBuilder.addExtensions(someTestExtension, extensionWithoutPreferences); + await applicationBuilder.addExtensions(someTestExtension, extensionWithoutPreferences, extensionWithSpecificTab); }); it("doesn't show link for extension without preferences", () => { @@ -99,6 +100,12 @@ describe("preferences - navigation to extension specific preferences", () => { expect(actual).toBeNull(); }); + + it("doesn't show link for preferences with 'showInPreferencesTab' param", () => { + const actual = rendered.queryByTestId("tab-link-for-extension-specified-preferences-page-id"); + + expect(actual).toBeNull(); + }); }); describe("when extension with specific preferences is enabled", () => { @@ -207,3 +214,20 @@ const someOtherExtensionStubWithExtensionSpecificPreferenceItems: Partial = { id: "without-preferences-id", }; + +const extensionStubWithShowInPreferencesTab: Partial = { + id: "specified-preferences-page-id", + + appPreferences: [ + { + title: "Test preference item", + id: "very-other-preference-item-id", + showInPreferencesTab: "some-tab", + + components: { + Hint: () =>
, + Input: () =>
, + }, + }, + ], +}; diff --git a/src/renderer/components/+preferences/preferences-navigation/extensions-preferences-navigation-item.injectable.ts b/src/renderer/components/+preferences/preferences-navigation/extensions-preferences-navigation-item.injectable.ts index 68c02343f7..676b1d345a 100644 --- a/src/renderer/components/+preferences/preferences-navigation/extensions-preferences-navigation-item.injectable.ts +++ b/src/renderer/components/+preferences/preferences-navigation/extensions-preferences-navigation-item.injectable.ts @@ -21,7 +21,11 @@ const extensionPreferencesNavigationItemRegistratorInjectable = getInjectable({ const navigateToExtensionPreferences = di.inject( navigateToExtensionPreferencesInjectable, ); - const isVisible = extension.appPreferences.length > 0; + const extensionHasPreferences = extension.appPreferences.length > 0; + const extensionHasGeneralPreferences = extension.appPreferences.some(preferences => + !preferences.showInPreferencesTab, + ); + const isVisible = extensionHasPreferences && extensionHasGeneralPreferences; const extensionRoute = di.inject(extensionPreferencesRouteInjectable); const extensionPreferencesRouteIsActive = di.inject(routeIsActiveInjectable, extensionRoute); const pathParameters = di.inject(currentPathParametersInjectable);