diff --git a/react/src/pages/EndpointListPage.tsx b/react/src/pages/EndpointListPage.tsx index 3e370e89e..3863f2290 100644 --- a/react/src/pages/EndpointListPage.tsx +++ b/react/src/pages/EndpointListPage.tsx @@ -77,6 +77,10 @@ const EndpointListPage: React.FC = ({ children }) => { const isPendingPaginationAndFilter = selectedLifecycleStage !== deferredSelectedLifecycleStage || paginationState !== deferredPaginationState; + const lifecycleStageFilter = + deferredSelectedLifecycleStage === 'created&destroying' + ? `lifecycle_stage == "created" | lifecycle_stage == "destroying"` + : `lifecycle_stage == "${deferredSelectedLifecycleStage}"`; const [isRefetchPending, startRefetchTransition] = useTransition(); const [servicesFetchKey, updateServicesFetchKey] = @@ -84,6 +88,7 @@ const EndpointListPage: React.FC = ({ children }) => { const [optimisticDeletingId, setOptimisticDeletingId] = useState< string | null >(); + const [currentUser] = useCurrentUserInfo(); // const [selectedGeneration, setSelectedGeneration] = useState< @@ -360,10 +365,9 @@ const EndpointListPage: React.FC = ({ children }) => { deferredPaginationState.pageSize, limit: deferredPaginationState.pageSize, projectID: curProject.id, - filter: - deferredSelectedLifecycleStage === 'created&destroying' - ? `lifecycle_stage == "created" | lifecycle_stage == "destroying"` - : `lifecycle_stage == "${deferredSelectedLifecycleStage}"`, + filter: baiClient.supports('endpoint-lifecycle-stage-filter') + ? lifecycleStageFilter + : undefined, }, { fetchPolicy: 'network-only', @@ -411,29 +415,31 @@ const EndpointListPage: React.FC = ({ children }) => { }} > - { - setSelectedLifecycleStage(e.target?.value); - // reset pagination state when filter changes - setPaginationState({ - current: 1, - pageSize: paginationState.pageSize, - }); - }} - optionType="button" - buttonStyle="solid" - options={[ - { - label: 'Active', - value: 'created&destroying', - }, - { - label: 'Destroyed', - value: 'destroyed', - }, - ]} - /> + {baiClient.supports('endpoint-lifecycle-stage-filter') && ( + { + setSelectedLifecycleStage(e.target?.value); + // reset pagination state when filter changes + setPaginationState({ + current: 1, + pageSize: paginationState.pageSize, + }); + }} + optionType="button" + buttonStyle="solid" + options={[ + { + label: 'Active', + value: 'created&destroying', + }, + { + label: 'Destroyed', + value: 'destroyed', + }, + ]} + /> + )} diff --git a/src/lib/backend.ai-client-esm.ts b/src/lib/backend.ai-client-esm.ts index 3bb9f126c..0987e3f91 100644 --- a/src/lib/backend.ai-client-esm.ts +++ b/src/lib/backend.ai-client-esm.ts @@ -710,6 +710,10 @@ class Client { if (this.isManagerVersionCompatibleWith('24.03.7')) { this._features['per-kernel-logs'] = true; } + // ignore next alpha version + if(this.isManagerVersionCompatibleWith(['24.03.10'])) { + this._features['endpoint-lifecycle-stage-filter'] = true; + } if (this.isManagerVersionCompatibleWith('24.09')) { this._features['extend-login-session'] = true; }