Skip to content

Commit 921722f

Browse files
author
colinmcneil
committed
Switch ddversion to a query
1 parent d151757 commit 921722f

File tree

3 files changed

+64
-63
lines changed

3 files changed

+64
-63
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: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,14 @@ import {
2828
} from '@mui/material';
2929
import { useEffect, useState } from 'react';
3030

31-
import { ASSIGNED_SECRET_PLACEHOLDER, MCP_POLICY_NAME } from '../../Constants';
31+
import { ASSIGNED_SECRET_PLACEHOLDER, getUnsupportedSecretMessage, MCP_POLICY_NAME } from '../../Constants';
3232
import { useCatalogOperations } from '../../queries/useCatalog';
3333
import { useConfig } from '../../queries/useConfig';
3434
import { useSecrets } from '../../queries/useSecrets';
3535
import { CatalogItemRichened } from '../../types/catalog';
3636
import ConfigEditor from './ConfigEditor';
3737
import { formatName } from '../../formatName';
38+
import useDDInfo from '../../queries/useDDInfo';
3839

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

89+
const { ddInfo, ddInfoLoading } = useDDInfo(client);
90+
8891
useEffect(() => {
8992
setLocalSecrets(
9093
catalogItem.secrets.reduce((acc, secret) => {
@@ -281,15 +284,26 @@ const ConfigurationModal = ({
281284
>
282285
<Stack direction="column" spacing={2} >
283286
<ConfigEditor catalogItem={catalogItem} client={client} />
284-
285-
{catalogItem.secrets?.length > 0 && (
286-
<Stack spacing={1}>
287-
<Typography variant="subtitle2">Secrets</Typography>
288-
{catalogItem.secrets.map((secret) => {
287+
<Stack>
288+
<Typography variant="subtitle2">Secrets</Typography>
289+
{!ddInfo && !ddInfoLoading && (
290+
<Alert severity="error">
291+
Failed to get Docker Desktop version
292+
</Alert>
293+
)}
294+
{ddInfo && !ddInfo?.hasSecretSupport && (
295+
<Alert severity="error">
296+
{getUnsupportedSecretMessage(ddInfo?.parsedVersion)}
297+
</Alert>
298+
)}
299+
{ddInfo?.hasSecretSupport &&
300+
catalogItem.secrets &&
301+
catalogItem.secrets?.length > 0 ? (
302+
catalogItem.secrets.map((secret) => {
289303
const secretEdited =
290304
(secret.assigned &&
291305
localSecrets[secret.name] !==
292-
ASSIGNED_SECRET_PLACEHOLDER) ||
306+
ASSIGNED_SECRET_PLACEHOLDER) ||
293307
(!secret.assigned &&
294308
localSecrets[secret.name] !== '');
295309
return (
@@ -360,7 +374,7 @@ const ConfigurationModal = ({
360374
</Stack>
361375
);
362376
})}
363-
</Stack>
377+
</Stack>
364378
)}
365379
</Stack>
366380
</Stack>
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)