Skip to content

Commit c23869b

Browse files
stanislavsemeniukkahboom
authored andcommitted
fix: separated ArtifactSignatureItem component
feat(artifacts): add verification hook feat(artifacts): add attestations tab
1 parent faae8f3 commit c23869b

File tree

6 files changed

+336
-347
lines changed

6 files changed

+336
-347
lines changed

client/src/app/pages/Artifacts/Artifacts.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
Popover,
1515
TextInput,
1616
} from "@patternfly/react-core";
17-
import { useFetchArtifactsImageData } from "@app/queries/artifacts";
17+
import { useFetchArtifactsImageData, useVerifyArtifact } from "@app/queries/artifacts";
1818
import { LoadingWrapper } from "@app/components/LoadingWrapper";
1919
import { ArtifactResults } from "./components/ArtifactResults";
2020
import { Controller, useForm } from "react-hook-form";
@@ -37,6 +37,14 @@ export const Artifacts = () => {
3737
fetchError: fetchErrorArtifactMetadata,
3838
} = useFetchArtifactsImageData({ uri: artifactUri });
3939

40+
const {
41+
mutate: verifyArtifact,
42+
isPending: isVerifying,
43+
error: verifyError,
44+
data: verifyResult,
45+
reset: resetVerify,
46+
} = useVerifyArtifact();
47+
4048
const {
4149
control,
4250
handleSubmit,
@@ -54,6 +62,8 @@ export const Artifacts = () => {
5462
const uri = data.searchInput?.trim();
5563
if (!uri) return;
5664
setArtifactUri(uri);
65+
// kick off verification (transitional: SAN not required yet in our draft type)
66+
verifyArtifact({ uri });
5767
};
5868

5969
const query = watch("searchInput");

client/src/app/pages/Artifacts/components/ArtifactResults.tsx

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,29 @@ import {
99
Flex,
1010
FlexItem,
1111
Panel,
12+
Tab,
13+
Tabs,
14+
TabTitleText,
1215
} from "@patternfly/react-core";
1316
import { ArtifactResultsSummary } from "./ArtifactResultsSummary";
1417
import { ArtifactResultsSignatures } from "./ArtifactResultsSignatures";
18+
import { useState } from "react";
1519

1620
export interface IArtifactResultsProps {
1721
artifact: ImageMetadataResponse;
1822
}
1923

2024
export const ArtifactResults = ({ artifact }: IArtifactResultsProps) => {
2125
// temporary workaround until API merged
22-
const artifactSignatures: string[] = [];
26+
const artifactSignatures: string[] = ["a", "b"];
27+
const [activeTabKey, setActiveTabKey] = useState<string | number>(0);
28+
29+
const handleTabClick = (
30+
event: React.MouseEvent<unknown> | React.KeyboardEvent | MouseEvent,
31+
tabIndex: string | number
32+
) => {
33+
setActiveTabKey(tabIndex);
34+
};
2335

2436
return (
2537
<div style={{ margin: "2em auto" }}>
@@ -41,8 +53,20 @@ export const ArtifactResults = ({ artifact }: IArtifactResultsProps) => {
4153
<ArtifactResultsSummary artifact={artifact} />
4254
</Panel>
4355
<Panel style={{ marginTop: "1.25em" }}>
44-
{/** SIGNATURES */}
45-
<ArtifactResultsSignatures signatures={artifactSignatures} />
56+
<Tabs
57+
activeKey={activeTabKey}
58+
onSelect={handleTabClick}
59+
aria-label="Tabs in the default example"
60+
role="region"
61+
>
62+
<Tab eventKey={0} title={<TabTitleText>Signatures</TabTitleText>} aria-label="Default content - users">
63+
{/** SIGNATURES */}
64+
<ArtifactResultsSignatures signatures={artifactSignatures} />
65+
</Tab>
66+
<Tab eventKey={1} title={<TabTitleText>Attestations</TabTitleText>}>
67+
Attestations
68+
</Tab>
69+
</Tabs>
4670
</Panel>
4771
</CardBody>
4872
</Card>

0 commit comments

Comments
 (0)