From 789ddb79a19696be7d4c963fae8b61bbe9a5f23f Mon Sep 17 00:00:00 2001 From: Jimmy Choi Date: Thu, 17 Jul 2025 09:15:54 -0700 Subject: [PATCH 1/4] initial commit --- .../indexes-toolbar/indexes-toolbar.spec.tsx | 1 + .../indexes-toolbar/indexes-toolbar.tsx | 34 +++++++++++++------ 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.spec.tsx b/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.spec.tsx index cf28af29f70..9bac366ab8e 100644 --- a/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.spec.tsx +++ b/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.spec.tsx @@ -44,6 +44,7 @@ describe('IndexesToolbar Component', function () { onCreateSearchIndexClick={() => {}} namespace="" showAtlasSearchLink={false} + serverVersion={'8.0.11'} {...props} /> diff --git a/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx b/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx index 9399bdac717..426c0ef1f32 100644 --- a/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx +++ b/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx @@ -21,6 +21,7 @@ import { SegmentedControlOption, } from '@mongodb-js/compass-components'; import { useConnectionInfo } from '@mongodb-js/compass-connections/provider'; +import semver from 'semver'; import type { RootState } from '../../modules'; import { createSearchIndexOpened } from '../../modules/search-indexes'; @@ -62,6 +63,7 @@ type IndexesToolbarProps = { isRefreshing: boolean; onRefreshIndexes: () => void; onIndexViewChanged: (newView: IndexView) => void; + serverVersion: string; // connected: isReadonlyView: boolean; isWritable: boolean; @@ -88,6 +90,7 @@ export const IndexesToolbar: React.FunctionComponent = ({ isSearchIndexesSupported, onRefreshIndexes, onIndexViewChanged, + serverVersion, readOnly, // preferences readOnly. }) => { const isSearchManagementActive = usePreference('enableAtlasSearchIndexes'); @@ -188,16 +191,27 @@ export const IndexesToolbar: React.FunctionComponent = ({ } > -

- Atlas Search index management in Compass is only available - for Atlas local deployments and clusters running MongoDB - 6.0.7 or newer. -

-

- For clusters running an earlier version of MongoDB, you - can manage your Atlas Search indexes from the Atlas web - Ul, with the CLI, or with the Administration API. -

+ {semver.gte(serverVersion, '6.0.7') ? ( +

+ Unable to fetch search indexes. This can occur when your + cluster does not support search indexes or the listing + search indexes request failed. +

+ ) : ( + <> +

+ Atlas Search index management in Compass is only + available for Atlas local deployments and clusters + running MongoDB 6.0.7 or newer. +

+

+ For clusters running an earlier version of MongoDB, + you can manage your Atlas Search indexes from the + Atlas web Ul, with the CLI, or with the Administration + API. +

+ + )} )} {isSearchIndexesSupported && ( From 3dc905f60a72115ec0a8d9abb720c9caf8da2ea0 Mon Sep 17 00:00:00 2001 From: Jimmy Choi Date: Fri, 18 Jul 2025 09:55:47 -0700 Subject: [PATCH 2/4] wrap in try/catch --- .../indexes-toolbar/indexes-toolbar.tsx | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx b/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx index 426c0ef1f32..77abbb1bf0d 100644 --- a/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx +++ b/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx @@ -54,6 +54,19 @@ const createIndexButtonContainerStyles = css({ width: 'fit-content', }); +const MIN_SEARCH_INDEX_MANAGEMENT_SERVER_VERSION = '6.0.7'; + +const serverSupportsSearchIndexManagement = (serverVersion: string) => { + try { + return semver.gte( + serverVersion, + MIN_SEARCH_INDEX_MANAGEMENT_SERVER_VERSION + ); + } catch { + return true; + } +}; + type IndexesToolbarProps = { namespace: string; indexView: IndexView; @@ -191,7 +204,7 @@ export const IndexesToolbar: React.FunctionComponent = ({ } > - {semver.gte(serverVersion, '6.0.7') ? ( + {serverSupportsSearchIndexManagement(serverVersion) ? (

Unable to fetch search indexes. This can occur when your cluster does not support search indexes or the listing From d96142a6df9912ca0f1b49819c2b460932f84d28 Mon Sep 17 00:00:00 2001 From: Jimmy Choi Date: Mon, 21 Jul 2025 10:15:36 -0700 Subject: [PATCH 3/4] default false --- .../src/components/indexes-toolbar/indexes-toolbar.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx b/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx index 77abbb1bf0d..d8a909f5362 100644 --- a/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx +++ b/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx @@ -63,7 +63,7 @@ const serverSupportsSearchIndexManagement = (serverVersion: string) => { MIN_SEARCH_INDEX_MANAGEMENT_SERVER_VERSION ); } catch { - return true; + return false; } }; From 20ee45cc2782b5818e3b562063064d080c43377a Mon Sep 17 00:00:00 2001 From: Jimmy Choi <150958139+JimmyChoiMDB@users.noreply.github.com> Date: Mon, 21 Jul 2025 11:43:31 -0700 Subject: [PATCH 4/4] update phrasing Co-authored-by: Rhys --- .../src/components/indexes-toolbar/indexes-toolbar.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx b/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx index d8a909f5362..0989e4edee1 100644 --- a/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx +++ b/packages/compass-indexes/src/components/indexes-toolbar/indexes-toolbar.tsx @@ -207,8 +207,8 @@ export const IndexesToolbar: React.FunctionComponent = ({ {serverSupportsSearchIndexManagement(serverVersion) ? (

Unable to fetch search indexes. This can occur when your - cluster does not support search indexes or the listing - search indexes request failed. + cluster does not support search indexes or the request + to list search indexes failed.

) : ( <>