Skip to content

Commit 28d8d84

Browse files
authored
Merge pull request #216 from docker/cm/dd-query
Move Docker Desktop version check to query
2 parents 20a03df + 4fdfbaa commit 28d8d84

File tree

3 files changed

+67
-64
lines changed

3 files changed

+67
-64
lines changed

src/extension/ui/src/components/tabs/YourEnvironment.tsx

Lines changed: 0 additions & 55 deletions
This file was deleted.

src/extension/ui/src/components/tile/Modal.tsx

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,14 @@ import {
2929
} from '@mui/material';
3030
import { useEffect, useState } from 'react';
3131

32-
import { ASSIGNED_SECRET_PLACEHOLDER, MCP_POLICY_NAME } from '../../Constants';
32+
import { ASSIGNED_SECRET_PLACEHOLDER, getUnsupportedSecretMessage, MCP_POLICY_NAME } from '../../Constants';
3333
import { useCatalogOperations } from '../../queries/useCatalog';
3434
import { useConfig } from '../../queries/useConfig';
3535
import { useSecrets } from '../../queries/useSecrets';
3636
import { CatalogItemRichened } from '../../types/catalog';
3737
import ConfigEditor from './ConfigEditor';
3838
import { formatName } from '../../formatName';
39+
import useDDInfo from '../../queries/useDDInfo';
3940

4041
interface TabPanelProps {
4142
children?: React.ReactNode;
@@ -86,6 +87,8 @@ const ConfigurationModal = ({
8687
useCatalogOperations(client);
8788
const { configLoading } = useConfig(client);
8889

90+
const { ddInfo, ddInfoLoading } = useDDInfo(client);
91+
8992
useEffect(() => {
9093
setLocalSecrets(
9194
catalogItem.secrets.reduce((acc, secret) => {
@@ -293,11 +296,22 @@ const ConfigurationModal = ({
293296
>
294297
<Stack direction="column" spacing={2} >
295298
<ConfigEditor catalogItem={catalogItem} client={client} />
296-
297-
{catalogItem.secrets?.length > 0 && (
298-
<Stack spacing={1}>
299-
<Typography variant="subtitle2">Secrets</Typography>
300-
{catalogItem.secrets.map((secret) => {
299+
<Stack>
300+
<Typography variant="subtitle2">Secrets</Typography>
301+
{!ddInfo && !ddInfoLoading && (
302+
<Alert severity="error">
303+
Failed to get Docker Desktop version
304+
</Alert>
305+
)}
306+
{ddInfo && !ddInfo?.hasSecretSupport && (
307+
<Alert severity="error">
308+
{getUnsupportedSecretMessage(ddInfo?.parsedVersion)}
309+
</Alert>
310+
)}
311+
{ddInfo?.hasSecretSupport &&
312+
catalogItem.secrets &&
313+
catalogItem.secrets?.length > 0 ? (
314+
catalogItem.secrets.map((secret) => {
301315
const secretEdited =
302316
(secret.assigned &&
303317
localSecrets[secret.name] !==
@@ -371,9 +385,11 @@ const ConfigurationModal = ({
371385
)}
372386
</Stack>
373387
);
374-
})}
375-
</Stack>
376-
)}
388+
})
389+
) : (
390+
<Typography>No secrets available.</Typography>
391+
)}
392+
</Stack>
377393
</Stack>
378394
</Stack>
379395
</TabPanel>
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
import { v1 } from "@docker/extension-api-client-types";
2+
import { useQuery } from "@tanstack/react-query";
3+
import { useMemo } from "react";
4+
import { c } from "vite/dist/node/moduleRunnerTransport.d-DJ_mE5sf";
5+
import { DD_BUILD_WITH_SECRET_SUPPORT } from "../Constants";
6+
7+
const parseDDVersion = (ddVersion: string) => {
8+
//eg: Docker Desktop 4.40.0 (184396)
9+
const [, , version, build] = ddVersion.split(" ");
10+
return {
11+
version,
12+
build: parseInt(build.replace("(", "").replace(")", "")),
13+
};
14+
};
15+
16+
const useDDInfo = (client: v1.DockerDesktopClient) => {
17+
const { data: ddInfo, isLoading: ddInfoLoading } = useQuery({
18+
queryKey: ["ddInfo"],
19+
queryFn: async () => {
20+
const result = await client.docker.cli.exec("version", [
21+
"--format",
22+
"json",
23+
]);
24+
25+
const baseVersion = JSON.parse(result.stdout);
26+
const parsedVersion = parseDDVersion(baseVersion.Server.Platform.Name);
27+
const hasSecretSupport =
28+
parsedVersion.build >= DD_BUILD_WITH_SECRET_SUPPORT;
29+
30+
return {
31+
...baseVersion,
32+
parsedVersion,
33+
hasSecretSupport,
34+
version: baseVersion.Server.Version,
35+
};
36+
},
37+
});
38+
39+
return { ddInfo, ddInfoLoading };
40+
};
41+
42+
export default useDDInfo;

0 commit comments

Comments
 (0)